weishu
|
fa91f06662
|
feat(ios): new session flow (A-M3c)
Port of the tested Android NEW SESSION reference (B-M3d) to iOS:
- HapiProtocol: NewSessionCatalogs (static claude models/efforts + codex
reasoning-effort fallback, exact Android data) in Catalog/; CodexModelSummary
+ CodexModelsResponse wire types (shared/src/apiTypes.ts).
- HapiClient: machineCodexModels endpoint (GET /api/machines/:id/codex-models,
rpc_target_missing surfaces as APIError); NewSession/NewSessionForm.swift —
typed Codable draft (tolerant decode) + NewSessionLogic: exact spawn body
per SpawnSessionRequestSchema (yolo incl. false for non-grok/non-codex-family,
permissionMode incl. 'default' for grok+codex-family, sessionType always,
trimmed-or-absent worktreeName, serviceTier only while fast tier visible,
collaborationMode only when plan, model only claude/codex), parent-path
derivation, suggestion filtering, recent-path LRU(8), worktree-name
validation, codex catalog helpers, draft sanitization.
- App: Features/NewSession (NewSessionModel @Observable orchestration —
machine preselect last-used, 250 ms debounced list-directory autocomplete
with per-parent cache, exists probe with worktree-blocking / simple
two-tap-create, codex catalog fetch + selection reconcile, UserDefaults
draft/prefs per hub; NewSessionView Form UI with per-flavor option matrix);
session-list "+" toolbar button on HomeView presents the sheet, success
dismisses and pushes the chat.
- Tests: spawn-body exactness (4 configs, canonical JSON), parent query,
suggestions, LRU, worktree validation, fast-tier detection, reasoning-effort
normalization, draft sanitize + tolerant decode; codex-models endpoint
request/error construction.
|
2026-08-18 10:03:05 +08:00 |
|