Skip to content

Track app updates: NEW badges, release notes, and a Changes tab - #98

Open
StuartCameronCode wants to merge 2 commits into
mainfrom
update-tracking
Open

StuartCameronCode wants to merge 2 commits into
mainfrom
update-tracking

Conversation

@StuartCameronCode

Copy link
Copy Markdown
Owner

Summary

  • Filters and parameters can now be tagged with sinceAppVersion, and get a "NEW" badge (in the pass list and in the settings panel) for every launch of the app version they shipped in, via a new WhatsNewService — the badge tracking survives repeated launches and only advances on the next real update.
  • UpdateAvailableDialog now shows the fetched release notes instead of discarding them.
  • Settings gains a Changes tab: every past app release in a vertical list (newest first, "NEW" badge reused from the same WhatsNewService), with that version's notes fetched lazily the first time it's selected and cached afterward.
  • Release notes (in both places above) render through a small hand-rolled ReleaseNotesText widget — headings, lists, bold, inline code — rather than raw markdown text or a new markdown package dependency.
  • Fixed Scripts/run-debug-macos.sh: its old xcodebuild | grep || true step silently swallowed real build failures and fell back to launching a stale cached app bundle. Now calls flutter build macos --debug directly (needed on newer Flutter, which resolves several plugins via Swift Package Manager rather than CocoaPods) with real exit-code checking.
  • Bumped the app version to 1.2.0.

Test plan

  • flutter analyze on every touched file — clean (only pre-existing unrelated deprecation infos)
  • flutter test --exclude-tags heavy — full suite green aside from pre-existing local-environment gaps (missing deps/macos-arm64 bundle, unrelated to this change)
  • New whats_new_service_test.dart: fresh install, migration from a build predating this tracking, first-launch-after-update, badge persistence across repeated launches, and the next real update clearing old badges
  • filter_schema_curation_test.dart extended to lint sinceAppVersion format
  • Built and ran the app locally end-to-end via the fixed run-debug-macos.sh; verified against the running process and the compiled Dart kernel that the new Changes tab, release notes rendering, and version bump are actually present (not a stale cached build)

Not included: a Podfile.lock / Runner.xcodeproj / Runner.xcscheme diff that pod install/flutter build macos produced locally, migrating several plugins from CocoaPods to Swift Package Manager integration. That's a real toolchain-version-driven shift (this machine's CocoaPods is newer than what the project was last built with) worth a deliberate decision and its own testing across CI, not something to bundle in here.

🤖 Generated with Claude Code

https://claude.ai/code/session_014GLXdGLfPwgYjW1AkonGqN

StuartCameronCode and others added 2 commits September 17, 2026 19:37
Adds an optional sinceAppVersion field to FilterSchema and
ParameterDefinition, and a WhatsNewService that badges anything tagged
with it whenever the tag is newer than the version the user last
updated from. Badges persist across every launch of the current app
version and only advance the next time the app itself updates, tracked
via a separate "last run version" marker distinct from the comparison
baseline.

Rendered via a shared NewBadge widget in both the pass list (filter
level) and the dynamic parameter widgets (property level).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014GLXdGLfPwgYjW1AkonGqN
- UpdateAvailableDialog now displays the fetched release body instead
  of discarding it.
- Settings gains a "Changes" tab: a vertical list of every app release
  (UpdateChecker.listReleases, filtered to vX.Y.Z tags only) with a
  "NEW" badge via WhatsNewService, and lazy per-version fetching of
  release notes (UpdateChecker.fetchReleaseNotes) on first selection.
- Release notes render through a new small hand-rolled ReleaseNotesText
  widget (headings, lists, bold, inline code) instead of raw markdown
  text or a markdown package dependency.
- Fixed Scripts/run-debug-macos.sh: the old xcodebuild-piped-through-grep
  step swallowed real build failures and silently fell back to
  launching a stale cached app bundle. Replaced with a direct
  `flutter build macos --debug` (needed on newer Flutter, which
  resolves several plugins via Swift Package Manager rather than
  CocoaPods) and real exit-code checking.
- Bumped app version to 1.2.0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014GLXdGLfPwgYjW1AkonGqN
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