Skip to content

feat(ios): add thread-first mobile chat shell#119

Merged
tcballard merged 2 commits into
mainfrom
codex/ios-chatgpt-ux-shell
Jul 24, 2026
Merged

feat(ios): add thread-first mobile chat shell#119
tcballard merged 2 commits into
mainfrom
codex/ios-chatgpt-ux-shell

Conversation

@tcballard

Copy link
Copy Markdown
Contributor

Summary

Implements WF-DESIGN-0020 under WF-ROADMAP-0016.

Adds:

  • a thread-first iPhone Chat shell benchmarked against the current ChatGPT mobile interaction hierarchy;
  • a slide-over navigation drawer on iPhone and persistent NavigationSplitView sidebar on iPad;
  • a compact floating composer, deterministic prompt suggestions, and on-demand route receipt detail;
  • state tests and governing design/ADR/roadmap documentation.

Scope

Included

  • removes the visible bottom tab bar from the iPhone experience while retaining independent section navigation state;
  • makes Chat the dominant launch surface and keeps Threads, Destinations, and Settings reachable through the drawer;
  • replaces the large routing preview dashboard with a compact receipt and detail sheet;
  • keeps preview copy explicit that no provider was contacted;
  • adds new-chat transient-state reset coverage and submitted-prompt state coverage;
  • records the accepted mobile Chat interaction contract in WF-DESIGN-0020.

Excluded

  • provider execution, streaming, or real assistant output;
  • conversation persistence;
  • credentials, accounts, Apple Foundation Models, or paired-Mac behavior;
  • branded ChatGPT assets or copied provider controls;
  • permanent mobile routing inspector;
  • macOS behavior changes.

Product / Architecture Decisions

  • ChatGPT is the interaction benchmark, not a source of branded assets or product identity.
  • iPhone navigation uses a leading drawer instead of a persistent bottom tab bar so the conversation owns the viewport.
  • A hidden TabView preserves independent section state as an implementation detail.
  • iPad uses the same hierarchy through NavigationSplitView.
  • Routing metadata remains truthful but secondary: a compact receipt opens a bounded detail sheet.
  • The composer uses system materials and semantic colors; Wayfinder green is reserved for active actions and routing identity.

User-Facing Contract

CLI

No CLI behavior changes.

Human Output

  • iPhone opens on a sparse Chat screen with a leading navigation control and trailing new-chat action.
  • The composer shows compact Automatic and privacy controls.
  • A deterministic preview appears as a conversational turn with an informational route receipt.
  • Selecting the receipt shows destination, boundary, tier, score, and the no-provider-contact statement.
  • iPad shows the navigation hierarchy in a persistent sidebar.

JSON Output

No JSON contract changes.

Exit Codes

No exit-code changes.

Verification

Ran

swift format lint \
  ios/WayfinderIOS/WayfinderIOS/*.swift \
  ios/WayfinderIOS/WayfinderIOSTests/*.swift

git diff --check

SWIFTPM_MODULECACHE_OVERRIDE=/private/tmp/WayfinderIOS-ChatUX-ModuleCache \
CLANG_MODULE_CACHE_PATH=/private/tmp/WayfinderIOS-ChatUX-ClangCache \
swift build \
  --build-tests \
  --package-path ios/WayfinderIOS \
  --scratch-path /private/tmp/WayfinderIOS-ChatUX-SwiftPM \
  --triple arm64-apple-ios18.0-simulator \
  --sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk

Covered

  • simple and structured deterministic routing previews;
  • hosted exclusion under On-Device Only;
  • empty prompt rejection;
  • submitted prompt capture;
  • new-chat reset of draft, submitted prompt, route state, and selected section;
  • compile of app source and test products for the arm64 iOS 18 simulator target;
  • Swift formatting and whitespace validation.

Local source/test-product compilation succeeds. Executable local simulator
review is unavailable because Xcode 26.6 requires the iOS 26.5 platform while
this Mac currently has 26.3, 26.0, and 18.6 simulator runtimes. The PR's remote
iOS simulator job remains the executable gate. No screenshot-backed visual
parity claim is made in this PR.

Review Path

  1. designs/WF-DESIGN-0020-mobile-chat-shell.md
  2. ios/WayfinderIOS/WayfinderIOS/RootView.swift
  3. ios/WayfinderIOS/WayfinderIOS/ChatTabView.swift
  4. ios/WayfinderIOS/WayfinderIOS/AppModel.swift
  5. ios/WayfinderIOS/WayfinderIOSTests/AppModelTests.swift
  6. ADR, roadmap, and README links

Notes For Reviewer

Pay particular attention to compact-width drawer accessibility, the retained
hidden TabView, and the boundary between truthful routing preview and future
provider execution. Visual screenshot comparison remains required once a
matching simulator runtime or physical device is available.

Implementation Process

Implemented with AI assistance under the roadmap contract; final scope, review,
and acceptance decisions remain with the maintainer.

@tcballard
tcballard marked this pull request as ready for review July 24, 2026 13:02
@tcballard
tcballard merged commit 9883fe9 into main Jul 24, 2026
4 checks passed
@tcballard
tcballard deleted the codex/ios-chatgpt-ux-shell branch July 24, 2026 13:03
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