Today the changelog markdown lives in FerrLabs-Cloud/site/src/content/changelog/ and renders only on ferrlabs.com/changelog/. Each product site (ferrflow.com, ferrtrack.com, ferrvault.com, ferrgrowth.com, agents.ferrlabs.com) should get its own filtered /changelog/ page so:
- SEO: per-product changelog pages match
<product> changelog search intent.
- UX: visitor on ferrflow.com sees the FerrFlow changelog without leaving the product site.
- Cross-link: each entry on a product site links back to ferrlabs.com/changelog/ for the cross-product view.
Proposed architecture
New public repo FerrLabs/Changelog with just markdown files at the root (matches the schema in CLAUDE.md). Source of truth for every site.
Each Astro site adds a build step that pulls the .md files at build time:
"prebuild": "degit FerrLabs/Changelog#main src/content/changelog --force"
Then the existing content collection works as-is, just filtered:
const entries = await getCollection('changelog', e => e.data.product === 'ferrflow');
A repository_dispatch from FerrLabs/Changelog to each consumer triggers a rebuild when entries land. Or hourly schedule: cron, simpler.
Migration steps
- Create
FerrLabs/Changelog (public, MIT or no-license).
- Move the 3 existing
.md files from FerrLabs-Cloud/site/src/content/changelog/ to the new repo root.
- Add the prebuild step + content collection to: FerrFlow-Cloud (Starlight needs care), FerrTrack-Cloud, FerrVault-Cloud, FerrGrowth-Cloud, FerrAgents.
- Add filter UI on
ferrlabs.com/changelog/ (query-string ?product=).
- Update
CLAUDE.md: PRs add their entry to FerrLabs/Changelog (not FerrLabs-Cloud).
- Cross-link footer of each product changelog page →
ferrlabs.com/changelog/.
Why not now
Decision: do it once we have ≥5 entries to avoid setting up the cross-repo machinery for almost nothing. Today we have 3.
Today the changelog markdown lives in
FerrLabs-Cloud/site/src/content/changelog/and renders only onferrlabs.com/changelog/. Each product site (ferrflow.com, ferrtrack.com, ferrvault.com, ferrgrowth.com, agents.ferrlabs.com) should get its own filtered/changelog/page so:<product> changelogsearch intent.Proposed architecture
New public repo
FerrLabs/Changelogwith just markdown files at the root (matches the schema inCLAUDE.md). Source of truth for every site.Each Astro site adds a build step that pulls the .md files at build time:
Then the existing content collection works as-is, just filtered:
A
repository_dispatchfromFerrLabs/Changelogto each consumer triggers a rebuild when entries land. Or hourlyschedule:cron, simpler.Migration steps
FerrLabs/Changelog(public, MIT or no-license)..mdfiles fromFerrLabs-Cloud/site/src/content/changelog/to the new repo root.ferrlabs.com/changelog/(query-string?product=).CLAUDE.md: PRs add their entry toFerrLabs/Changelog(not FerrLabs-Cloud).ferrlabs.com/changelog/.Why not now
Decision: do it once we have ≥5 entries to avoid setting up the cross-repo machinery for almost nothing. Today we have 3.