docs(changelog): add changelog page with release-stub automation - #66
Open
djsauble wants to merge 3 commits into
Open
docs(changelog): add changelog page with release-stub automation#66djsauble wants to merge 3 commits into
djsauble wants to merge 3 commits into
Conversation
Migrates the flox.dev/changelog timeline into the docs as a Changelog tab
built on Mintlify <Update> components (per-entry anchors, tag filters, and
an RSS feed at /docs/changelog/rss.xml).
All 29 entries from floxwebsite's changelog.yaml are backfilled, merged by
date, with each feature as a heading so the RSS feed keeps the old
per-feature granularity.
A daily scheduled workflow (changelog-stubs.yml) polls each source repo's
latest GitHub release and opens a draft PR pre-filling an <Update> stub
for a human to turn into real copy — same shape and FloxBot token as the
sibling update-flox-version.yml and sync-man-pages.yml workflows.
Embedded {/* changelog-id: owner/repo@tag */} markers make the page itself
the dedupe state.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WN847FP3AM81Qg6J11uxoh
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Exercises the new automation end-to-end: polled all six source repos for releases published since the old changelog went stale, ran scripts/changelog-stub.sh for each of the seven found (six flox/flox releases v1.12.1-v1.14.0 plus flox-skills v1.0.0, inserted in scrambled order to prove the date-ordered insertion), then replaced the generated placeholders with copy written from the actual release notes. All seven changelog-id markers are now present, so the scheduled workflow's first run after merge will be a clean no-op. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WN847FP3AM81Qg6J11uxoh
…ative
Verified in-browser on the PR preview:
- The intro "RSS feed" link hardcoded the production URL, which 404s until
this PR merges (and always would on previews). Root-relative
/changelog/rss.xml resolves on every deployment.
- Mintlify's RSS generator renders MDX comments inside an <Update> body as
literal text, so every feed item led with its {/* changelog-id */}
marker. Markers now sit after each entry's closing tag — invisible on
the page, absent from the feed, and the workflow's file-wide grep is
unaffected. changelog-stub.sh emits the same placement.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WN847FP3AM81Qg6J11uxoh
djsauble
marked this pull request as ready for review
August 7, 2026 23:54
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.
Migrates flox.dev/changelog into the docs as a Changelog tab at
/docs/changelog, built on Mintlify<Update>components — per-entry anchors, product-tag filters, and a subscribable RSS feed at/docs/changelog/rss.xml.What's here
changelog.mdx— all 29 entries from floxwebsite'ssrc/data/changelog.yamlbackfilled (Mar 2024 → May 2026), merged by date with each feature as a##heading (Mintlify emits one RSS item per heading, so the feed keeps the old per-feature granularity) — plus the May → August gap: flox v1.12.1–v1.14.0 and flox-skills v1.0.0, generated through the stub pipeline below and then written up from the actual release notes.docs.json— a third nav tab, Changelog..github/workflows/changelog-stubs.yml— daily cron (08:00 UTC, after the 06:00/07:00 sibling jobs) that polls the latest GitHub release of flox/flox, floxhub, floxenvs, flox-plugins, flox-skills, and flox-vscode, and opens a FloxBot draft PR with a pre-filled<Update>stub for a human to turn into real copy. Repos without releases no-op; if one adopts releases later it lights up with no changes here.scripts/changelog-stub.sh— the stub generator (runs locally too). Inserts in date order so out-of-order merges keep the timeline sorted, and flags same-date collisions for the editor.How dedupe works (no state file)
Each published entry embeds
{/* changelog-id: owner/repo@tag */}; the workflow greps the page for it. Stub PR lifecycle:The second commit exercised this end-to-end: polling found exactly seven missing releases across the six repos, the script inserted them in scrambled order and produced correct reverse-chronological output, and all seven markers now dedupe — so the workflow's first scheduled run after merge should be a clean no-op, and the next real release (flox is due ~Aug 11 on its biweekly cadence) opens the first live draft PR.
After merge
Separate floxwebsite PR: 301
/changelog→/docs/changeloginpublic/netlify.toml, delete the old page + YAML, repoint nav links.Open calls flagged for review: product-tag taxonomy (
KubernetesandMCP servercover two backfill entries that fit no source repo), and the page stays indexable (Mintlify noindexes theirs).🤖 Generated with Claude Code
https://claude.ai/code/session_01WN847FP3AM81Qg6J11uxoh