feat(changelog): add a What's New window mirroring GitHub releases - #74
Merged
Conversation
Closes #71. Adds a native "What's New" modal window that mirrors the project's GitHub Releases page in-app: a version list on the left (date + a "current" badge on the running version) and that release's notes rendered as selectable markdown on the right, with an "Open on GitHub" link. * kyde-update gains `ReleaseNote`, `release_notes()` (GET /releases?per_page=50, overridable with `KYDE_RELEASES_FEED_URL` like the existing update feed) and the pure `parse_releases` — drafts skipped, newest version first, CRLF normalised for the markdown parser, `published_at` trimmed to YYYY-MM-DD. * The feed is fetched off the UI thread, on first open only. A failed fetch keeps the window useful: error text plus Retry and a link to the releases page, never a blank pane. * Entry points: Kyde ▸ What's New…, the ⌘⇧A palette, and a "What's new" link on the update-available banner. Tests: two `parse_releases` unit tests, the `changelog_lists_releases_and_shows_ their_notes` smoke test (driven through `set_changelog`, so no network), and a `KYDE_SHOT=changelog` debug shot seeded with fixed notes so it stays offline and deterministic. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review failed after 2 attempt(s) (EngineError). Check the worker logs. |
kyle-ssg
added a commit
that referenced
this pull request
Jul 27, 2026
Resolves the CLAUDE.md conflict: both branches appended a per-feature section at the same anchor (main's "Changelog window" from #74, this branch's "Single instance"). Rather than keep both, CLAUDE.md is trimmed to rules-and-conventions only (905 -> 327 lines). The per-feature sections narrated behaviour that the code already states, drifted out of date, and were loaded into context every session. Both conflicting sections are dropped under that policy; the single-instance facts that are genuinely rules are kept -- instance.rs on the platform/ layout line, and the note that KYDE_SHOT disables single-instance so the screenshot suite can launch back to back. Also corrects accumulated rot found while trimming: 10 dead src/*.rs paths that had moved to crates/, a views/ list missing 6 modules, "eight gpui-free crates" (now ten), "all ten crates" (now eleven), the missing kyde-local-history entry, and a stale gpui_platform reference that contradicted the gotcha saying it never existed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 #71.
What
A native What's New window that mirrors the project's GitHub Releases page in-app — version list on the left, that release's notes rendered as selectable markdown on the right.
v<version>, date, acurrentbadge on the running version, pre-release marked).mdview::MarkdownView, plus an Open on GitHub link.How
kyde-updategainsReleaseNote,release_notes()(GET /releases?per_page=50, overridable withKYDE_RELEASES_FEED_URL— the same dev seam as the update feed) and the pureparse_releases: drafts skipped, newest version first (numeric, so 2.10 > 2.5), CRLF normalised for the markdown parser,published_attrimmed toYYYY-MM-DD.ChangelogView;set_changelogapplies a fetch result, which is also the test/screenshot seam (no network needed).Tests
parse_releasesunit tests: ordering/draft/CRLF/date behaviour, and junk-tolerance (bad JSON, tagless entries, a single-object feed).changelog_lists_releases_and_shows_their_notessmoke test: window opens, newest release selected, notes land in the markdown pane, selecting an older release swaps them, a failed fetch surfaces the error.KYDE_SHOT=changelogdebug shot, seeded with fixed notes so it stays offline and deterministic (KYDE_SHOT_RELEASES=<feed dump>renders a real feed instead).cargo fmt+cargo clippy --workspace --all-targets --all-features -D warnings+cargo test --workspaceall green; verified manually against the live GitHub feed.🤖 Generated with Claude Code