/roadmap and /changelog on nectenda.com #96
Labels
No labels
area:docs
area:identity
area:ops
area:plugin
area:server
channel:community
channel:direct
channel:owned
channel:press
channel:social
e2ee-constrained
gate:at-ga
gate:pre-ga
marketing
parity
relay:absent
relay:planned
relay:requested
relay:supported
risk:additive
risk:contract
risk:none
usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Nectenda/nectenda#96
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Relay publishes a release-notes page and a public roadmap. We publish neither —
both
/roadmapand/changelogreturn 404 today while the other six pages arelive.
The changelog is the sharper of the two. Relay ships roughly weekly and their
notes are text-only: no screenshots, no GIFs. Real-time collaboration is
inherently visual — two cursors moving in one note is a six-second loop — so this
is a content gap nobody in the niche is filling.
What to do
Two new copy modules,
site/content/roadmap.mjsandsite/content/changelog.mjs,words separated from markup as the rest of the site does. These are composed
pages like
/pricing, notPAGESentries — those renderdocs/*.mdthroughmarked.Register in
site/build.mjsat four points that must agree:landingandpricingroadmapPage()/changelogPage()besidepricingPage()writeFileSynccallsSITEMAP(~line 924) — its own comment says a page missing from it is apage no search engine is told about, because IndexNow submits exactly that list
Navigation
HEADER_NAVcarries three items; the footer comment says it carries "the legalpages and only those". Put Roadmap in the header (it answers a buying question)
and Changelog in the footer — then rewrite that footer comment in the same
commit. A stale comment asserting a rule the code no longer follows is how this
repository's worst findings started.
Changelog source: hand-written, with one build-time guard
Nothing existing can generate it.
versions.jsonmaps version tominAppVersionand knows nothing about what changed, andpublish-plugin.mjs'sreleaseNotes()emits byte-identical build-verificationboilerplate every release — generating would publish six identical entries. It is
also the differentiator: a generated changelog reproduces the exact thing we are
trying to beat.
The guard is a build-time assertion that the newest changelog entry matches
packages/plugin/manifest.json's version, plus adding that manifest todeploy-site.yml'spaths:.Say the consequence out loud: after this, a version bump fails the site
deploy until someone writes the entry. That is the intended pressure, and it
cannot block a release, because
ci.ymldoes not build the site.Constraints
public/for<script,</script>andinline
on*=handlers and assertsscript-src 'none'in_headers. Bothpages are static lists, so this costs nothing — but a "filter by status"
control would have to be
:checked ~radios, as the pricing toggle is.page()throws if the title matches/nectenda/i. UseRoadmap,Changelog.page()throws. Countthem; do not estimate.
shipped/in progress/considering— never dates or quarters, and an opening linesaying plainly that nothing there is a commitment.
shippeditem checked againstdocs/plan-master.mdphase status, notmemory (
docs/positioning.md).at
hello@nectenda.comuntil a board exists. A dead "vote on this" link isworse than none.
no metadata" (
docs/positioning.md).Verification
node build.mjslocally, then mutation-check both new guards: a90-character description must throw, and a manifest bumped past the newest
changelog entry must throw. A test that has never failed proves nothing.
grep -c '<url>' site/public/sitemap.xmlis 8 and both new paths appear.curl -I https://nectenda.com/roadmapis 200. It is 404 today, which is the before-picture.
Moved to the Vikunja board as NEC-72: https://projectron.nerchure.com/tasks/72