You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Mobile iOS: Settings opens a blank native sheet on SDK 58 #2107
The SDK58 iOS native follow-up for #2020 / #2024 found a completely blank Settings formSheet, twice including after cold restart. Baseline evidence: #2024 (comment) . Integrated source a0b2919072af8fee62d8bb5fbb402fc52fb0d852, Expo58.0.14/RN0.88.0, iOS26 Simulator. The AX tree only contains the sheet handle; this is distinct from the shared Simulator's known system CJK font failure. Root cause is not yet established.
Bounded scope
Reproduce in English and isolate the missing Settings content through the real native route.
Apply the smallest compatible fix; verify Settings content, nested destinations/back/Done/swipe, scrolling, light/dark and preference cold-restart recovery where reachable.
Coordinate shared Simulator access after Mobile: trusted TOB UAT import and WorkOS sessions #2103 releases; Human also explicitly authorized a physical iPhone comparison. Preserve existing device data, active cloud-login flows, shared Host and phone Products.
Publish comparable native before/after evidence and exact source/binary identities; distinguish Simulator, physical-device and untested checks.
No SDK/dependency upgrade, production operation, device wipe or merge is included. User requested a PR, not a merge. This is a focused follow-up to the already merged SDK58 migration.
Task: codex/local/01a145db-40f8-7e41-bc55-a7bd997b525b (not a DSH Session)
Issue scope: Reproduce and fix blank iOS Settings content; English Simulator regression after Mobile: trusted TOB UAT import and WorkOS sessions #2103 handoff and Human-authorized physical iPhone comparison. Preserve device data and record native evidence separately.
Physical iOS comparison and connected Host refresh — 2026-10-18 JST
Physical iPhone / iOS 18.1.1, existing SDK 58 native binary built at a0b291907 (SHA-256 93d2d5c336be9ae76383ec74aa545c426c3f0637a4c44aa2190b62e56def4ff7), unchanged Metro JavaScript 216963322c70c7ea009392da66e9a0e1f4327727, app-only English locale. Existing phone data was retained. Direct development-client connection resolved the development-server discovery screen.
Settings content passes on the physical phone: Done, Computers and Notifications are visible. The first diagnostic assertion falsely rejected the Computers button's extended accessibility label; the corrected assertion passes. This is a comparison result, not a fix for the earlier iOS 26 Simulator blank sheet.
Separate Host compatibility failure reproduced:botharness/humanAttention rejected queryVersion. The phone was connected to the retained performance-test Host, whose plugin was at 10e1c56d0a15c8191fc4417db2b28bde73983fe8. DSH was already the repository-pinned 0.2.0-rc.2.
Under Human authorization, refreshed that Host's DSB plugin to merged main 2202bef4d744893fddf66cdd0a6b0c58f710dfb6. Runtime releaseInfo confirms this exact clean development revision. DSH, the existing mock-model configuration, network route, phone pairing and original performance source checkout were preserved.
Before restart: both Bots idle, zero pending Action items; complete private Profile backup retained. A SQLite-consistent rehearsal migrated schema 95 → 96 through the production owner, with all 84 pre-existing tables unchanged and integrity ok. The live upgrade is schema 96/integrity ok; original Host identity, both Bots, 316 Source Events, 9 Inbox Admissions, both Channel records and paired-device credentials were checked unchanged.
Live API + physical rendering pass: the same humanAttention(queryVersion: 1) request now succeeds; the phone reconnects with its existing pairing and Activity shows “Nothing needs you right now.” without the descriptor error. This retains the mock-model performance environment; it does not qualify a real provider reply or push delivery.
Overlay standard and native-lane handoff — 2026-10-18
The Human confirmed the scope: bottom sheets/drawers, full-screen modals, alerts/dialogs, menus and platform differences. The standard is now in Draft PR #2112 at aa2de4950652ff9c1a005a8f3636ddef65efa8f8:
Apple HIG and official Android guidance were read; the latest70 PR titles were screened, with eight relevant mobile PRs inspected in detail. Historical Android QA is attributed, not claimed as a new run; fix(mobile): align Android dialogs with OCAT settings #2109 remains an open dependency for its dialog adapter.
A bottom sheet has one functional handle, a fixed header, then scrolling content. Immediate settings have no trailing Down/Done/Save; closing preserves completed changes. Editors retain explicit commit/cancel and protect dirty drafts. Full-screen modals, dialogs, menus and the side drawer have separate rules. Accessible non-drag exits remain required.
Current fix(mobile): restore Settings and standardize sheet dismissal #2112 is provisional: modal presentation fixes the observed blank content, but lacks the required handle and still has a scrolling title/Done. The document explicitly records this gap; no final-conformance or merge claim. The first implementation slice remains Settings → Notifications → Back → Close/swipe, followed by a picker and a transactional editor.
Native: the current-main Batch11 Simulator build at b8524d02fc4c080573971a291f740651d451ca4asucceeded. It was not installed or runtime-qualified. Products and prior evidence are preserved. The original Simulator app/data/cloud configuration stayed intact; only this task's temporary QA pairing was removed and its empty Host stopped. Shared source/dependencies/Metro were restored to Batch10 216963322c70c7ea009392da66e9a0e1f4327727; native Cloud services showed Signed out and an enabled Sign in. Default text/light restored, driver closed, lane explicitly handed to #2103 for authorized unattended UAT. Phone comparison setup remains compatible and isolated.
Validation: previous runtime-source CI was green at ca4eae080; this documentation/flow follow-up passes formatting, whitespace and bilingual changelog checks. Maestro remains unrun (Java unavailable). The new-build runtime matrix, Chinese rendering, VoiceOver/TalkBack and Human visual acceptance remain pending. No merge or release by this task.
Settings native follow-up completed at PR head baa5777a86b46f39bb1232de214314c5d0ce288f; remains Draft and unmerged.
Implemented one handle → fixed header → scrolling body. Root has accessible Close ×; child pages retain Back. No trailing Done/Down. UIKit owns drag dismissal; per-control changes remain applied.
iOS26 Simulator: light/dark × default/intermediate/maximum text 6/6 passed for Settings → Notifications → Back → Close. Root and child handle drag, final-row fixed header, preference write → swipe → cold restart retention (then original value restored), and live default→max→default also passed.
The first text Close clipped at maximum size; fixed with an accessible X and repeated the matrix. Screenshots, recording, exact source/native identities, baseline failure and test limits: evidence.
Applicable final-head CI passed. Final-head physical device, Android native, screen readers, Reduce Motion, Chinese rendering, APNs and Human QA remain unqualified. Maestro not run (missing Java); native path used agent-device/XCTest.
Shared Simulator/8091 returned to Mobile: trusted TOB UAT import and WorkOS sessions #2103 after restoring its compatible original app and frozen source; app data/cloud config retained, only task QA pairing/Host removed, driver/recorder closed. Phone Products and shared QA Host preserved.
Physical follow-up for #2112 is complete at baa5777a8: handle dismissal, fixed header, maximum text and immediate setting persistence/cold restart passed on iPhone XS Max / iOS 18.1.1 (English, dark, Debug). Original font and Streaming restored, pairing/data retained, shared Simulator untouched. No source changes or merge. Evidence and explicit limits; full result and images are in PR #2112. Human acceptance and the remaining platform/accessibility gates stay open.
Continuing the existing claim for codex/local/01a145db-40f8-7e41-bc55-a7bd997b525b on codex/2107-ios-settings-sheet / PR #2112. Human requested physical light appearance and VoiceOver qualification, then identified that the clickable “About anonymous statistics” row lacks the same visible button/group treatment as neighboring Settings rows. Scope: reuse existing Settings row styling, preserve disclosure behavior and persistence, capture native before/after and bounded screen-reader evidence, restore device settings. The separate question about the root Close button is under evaluation; no removal assumed. No merge.
Continuation of this task claim: the statistics-row styling feedback is implemented in Draft PR #2112 at62483069b. Physical Light8/8 and latest CI passed. Human chose restored phone settings and a pending manual VoiceOver gate. Exact source/binary identities, matched screenshots, tool limitations and remaining manual steps are in the verification report. No merge. Claim: #2107 (comment)
Handle-only Settings dismissal is implemented in Draft PR #2112, head 79e306f. Root X removed; handle tap/drag and accessibility activation/escape are wired to Close; child Back stays within the sheet. No merge.
Physical iOS Light/Dark × default/intermediate/maximum passed 6 cases, plus child dismissal and preference cold-retention checks. Local mobile tests: 567 passed / 8 skipped; current-head CI passed applicable checks. Original phone appearance/font/Streaming restored; independent phone/8097 lane released.
Actual VoiceOver focus, announcements and gestures remain manual acceptance per the Human's earlier choice; VoiceOver stayed OFF. Android/TalkBack and existing unqualified native/Human gates remain open. Source/runtime/native identities, first-run interruption and continuation, screenshots and proof limits: #2112 (comment)
Agent-Task: codex/local/01a145db-40f8-7e41-bc55-a7bd997b525b
Claim: #2107 (comment)
Status: implementation and automated/ordinary native regression complete; Human accessibility acceptance pending.
Acceptance continuation completed; PR #2112 stays Draft and unmerged.
Current-main acceptance completed on c39cdd5. The Settings route conflict with main is resolved, retaining both the new chat-background child and handle-only dismissal/fixed title. PR remains Draft, unmerged.
All applicable current-head CI checks passed; local mobile596 passed/8 skipped, typecheck/lint/format/changelog passed.
Physical iPhone XS Max /iOS18.1.1: English Light9/9, background child6/6, Chinese Light5/5, Reduce Motion ON4/4. Verified root/child close and Back, fixed title/final row, statistics expand/collapse, immediate preference/reopen/cold retention, and unsaved background draft cancellation. Tested Chinese views render normally without missing-glyph boxes.
Original Streaming and Reduce Motion OFF restored and verified. English app launch restored; system language, automatic appearance and font untouched. Final cold capture/storage readback passed. Device driver closed; lane released. No Host/Simulator/native installation changes.
VoiceOver deferred per the Human's latest instruction, not exercised or claimed passed. Earlier six-theme/text-size matrix remains on its recorded older runtime. Android, current-head iOS26, APNs, Release performance and Human acceptance remain separate.
First harness selector/locale errors, a temporary dev-server restart gap and one failed screenshot are retained in the report; retries are not hidden. No further product bug was found.
Reproduced: on the shared iOS 26.0 Simulator (English, light and dark), Settings opens blank on main's cf4cc900a and on #2324's b0f9a9883. Only the grabber shows, and the accessibility tree is empty. No JS error appears in Metro. Pair is also a full-height formSheet in #2324 and renders fine.
Cause: Settings is the only formSheet that holds a nested Stack (app/settings/_layout.tsx → SheetStack). On iOS, that combination opens with nothing in it.
Fix (#2324, commit 9f4256c): on iOS, Settings opens with presentation: 'modal'; Android keeps its sheet. This is the same presentation change #2112 makes. It keeps #2324's title capsule and close button rather than #2112's handle-only dismissal. On the Simulator, Settings now renders in light and dark, the Activity count page opens and Back returns, and close dismisses Settings. Mobile typecheck and 819 mobile tests pass.
Not checked: a physical iPhone on this head, Android, large text and VoiceOver. #2112 and #2324 both change the Settings header, so whichever merges second needs that reconciled.
Activity
DoodleBears commentedon Oct 17, 2026
Agent work claim
codex/local/01a145db-40f8-7e41-bc55-a7bd997b525b(not a DSH Session)codex/2107-ios-settings-sheetDoodleBears commentedon Oct 17, 2026
Physical iOS comparison and connected Host refresh — 2026-10-18 JST
a0b291907(SHA-25693d2d5c336be9ae76383ec74aa545c426c3f0637a4c44aa2190b62e56def4ff7), unchanged Metro JavaScript216963322c70c7ea009392da66e9a0e1f4327727, app-only English locale. Existing phone data was retained. Direct development-client connection resolved the development-server discovery screen.botharness/humanAttentionrejectedqueryVersion. The phone was connected to the retained performance-test Host, whose plugin was at10e1c56d0a15c8191fc4417db2b28bde73983fe8. DSH was already the repository-pinned0.2.0-rc.2.2202bef4d744893fddf66cdd0a6b0c58f710dfb6. RuntimereleaseInfoconfirms this exact clean development revision. DSH, the existing mock-model configuration, network route, phone pairing and original performance source checkout were preserved.ok. The live upgrade is schema 96/integrityok; original Host identity, both Bots, 316 Source Events, 9 Inbox Admissions, both Channel records and paired-device credentials were checked unchanged.humanAttention(queryVersion: 1)request now succeeds; the phone reconnects with its existing pairing and Activity shows “Nothing needs you right now.” without the descriptor error. This retains the mock-model performance environment; it does not qualify a real provider reply or push delivery.docs(mobile): define shared overlay contracts and acceptance gates
DoodleBears commentedon Oct 17, 2026
Overlay standard and native-lane handoff — 2026-10-18
The Human confirmed the scope: bottom sheets/drawers, full-screen modals, alerts/dialogs, menus and platform differences. The standard is now in Draft PR #2112 at
aa2de4950652ff9c1a005a8f3636ddef65efa8f8:Native: the current-main Batch11 Simulator build at
b8524d02fc4c080573971a291f740651d451ca4asucceeded. It was not installed or runtime-qualified. Products and prior evidence are preserved. The original Simulator app/data/cloud configuration stayed intact; only this task's temporary QA pairing was removed and its empty Host stopped. Shared source/dependencies/Metro were restored to Batch10216963322c70c7ea009392da66e9a0e1f4327727; native Cloud services showed Signed out and an enabled Sign in. Default text/light restored, driver closed, lane explicitly handed to #2103 for authorized unattended UAT. Phone comparison setup remains compatible and isolated.Validation: previous runtime-source CI was green at
ca4eae080; this documentation/flow follow-up passes formatting, whitespace and bilingual changelog checks. Maestro remains unrun (Java unavailable). The new-build runtime matrix, Chinese rendering, VoiceOver/TalkBack and Human visual acceptance remain pending. No merge or release by this task.fix(mobile): give Settings a fixed header and functional dismissal ha…
fix(mobile): keep Settings close control clear at maximum text size
docs(mobile): record Settings overlay implementation and regression path
DoodleBears commentedon Oct 17, 2026
Settings native follow-up completed at PR head
baa5777a86b46f39bb1232de214314c5d0ce288f; remains Draft and unmerged.No merge or deployment performed.
docs(qa): physical iPhone Settings regression evidence
DoodleBears commentedon Oct 17, 2026
Physical follow-up for #2112 is complete at
baa5777a8: handle dismissal, fixed header, maximum text and immediate setting persistence/cold restart passed on iPhone XS Max / iOS 18.1.1 (English, dark, Debug). Original font and Streaming restored, pairing/data retained, shared Simulator untouched. No source changes or merge. Evidence and explicit limits; full result and images are in PR #2112. Human acceptance and the remaining platform/accessibility gates stay open.DoodleBears commentedon Oct 17, 2026
Continuing the existing claim for
codex/local/01a145db-40f8-7e41-bc55-a7bd997b525boncodex/2107-ios-settings-sheet/ PR #2112. Human requested physical light appearance and VoiceOver qualification, then identified that the clickable “About anonymous statistics” row lacks the same visible button/group treatment as neighboring Settings rows. Scope: reuse existing Settings row styling, preserve disclosure behavior and persistence, capture native before/after and bounded screen-reader evidence, restore device settings. The separate question about the root Close button is under evaluation; no removal assumed. No merge.fix(mobile): make statistics disclosure match Settings rows
docs(qa): physical Light Settings and statistics row evidence
DoodleBears commentedon Oct 17, 2026
Continuation of this task claim: the statistics-row styling feedback is implemented in Draft PR #2112 at62483069b. Physical Light8/8 and latest CI passed. Human chose restored phone settings and a pending manual VoiceOver gate. Exact source/binary identities, matched screenshots, tool limitations and remaining manual steps are in the verification report. No merge. Claim: #2107 (comment)
1 remaining item
fix(mobile): integrate Settings dismissal into the handle
test(mobile): comply with source comment policy
docs(qa): accessible Settings handle physical evidence
DoodleBears commentedon Oct 17, 2026
Handle-only Settings dismissal is implemented in Draft PR #2112, head 79e306f. Root X removed; handle tap/drag and accessibility activation/escape are wired to Close; child Back stays within the sheet. No merge.
Physical iOS Light/Dark × default/intermediate/maximum passed 6 cases, plus child dismissal and preference cold-retention checks. Local mobile tests: 567 passed / 8 skipped; current-head CI passed applicable checks. Original phone appearance/font/Streaming restored; independent phone/8097 lane released.
Actual VoiceOver focus, announcements and gestures remain manual acceptance per the Human's earlier choice; VoiceOver stayed OFF. Android/TalkBack and existing unqualified native/Human gates remain open. Source/runtime/native identities, first-run interruption and continuation, screenshots and proof limits: #2112 (comment)
Agent-Task: codex/local/01a145db-40f8-7e41-bc55-a7bd997b525b
Claim: #2107 (comment)
Status: implementation and automated/ordinary native regression complete; Human accessibility acceptance pending.
DoodleBears commentedon Oct 18, 2026
Agent work claim — acceptance continuation
codex/local/01a145db-40f8-7e41-bc55-a7bd997b525bcodex/2107-ios-settings-sheetMerge main and retain Settings handle dismissal with chat backgrounds
docs(qa): Settings current-main acceptance evidence
DoodleBears commentedon Oct 18, 2026
Acceptance continuation completed; PR #2112 stays Draft and unmerged.
Current-main acceptance completed on c39cdd5. The Settings route conflict with main is resolved, retaining both the new chat-background child and handle-only dismissal/fixed title. PR remains Draft, unmerged.
Published screenshots, exact source/native identities and complete proof limits. PR body updated with the current screenshots.
Agent-Task: codex/local/01a145db-40f8-7e41-bc55-a7bd997b525b
Claim: #2107 (comment)
fix(mobile): present Settings as a modal on iOS so it is not blank
DoodleBears commentedon Oct 19, 2026
iOS 26 Simulator diagnosis and fix in #2324
Reproduced: on the shared iOS 26.0 Simulator (English, light and dark), Settings opens blank on main's
cf4cc900aand on #2324'sb0f9a9883. Only the grabber shows, and the accessibility tree is empty. No JS error appears in Metro. Pair is also a full-heightformSheetin #2324 and renders fine.Cause: Settings is the only
formSheetthat holds a nestedStack(app/settings/_layout.tsx→SheetStack). On iOS, that combination opens with nothing in it.Fix (#2324, commit 9f4256c): on iOS, Settings opens with
presentation: 'modal'; Android keeps its sheet. This is the same presentation change #2112 makes. It keeps #2324's title capsule and close button rather than #2112's handle-only dismissal. On the Simulator, Settings now renders in light and dark, the Activity count page opens and Back returns, and close dismisses Settings. Mobile typecheck and 819 mobile tests pass.Not checked: a physical iPhone on this head, Android, large text and VoiceOver. #2112 and #2324 both change the Settings header, so whichever merges second needs that reconciled.
fix(mobile): leave the Settings sheet to #2112
fix(mobile): restore Settings and standardize sheet dismissal (#2112)
feat(mobile): glass title chip on pairing and Activity filter sheets;…
feat(mobile): HIG and system-UI pass: glass sidebar, bottom search, c…