Skip to content

What's new shows every release since the version you updated from - #141

Merged
DailenG merged 3 commits into
mainfrom
feat/whats-new-range
Oct 12, 2026
Merged

DailenG merged 3 commits into
mainfrom
feat/whats-new-range

Conversation

@DailenG

@DailenG DailenG commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Updating across several releases (1.3.0 to 1.4.2) showed only the newest release notes. The old version was read from the record file and then thrown away.

What changes

  • build.rs embeds the whole CHANGELOG.md instead of one version's section.
  • whats_new::notes(from, current) builds the window text when it opens: every release newer than from up to current, newest first, under the usual heading, plus a line "You updated from X: this covers all N releases since." when more than one.
  • read_and_record now also returns the version that was on record.
  • Versions compare as numeric major.minor.patch (changelog::parse_version), so a packaged install's four-part 1.4.2.0 matches the changelog's 1.4.2, and a nightly of the same release is not an update.
  • Fallbacks keep the old behaviour: no record, an unparseable one, an equal or newer one (rollback), or no release inside the range shows the current release (or Unreleased for a dev build). The palette row passes no from, so it shows the current release only.

Cost

The changelog (about 40 KB) was already read at build time; it is now embedded whole. The range is computed once, after the first frame, only when the window opens, so the startup budget is untouched.

Verified

  • cargo xtask ci (40 tests in tachyon, including ranges, four-part versions, every fallback, non-version headings) and Windows clippy pass.
  • Real app (Linux, private instance, record file set to 1.3.0): the window opened as "What's new in Tachyon 1.4.2" with the range line and the 1.4.2, 1.4.1 and 1.4.0 sections, newest first; the record was rewritten to 1.4.2.
  • Not verified: a packaged Windows install (the 1.4.2.0 path is covered by a unit test, not run for real).

Devin Review

build.rs now embeds the whole CHANGELOG.md; whats_new::notes picks the range when the window opens, from the version read_and_record already had on record (it used to discard it). Versions compare as numeric major.minor.patch, so a packaged install's four-part 1.4.2.0 matches the changelog's 1.4.2; an unparseable, equal or newer record falls back to the current release as before.
@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 11 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3f93891d-4e3d-43f0-89aa-0dc628aeff83

📥 Commits

Reviewing files that changed from the base of the PR and between 27064a8 and 8e48edd.


📒 Files selected for processing (2)
  • crates/tachyon/src/changelog.rs
  • crates/tachyon/src/whats_new.rs

📝 Summary

Summary by CodeRabbit

  • New Features
    • After an update, the What’s New window now shows all releases newer than the previously used version, with the newest first and the starting version identified.
    • On a fresh install, when the previous version can’t be read, or when opened manually, the window shows only the current release.
  • Documentation
    • Updated the changelog to describe the release-notes behavior.

Walkthrough

The build embeds the full changelog. At runtime, the What's New window selects release sections using the current version and, for automatic openings, the previously recorded version.

Changes

Release notes

Layer / File(s) Summary
Embed and select changelog sections
CHANGELOG.md, crates/tachyon/build.rs, crates/tachyon/src/changelog.rs
The build embeds the full changelog. Changelog code parses release versions and selects matching sections, including fallback behavior.
Generate notes and return the prior version
crates/tachyon/src/whats_new.rs
What's New generation joins matching sections newest first. Version recording returns the prior nonempty version when available. Tests cover section output and stored-version results.
Pass the version range to What's New
crates/tachyon/src/app.rs
Automatic openings pass the previously recorded version to notes generation. On-demand openings request notes for the current version only.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant App
  participant WhatsNew
  participant VersionRecord
  participant EmbeddedChangelog
  App->>WhatsNew: Read and record current version
  WhatsNew->>VersionRecord: Read stored version
  VersionRecord-->>WhatsNew: Return stored version or no value
  WhatsNew-->>App: Return version check and prior version
  App->>WhatsNew: Generate notes for prior and current versions
  WhatsNew->>EmbeddedChangelog: Select matching release sections
  EmbeddedChangelog-->>WhatsNew: Return release sections
  WhatsNew-->>App: Return notes
Loading

Merge Risk: 🔵 Low · up to 27064

On development builds, the What's New window can say it covers one more release than it actually lists. Release builds are unaffected, so merge risk is low.

Pre-merge checks · Passed 5
Passed Passed checks (5 passed)
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: displaying every release since the recorded version.
Description check Passed The description explains the problem, implementation, fallback behavior, verification steps, test results, and the unverified packaged Windows scenario. It includes all required template sections.
Docstring Coverage Passed Docstring coverage is 86.67% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 30 functions across 4 files. (1 skipped: 1 …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit reads the changelog by moonlit light,
Newer release notes hop into sight.
The old version marks where the range will start,
The newest notes arrive, each in its part.
Then rabbit tucks the list away till next update.

Comment @coderabbitai help to get the list of available commands.

devin-ai-integration[bot]

This comment was marked as resolved.

… releases it jumped over

Review finding on #141: a build whose version has no section of its own yet (changes under Unreleased), updated from an older record, listed the intervening releases but dropped Unreleased, so the window showed history without the running build's own newest changes.
devin-ai-integration[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

@DailenG

DailenG commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai the finding is fixed in 27064a8 (Unreleased shown ahead of the releases a development build jumped over); thread replied to and resolved. Please re-review the current head.

@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

@DailenG Thanks for fixing the finding in 27064a8. I’ll re-review the current head, including whether development builds show Unreleased before the releases skipped during the update.


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

⚠️ Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 57 minutes.

…mped release

Review findings on #141: sections_since added Unreleased to the release list, so the range line over-counted (one release reported as two) and, with no Unreleased section, a single jumped release was discarded and the window came back empty. It now returns the sections and the number of numbered releases separately; Unreleased is shown ahead of them for a development build but never counted, and a range that has releases is always returned.
@DailenG

DailenG commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai approve

@coderabbitai

coderabbitai Bot commented Oct 12, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@DailenG
DailenG merged commit 50fe1fd into main Oct 12, 2026
8 checks passed
@DailenG
DailenG deleted the feat/whats-new-range branch October 12, 2026 22:36
DailenG added a commit that referenced this pull request Oct 13, 2026
Bumps `version` to 1.5.0 (`Cargo.toml`, `Cargo.lock`) and moves
Unreleased under `## [1.5.0] - 2026-10-12`. A minor bump, as
CONTRIBUTING.md asks for user-visible features.

Included since 1.4.2:
- The What's new window shows every release since the version you
updated from (#141).
- Syntax colour for `.json`, `.jsonc` and `.json5` files, up to 5 MB
(#113, #142).

Not included, by decision: the Explorer "Open in Tachyon" command
(#123), closed as not planned.

The `v1.5.0` tag is **not** pushed; it waits for owner approval and the
release.yml dry run (run 38321579285).
<!-- devin-review-badge-begin -->

---

<a href="https://app.devin.ai/review/daileng/tachyon/pull/143"
target="_blank"><picture><source media="(prefers-color-scheme: dark)"
srcset="https://static.devin.ai/assets/gh-devin-review-dark.svg?v=4"><img
src="https://static.devin.ai/assets/gh-devin-review-light.svg?v=4"
alt="Devin Review"></picture></a>
<!-- devin-review-badge-end -->
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