feat(roadmap): /roadmap generated from the engine repo's GitHub milestones - #122
Merged
Conversation
…tones
Takes the page and not the mechanism from Jesse's Resources menu: the
keel repo's milestones already are the real roadmap and are actively
maintained, so the site reads them — no voting, no accounts, no
sponsorship queue, none of which exist for a 3-star project whose pitch
is that it tells you the truth.
- scripts/fetch-milestones.mjs reads open + recently closed milestones
and their issues/PRs via the public REST endpoints (GITHUB_TOKEN
honoured for rate-limit headroom), writing gitignored
data/milestones.json; chained into the fetch script. Same failure
policy as fetch-release/fetch-discussions: a failed fetch never breaks
the build — it degrades to last-known data and finally to a plain link
to the GitHub milestones page.
- /{en,ar,fr}/roadmap/ follows the page+component+i18n structure; nav
entry after Community in all three locales. Milestones render open →
recently shipped, every item links to its issue, closed milestones
marked shipped with GitHub's own closed date.
- Honesty: an open milestone is an intention, not a commitment, and a
due date is a target, not a promise (FR-9); undated milestones say
"no date set" instead of inventing one; a doc-meta line notes the
roadmap is read from the repo and refreshes hourly.
Closes #117
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Closes #117
What
A generated Roadmap page — the page from Jesse's Resources menu, not the paid mechanism (no voting allowances, no accounts, no sponsorship queue). The keel repo's own milestones already are the roadmap and are actively maintained; the site reads them like it reads News: read-only presentation, interaction stays on GitHub.
How
scripts/fetch-milestones.mjs— new fetch pipeline alongsidefetch-release.mjs/fetch-discussions.mjs: public REST endpoints,GITHUB_TOKENhonored when present, writes gitignoreddata/milestones.json. Open milestones (dated nearest-first, undated after — a milestone without a date is an intention, not a schedule) + the 5 most recently closed, each with title/description/state, open/closed issue counts,due_on/closed_atwhen set, and up to 30 issues/PRs (full counts travel along so the page can say "and N more on GitHub" instead of hiding overflow). Chained intonpm run fetchinpackage.json./{en,ar,fr}/roadmap/— page + component + i18n structure (src/i18n/pages/roadmap.ts, all revs2026-08-28.1, translations fresh sotranslatedFromRevmatches),roadmapPageKey, nav entry after Community (Header +ui.tschrome ×3; the footer doesn't enumerate pages, checked).closed_at; every item a plain link to its issue with an open/done marker and a PR chip; progress as "N of M items closed" straight from the repo's counts. No vote, no subscribe, no comment affordances.Honesty (the issue's core requirement)
doc-metaline notes the roadmap is read from the repo's GitHub milestones at build time and refreshes hourly.Failure policy (same risk policy as News/Changelog)
A failed fetch never breaks the build:
data/milestones.jsonwritten (verified: 11 open + 5 recently closed).WARN: milestones fetch failed (simulated offline); keeping last-known 16 milestones).distverified: fallback copy renders, build exits 0).Verification
npx astro check(fresh.astrocache): 0 errors, 0 warnings (5 pre-existing hints, none in new files); fullnpm run checkpasses.npm run build: 63 pages;dist/{en,ar,fr}/roadmap/index.htmlall present with 104 unique issue links + 16 milestone links; hreflang alternates ×3.https://keeltrading.com/{en,ar,fr}/roadmap/present.fetchto throw — both branches above exercised./Applications/Google Chrome.app/...) at 390px on/en/roadmap/and/ar/roadmap/:scrollWidth390 == viewport on both, zero horizontal overflow. The only off-viewport element is the site-wide.skip-link(off-screen by design; identical on/en/news/and/en/community/).Not done (on purpose)