TacTileLaunch TacTileiOSiOS — iPad adaptation·14 in this wave
Wave

iOS — iPad adaptation

CORRECTED 2026-08-07 (iOS session, PR #252) — the framing below was misleading in a way that explains two deferrals. THE APP WAS iPHONE-ONLY. `TARGETED_DEVICE_FAMILY = 1` in both the project-level and app-target build configs, Debug and Release. On iPad it ran in COMPATIBILITY MODE — a letterboxed, phone-shaped window that was never given iPad geometry. So "only 2 of ~57 screens have real iPad layout" understated it: ZERO screens rendered at iPad size in a shipping build. And critically, `horizontalSizeClass` is `.compact` in compatibility mode while `.readableWidth` gates on `.regular` — so ALL ~37 existing call sites were no-ops on iPad. The adaptation infrastructure was real, correct, and entirely dead. Split View and Slide Over were unavailable, so every multitasking bug was unreachable too. Nothing in this wave could have been OBSERVED by anyone before that flip, which is a fair explanation for why a surface this large stayed untouched. FLIPPED TO "1,2" IN PR #252, and verified by building for and launching on an iPad Pro 13" simulator: the app now fills the window natively (2064x2752, no letterbox), and the Dashboard's existing cap renders correctly. RELEASE CONSEQUENCE — needs Matthew's awareness before any submission: the app now appears on iPad in the App Store and will need iPad screenshots. It should NOT ship to iPad until the `broken` band of the punch list is cleared. The flip makes the work visible and testable; it does not make the app iPad-ready. If that ordering is wrong for the release plan, that commit is the one to revert. THE PUNCH LIST IS docs/proposals/ios-ipad-adaptation.md — 72 rows from a 6-auditor sweep, deduplicated and severity-normalised to the FUNCTIONAL bar (nothing broken or unusable; polish is the agreed fast-follow), ordered broken → risky → gap and within each by traffic. It ports the three failure modes from the Android tablet audit into SwiftUI terms. TWO THINGS WORTH CARRYING FORWARD: 1. Mode 2 (a correct width cap with the page background painted INSIDE it) is not present anywhere today — all 37 call sites get the order right. It is purely a hazard of FIXING the rows: four screens are called out where the obvious one-line fix would introduce it. 2. The Android doc's closing instruction — "None of the three is visible in code review. Take the screenshot." — paid off immediately. The first iPad screenshot produced two findings no static auditor could see: the weekly-scans chart rendering as seven thin rules, and the NFC SIM debug pill occluding the Dashboard tab label. Screenshot every screen you touch. REMAINING: the rows themselves. The four highest-traffic flows (Dashboard, Destinations list + launchpad, Create flow, agent panel) are the intended start, and every fix is now verifiable on a real iPad window rather than guessed at.

TacTileLaunch TacTileiOSiOS — iPad adaptation
2/14 done12 open1 open blocker
Selected taskclear

iPad: three whole surfaces have no adaptation row — Analytics, Assets, and the Destination Launchpad

To doOwner · ait_af4f383f

No dependencies in this wave — nothing gates it, and nothing waits on it.

Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it