Skip to content

Add sitemap/robots.txt, re-evaluate development roadmap#48

Merged
hotlong merged 2 commits intomainfrom
copilot/reassess-development-plan
Feb 9, 2026
Merged

Add sitemap/robots.txt, re-evaluate development roadmap#48
hotlong merged 2 commits intomainfrom
copilot/reassess-development-plan

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 9, 2026

Re-assessed current development progress against the roadmap. Several shipped features (OG image generation, LLM routes, i18n middleware) were untracked. Phase 1 updated from ~80% → ~95%. Added SEO features to close remaining Phase 1 gaps.

New files

  • packages/site/app/sitemap.ts — XML sitemap from Fumadocs source across all locales
  • packages/site/app/robots.ts — Standard robots.txt with sitemap reference

Updated

  • packages/site/middleware.ts — Exclude /sitemap.xml and /robots.txt from i18n redirect matcher
  • content/docs/development-plan.mdx — Updated progress tracking, credited untracked features, shifted current focus to Phase 2 (content migration tools, changelog generation)

Note on sitemap URL construction

Fumadocs source.getPages() returns page.url with locale prefix already included (e.g., /en/docs/design), so the sitemap uses page.url directly:

return source.getPages().map((page) => ({
  url: `${url}${page.url}`,
  changeFrequency: 'weekly',
  priority: page.url.endsWith('/docs') ? 1.0 : 0.7,
}));

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@vercel
Copy link
Copy Markdown

vercel bot commented Feb 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
objectdocs Ready Ready Preview, Comment Feb 9, 2026 4:49am

Request Review

…ment roadmap

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Copilot AI changed the title [WIP] Update development plan and roadmap based on progress Add sitemap/robots.txt, re-evaluate development roadmap Feb 9, 2026
Copilot AI requested a review from hotlong February 9, 2026 04:53
@hotlong hotlong marked this pull request as ready for review February 9, 2026 05:19
Copilot AI review requested due to automatic review settings February 9, 2026 05:19
@hotlong hotlong merged commit 7c6dac7 into main Feb 9, 2026
6 checks passed
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds SEO surface area (sitemap + robots.txt) to the Next.js App Router site, updates i18n middleware matching to avoid redirecting those endpoints, and refreshes the development roadmap/progress doc.

Changes:

  • Added app/sitemap.ts to generate an XML sitemap from the Fumadocs page source.
  • Added app/robots.ts to serve a robots.txt with sitemap reference.
  • Updated i18n middleware matcher exclusions and refreshed the development plan progress/status.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
packages/site/middleware.ts Excludes /sitemap.xml and /robots.txt from the i18n redirect matcher.
packages/site/app/sitemap.ts New Next.js metadata route to emit sitemap entries from source.getPages().
packages/site/app/robots.ts New Next.js metadata route to emit robots.txt with sitemap reference.
content/docs/development-plan.mdx Updates roadmap tracking, adds SEO items, and revises Phase progress/current focus.

Comment on lines +14 to +20
const url = siteConfig.meta.url;

return source.getPages().map((page) => ({
url: `${url}${page.url}`,
changeFrequency: 'weekly',
priority: page.url.endsWith('/docs') ? 1.0 : 0.7,
}));
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

siteConfig.meta.url may be configured with a trailing slash, which would produce double slashes in sitemap URLs (e.g., https://example.com//en/docs). Consider constructing absolute URLs via new URL(page.url, siteConfig.meta.url) or normalizing the base URL before concatenation.

Suggested change
const url = siteConfig.meta.url;
return source.getPages().map((page) => ({
url: `${url}${page.url}`,
changeFrequency: 'weekly',
priority: page.url.endsWith('/docs') ? 1.0 : 0.7,
}));
const baseUrl = siteConfig.meta.url;
return source.getPages().map((page) => {
const pageUrl = new URL(page.url, baseUrl).toString();
return {
url: pageUrl,
changeFrequency: 'weekly',
priority: page.url.endsWith('/docs') ? 1.0 : 0.7,
};
});

Copilot uses AI. Check for mistakes.
Comment on lines +13 to +22
const url = siteConfig.meta.url;

return {
rules: {
userAgent: '*',
allow: '/',
disallow: ['/api/', '/_next/'],
},
sitemap: `${url}/sitemap.xml`,
};
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If siteConfig.meta.url ends with a trailing slash, ${url}/sitemap.xml will yield a double slash. Consider using new URL('/sitemap.xml', siteConfig.meta.url) (or trimming the trailing slash) to ensure the sitemap reference is always a valid absolute URL.

Copilot uses AI. Check for mistakes.
export const config = {
// Matcher ignoring `/_next/`, `/api/`, LLM routes, and OG image routes
matcher: ['/((?!api|_next/static|_next/image|favicon.ico|logo.svg|llms\\.txt|llms-full\\.txt|llms\\.mdx|og/).*)'],
// Matcher ignoring `/_next/`, `/api/`, LLM routes, OG image routes, and SEO files
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment says the matcher ignores all /_next/ routes, but the regex only excludes /_next/static and /_next/image. Either tighten the comment to match what’s excluded, or expand the matcher if you truly want to bypass middleware for all /_next/* paths.

Suggested change
// Matcher ignoring `/_next/`, `/api/`, LLM routes, OG image routes, and SEO files
// Matcher ignoring `/_next/static`, `/_next/image`, `/api/`, LLM routes, OG image routes, and SEO files

Copilot uses AI. Check for mistakes.
|-------|--------|----------|
| Phase 1: Core Platform & Deployment | ✅ Mostly Complete | ~80% |
| Phase 2: Developer Experience | 🟡 In Progress | ~30% |
| Phase 1: Core Platform & Deployment | ✅ Complete | ~95% |
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Phase 1 is marked as “✅ Complete” but progress is listed as “~95%”. Consider aligning these (e.g., mark it as mostly complete, or adjust progress to 100%) so the status table is internally consistent.

Suggested change
| Phase 1: Core Platform & Deployment | ✅ Complete | ~95% |
| Phase 1: Core Platform & Deployment | ✅ Complete | 100% |

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants