mirror of
https://github.com/waynesutton/markdown-site.git
synced 2026-01-12 04:09:14 +00:00
docs: update changelog page with v1.26.0 and v1.27.0
This commit is contained in:
7
TASK.md
7
TASK.md
@@ -8,10 +8,15 @@
|
||||
|
||||
## Current Status
|
||||
|
||||
v1.26.0 ready. Added tag pages, related posts, and re-enabled AI service links using GitHub raw URLs.
|
||||
v1.27.0 ready. Added homepage post limit and optional "read more" link configuration.
|
||||
|
||||
## Completed
|
||||
|
||||
- [x] Homepage post limit configuration (homePostsLimit in siteConfig.postsDisplay)
|
||||
- [x] Optional "read more" link below limited post list (homePostsReadMore config)
|
||||
- [x] Customizable link text and destination URL
|
||||
- [x] CSS styling for read more link with hover effects
|
||||
- [x] Conditional rendering logic to show link only when posts are limited
|
||||
- [x] Tag pages at `/tags/[tag]` route with view mode toggle
|
||||
- [x] Related posts component for blog post footers (up to 3 related posts by shared tags)
|
||||
- [x] Tag links in post footers now navigate to tag archive pages
|
||||
|
||||
27
changelog.md
27
changelog.md
@@ -4,6 +4,33 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
|
||||
## [1.27.0] - 2025-12-24
|
||||
|
||||
### Added
|
||||
|
||||
- Homepage post limit configuration
|
||||
- Configurable limit for number of posts shown on homepage via `siteConfig.postsDisplay.homePostsLimit`
|
||||
- Default limit set to 10 most recent posts
|
||||
- Set to `undefined` to show all posts (no limit)
|
||||
- Optional "read more" link below limited post list
|
||||
- Configurable via `siteConfig.postsDisplay.homePostsReadMore`
|
||||
- Customizable link text and destination URL
|
||||
- Only appears when posts are limited and there are more posts than the limit
|
||||
- Default links to `/blog` page
|
||||
- Can be disabled by setting `enabled: false`
|
||||
|
||||
### Changed
|
||||
|
||||
- `src/config/siteConfig.ts`: Added `homePostsLimit` and `homePostsReadMore` to `PostsDisplayConfig` interface
|
||||
- `src/pages/Home.tsx`: Post list now respects `homePostsLimit` configuration and shows "read more" link when applicable
|
||||
- `src/styles/global.css`: Added styles for `.home-posts-read-more` and `.home-posts-read-more-link` with centered button styling and hover effects
|
||||
|
||||
### Technical
|
||||
|
||||
- New interface: `HomePostsReadMoreConfig` in `src/config/siteConfig.ts`
|
||||
- Post limiting logic uses `.slice()` to limit array before passing to `PostList` component
|
||||
- Conditional rendering ensures "read more" link only shows when needed
|
||||
|
||||
## [1.26.0] - 2025-12-24
|
||||
|
||||
### Added
|
||||
|
||||
@@ -6,7 +6,7 @@ slug: "raw-markdown-and-copy-improvements"
|
||||
published: true
|
||||
tags: ["release", "features", "updates", "developer-tools"]
|
||||
readTime: "8 min read"
|
||||
featured: true
|
||||
featured: false
|
||||
featuredOrder: 2
|
||||
image: "/images/v17.png"
|
||||
authorName: "Markdown"
|
||||
|
||||
@@ -4,7 +4,7 @@ description: "Learn how to add header images, inline images, and Open Graph imag
|
||||
date: "2025-12-14"
|
||||
slug: "using-images-in-posts"
|
||||
published: true
|
||||
featured: true
|
||||
featured: false
|
||||
featuredOrder: 4
|
||||
tags: ["images", "tutorial", "markdown", "open-graph"]
|
||||
readTime: "4 min read"
|
||||
|
||||
@@ -6,7 +6,7 @@ slug: "visitor-tracking-and-stats-improvements"
|
||||
published: true
|
||||
tags: ["features", "stats", "convex", "updates", "analytics"]
|
||||
readTime: "5 min read"
|
||||
featured: true
|
||||
featured: false
|
||||
featuredOrder: 1
|
||||
authorName: "Markdown"
|
||||
authorImage: "/images/authors/markdown.png"
|
||||
|
||||
@@ -8,6 +8,52 @@ layout: "sidebar"
|
||||
|
||||
All notable changes to this project.
|
||||
|
||||
## v1.27.0
|
||||
|
||||
Released December 24, 2025
|
||||
|
||||
**Homepage post limit and optional read more link**
|
||||
|
||||
- Configurable post limit for homepage via `siteConfig.postsDisplay.homePostsLimit`
|
||||
- Default limit set to 10 most recent posts
|
||||
- Set to `undefined` to show all posts (no limit)
|
||||
- Optional "read more" link below limited post list
|
||||
- Configurable via `siteConfig.postsDisplay.homePostsReadMore`
|
||||
- Customizable link text and destination URL
|
||||
- Only appears when posts are limited and there are more posts than the limit
|
||||
- Default links to `/blog` page
|
||||
- Can be disabled by setting `enabled: false`
|
||||
|
||||
Updated files: `src/config/siteConfig.ts`, `src/pages/Home.tsx`, `src/styles/global.css`
|
||||
|
||||
## v1.26.0
|
||||
|
||||
Released December 24, 2025
|
||||
|
||||
**Tag pages, related posts, and AI service links re-enabled**
|
||||
|
||||
- Tag pages at `/tags/[tag]` route
|
||||
- Dynamic tag archive pages showing all posts with a specific tag
|
||||
- View mode toggle (list/cards) with localStorage persistence
|
||||
- Mobile responsive layout matching existing blog page design
|
||||
- Sitemap updated to include all tag pages dynamically
|
||||
- Related posts component for blog post footers
|
||||
- Shows up to 3 related posts based on shared tags
|
||||
- Sorted by relevance (number of shared tags) then by date
|
||||
- Only displays on blog posts (not static pages)
|
||||
- Improved tag links in post footers
|
||||
- Tags now link to `/tags/[tag]` archive pages
|
||||
- Visual styling consistent with existing theme
|
||||
- Open in AI service links re-enabled in CopyPageDropdown
|
||||
- Uses GitHub raw URLs instead of Netlify paths (bypasses edge function issues)
|
||||
- ChatGPT, Claude, and Perplexity links with universal prompt
|
||||
- "Requires git push" hint for users (npm sync alone doesn't update GitHub)
|
||||
- Visual divider separating AI options from other menu items
|
||||
|
||||
Updated files: `src/config/siteConfig.ts`, `convex/schema.ts`, `convex/posts.ts`, `convex/http.ts`, `src/pages/TagPage.tsx`, `src/pages/Post.tsx`, `src/components/CopyPageDropdown.tsx`, `src/styles/global.css`, `src/App.tsx`
|
||||
|
||||
Documentation updated: `content/pages/docs.md`, `content/blog/setup-guide.md`
|
||||
|
||||
## v1.25.2
|
||||
|
||||
Released December 24, 2025
|
||||
|
||||
4
files.md
4
files.md
@@ -33,13 +33,13 @@ A brief description of each file in the codebase.
|
||||
|
||||
| File | Description |
|
||||
| --------------- | --------------------------------------------------------------------------------------------------------- |
|
||||
| `siteConfig.ts` | Centralized site configuration (name, logo, blog page, posts display, GitHub contributions, nav order, inner page logo settings, hardcoded navigation items for React routes, GitHub repository config for AI service raw URLs) |
|
||||
| `siteConfig.ts` | Centralized site configuration (name, logo, blog page, posts display with homepage post limit and read more link, GitHub contributions, nav order, inner page logo settings, hardcoded navigation items for React routes, GitHub repository config for AI service raw URLs) |
|
||||
|
||||
### Pages (`src/pages/`)
|
||||
|
||||
| File | Description |
|
||||
| ----------- | ----------------------------------------------------------------- |
|
||||
| `Home.tsx` | Landing page with featured content and optional post list |
|
||||
| `Home.tsx` | Landing page with featured content and optional post list. Supports configurable post limit (homePostsLimit) and optional "read more" link (homePostsReadMore) via siteConfig.postsDisplay |
|
||||
| `Blog.tsx` | Dedicated blog page with post list or card grid view (configurable via siteConfig.blogPage, supports view toggle). Includes back button in navigation |
|
||||
| `Post.tsx` | Individual blog post or page view with optional sidebar layout. Includes back button, CopyPageDropdown, tag links, and related posts section in footer for blog posts (update SITE_URL/SITE_NAME when forking) |
|
||||
| `Stats.tsx` | Real-time analytics dashboard with visitor stats and GitHub stars |
|
||||
|
||||
@@ -420,7 +420,7 @@ export default function CopyPageDropdown(props: CopyPageDropdownProps) {
|
||||
</button>
|
||||
|
||||
{/* Divider */}
|
||||
<div className="copy-page-divider" role="separator" />
|
||||
{/* <div className="copy-page-divider" role="separator" /> */}
|
||||
|
||||
{/* AI service links using GitHub raw URLs */}
|
||||
{/* Note: Requires git push to work - npm sync alone is not sufficient */}
|
||||
@@ -451,7 +451,9 @@ export default function CopyPageDropdown(props: CopyPageDropdownProps) {
|
||||
↗
|
||||
</span>
|
||||
</span>
|
||||
<span className="copy-page-item-desc">Requires git push</span>
|
||||
<span className="copy-page-item-desc">
|
||||
Ask AI about this link
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
@@ -482,7 +484,9 @@ export default function CopyPageDropdown(props: CopyPageDropdownProps) {
|
||||
↗
|
||||
</span>
|
||||
</span>
|
||||
<span className="copy-page-item-desc">Requires git push</span>
|
||||
<span className="copy-page-item-desc">
|
||||
Ask AI about this link
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
@@ -513,7 +517,9 @@ export default function CopyPageDropdown(props: CopyPageDropdownProps) {
|
||||
↗
|
||||
</span>
|
||||
</span>
|
||||
<span className="copy-page-item-desc">Requires git push</span>
|
||||
<span className="copy-page-item-desc">
|
||||
Ask AI about this link
|
||||
</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -40,11 +40,21 @@ export interface BlogPageConfig {
|
||||
showViewToggle: boolean; // Show toggle button to switch between views
|
||||
}
|
||||
|
||||
// Homepage posts read more link configuration
|
||||
// Optional link shown below limited post list on homepage
|
||||
export interface HomePostsReadMoreConfig {
|
||||
enabled: boolean; // Show "read more" link when posts are limited
|
||||
text: string; // Link text (e.g., "Read more blog posts")
|
||||
link: string; // URL to link to (e.g., "/blog")
|
||||
}
|
||||
|
||||
// Posts display configuration
|
||||
// Controls where the post list appears
|
||||
export interface PostsDisplayConfig {
|
||||
showOnHome: boolean; // Show post list on homepage
|
||||
showOnBlogPage: boolean; // Show post list on /blog page (requires blogPage.enabled)
|
||||
homePostsLimit?: number; // Limit number of posts shown on homepage (undefined = show all)
|
||||
homePostsReadMore?: HomePostsReadMoreConfig; // Optional "read more" link configuration
|
||||
}
|
||||
|
||||
// Hardcoded navigation item configuration
|
||||
@@ -224,6 +234,12 @@ export const siteConfig: SiteConfig = {
|
||||
postsDisplay: {
|
||||
showOnHome: true, // Show post list on homepage
|
||||
showOnBlogPage: true, // Show post list on /blog page
|
||||
homePostsLimit: 10, // Limit number of posts on homepage (undefined = show all)
|
||||
homePostsReadMore: {
|
||||
enabled: true, // Show "read more" link when posts are limited
|
||||
text: "Read more blog posts", // Customizable link text
|
||||
link: "/blog", // URL to link to (usually "/blog")
|
||||
},
|
||||
},
|
||||
|
||||
// Links for footer section
|
||||
|
||||
@@ -190,7 +190,28 @@ export default function Home() {
|
||||
{posts === undefined ? null : posts.length === 0 ? (
|
||||
<p className="no-posts">No posts yet. Check back soon!</p>
|
||||
) : (
|
||||
<PostList posts={posts} />
|
||||
<>
|
||||
<PostList
|
||||
posts={
|
||||
siteConfig.postsDisplay.homePostsLimit
|
||||
? posts.slice(0, siteConfig.postsDisplay.homePostsLimit)
|
||||
: posts
|
||||
}
|
||||
/>
|
||||
{/* Show "read more" link if enabled and there are more posts than the limit */}
|
||||
{siteConfig.postsDisplay.homePostsReadMore?.enabled &&
|
||||
siteConfig.postsDisplay.homePostsLimit &&
|
||||
posts.length > siteConfig.postsDisplay.homePostsLimit && (
|
||||
<div className="home-posts-read-more">
|
||||
<Link
|
||||
to={siteConfig.postsDisplay.homePostsReadMore.link}
|
||||
className="home-posts-read-more-link"
|
||||
>
|
||||
{siteConfig.postsDisplay.homePostsReadMore.text}
|
||||
</Link>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</section>
|
||||
)}
|
||||
|
||||
@@ -536,6 +536,29 @@ body {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.home-posts-read-more {
|
||||
margin-top: 32px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.home-posts-read-more-link {
|
||||
display: inline-block;
|
||||
color: var(--text-primary);
|
||||
text-decoration: none;
|
||||
font-size: var(--font-size-base);
|
||||
font-weight: 500;
|
||||
padding: 12px 24px;
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 6px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.home-posts-read-more-link:hover {
|
||||
background-color: var(--bg-hover);
|
||||
border-color: var(--text-muted);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.post-year-group {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user