feat: automated AI-assisted changelog (site + in-app + release notes) - #147
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Single curated data module (site/src/data/changelog.ts) renders three ways: a /changelog timeline page, a JSON Feed 1.1 (/changelog.json) and an RSS 2.0 feed (/changelog.xml). Build-time validate:changelog gate mirrors validate:compare. Backfilled with shipped history. Feeds carry hero images for the in-app surfaces. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Web PWA: a Sparkles button in the StatusBar opens a panel that lazily fetches the public changelog feed (no startup network → e2e-safe) and lists releases with hero images and new-since markers. lastSeenChangelogId persists in the workbench store; VITE_APP_VERSION is injected at build. Pure feed logic is unit tested (9 tests). Desktop: UpdateNotification now renders the releaseNotes the auto-updater already passed over IPC instead of discarding them. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
electron-release.yml now pipes the commit list through a self-contained, fail-open enrichment script (scripts/changelog/ai-release-notes.mjs) that rewrites raw commits into user-facing prose when ANTHROPIC_API_KEY is set, and adds --generate-notes so GitHub's label-categorized PR notes (.github/release.yml) append below. AGENTS.md instructs agents to author user-facing changelog entries at PR time — the highest-leverage AI integration point. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
All four phases implemented: public changelog page + JSON/RSS feeds, in-app What's New (web + desktop), AI-assisted electron release notes, and author-time changelog authoring in AGENTS.md. Deferred items noted inline. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
🖼️ UI changes in this PRNo visual differences detected in the changed UI. |
Contributor
|
Preview removed for PR #147. |
| errors.push(`[${id}] ${msg}`) | ||
| } | ||
|
|
||
| function checkRequired(e: ChangelogEntry): void { |
|
|
||
| import type { ChangelogEntry } from '../data/changelog' | ||
|
|
||
| export const SITE_URL = 'https://xnet.fyi' |
| import type { ChangelogEntry } from '../data/changelog' | ||
|
|
||
| export const SITE_URL = 'https://xnet.fyi' | ||
| export const CHANGELOG_URL = `${SITE_URL}/changelog` |
| export const CHANGELOG_URL = `${SITE_URL}/changelog` | ||
|
|
||
| /** Absolute URL for an entry's anchor on the changelog page. */ | ||
| export function entryUrl(entry: ChangelogEntry): string { |
| } | ||
|
|
||
| /** Resolve a hero src (absolute path or full URL) to an absolute URL. */ | ||
| export function absoluteImage(src: string): string { |
| }) | ||
| } | ||
|
|
||
| async function enrich(version, commits) { |
crs48
added a commit
that referenced
this pull request
Jun 18, 2026
…193/0194) (#201) The `changelog-section` required check was only added in #164, so the 0192/0193/0194 feature batch merged before it never got changelog entries. This backfills the 12 user-facing features that were missing, each dated to its merge day with its PR number and contributors: | PR | Entry | |----|-------| | #138 | A safer foundation for plugins | | #145 | One trust model across plugins and Labs | | #146 | Reliability you can see for managed hubs | | #148 | Drive your own coding agent from xNet | | #149 | AI that can act on your workspace | | #150 | Your Labs become AI tools | | #152 | Your agent can use your workspace | | #154 | AI edits, right inside the editor | | #155 | An agentic dev loop in your terminal | | #158 | Review AI edits before they apply | | #159 | Kick off agentic code tasks from xNet | | #162 | Plugins run on the Labs runtime | Skipped: PRs already covered by umbrella entries (#142 plugin ecosystem, #144 extensibility fabric, #147 automated changelog, #163 agent panel, #180 changelog gallery), internal-only changes (#139 schema authz — zero user-facing effect), and meta/test/docs PRs. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.
Implements exploration 0195 — a fully-automated, AI-assisted changelog surfaced in three places, with embedded UI visuals.
What's in this PR
Phase 2 — Public changelog (the data foundation)
site/src/data/changelog.ts— one curated, typed, validated source (mirrorsroadmap.ts/compare.ts), backfilled with shipped history/changelogAstro timeline page with hero images, highlights, tag chips, PR links,#idanchors/changelog.json(JSON Feed 1.1) +/changelog.xml(RSS 2.0) via Astro endpoints — the in-app surfaces read thesevalidate:changelogbuild gate;Changelogadded to nav + sidebarPhase 3 — In-app "What's New"
editor-uxe2e safe) and lists releases with hero images + new-since markers.lastSeenChangelogIdpersists in the workbench store;VITE_APP_VERSIONinjected at build. Pure logic unit-tested (9 tests).UpdateNotificationnow renders thereleaseNotesthe auto-updater already passed over IPC (previously discarded).Phase 0 — AI-assisted release notes
electron-release.ymlpipes commits through a self-contained, fail-open enrichment script (scripts/changelog/ai-release-notes.mjs) — rewrites raw commits into user-facing prose whenANTHROPIC_API_KEYis set, no-op passthrough otherwise. Adds--generate-notesso GitHub's label-categorized PR notes (.github/release.yml) append below.Phase 4 — Author-time automation
AGENTS.mdinstructs agents to prepend a user-facingchangelog.tsentry at PR time — the highest-leverage AI integration (the human prose is good before CI runs).Design refinements vs. the exploration
CHANGELOG.mdinto a separate gh-pages path — avoids--deleteexclude juggling, matches repo conventions.communiquebinary — no new CI dependency.Validation
validate:changelog+astro buildemit page + both feeds ✓xnet-webtypecheck clean; web app builds with version injected ✓apps/**✓state.test.ts) ✓Deferred (noted inline in the doc): proactive new-badge without opening the panel, patch-release skip, per-entry permalink pages, the optional Changesets AI hook, and adding the
ANTHROPIC_API_KEYrepo secret (admin action).🤖 Generated with Claude Code