Skip to content

feat(macos): add native workflows and managed browser - #11

Closed
maschwenk wants to merge 54 commits into
mainfrom
feat/native-macos-client
Closed

maschwenk wants to merge 54 commits into
mainfrom
feat/native-macos-client

Conversation

@maschwenk

@maschwenk maschwenk commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

why are we doing this

bring the Apple Silicon native client up to the everyday T3 workflow and use the Electron app as the visual and behavior reference

what this PR does

adds native conversations, rich messages, saved drafts, attachments, approvals, questions, plans, queues, project navigation and workspace panels. provider execution and storage use the existing server

new conversations stay local until the first message. model, reasoning, permissions, project, checkout or worktree and base branch are editable before sending. defaults honor existing project overrides and t3.json. uncertain launches retry the same request and preserve newer edits

adds native Settings for appearance, fonts, chat width, wrapping, global defaults, notifications, recovery, inactive chat settling, Claude and Codex accounts, model management, scheduled prompts, connections and storage. command, skill and file suggestions follow the selected account and workspace

adds Usage with account limits, resets, cost and token charts. the integrated WebKit browser supports tabs, profiles, device viewports, uploads, downloads, screenshots, element picking, annotations, recordings and agent control. the agent cursor visibly animates between actions. manual input interrupts browser actions

adds an optional Chromium companion for the genuine 1Password extension. its live page uses a separate managed window and cookie store. desktop vault unlock requires an Apple-signed browser and explicit user trust in 1Password. the official extension opens its welcome screen on the first action and after restart. the browser waits for the extension to choose onboarding or its account popup before opening it. the account popup and vault autofill remain unverified

normal launch restores a saved local or remote environment or starts the bundled Node server in a separate native data directory. quit stops only owned processes. T3 Connect and existing mobile clients keep the shared server contract

keeps inactive pages out of layout and reflows conversation text after resizing finishes. compact composer controls and menus preserve usable hit targets. About identifies the exact source build

moves Keychain reads and writes off the UI thread so saved-connection authorization cannot freeze startup or Connections. cancels stale results before selecting a server or changing the saved catalog and preserves unrelated connection edits. startup and Settings can safely share a completed legacy migration

validated the native package, signed browser input and genuine 1Password onboarding, plus packaged server authentication, RPC, web serving and owned shutdown against isolated data. focused regression tests exercise a blocked credential request, responsive main-thread work, cancellation, selection changes and concurrent migration

the current Apple-signed build is installed and About matches source 5b8aa5e. normal saved-connection startup is responsive. checked model search, reasoning and permissions, checkout/worktree choices, slash suggestions, attachment preview and restart persistence, the six Settings sections, Usage Limits/Cost/Tokens, WebKit navigation and device presets, and Chromium with genuine 1Password onboarding against isolated data. no inference sent

fixed composer labels collapsing despite available space and staying compact after widening. an AppKit window regression covers repeated wide/narrow/wide resizing. corrected the send arrow drawing upside down, hid the empty editor scrollbar and restored new unsent conversations above older active chats

1Password Add Browser is prepared but has not been confirmed; it requires explicit vault-access approval. the account popup and vault autofill remain unverified. visual review does not establish complete Electron parity

the Pull Requests page is excluded. terminal and local review are lower priority. Haiku routing and periodic task names remain deferred until core parity

adds a searchable existing-project picker to the new-conversation heading, including workspace paths to distinguish similarly named projects. project changes keep the unsent message and model parameters, reset the branch for the new workspace, and reject stale server or draft selections. the folder browser remains available through Open another folder

matches Settings surfaces, selection, cards, headings and spacing to the native app's light and dark theme. restores a visible sidebar button when the split view collapses, adds native Close Window/Minimize/Zoom commands, and fixes typed search text overlapping its icon in the model and project pickers

validated project search and keyboard selection in the installed app, including an unsent message surviving a project change. checked sidebar collapse/reopen, Settings appearance and command-W, and both search fields. eight focused project-picker and composer regressions pass. the package and nested browser pass strict signature verification. no inference sent

fixes clipped message starts by matching the conversation table’s row style to its explicit text gutters. the context reminder uses a single row with compact and dismiss actions. current models win equal-relevance search ties while favorites and exact legacy searches remain available

verified the installed build on a 216-row conversation at wide and narrow sizes, then restored the wider layout. model search puts GPT-6.1-Sol ahead of the legacy Sol entry; a precise GPT-5.6-Sol search still finds that model. focused layout tests reproduce the old 20-point clipping, preserve the resize scroll anchor, and verify reminder dismissal does not compact the conversation

screenshots

before: previous installed Settings

Before: native Settings

after: current installed Settings

After: native Settings

existing project search in the current installed build

Existing project search

conversation before: clipped message starts and default context buttons

Conversation before

conversation after: complete message starts and compact context reminder

Conversation after

Session

@maschwenk maschwenk added the coder-task-generated Created from a coding task label Oct 11, 2026
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Oct 11, 2026
@github-actions

github-actions Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 4.9 KiB −23 B (−0.5%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB −23 B (−1.9%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.9 KiB 20.8 KiB −41 B (−0.2%) 29.3 KiB ✅
Codex Live turn messages 2 1 −1 (−50.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB −7 B (−0.1%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB −7 B (−0.6%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.2 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 274ecce · PR result: 5b8aa5e · Source CI: cancelled

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@maschwenk maschwenk changed the title feat(macos): add a native T3 client prototype feat(macos): add native desktop client Oct 11, 2026
@maschwenk maschwenk changed the title feat(macos): add native desktop client feat(macos): add native workflows and managed browser Oct 12, 2026
@maschwenk maschwenk closed this Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

coder-task-generated Created from a coding task size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant