feat(mobile): show build number with version in settings - #7697
Conversation
Signed-off-by: Tom Brow <tomb@block.xyz>
Signed-off-by: Tom Brow <tomb@block.xyz>
🔐 Codex Security Review
Review SummaryOverall Risk: NONE
FindingsNo concrete security, correctness, or reliability findings were identified. Notes
Generated by Codex Security Review | |
|
@codex review |
|
@builderbot review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@buzz-security-review ea0b9c3 |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Signed-off-by: Tom Brow <tomb@block.xyz>
|
@codex review |
|
@builderbot review |
|
Codex Review: Didn't find any major issues. 🚀 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@buzz-security-review d82feb7 |
jedwards27
left a comment
There was a problem hiding this comment.
:bot: Jude’s code review agent — APPROVE
Reviewed exact head d82feb7b28d91d3022d4ef78e80a9c689dbd0d52 against base 6dfd145cde4bf0d45091de1cc5e6c7e3462d5703.
No unresolved author-actionable defect found.
mobile/lib/features/settings/settings_page.dart:70-71,227-252reads package metadata once for the mounted page, leaves Settings usable while it resolves, rendersv<version> (<build>), and retains version-only fallback for an empty build number.mobile/test/features/settings/settings_page_test.dart:18-76covers normal, empty, and 10-digit build numbers at 2× text scale;mobile/test/features/settings/settings_page_loading_test.dart:13-68covers pending-to-complete metadata through the production method-channel seam. Independent mutation checks made the build-number assertions fail before restoration.crates/buzz-relay/src/handlers/event.rs:1522-1534,1667-1679is test-fixture compatibility only; the changed handler subset passed 24 tests with 4 ignored.- The longer footer remains centered, noninteractive text with one semantics owner and no added focus target or styling/contrast change.
Exact-head validation on clean trees: full just mobile-test passed (2,236 passed / 4 skipped, plus 3 push-unconfigured tests); focused changed settings tests passed (15); cargo test -p buzz-relay handlers::event::tests:: -- --nocapture passed (24 / 4 ignored); git diff --check passed. Mobile, Rust, PostgreSQL, security, macOS, Windows, and build CI gates are green.
Non-blocking confidence gaps: no independent installed iOS/Android artifact or VoiceOver/TalkBack observation. Full local buzz-relay testing had six unrelated media-test Sqlx(PoolTimedOut) failures after 1,047 passes; focused changed tests and exact-head CI passed. Desktop smoke shard 2 failed after exhausting retries because an unrelated file-upload test never observed upload-progress; the PR changes no Desktop source, while smoke shards 1/3/4 and Desktop Core passed.
Author action: none.
Verification owner: mobile release/artifact validation for native metadata and screen-reader behavior; CI/tooling owner for the unrelated flaky Desktop and local database-test failures.
jedwards27
left a comment
There was a problem hiding this comment.
:bot: Jude’s code review agent
APPROVE — reviewed exact head d82feb7b28d91d3022d4ef78e80a9c689dbd0d52 against base 6dfd145cde4bf0d45091de1cc5e6c7e3462d5703.
Findings
No unresolved author-actionable defect.
The mobile Settings path reads PackageInfo.fromPlatform() once, remains usable while metadata is pending, renders v<version> (<buildNumber>), and preserves the existing version-only fallback when the native build number is empty. Tests exercise normal, empty, and long Android-shaped build numbers at 2× text scaling and the pending-to-complete package-info method-channel path. The two relay edits only repair test fixtures for the current synchronous auth mutex.
Author action: none.
Verification owner: reviewer/tooling or the mobile release gate for optional independent installed-artifact confirmation.
Exact-head validation
just mobile-install— pass.just mobile-check— pass.- Full
just mobile-test— pass on unchanged-head rerun: 2,236 passed / 4 skipped, followed by 3 unconfigured-build tests passed. An initial run had two push-export timing/order failures; the rerun and exact-headClients / Mobilegate passed. - Changed Settings tests — pass; mutation from build-aware formatting to version-only output made the intended cases fail before restoration.
cargo test -p buzz-relay handlers::event::tests:: -- --nocapture— 24 passed / 4 ignored.git diff --check— pass.- Exact-head mobile, Rust, PostgreSQL, security, macOS, Windows-build, and DCO gates passed.
The full local cargo test -p buzz-relay had 1,047 passes and six media-test Sqlx(PoolTimedOut) failures; the changed handler subset passed. The exact-head Desktop smoke shard 2 gate also failed while other desktop shards passed; this PR changes no Desktop production source, and the failure propagates only through aggregate Desktop jobs. These are confidence gaps, not evidence of a PR-caused defect.
Residual risk
Neither lane independently launched an exact-head packaged iOS/Android artifact or captured VoiceOver/TalkBack output. The PR screenshot, source inspection, widget tests, mutation proof, and exact-head mobile CI support approval, but native metadata retrieval and screen-reader pronunciation remain release/tooling-owned verification.
Cleanup: reviewer worktrees removed; no disposable REPOS/*-carl checkout remains.
* origin/main: (75 commits) fix(workflows): make deletion persistent and retryable (#7735) fix(mobile): preserve thread replies through refresh failures (#7757) fix(mobile): keep iOS message menu actions responsive after rebuilds (#7758) fix(relay): exclude ephemeral activity from message quota (#7736) release: push gateway chart 0.3.1 (#7749) fix(push): label plaintext push gateway service as HTTP (#7717) Replace personal and internal data in desktop test fixtures (#7748) Add mobile VISION (#7710) fix(mobile): keep relay sessions stable during push lease updates (#7745) fix(desktop): keep managed agent avatars usable across communities (#7732) fix(mobile): fail open when age checks are unavailable (#7714) fix(ci): don't run desktop tests for purely mobile client changes (#7709) fix(mobile): temporarily disable age gating (#7708) feat(db): expose connection setup metrics (#7286) Isolate S3 storage metrics from the relay (#7543) fix(web): route mobile invite downloads to app stores (#7702) feat(mobile): show build number with version in settings (#7697) release(mobile-infra): buzz-push-gateway 0.3.0 (#7685) Add authenticated WebSocket recovery telemetry (#7546) Instrument database pool roles (#7356) ... # Conflicts: # crates/buzz-db/src/runtime/migration.rs
* origin/main: (81 commits) fix(mobile): avoid opening empty threads on message tap (#7756) fix(workflows): make deletion persistent and retryable (#7735) fix(mobile): preserve thread replies through refresh failures (#7757) fix(mobile): keep iOS message menu actions responsive after rebuilds (#7758) fix(relay): exclude ephemeral activity from message quota (#7736) release: push gateway chart 0.3.1 (#7749) fix(push): label plaintext push gateway service as HTTP (#7717) Replace personal and internal data in desktop test fixtures (#7748) Add mobile VISION (#7710) fix(mobile): keep relay sessions stable during push lease updates (#7745) fix(desktop): keep managed agent avatars usable across communities (#7732) fix(mobile): fail open when age checks are unavailable (#7714) fix(ci): don't run desktop tests for purely mobile client changes (#7709) fix(mobile): temporarily disable age gating (#7708) feat(db): expose connection setup metrics (#7286) Isolate S3 storage metrics from the relay (#7543) fix(web): route mobile invite downloads to app stores (#7702) feat(mobile): show build number with version in settings (#7697) release(mobile-infra): buzz-push-gateway 0.3.0 (#7685) Add authenticated WebSocket recovery telemetry (#7546) ... Signed-off-by: Hayt <9e1c23a3fd83f61da34420e4e88ff1b16e45cafcc0cd9019eb07d4ecfa8ca9b0@buzz.block.builderlab.xyz>
* origin/main: (75 commits) fix(workflows): make deletion persistent and retryable (#7735) fix(mobile): preserve thread replies through refresh failures (#7757) fix(mobile): keep iOS message menu actions responsive after rebuilds (#7758) fix(relay): exclude ephemeral activity from message quota (#7736) release: push gateway chart 0.3.1 (#7749) fix(push): label plaintext push gateway service as HTTP (#7717) Replace personal and internal data in desktop test fixtures (#7748) Add mobile VISION (#7710) fix(mobile): keep relay sessions stable during push lease updates (#7745) fix(desktop): keep managed agent avatars usable across communities (#7732) fix(mobile): fail open when age checks are unavailable (#7714) fix(ci): don't run desktop tests for purely mobile client changes (#7709) fix(mobile): temporarily disable age gating (#7708) feat(db): expose connection setup metrics (#7286) Isolate S3 storage metrics from the relay (#7543) fix(web): route mobile invite downloads to app stores (#7702) feat(mobile): show build number with version in settings (#7697) release(mobile-infra): buzz-push-gateway 0.3.0 (#7685) Add authenticated WebSocket recovery telemetry (#7546) Instrument database pool roles (#7356) ...
* origin/main: (75 commits) fix(workflows): make deletion persistent and retryable (#7735) fix(mobile): preserve thread replies through refresh failures (#7757) fix(mobile): keep iOS message menu actions responsive after rebuilds (#7758) fix(relay): exclude ephemeral activity from message quota (#7736) release: push gateway chart 0.3.1 (#7749) fix(push): label plaintext push gateway service as HTTP (#7717) Replace personal and internal data in desktop test fixtures (#7748) Add mobile VISION (#7710) fix(mobile): keep relay sessions stable during push lease updates (#7745) fix(desktop): keep managed agent avatars usable across communities (#7732) fix(mobile): fail open when age checks are unavailable (#7714) fix(ci): don't run desktop tests for purely mobile client changes (#7709) fix(mobile): temporarily disable age gating (#7708) feat(db): expose connection setup metrics (#7286) Isolate S3 storage metrics from the relay (#7543) fix(web): route mobile invite downloads to app stores (#7702) feat(mobile): show build number with version in settings (#7697) release(mobile-infra): buzz-push-gateway 0.3.0 (#7685) Add authenticated WebSocket recovery telemetry (#7546) Instrument database pool roles (#7356) ... Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
…p-20260915 * origin/main: (28 commits) fix(mobile): avoid opening empty threads on message tap (block#7756) fix(workflows): make deletion persistent and retryable (block#7735) fix(mobile): preserve thread replies through refresh failures (block#7757) fix(mobile): keep iOS message menu actions responsive after rebuilds (block#7758) fix(relay): exclude ephemeral activity from message quota (block#7736) release: push gateway chart 0.3.1 (block#7749) fix(push): label plaintext push gateway service as HTTP (block#7717) Replace personal and internal data in desktop test fixtures (block#7748) Add mobile VISION (block#7710) fix(mobile): keep relay sessions stable during push lease updates (block#7745) fix(desktop): keep managed agent avatars usable across communities (block#7732) fix(mobile): fail open when age checks are unavailable (block#7714) fix(ci): don't run desktop tests for purely mobile client changes (block#7709) fix(mobile): temporarily disable age gating (block#7708) feat(db): expose connection setup metrics (block#7286) Isolate S3 storage metrics from the relay (block#7543) fix(web): route mobile invite downloads to app stores (block#7702) feat(mobile): show build number with version in settings (block#7697) release(mobile-infra): buzz-push-gateway 0.3.0 (block#7685) Add authenticated WebSocket recovery telemetry (block#7546) ... Signed-off-by: Brainy Bumble <0ed7657b57c0e8a9f5288390dd6c8d5d0a3a06abe9b01b9006814f52077d6cdf@buzz.block.builderlab.xyz>
Mobile Settings now identifies the installed build as e.g.
v0.16.0 (432)rather than justv0.16.0. If the platform supplies no build number, the footer keeps the existing version-only display.