Markgo's top-level URL surface is fixed — /, /writing, /writing/:slug, /tags, /categories, /search, /about, /contact, feeds, manifest, health (internal/commands/serve/command.go:402-440). There's no slot for an evergreen non-article page — "how to run your own", "credits", "now" — that should live at a stable top-level URL outside /writing/*.
Forkers and the reference deployment hit this whenever they want a published page that isn't a Thought, Link, or Essay: content that belongs at the site but not in the feed. The current workaround is to publish it as a regular article and accept that it surfaces in /writing alongside dated posts, even though it's intended as a standing page.
Proposal
Add a generic top-level pages mechanism. Two viable shapes:
A. /pages/:slug — markdown files under articles/ (or a sibling pages/ dir) carrying type: page frontmatter, routed at /pages/<slug>. Excluded from /writing, sitemap entry with distinct priority, no date in template.
B. Top-level /:slug — same type: page frontmatter, routed directly at /<slug>. Reserved-word list to avoid collision with existing top-level routes; forkers must avoid slugs that match future markgo route additions.
Either shape: pages excluded from the writing feed, sitemap with distinct priority, OG cards via existing article render path. /about keeps its dedicated handler (config-driven identity chrome) — pages are for everything else.
Why now
The reference deployment (log.1mb.dev) wants an evergreen "Run your own?" page distinct from the README (targets GitHub arrivals) and docs/deployment.md (step-by-step). Currently has to ship as an article — works, but the IA is wrong: it's not a Thought, it doesn't belong in the dated feed.
Surfaced from log.1mb.dev M3-polish-2: https://github.com/1mb-dev/log
Markgo's top-level URL surface is fixed —
/,/writing,/writing/:slug,/tags,/categories,/search,/about,/contact, feeds, manifest, health (internal/commands/serve/command.go:402-440). There's no slot for an evergreen non-article page — "how to run your own", "credits", "now" — that should live at a stable top-level URL outside/writing/*.Forkers and the reference deployment hit this whenever they want a published page that isn't a Thought, Link, or Essay: content that belongs at the site but not in the feed. The current workaround is to publish it as a regular article and accept that it surfaces in
/writingalongside dated posts, even though it's intended as a standing page.Proposal
Add a generic top-level pages mechanism. Two viable shapes:
A.
/pages/:slug— markdown files underarticles/(or a siblingpages/dir) carryingtype: pagefrontmatter, routed at/pages/<slug>. Excluded from/writing, sitemap entry with distinct priority, no date in template.B. Top-level
/:slug— sametype: pagefrontmatter, routed directly at/<slug>. Reserved-word list to avoid collision with existing top-level routes; forkers must avoid slugs that match future markgo route additions.Either shape: pages excluded from the writing feed, sitemap with distinct priority, OG cards via existing article render path.
/aboutkeeps its dedicated handler (config-driven identity chrome) — pages are for everything else.Why now
The reference deployment (log.1mb.dev) wants an evergreen "Run your own?" page distinct from the README (targets GitHub arrivals) and
docs/deployment.md(step-by-step). Currently has to ship as an article — works, but the IA is wrong: it's not a Thought, it doesn't belong in the dated feed.Surfaced from log.1mb.dev M3-polish-2: https://github.com/1mb-dev/log