Skip to content

feat(mobile): expose Android Live Update chips and settings - #11457

Open
SunkenInTime wants to merge 1 commit into
pingdotgg:mainfrom
SunkenInTime:feat/android-live-update-chip
Open

feat(mobile): expose Android Live Update chips and settings#11457
SunkenInTime wants to merge 1 commit into
pingdotgg:mainfrom
SunkenInTime:feat/android-live-update-chip

Conversation

@SunkenInTime

@SunkenInTime SunkenInTime commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Android agent activity needs a readable status-bar Live Update and a way to enable promotion when the OS has disabled it. Upstream already requests promotion; its chip has no status text.

Add short chip text: Active for running agents and Review when approval or input is needed. Clear the text and promotion request when work completes, preserve dismissal behavior, and keep a nonempty title for promotion eligibility. Android 16 settings now expose the system Live Updates page, with an app-settings fallback for older native binaries and unsupported OEM intents.

Rebased onto upstream/main c542b781c6c4.

Emulator evidence

Android 16 QPR2, API 36.1, Google APIs x86_64. Actual development APK, native renderer driven by deterministic FCM-shaped debug payloads. The before image uses the upstream renderer. Android reports PROMOTED_ONGOING for active/review states and removes it on completion or when the user disables Live Updates.

Before: upstream icon-only chip After: running After: approval/input
Tap chip Completed System Live Updates setting

Verified visible dismissal suppresses same-run updates and a later run rearms the card. Disabling the system switch leaves the normal notification without a chip; re-enabling restores promotion.

App settings screenshot

Validation

  • bun fmt, bun lint, bun typecheck pass.
  • Focused bun run test suites pass: 8 mobile settings/notification tests and 43 relay delivery tests.
  • Native Robolectric suite passes: 88 tests, including API 24/25/26/33/36 coverage.
  • Native ktlint and detekt pass.
  • Android development APK builds and installs on the emulator.
  • All PR CI checks passed on c41af1a88bd8.

The emulator pass verifies native presentation/lifecycle and the Android settings intent, not real FCM transport or Samsung One UI. The React Native settings screen was loaded from the rebased worktree and tapping Live Update Settings opened Android's app notification controls. Server pairing was not performed because local automatic approval review blocked the pairing command.

Model: GPT-6
Harness: Codex

Summary by CodeRabbit

  • New Features

    • Android notifications now show concise status chips, such as “Active” or “Review,” during ongoing agent activity.
    • Added Android 16+ Live Update Settings access from the app’s Settings screen.
    • Android settings labels now adapt to the device’s supported live update capabilities.
    • Activity notifications use “Agent activity” when no title is provided.
  • Documentation

    • Added guidance for enabling and verifying Android status bar chips.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 12, 2026
@SunkenInTime
SunkenInTime marked this pull request as ready for review September 12, 2026 20:52
@cursor

cursor Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@SunkenInTime

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@macroscopeapp

macroscopeapp Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a new Android 16 Live Update capability spanning relay payloads, native Android settings intents, notification rendering, and the mobile settings UI. Because it changes an existing notification path and introduces a cross-component system integration, the aggregate behavior merits human review.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: a4949c0f-3ef2-40ff-98ec-62444b458f23

📥 Commits

Reviewing files that changed from the base of the PR and between c542b78 and c41af1a.

📒 Files selected for processing (9)
  • apps/mobile/modules/t3-agent-notifications/android/src/main/java/expo/modules/t3agentnotifications/AgentNotifications.kt
  • apps/mobile/modules/t3-agent-notifications/android/src/main/java/expo/modules/t3agentnotifications/T3AgentNotificationsModule.kt
  • apps/mobile/modules/t3-agent-notifications/android/src/test/java/expo/modules/t3agentnotifications/AgentNotificationsTest.kt
  • apps/mobile/src/features/agent-awareness/androidNotifications.test.ts
  • apps/mobile/src/features/agent-awareness/androidNotifications.ts
  • apps/mobile/src/features/settings/SettingsRouteScreen.tsx
  • docs/operations/android-notifications.md
  • infra/relay/src/agentActivity/FcmDeliveries.test.ts
  • infra/relay/src/agentActivity/fcmPayloads.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The PR adds activity chip values to Android notification payloads, renders them in active notifications, and provides Android 16 live-update settings access through native code, JavaScript helpers, and the Settings screen.

Changes

Android live updates

Layer / File(s) Summary
Activity chip payload and notification rendering
infra/relay/src/agentActivity/fcmPayloads.ts, infra/relay/src/agentActivity/FcmDeliveries.test.ts, apps/mobile/modules/t3-agent-notifications/android/src/main/java/...
The relay emits Review, Active, or an empty chip value. Android notifications use the chip while active, clear it when inactive, and use Agent activity when the title is blank. Tests cover these states.
Live-update settings flow
apps/mobile/modules/t3-agent-notifications/android/src/main/java/..., apps/mobile/src/features/agent-awareness/..., apps/mobile/src/features/settings/SettingsRouteScreen.tsx, docs/operations/android-notifications.md
Android 16+ opens notification promotion settings through the native module. JavaScript falls back to general app settings when needed. The Settings screen adds a supported live-update settings row and updates the Android label. Documentation describes status bar chips.

Priority: ➖ Normal

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

Change: Feature

Suggested reviewers: ryanrhughes

Merge Risk: ⚪ Minimal · up to c41af

The Android live-update chip and settings flows are covered without a concrete unresolved merge risk.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 11 functions across 8 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Title check ✅ Passed The title clearly summarizes the main changes: Android Live Update chips and settings support.
Description check ✅ Passed The description clearly explains what changed, why it changed, the UI impact, emulator evidence, and validation results. It does not include the template's explicit Checklist section, but the required…
Full details: Docstring Coverage

Explanation

Docstring coverage is 9.09% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 11 functions across 8 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Already reviewed the last commit. Use @coderabbitai full review to rerun a review of the entire changeset.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant