Skip to content

feat: changelog at /changelog with deep-linked version pages#644

Draft
rgbkrk wants to merge 34 commits into
mainfrom
changelog
Draft

feat: changelog at /changelog with deep-linked version pages#644
rgbkrk wants to merge 34 commits into
mainfrom
changelog

Conversation

@rgbkrk
Copy link
Copy Markdown
Member

@rgbkrk rgbkrk commented May 31, 2026

A Conductor-style release feed at /changelog, plus shareable, deep-linked pages at /changelog/{version}. The goal is release-shaped storytelling: every stable becomes an announcement instead of disappearing into GitHub gravity.

How it works

Built on the existing blog machinery so there's nothing exotic to maintain. Entries are MDX in content/changelog/ with rich frontmatter; lib/changelog.ts is a parallel of lib/blog.ts. The dark blog layout and the dynamic OG generator are reused.

The feed shows human-written highlights and a hero image or clip. The exhaustive git-cliff changelog (hundreds of bullets per release) lives behind a collapsed disclosure on each version page, so the feed reads as a story and the full record is still one click away.

Design decisions

  • Stable only, no nightly. Nightlies ship near-continuously; they'd bury the signal. A stable release is the moment something is worth announcing.
  • Version-or-series keys. An entry keys on a clean version (2.5.1) or a grouped minor (2.4). coversVersions lists the exact releases an entry absorbs and drives patch-to-canonical redirects, so /changelog/2.4.1 lands on /changelog/2.4 even across the gaps left by nightly version burn.
  • Clean version in frontmatter, full tag only as a link. The changelog is immune to whatever happens to the -stable.<timestamp> tag suffix scheme.
  • Backfill ships published: false. Visible in pnpm dev, hidden in production, until each entry's headline, summary, highlights, and hero are seasoned. Nothing reaches the public feed with placeholder text.

Backfill coverage

Entry Covers Treatment
2.5.1, 2.5.0 exact individual
2.4 2.4.0–2.4.8 (3 skipped) grouped
2.3 2.3.0, .1, .4 grouped
2.2 2.2.0 single
2.1 2.1.0–2.1.3 grouped

Technical changelogs are transcribed faithfully from the real nteract/nteract release notes. content/changelog/_raw-release-notes.md is the provenance scratch file (per-version URLs and raw bullets); the loader ignores _-prefixed files.

Remaining before publish

Draft because the backfill still needs seasoning: real headlines, one-sentence summaries, reworded highlights (currently raw commit messages), and a hero image or clip per entry, then flip published: true. Recommend seasoning 2.5.0 and 2.5.1 first and publishing those, then backfilling the older grouped entries as the social assets surface.

Build passes, full test suite green (includes new lib/changelog.test.ts covering ordering, the publish gate, redirects, and static params).

A Conductor-style release feed at /changelog plus shareable per-version
pages at /changelog/{version}. Stable releases only. The feed shows
human highlights; the full git-cliff changelog lives behind a disclosure
on each version page so releases read as announcements, not commit sediment.

Built on the existing blog machinery: MDX in content/changelog with rich
frontmatter, a lib/changelog.ts loader parallel to lib/blog.ts, the dark
blog layout, and the dynamic OG generator. Entries key on a clean version
(2.5.1) or a grouped minor (2.4); coversVersions drives patch-to-canonical
redirects, so /changelog/2.4.1 lands on /changelog/2.4 even across the
nightly-induced version gaps.

Backfills 2.1 through 2.5.1 (individual 2.5.0/2.5.1, grouped 2.1-2.4) from
the real GitHub release notes. Backfill entries ship published: false:
visible in dev, hidden in prod, until each headline, summary, and hero are
seasoned. Nav, footer, sitemap, and an RSS feed are wired in.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 31, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
nteract-site Ready Ready Preview, Comment Jun 6, 2026 1:36pm

Request Review

Gate unpublished entries on a shared `includeDrafts` flag: true in local
dev and on Vercel preview deployments (VERCEL_ENV=preview), false in
production. A PR's preview URL now shows the unseasoned backfill so it can
be reviewed without flipping published, while nteract.io stays clean.
VERCEL_ENV is only reliably available at runtime, not during the Vercel
build, so the statically prerendered changelog evaluated the draft gate as
production and hid everything. force-dynamic moves the gate to request time:
preview deploys list drafts, production serves only published entries.
This project does not expose VERCEL_ENV to app code, so the env-based gate
resolved to "hide" everywhere. Switch to the request host: drafts show in
dev and on any non-production host (Vercel preview at *.vercel.app), and
stay hidden on nteract.io. No Vercel project setting required.
Match Conductor: the feed shows each release in full, not a teaser that
links away. Version and date link to the permalink; the exhaustive technical
changelog stays inside its collapsed disclosure so the page stays scannable.
…er story

2.5.1 was a one-line same-day patch; it folds into 2.5 as a technical-changelog
subsection rather than its own announcement. /changelog/2.5.0 and /changelog/2.5.1
redirect to /changelog/2.5.

The 2.5 hero leads with the real headline that git-cliff can't see: the nteract
launcher flipped to default-on, which is what ships rich tracebacks, Sift
DataFrame rendering, and output redaction to everyone.
Match the desktop app's cream palette (telemetry already wears it) so the
changelog reads as the product's own release diary, distinct from the dark
blog. Conductor's structure is unchanged; only the skin moves: paper
background, serif headings, brown accent, outlined tags, light prose, and a
cream per-version OG card. Drives everything off the scoped cream-page vars.
Each backfill entry gets a real first draft: the buried user-facing headline
pulled to the front (agent-mode-by-default in 2.1, dx/Sift + conda hot-sync in
2.2, rich tracebacks in 2.3, the @nteract/pi REPL in 2.4), feature sections in
plain terms, human highlights, and tags from the fixed taxonomy. Still
published: false; these are drafts to refine. Also normalizes the version
subheaders in the technical changelogs off em-dashes.
- 2.1: lead with repr-llm (agent-readable output summaries), drop runtime
  agent-mode framing (internal plumbing). Verified: 7 repr-llm commits land here.
- 2.2: drop dx and Sift (dx deleted, Sift not yet public); headline ephemeral
  on-demand runtimes for agents, conda hot-sync, and the cream theme.
- 2.3: lead with the environment work; rich tracebacks demoted to a behind-a-flag
  note since they do not default on until 2.5.
- 2.4: start of @runtimed/node (Node bindings for runtimed); elevate @nteract/pi
  with its real tools (pi.dev agent harness). Keep Sift out, it debuts in 2.5.
Each entry now has a heroImage so the feed and version pages show a hero
instead of an empty slot. These are clearly-labeled cream placeholder cards
(version + title + "PLACEHOLDER"), uploaded to r2, meant to be swapped for
real screenshots or clips. heroVideo stays commented as the alternative.
rgbkrk added 2 commits June 2, 2026 16:41
Split the output story into "for humans" (native Plotly/Vega/Leaflet/GeoJSON
rendering) and "for agents" (the start of the repr-llm crate, text/llm+plain
summaries over MCP). Tighten the pixi section.
HTML comments are not valid in MDX. Convert the screenshot TODO to {/* */}
so the entry compiles.
Lead with the cross-filtering data explorer (pretext + Apache Arrow) across
pandas, polars, datasets, narwhals, duckdb, and drop the launcher-flag
framing for the three user-facing wins. Tighten the secret-scrubbing section
around the agent-context-window risk. Add TODO markers for hero media.
rgbkrk added 2 commits June 2, 2026 21:17
Punchier "IPython in your pi agent" hook, reframe @runtimed/node around Node/
Deno/Bun FFI, and move the DataFrame table viewer behind the dx feature flag
as experimental. Library-style tags. Work in progress.
Ink-on-paper view for editing the marketing copy by hand: black serif, one
release per page, loose line spacing to write between lines, and the
auto-generated technical changelog hidden. Linked from the changelog header.
Cmd/Ctrl+P prints or saves to PDF.
…page

One-per-page left short releases trailing a blank page. Entries now flow with
a thin rule between them, titles avoid breaking away from their content, and
inline images are capped so they don't dominate the sheet.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant