# CodexBar for Android v0.11.0

Three complete designs, four-tab navigation and improved large-screen layouts. Install **CodexBar-Android-v0.11.0.apk** over the existing app. Version code **35** retains the production signing identity and saved connections; no re-pairing is required.

- Choose **Material 3 Expressive**, **Liquid Glass** or **Instrument** in Settings → Visual design. Each has its own header, overview, provider cards, navigation and launcher icon. Expressive uses bold readings and wave-shaped meters; Liquid Glass has floating navigation with a real blurred backdrop on Android 12+ and an opaque fallback on older versions; Instrument uses an always-dark, compact numerical layout.
- **Usage / Trends / Connections / Settings** form four tabs. History and Spend switch within Trends, and the last selected page is remembered during navigation. Tablets use a navigation rail or centered glass bar, adaptive card widths and a two-pane dashboard.
- Ordinary refreshes keep readings and navigation available. Per-provider activity and a completed/total count show progress. Tabs share their dashboard model and avoid redundant refreshes within one minute.
- **Review fix:** disconnecting, replacing an account or changing acquisition sources immediately clears the previous source's readings from Usage and Trends, even when a slow refresh is already running. Ordinary refreshes still retain their content.
- **Review fix:** Liquid Glass no longer continuously redraws when idle. Separate source/consumer drawing layers break a feedback loop while keeping the scrolling backdrop and collapsed header. This avoids unnecessary rendering; it is not a measured physical-device battery-life claim.
- The launcher icon follows the selected design after leaving the app. Saved WinUI 3 selections move to Expressive; Aurora selections move to Instrument. Launcher behavior varies: shortcuts can be removed when their old icon entry is disabled.
- Phone/Windows acquisition modes, encrypted saved connections, provider order, widgets, reset alerts, PC history, reference costs/token charts and opt-in remote PC settings are retained. PC history/spend/settings require **Windows v0.71.0 or later**; the current Windows v0.71.1 is compatible.
- README and the website now describe the same three designs and use current emulator captures.

## Screens

Fresh captures of the real Compose UI on an Android API 36.1 emulator, with synthetic quota/history/spend data from the debug-only harness. These are not physical-device acceptance results. The harness is excluded from the signed release.

<p>
  <img src="https://github.com/lingmulongtai/CodexBar-android/releases/download/v0.11.0/expressive-phone.png" width="260" alt="Material 3 Expressive on a phone" />
  <img src="https://github.com/lingmulongtai/CodexBar-android/releases/download/v0.11.0/liquid-glass-phone.png" width="260" alt="Liquid Glass on a phone" />
  <img src="https://github.com/lingmulongtai/CodexBar-android/releases/download/v0.11.0/instrument-phone.png" width="260" alt="Instrument on a phone" />
</p>

![Expressive tablet dashboard](https://github.com/lingmulongtai/CodexBar-android/releases/download/v0.11.0/expressive-tablet.png)
![Liquid Glass tablet dashboard](https://github.com/lingmulongtai/CodexBar-android/releases/download/v0.11.0/liquid-glass-tablet.png)
![Instrument tablet dashboard](https://github.com/lingmulongtai/CodexBar-android/releases/download/v0.11.0/instrument-tablet.png)

## Upstream and review

Android upstream `hyunnnchoi/CodexBar-android` was fetched and checked on 2026-10-18 at `1811d1fe032fd4a80240fd6bc5d04cee649a0afb`. There are no new upstream-only commits; no compatible update or incompatible deferral was omitted. The redesign from [PR #65](https://github.com/lingmulongtai/CodexBar-android/pull/65) was reviewed, including theme migration, navigation/deep links, shared state and launcher entries. A behavioral regression test covers retaining ordinary-refresh content and invalidating it on a source change during a pending request.

## Verification

Local validation on Windows completed with strict Gradle dependency verification: `:app:testDebugUnitTest`, `:app:lintDebug` and `:app:assembleDebug` passed. **435 tests: 433 passed, 2 skipped, no failures.** The two opt-in native Windows interop tests were not rerun in this release review. Lint reported **130 warnings, no errors**; this is not a claim that all existing warnings have been resolved. `ReleaseVersionConsistencyTest` passed with synchronized app/companion versions, current notes and ten fresh PNG captures. The static website validator passed.

The ten captures use the v0.11.0 debug APK (version code 35), at 1080×2400 / 420dpi and 2560×1600 / 240dpi. All three phone/tablet dashboards, Liquid Glass dark mode, History, Spend and separate Gemini Apps/CLI entries rendered with no app crash. They use synthetic data, not a live account connection. The production release workflow additionally checks the signer, launches the signed APK through its default launcher icon and opens Connections by deep link.

All three designs were selected through the actual Settings UI, backgrounded, launched through their selected launcher entries and force-stopped/restarted without losing the selection. The Glass Trends screen restored Spend after leaving and returning. `scripts/verify-glass-rendering.py` reproduced the original idle loop (268 frames in five seconds on the dashboard; a separate comparison measured 308 on Glass versus 0 on Expressive/Instrument). With the fix, dashboard and Spend each rendered **0 frames during five idle seconds**, both initially and after scrolling; no app crash occurred. The ten release captures were refreshed from the fixed APK. The drawing boundaries follow [Compose graphics-layer isolation](https://developer.android.com/develop/ui/compose/graphics/draw/modifiers).

| Review commit | Purpose |
| --- | --- |
| `20b70a9` — `test: launch signed Android smoke checks through the launcher` | Exercise the new launcher entry in the signed-release startup check. |
| `b2b47c3` — `fix: clear shared readings when the quota source changes` | Clear the old source across shared tabs; include a behavioral regression test with an in-flight provider request. |
| `8dc8f09` — `chore: prepare the three-design Android v0.11.0 release` | Synchronize version 0.11.0 / code 35, companions, release notes, screenshots, README and website. |
| `32a3786` — `fix: resolve the launcher entry before the release smoke check` | Resolve the enabled launcher component and start it explicitly, matching a launcher rather than an implicit MAIN intent. |
| `40e2917` — `fix: isolate glass layers to stop continuous idle redraws` | Isolate source/consumer display lists and add a real-emulator idle-rendering regression check. |

Physical phone/tablet behavior, OEM launcher shortcut retention, Samsung Now Bar, battery restrictions and off-LAN Tailscale delivery remain separate acceptance checks. The app observes reset changes when Android can refresh; it does not guarantee instant push delivery or reconstruct missed observations.

**Full changelog:** https://github.com/lingmulongtai/CodexBar-android/compare/v0.10.0...v0.11.0
