Skip to content

Release 9.3.0: water and caffeine import, honest Effort, and an Oura resting-HR fix - #1000

Merged
ryanbr merged 1 commit into
mainfrom
release/9.3.0
Jul 31, 2026
Merged

Release 9.3.0: water and caffeine import, honest Effort, and an Oura resting-HR fix#1000
ryanbr merged 1 commit into
mainfrom
release/9.3.0

Conversation

@ryanbr

@ryanbr ryanbr commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Release notes for 9.3.0, covering everything merged since v9.2.1 (43 PRs), plus the in-app What's New entry and the version bumps.

What's here

  • docs/releases/v9.3.0.md — the release notes, with the whatsnew front-matter the generator reads. Title translations are supplied for all five locales, so the generator has no English fallback to warn about.
  • AppChangelog.kt / AppChangelog.swift + six strings.xml — generated by Tools/appchangelog-gen.py, not hand-written, so both platforms carry byte-identical items and Android gets a localised title rather than a raw literal.
  • CHANGELOG.md — a 9.3.0 section in the existing house format.
  • VersionsMARKETING_VERSION 9.2.2 → 9.3.0, versionName 9.2.2 → 9.3.0, versionCode 305 → 306.

Why the notes lead with "Scores that change"

Three merges move numbers users have already seen, and one needs an action from them. Burying that under "Fixed" would have people reading a changed Effort score as a new bug:

The iPhone permission prompt from #974 is also flagged, since an existing install will see a Health dialog it has never seen before and that is otherwise alarming.

Verification

  • Tools/i18n_audit.py --ci origin/mainexit 0. The new title key is present in all six strings.xml with real translations, French apostrophe correctly XML-escaped.
  • Tools/doc_comment_lint.py — clean.
  • Kotlin: full src/main/java compile. 2517 errors vs main's 2516; the single delta is one more unresolved reference: R in AppChangelog.kt, which already has 270 of them because R isn't generated in an ad-hoc classpath. Exactly +1 for the +1 new uiString(R.string…) line, and Gradle generates the field from the strings.xml entry above.
  • Swift: swiftc -parse clean on AppChangelog.swift.
  • Contributors collected with Tools/release-contributors.sh v9.2.1 per CLAUDE.md, credited by @handle, third-party only.

Note, not fixed here

CHANGELOG.md has no 9.2.0 or 9.2.1 section — its newest entry before this was 9.1.0, so this commit makes the file read 9.1.0 → 9.3.0. Both versions do have docs/releases/ notes and in-app entries, so only that one file has the gap. Backfilling it is a separate change and not mixed into a release commit.

Notes covering everything merged since v9.2.1 (43 PRs), the in-app What's
New entry generated for both platforms, and the version bumps.

- docs/releases/v9.3.0.md — release notes plus the whatsnew front-matter,
  with title translations for all five locales so the i18n gate has no
  English fallback to warn about.
- AppChangelog.{kt,swift} + six strings.xml — generated by
  Tools/appchangelog-gen.py, not hand-written, so the two platforms carry
  byte-identical items.
- CHANGELOG.md — a 9.3.0 section in the existing house format.
- MARKETING_VERSION 9.2.2 -> 9.3.0, versionName 9.2.2 -> 9.3.0,
  versionCode 305 -> 306.

The notes lead with a 'Scores that change' section because three merges
move numbers users have already seen — gap-weighted strain (#963), the
workout resting-HR fix (#983), and the sleep transition rule (#348) — and
the Oura fix (#375) corrects the importer, not rows already written, so it
needs a re-import to take effect.
@ryanbr
ryanbr merged commit 2f8b9e3 into main Jul 31, 2026
3 checks passed
@ryanbr
ryanbr deleted the release/9.3.0 branch July 31, 2026 08:33
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