Skip to content

Unify mobile drawer headers with iOS glass titles - #2172

Merged
DoodleBears merged 6 commits into
codex/2161-workspace-drawerfrom
codex/2171-drawer-headers
Oct 18, 2026
Merged

DoodleBears merged 6 commits into
codex/2161-workspace-drawerfrom
codex/2171-drawer-headers

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Header issue #2171 | Remaining acceptance #2186

Compact drawer issue #2174 | Agent claim

Why the change

Unify generic Sheet titles and make the workspace drawer easier to scan with separate Computer/Cloud actions, compact named connections and a fixed Notifications footer.

Special things to note

  • Merge risk: two-way door, reversible UI and local display-name changes; medium blast radius, shared mobile navigation and saved connection presentation. Review contextual actions, keyboard/large-text reachability and name-only updates. No API, authorization, native dependency or config changes.
  • Includes merged feat(mobile): compact workspace drawer with contextual actions and local names #2175; target is Unify mobile cloud navigation, compact drawer and connection names #2170’s branch. The Human authorized this integration, with no production deployment. Generic Sheet uses the shared left-aligned platform header; the workspace drawer now uses tabs only. Names are local to this phone: computer aliases reuse the existing appearance store, cloud aliases reuse config.name; Host identity, organization names, credentials and trusted discovery remain unchanged. Organization creation stays in cloud service management.
  • Source CI 39116818266 passed at dc15ffd3a; final native layout uses integrated 1376b50b1. Naming save/restart/restore was verified at f2d0f4af3 with identical naming code. Android, physical phone, VoiceOver, signed-in org/guest rows and real named-computer pairing remain unverified. The previously observed Pair-modal → cloud-services drawer-overlay issue remains open; no full navigation acceptance is claimed. Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9.

Change outline

Drawer
├─ Fixed top: Computers / Cloud rounded tabs (no title/X row)
│  ├─ Android opaque chips; iOS glass/accessibility fallback
│  └─ One plus action immediately below tabs
│     ├─ Computers → Pair a new computer
│     └─ Cloud → Join by link or QR (organization or one-channel invitation)
├─ Scrollable middle list
│  ├─ First line: connection/workspace name
│  └─ Second line: small address; guest scope retained
└─ Fixed footer
   ├─ Manage cloud services [Cloud only]
   └─ Notifications [both tabs]

Local names
├─ Computer pairing → optional name → existing local appearance store
└─ Cloud configuration review / Rename connection → existing config.name
   └─ save → cold restart → same name; no network request for renaming

Default text uses at most two lines per connection; accessibility text can wrap. Tabs do not change a Host or membership. Swipe/backdrop/Android Back/accessibility escape replace the redundant X; iOS tabs use selected-button semantics to avoid a verified native accessibility target-grouping failure. A duplicate footer in the backdrop was caught during native review and removed before final capture.

Native drawer comparisons — 402 × 874, English

Before is the preceding title/X + mixed Add iteration (59fc97fd7), not the PR base. Both captures use the same empty Computer directory and signed-out UAT cloud configuration. Theme/viewport/locale match; the small exposed underlying route differs, so compare the drawer itself. Original PR-base evidence is retained in the older evidence directory.

Computers — light, before / after

Before computers, light

After computers, light: fixed footer and contextual Add

Cloud — light, before / after

Before cloud, light

After cloud, light: fixed footer and contextual Add

Computers — dark, before / after

Before computers, dark

After computers, dark: fixed footer and contextual Add

Cloud — dark, before / after

Before cloud, dark

After cloud, dark: fixed footer and contextual Add

Connect with a local name

Computer pairing adds an optional name before scanning/pasting. The old pairing entry is the before state; native input was exercised without redeeming a pairing. Cloud renaming was saved, survived a cold restart, then the exact original name was restored and read back. These naming screenshots use f2d0f4af3; the final correction only removed the duplicated backdrop footer.

Before: computer pairing without name

After: optional local computer name

Cloud local name retained after cold restart

Maximum text — independent list scroll

The middle list exposes the address after a swipe while Notifications remains at the same position. This checks reachability, not a full VoiceOver or accessibility acceptance.

Maximum text before scrolling

Maximum text after scrolling: footer stays fixed

Full source-bound screenshots, checks and limits. Shared Simulator/Metro released, original cloud name and display settings restored. The recorded native run made no login, invitation acceptance, Host or Prod changes. Integration is now authorized; outstanding acceptance is tracked in #2186.

Generic Sheet header retained from #2171

Workspace title/X is superseded by tabs. Generic bottom Sheet retains the left-aligned title, optional icon and independent close action; iOS uses glass with opaque fallback and Android a plain title. Settings SheetStack remains outside this slice.

Before: generic Sheet plain title

After: generic Sheet glass title

Header evidence was captured at runtime 4185d28a3; final #2172 head 4c6acb7e passed CI39117869759. Historical screenshots are not a fresh native run of the integration.

Issue: #2171
Agent-Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e839a54c-5c06-4eca-99cb-4a1f9534a607

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Issue: #2171
Agent-Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9
Issue: #2171
Agent-Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9
Issue: #2171
Agent-Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9
@DoodleBears

Copy link
Copy Markdown
Contributor Author

Batch23 completed and shared Simulator window released. No Prod or merge.

  • Runtime 4185d28a380bd37f68eafb765d28d24ee947af4a, evidence-only head 0f02675de7ed3b58b4275ae1bd94687f4930b02f, native 494a20f1e. Runtime CI39109396184 passed all applicable checks; evidence-head CI pending.
  • iOS workspace drawer and generic Sheet: three text sizes × light/dark, maximum close, drawer close/reopen/backdrop, real Reduce Transparency on → opaque / off → glass passed. First maximum-font dark glass ellipse was fixed and all cases rerun. Initial source-policy and switch-label driver failures retained.
  • Four before/after PR images verified loaded at 402 × 874 in GitHub. 3.7-second recording and contact sheet inspected. Full evidence and limits.
  • Large/light and original Reduce Transparency restored. Original statistics preference bytes restored; own app/driver/Metro stopped. No login, service writes, rebuild, install or erase. Other Hosts/phone and original QA documents preserved.
  • Still unverified: Android native, physical phone, older iOS, VoiceOver/Human. Settings/SheetStack is intentionally not migrated or requalified. Secondary Sheet body-action reachability is not claimed from the partial Got it capture.

Task codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9; implementation handed off for Human review in Draft #2172.

Issue: #2171
Agent-Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9
@DoodleBears

Copy link
Copy Markdown
Contributor Author

Final evidence-only head e8472aab4a0e22c0404f99a44d6831dcfe5d0988: CI39109916881 passed every applicable check. Two evidence JSON files were formatted after the first evidence-head failure; runtime files remain identical to native-tested 4185d28a3. Draft, no merge; Android/physical/Human/older-iOS and broader drawer migration remain separate gates.

…cal names (#2175)

* feat(mobile): separate computer and cloud drawer tabs

Issue: #2174

Agent-Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9

* docs: attach native drawer tabs screenshots

Issue: #2174

Agent-Task: codex/local/01a148ae-ec7f-74b2-8157-961411ce54c9

* fix(mobile): make drawer additions category-specific (#2174)

Agent claim: #2174 (comment)

* fix(mobile): keep contextual add directly below drawer tabs (#2174)

* fix(mobile): retain native tab bounds for accessibility (#2174)

* fix(mobile): keep drawer escape container separate from tabs (#2174)

* fix(mobile): expose iOS segmented tabs as selected buttons (#2174)

* feat(mobile): compact connection rows and pin drawer footer (#2174)

Allow local names during pairing and verified cloud import, with cloud rename preserving trusted scope and sessions. Agent claim: #2174 (comment)

* fix(mobile): keep drawer footer inside panel (#2174)

* docs(mobile): capture compact drawer and naming evidence (#2174)
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