Skip to content

T3 Code clone: update embedded runtime and client protocol - #740

Merged
daehyeon-mun merged 2 commits into
daehyeon/t3-code-mainfrom
daehyeon/t3-up-runtime-bump
Oct 18, 2026
Merged

daehyeon-mun merged 2 commits into
daehyeon/t3-code-mainfrom
daehyeon/t3-up-runtime-bump

Conversation

@daehyeon-mun

@daehyeon-mun daehyeon-mun commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

The macOS clone embeds T3 Code 0.1.1-nightly.20261018.3302 and connects with the new permission and settings protocol. Pairing now requests all sixteen standard permissions and retries the legacy grant only when an older server rejects an unknown scope. Previously, a successful pairing with the new server could still reject file browsing and settings writes.

The client reads explicit session permissions, keeps the old-server parent mapping, shows the re-pair notice, skips retired preview automation RPCs on serverBrowser hosts, drops unknown turn-item and icon variants, and applies pull-request link updates to open threads. Provider settings use instance mutations, and Bitbucket writes preserve the complete source-control host map and its masked secrets. The supervisor stops restarting after exit 78, reports the unavailable-home error, allows five seconds for termination, and waits 32 minutes for a connected server update. A start requested during an intentional stop waits through teardown and starts immediately, without treating the old SIGKILL as a failed startup.

Upstream reference is 9c161462c9; the runtime archive is release commit d0918f1659f4c19172796c8d1910ca6e4bc18b51.

Scoped upstream changes Result
28ce9d1c17 pingdotgg/t3code#9786, 2eda8ac6a3 pingdotgg/t3code#9787, 321c6f9d26 pingdotgg/t3code#9788, 7175edcff4 pingdotgg/t3code#9789, 57b2418d4f pingdotgg/t3code#9790, cc41482df0 pingdotgg/t3code#9791, 365aa87982 pingdotgg/t3code#10298, 19108aa7b4 pingdotgg/t3code#20432 Sixteen scopes, session permission decoding, legacy parents and persistent re-pair notice. Existing orchestration response/project gates retain orchestration:operate, which is still a current permission.
4cf8243f85 pingdotgg/t3code#19337 Markdown host media names missing filesystem access and asks the user to pair again.
ac8e9453ca pingdotgg/t3code#15328 New servers never receive the removed automation RPCs. The old-server path remains available.
9f61ba6741 pingdotgg/t3code#15907, ca3f9738c3 pingdotgg/t3code#15951, 5c03ced3be pingdotgg/t3code#16118 Unknown turn items are omitted in snapshots, updates and history. Unknown icons use the existing empty fallback; monograms use their current wire shape.
4d73e1d5cd pingdotgg/t3code#19248 Open and kept thread projections apply matching pull-request link updates.
2c1160783e pingdotgg/t3code#17300, 4f63275ac7 pingdotgg/t3code#17901, d514a8c617 pingdotgg/t3code#18505 Removed per-driver settings are replaced by provider instances; host settings and redacted secrets round-trip under sourceControlHosts.
570542662a pingdotgg/t3code#16102, eeaac49a9d pingdotgg/t3code#19291, 3417bc3856 pingdotgg/t3code#19311 Non-restarting exit 78, five-second termination grace and 32-minute connected update wait.
Acceptance Result Proof
Lane bundle starts embedded nightly server Passed final native bundle and live drive at 9d1ac46b34; Connections shows the pinned version at isolated lane port 16437 native window
New pairing permissions allow filesystem browsing and settings writes Passed against the real new server real before/after RPC evidence
Old-server pairing fallback Passed against real 0.0.46-nightly.20261005.2667: new request rejected, legacy retry succeeds with the same credential real before/after RPC evidence
Unknown thread item and PR-link update Passed executable domain tests test results
Provider off/on and GitHub/Bitbucket settings persist Passed against the real new server; secrets are masked in reads real before/after RPC evidence
Exit 78 stops restart and reports unavailable home Real occupied-home server exits 78; native supervisor callback/state test real before/after RPC evidence; 82 native tests

Real RPC output before and after

Embedded nightly runtime connected in the isolated native lane

Before/after protocol evidence uses the old client's five-scope request and the new client's sixteen-scope request against the same isolated new server. Both token exchanges succeed. Before, filesystem.browse and server.updateSettings fail with EnvironmentAuthorizationError; after, both succeed. These changes affect the protocol rather than layout.

Verification:

  • Native XCTest: 82 passed, 0 failures, including exit 78, five-second termination and immediate off/on through timed-out teardown.
  • Rust app data: 25 passed, 0 failures with --jobs 2; final native bundle compiles the macOS app and Contract too.
  • Focused Bun regressions: 116 passed, 0 failures.
  • Full Bun run: 5,269 passed, 2 timed out under concurrent cold-build load (5,271 total). Both unchanged CPU-heavy highlighting/Markdown tests passed in the isolated rerun: 32 passed, 0 failures, CLI timeout 30 seconds. The subsequently added notice regression passes in the focused run.
  • Strict app TypeScript, generator, frozen install, caps, boot, terminal host build and runtime staging passed. Runtime staging checks the pinned SHA-256, 11 Mach-O signatures and a real isolated startup.
  • Final native bundle and inspected native window drive passed at 9d1ac46b34; the lane uses its own T3 home and port 16437. Validation details.

Known differences: agent browser control on new servers falls back to the server browser, which the clone cannot display yet. The concrete framework gap is recorded in the coordinator's clone/issues/browser-cdp.md and blocks task server-browser-surface; this PR intentionally adds no CDP implementation or framework changes. The new source-control-host account management screen and complete per-permission UI gates belong to tasks source-control-hosts and auth-permissions.

Prepared with Codex; continues work begun in the prior Claude session.

Request current pairing permissions, retain old-server scope fallback, tolerate new union variants, apply PR link updates and migrate provider and host settings. Stop the local supervisor after an occupied-home exit.

Co-Authored-By: Codex <noreply@openai.com>
@daehyeon-mun

Copy link
Copy Markdown
Collaborator Author

Real RPC before/after against the same isolated nightly server. Before uses the old client grant; after uses the current grant. The old-server fallback, masked host settings and occupied-home exit were also exercised against real server binaries. This image renders protocol output, not an application screenshot.

Real runtime RPC before and after

Keep a start requested during bounded teardown waiting for the next server, rather than treating the previous SIGKILL as a failed startup.

Co-Authored-By: Codex <noreply@openai.com>
@daehyeon-mun

Copy link
Copy Markdown
Collaborator Author

Validation of the runtime bump and intentional-stop repair:

  • Native XCTest suite: 82 passed, 0 failures, including occupied-home exit 78, five-second SIGKILL grace, a new start waiting through timed-out teardown, and immediate Local environment off/on.
  • Rust app data tests: 25 passed, 0 failures (cargo test --manifest-path examples/t3-code/Cargo.toml -p t3-code-data --lib --no-fail-fast --jobs 2). The integrated bundle also compiles the macOS app and Contract.
  • Focused Bun regression tests: 116 passed, 0 failures (scope fallback, browser RPC suppression, provider settings, masked host settings preservation and the persistent notice).
  • Full Bun run: 5,269 passed, 2 timed out under concurrent cold-build load. Both unchanged CPU-heavy highlight/Markdown cases passed in the isolated rerun (32 passed, 0 failures, 30-second CLI timeout). There were 5,271 tests in that full run; the subsequently added notice regression is included in the focused run.
  • Strict app TypeScript check, generator, frozen install, source budgets, boot check and runtime staging passed. Staging checked the pinned SHA-256, all 11 Mach-O signatures and a real isolated server startup.

The real RPC before/after attachment above shows the original five-scope grant failing file browsing and settings writes against the new server; sixteen scopes succeed. It also exercises old-server invalid_scope fallback with the same credential, provider off/on persistence, masked GitHub and Bitbucket credentials, and a second server exiting 78 on an occupied home. No bearer or pairing credentials were included.

The final native window attachment shows the isolated lane connected to its embedded 0.1.1-nightly.20261018.3302 server. This is a protocol and supervision change; no layout before/after is claimed.

Embedded nightly runtime connected in the isolated native lane

@daehyeon-mun
daehyeon-mun marked this pull request as ready for review October 18, 2026 14:47
@daehyeon-mun
daehyeon-mun merged commit cf8ca52 into daehyeon/t3-code-main Oct 18, 2026
2 checks passed
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
## Request

Update sidebar navigation and draft project selection to T3 Code
`9c161462c9`. Waiting rows show elapsed waiting time, the settle
shortcut advances, running-terminal indicators reveal the existing
terminal, and the draft project picker supports search and keyboard
selection.

## Changes and reasons

- Keep queued runs subscribed; show Waiting with a dot-dashed icon and a
timer from the completed run.
- Settle and advance with the shortcut while keeping menu settle in
place. Reorder around unsupported keyless rows without writing to them;
allow Working rows to drag into composer context without shelf movement.
- Show the machine for projectless threads across environments, center
monograms, and use the project filter icon. Show matching PR numbers in
sidebar/palette search.
- Reveal the running terminal in its current panel/drawer and reuse
server-created terminals when opening an empty drawer.
- Add parent-thread header breadcrumbs, a searchable draft project
combobox, and the No project palette entry beside the current project
with its own shortcut. Show the current project's `chat.newLocal`
shortcut.
- Ignore stale new-thread actions for removed projects. Existing
`client.ready`/`shellLive` routing already keeps thread links loading
until the shell is authoritative; the new regression test covers this
path.

Scoped upstream changes (MIT):
[e536bfd33b](pingdotgg/t3code@e536bfd33b)
(#19617),
[6edd44f405](pingdotgg/t3code@6edd44f405)
(#19328),
[db4d0a8e6e](pingdotgg/t3code@db4d0a8e6e)
(#16291),
[ff9eb8bd0c](pingdotgg/t3code@ff9eb8bd0c)
(#17022),
[46dd094905](pingdotgg/t3code@46dd094905)
(#16841),
[22ccf8a3df](pingdotgg/t3code@22ccf8a3df)
(#12113),
[0e7346ccd9](pingdotgg/t3code@0e7346ccd9)
(#18740),
[a908a7ac87](pingdotgg/t3code@a908a7ac87)
(#14658),
[5055de3ae4](pingdotgg/t3code@5055de3ae4)
(#15666),
[5722496b79](pingdotgg/t3code@5722496b79)
(#16666),
[b744bded01](pingdotgg/t3code@b744bded01)
(#17664),
[517188b3ca](pingdotgg/t3code@517188b3ca)
(#16628),
[f55c66b323](pingdotgg/t3code@f55c66b323)
(#8513),
[6c13016394](pingdotgg/t3code@6c13016394)
(#14697),
[4a90c1cf5d](pingdotgg/t3code@4a90c1cf5d)
(#15293),
[8f026485df](pingdotgg/t3code@8f026485df)
(#19697),
[11fd54fcbb](pingdotgg/t3code@11fd54fcbb)
(#15864).

## Verification

Verified source commit: `952157a851f236087f72fb4c08588c072f906faa`.
Local checks use pinned Bun 1.4.2 and the task branch's committed
content; evidence files remain outside Git.

| Criterion | Reproduction | Result |
|---|---|---|
| Status, keepalive, parent links, PR search, terminal reuse, stale
project actions, combobox keys, Working drag | `bun test --timeout 30000
examples/t3-code/tests/sidebar/navigation-upstream.test.ts` | 11 pass |
| Existing settle shortcut, palette, reorder behavior and all app/tool
regression tests | `bun test --timeout 30000 examples/t3-code` | 5272
pass, 0 fail, 367 files |
| Types | `bun node_modules/typescript/bin/tsc --noEmit --strict
--target ES2023 --module ESNext --moduleResolution bundler
--skipLibCheck --lib ES2023,DOM examples/t3-code/app.ts` | Pass |
| Source budgets and whitespace | `bun scripts/caps.mjs`; `git diff
--check` | Pass |
| Contract plan | `contract build examples/t3-code/app.contract` | Pass:
104590 nodes, 5932 slots, 24 derives, 75 resources, 9730 actions |
| Native bundle and live before/after comparison | macOS, 1280×840,
isolated offline fixture | Pass: signed bundle; search filtered to one
empty-project result and Enter selected its draft |
| Cargo data tests | Root profile injection, host-dev, 2 jobs | 25 pass,
0 fail |

![Draft project picker before and
after](https://github.com/user-attachments/assets/7e4e4458-c6b1-457a-a1b8-91f69c604dc4)

The comparison is attached through GitHub; no evidence is committed.

## Risks and dependencies

Passive sidebar PR summaries already use cached summary reads rather
than `subscribeVcsStatus`, so they retain no remote VCS poller.
`ActivityScopes` now also skips leases for explicit
`includeRemote:false` subscriptions, covered by a regression test.
New-server protocol support is supplied by #740; this PR adds no passive
subscriptions and does not change older-server requests.

No framework changes or identified framework blocker. Terminal assets
and offline runtime staging pass, including all 11 Mach-O signatures and
a live server start/stop on 16873. The signed native bundle passes
(Cargo 759.6 s, shared Swift 19.1 s, app Swift 193.2 s). Both captured
windows were inspected.

## Next action

Review this draft against `daehyeon/t3-code-main` and reconcile any
integration conflicts. No required task verification remains open.

Prepared with Codex; continues work begun in the prior Claude session.

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
## Request

Composer and settings traits now show Fast or Ultrafast beside the
reasoning label. Source control writer and review-guide models have
trait pickers that preserve the other selected options, including
project overrides. Subagent hover cards show the matching model’s effort
and speed.

## Changes and reasons

Adds unbound Increase Effort and Decrease Effort commands with wrapping
levels and caret-preserving Ultrathink prompt edits. Exact model-name
matches rank first, equal search matches keep catalog order, missing
text-generation models prefer the provider’s cheap default, and ⌘Enter
creates a project while an option is highlighted.

Follows T3 Code `9c161462c9`, specifically `e22c880434`
([#16069](pingdotgg/t3code#16069)), `29366ea29a`
([#13056](pingdotgg/t3code#13056)), `e688034b5f`
([#18488](pingdotgg/t3code#18488)), `2993dfc069`
([#19928](pingdotgg/t3code#19928)), `ede3f2d6ba`
([#18494](pingdotgg/t3code#18494)), `45b5993a52`
([#19722](pingdotgg/t3code#19722)), and
`446be6933f` ([#18901](pingdotgg/t3code#18901)).

## Verification

Verified source commit: `e66ce91153f249f7c07968b1df76c1e083097861`
(merge of the current integration branch). The native image and build
below qualify the original implementation at
`1fdc7f37966b6975d5b57d0e9a8d8aaecb950c55`; the later default/scope
correction is covered by focused tests and the real-server check.

| Acceptance | Result | Proof |
| --- | --- | --- |
| Traits speed labels and source control model traits | Pass in behavior
tests | [Traits/settings
cases](https://github.com/ccheever/exact2/blob/e66ce91153f249f7c07968b1df76c1e083097861/examples/t3-code/tests/composer/effort-and-models.test.ts)
|
| Effort steps wrap, preserve other traits, and retain the caret | Pass
in behavior tests | [Effort
cases](https://github.com/ccheever/exact2/blob/e66ce91153f249f7c07968b1df76c1e083097861/examples/t3-code/tests/composer/effort-and-models.test.ts)
|
| A refused native prompt edit preserves newer typing | Pass | [Editor
boundary
case](https://github.com/ccheever/exact2/blob/e66ce91153f249f7c07968b1df76c1e083097861/examples/t3-code/tests/composer/effort-and-models.test.ts)
|
| Subagent hover cards receive matching effort and speed only | Pass |
[Timeline
case](https://github.com/ccheever/exact2/blob/e66ce91153f249f7c07968b1df76c1e083097861/examples/t3-code/tests/composer/effort-and-models.test.ts)
|
| Exact-name ranking, position-independent ties, cheap text defaults |
Pass | [Model
cases](https://github.com/ccheever/exact2/blob/e66ce91153f249f7c07968b1df76c1e083097861/examples/t3-code/tests/composer/effort-and-models.test.ts)
|
| Highlighted-option ⌘Enter dispatch and hint | Pass | [Contract action
and palette
cases](https://github.com/ccheever/exact2/blob/e66ce91153f249f7c07968b1df76c1e083097861/examples/t3-code/tests/palette/palette.test.ts)
|
| Saving new effort bindings and review-guide settings to the new server
| Pass with restart readback | Exact app `restCommand` planners issued
10 settings writes and two keybinding writes against isolated runtime
`0.1.1-nightly.20261018.3302`. Both models retained effort/speed traits
at environment and project scope; both effort bindings survived restart.
|
| Review guides default and scope | Pass | Defaults off; the toggle is
disabled for project scope. A project toggle write is rejected before
any RPC mutation. The review-guide model remains project-scoped. |

The default/scope correction passes **244 focused composer/settings
tests** (2,395 assertions), strict TypeScript, caps and whitespace
checks. Upstream `packages/contracts/src/settings.ts` confirms the false
default and excludes `reviewGuidesEnabled` from project-scoped keys.

Original implementation verification completed: generated sources; all
**5,274 Bun tests pass** across 367 files; strict TypeScript passes; the
full Contract compiles to 105,001 nodes; caps pass; `git diff --check`
passes. Terminal assets build. Offline runtime staging verifies the
pinned archive, all 11 Mach-O signatures, the version, and a live server
start/stop on isolated port 16862.

The signed native macOS bundle builds successfully (Cargo 481.1 s,
shared Swift 14.0 s, app Swift 156.2 s). All **25 Cargo data tests
pass** in the host-dev profile. A live native drive opened Source
Control settings, scrolled to the model settings, and captured the
current window at 1280×840. The same isolated offline fixture and
viewport were used for the baseline. The offline fixture has no
text-generation providers; model option behavior is covered by the
focused tests above.

![Source Control settings before and
after](https://github.com/user-attachments/assets/82468262-1d44-41e7-acbb-aec1b28383b5)

The comparison is attached to this PR through GitHub; no evidence is
committed.

The integration merge preserves the runtime’s 16 standard client scopes
and settings-write permission, the timeline’s linked-thread labels, and
composer model options including boolean speed traits. Post-merge
verification: **1,221 affected tests pass** across 80 files, strict
TypeScript/caps/whitespace pass, and the full Contract compiles to
103,465 nodes (5,941 slots; 24 derives; 75 resources; 9,969 actions).
Grouped keybindings, mobile store links, timeline handoff dividers and
subagent hover traits are retained. Both the dedicated and aggregate
project planners now reject review-guide enablement overrides. The exact
app planner/new-server restart readback passed on `e66ce91153`; the
final timeline-only reconciliation is `381870af4d`. No additional native
build was run; the coordinator’s final integrated native proof will
cover the combined source.

## Risks and dependencies

#740 merged as `cf8ca5244e15f72b59bee08788f3be9014509622`. Its immutable
archive was independently verified (SHA-256
`6bd4ba617d321f31ac0c4bffe154ab14bf9ed8d67a7c244dcbda4c5f9581c521`, 11
Mach-O signatures) and exercised through this PR’s exact app planners
with actual RPC readback before and after a server restart. The fixture
uses empty provider homes and no machine credentials. The guided-review
task owns the guide tour itself; this PR supplies its model controls. No
framework blocker was found.

The shared settings menu and its option/palette declarations moved into
two small Contract files so both settings pages can use the same
controls without an import cycle. No Exact framework changes.

## Next action

Review the default/scope correction and the persistence readback, then
integrate this draft into `daehyeon/t3-code-main`.

Prepared with Codex; continues work begun in the prior Claude session.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
## Request

Keep pull request links consistent across the list, linked rows,
composer and workspace card. Match T3 Code `9c161462c9` for the scoped
list/link updates.

## Changes and reasons

- Exclude Scratch from the project filter, follow sidebar project order
and bound refresh size by the largest host/repository read.
- Add “Open pull requests in T3 Code” in Integrations. Modifier and
middle clicks open the browser; ordinary clicks follow the saved
preference.
- Let linked rows open their context menu on right click, show Shift
quick actions and drop a pull request chip into the composer.
- Queue fast actions independently of the command gate. Dragging across
Close buttons selects eligible rows within one group; Escape cancels,
and the batch reports one result.
- Share newer host state and timestamped thread snapshots across
controls, keyed separately for each hosting server. Merged summaries
stop polling.
- Combine machine and workspace into one details row, remove its version
warning and add the watch segment. Align the card’s labels and Git
progress content with upstream compact controls.

Upstream commits: `cb395ee13b` (#19179), `464fad9a43` (#19180),
`00cdceb196` (#19854), `cd34df59a1` (#19719), `b67ac65b74` (#20102),
`ab28039ef7` (#16627), `d8d037eae1` (#16612), `a4c9494b0e` (#15946),
`7ffa2184a7` (#15851), `98bc998e73` (#19403), `ce6f8ce36e` (#18408),
`4df84a7d03` (#16280), `21af72f7a5` (#19374), `7f3628e415` (#16823),
`3da82d5d38` (#16235), `c77a7b7eeb` (#17748).

## Verification

Integrated source head: `89d9f2728b` (merges `425e07be7b`). Native
capture head: `ceb7831c7fa9978282fae183e5a262e53d8104ec`. Local checks
use pinned Bun 1.4.2.

| Criterion | Result | Proof |
|---|---|---|
| Project order, bounded reads, non-Git URL linking | Passed | Focused
Bun tests |
| Shared state, merged polling, queued actions and batch results |
Passed | Injected RPC replies, including two pending writes before
either reply |
| Middle click, drag/drop target and sweep cancellation | Passed |
Executed Contract actions and editor context insertion tests |
| Changed PR, browser, details, settings and shared audits | Passed |
1,621 tests across 90 files; zero failures |
| Integrated affected tests | Passed | 2,505 tests across 163 files,
9,892 assertions; full integrated Contract preflight produced a 33MB
plan |
| Host identity regression and affected callers | Passed | 1,068 tests
across 59 files; distinct hosts with the same project/repository/PR
number remain isolated |
| Strict TypeScript | Passed | `bun node_modules/typescript/bin/tsc
--noEmit --strict --target ES2023 --module ESNext --moduleResolution
bundler --skipLibCheck --lib ES2023,DOM examples/t3-code/app.ts` |
| Source budgets and whitespace | Passed | Staged `bun
scripts/caps.mjs`; `git diff --cached --check` |
| Full Contract compilation, terminal host and signed macOS bundle |
Passed | Optimized compiler preflight; pinned offline runtime smoke;
corrected native bundle completed |
| Native fixture acceptance | Passed for captured controls | Four
saved-tree assertions, visible context menu, Stop watching, and PR drag
into composer |
| Shift quick-action visibility and native sweep gesture | Unverified on
native host | Agent key delivery bypasses the application modifier
monitor; focused action tests cover queue, eligibility and Escape
cancellation |

## Risks and dependencies

- #740 provides the upstream server caching portion of `4df84a7d03`.
Client refresh subscriptions already stop when the last PR reader closes
(`pages-pr-refresh.ts`, covered by its tests).
- #741 supplies the desktop 32px Keep full history control from
`c77a7b7eeb`; this change owns the details-card metrics. Mobile metrics
are outside this macOS task.
- Native evidence uses synthetic loopback RPC data and isolated local
homes. Live GitHub writes are outside this task’s verification scope.
- The native agent cannot exercise the sidebar modifier monitor. This is
recorded in `clone/issues/pr-list-links-native-modifier-monitor.md`;
native Shift visibility and sweep behavior are not claimed as passed.
- The linked-row after capture follows Stop watching, so its watch
segment has already disappeared.

## Native evidence

Captured and inspected at `ceb7831c7f`, before any integration merge.
The same fixture supplied both sides.

![Project filter before and
after](https://github.com/user-attachments/assets/4b3a30c8-fcf5-44f5-9009-eeea236a2ef0)

![PR link preference before and
after](https://github.com/user-attachments/assets/bf208a79-1058-4317-849c-df3e706ae5a8)

![Workspace card before and
after](https://github.com/user-attachments/assets/cb5ffb58-936d-4db4-b46e-a391e8b347ca)

![Linked rows before and
after](https://github.com/user-attachments/assets/31f8bfe6-8c9f-404b-ad9e-1c15ca0e21b4)

![Linked row context
menu](https://github.com/user-attachments/assets/4ff23e3c-65da-4f0a-a1d8-90f7aeb0e527)

![Watch segment removed after stopping
watch](https://github.com/user-attachments/assets/07d88d34-ad2e-4659-8bdd-5d5b8ca7cc00)

![Pull request dragged into
composer](https://github.com/user-attachments/assets/075b0fe9-5244-4ecd-8a92-2c3bf1862b54)


## Next action

Coordinator review. Keep this PR a draft; native modifier-only
acceptance remains a stated limitation.

Prepared with Codex; continues work begun in the prior Claude session.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
Usage can be filtered to selected providers across Cost, Tokens and
Limits. Cached answers appear while slow sources finish, only pending
figures dim, and the last answered window remains visible during a
window change. Accounts with one email in different workspaces keep
separate quotas; the final minute reads “Resets momentarily.”

Task: `usage-page`. Base: `daehyeon/t3-code-main` (includes runtime #740
and the current settings integration). Reference: T3 Code `9c161462c9`.
App files only; account reports pass through a typed adapter. No
framework sources changed.

| Acceptance | Result | Proof |
| --- | --- | --- |
| Provider filter applies to totals, charts, limits, notices and
external links; preferences survive reload | Implemented | Usage pooled
integration and preference tests; [native filter
persistence](https://github.com/user-attachments/assets/89147ea1-88eb-4d01-9d4b-a9dc2e0d758f)
|
| Slow sources return cached data, then one `awaitRefresh: true`
follow-up | Implemented; failed follow-up keeps cached values; older
servers keep the single-read path | Progressive usage integration tests
|
| Previous window stays visible; only pending figures dim | Implemented,
including per-provider chart/model/period flags and placeholder rows |
Asynchronous progressive usage integration tests; deterministic native
fixture responds immediately |
| Header stays within the top bar at narrow widths; info icon and
scanning status align | Implemented | [Native header at
760px](https://github.com/user-attachments/assets/988b5328-9eb3-48c6-b0fe-fee3164bb3db)
|
| Same email in two workspaces counts as two accounts | Implemented,
including ambiguous hub reports and reset credit routing | Workspace
account/pool tests |
| Final minute reset wording | Implemented | Timestamp boundary cases |

Upstream commits followed:

- `13c5328dd0`
[pingdotgg/t3code#16970](pingdotgg/t3code#16970):
provider filter and persisted hidden set.
- `85a41391e9` [#15552](pingdotgg/t3code#15552),
`78089500e4` [#15655](pingdotgg/t3code#15655),
`c116dacb83` [#15498](pingdotgg/t3code#15498),
`73e097b8c8` [#17086](pingdotgg/t3code#17086):
fixed-height header and alignment.
- `8597558557` [#17147](pingdotgg/t3code#17147):
cache-first refresh and loading presentation.
- `0be20c86c2` [#17711](pingdotgg/t3code#17711):
workspace-aware account identity.
- `2625327090` [#17869](pingdotgg/t3code#17869):
final-minute reset wording.

Validation at current integrated head
`e30fb66ec371d60254e615367cb55d0d374408e5` (includes `c8e2957778`):

- Bun 1.4.2 frozen install and generation passed. Final affected
Usage/menu/dialog/PR-page/timeline fixture checks passed 462/462; strict
app TypeScript, caps and diff check passed. Full Contract preflight
passed: 6168 slots, 104852 nodes. Earlier app data tests passed 25/25.
- Signed native macOS bundle and terminal-host build passed at
`f7566b9a3afe918964c8870c0719d95e850f9fed`. Usage feature sources are
unchanged by the later integration merges; incoming app tasks are
qualified by the coordinator’s combined native bake. Offline runtime
3302 staging passed its archive hash, 11 Mach-O signatures and scratch
smoke.
- Native BEFORE and AFTER drives passed with inspected window captures:
[paired Limits
views](https://github.com/user-attachments/assets/abdd7cae-5266-442c-8617-32e30382c0f4),
[provider
choices](https://github.com/user-attachments/assets/6103435e-2304-475b-be6d-927758069935),
filter persistence across Limits → Cost, and the 760px header. Both
drives closed the app. Cost has no recorded sessions in this fixture;
its capture proves the retained selection, not nonzero cost arithmetic.

Server-side cache-first sources and reported workspace IDs use the
embedded runtime landed in
[#740](#740). The client accepts
older responses without `source.refreshing`, `awaitRefresh` support or
workspace IDs; keep-last-window and figure dimming still work. No
framework gaps identified. Evidence is [attached through
GitHub](#751 (comment))
and is never committed. This PR remains draft for coordinator review.

Prepared with Codex; continues work begun in the prior Claude session.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
Connections now shows the sixteen effective session permissions, and
pairing links preserve the exact selected permissions. Standard selects
all sixteen; Read only selects environment, files, diagnostics and
terminal reading. Empty grants remain empty.

Controls and RPCs follow their individual grants for settings, provider
management, environment maintenance, previews, diagnostics/usage, files,
source control and terminals. A terminal reader observes existing
sessions with `terminal.observe`; the existing native terminal bridge
suppresses input and resize, and the app disables creation, split and
close controls.

Upstream commits followed: `19108aa7b4` (#20432), `e9c3d950f0` (#9785),
`456930a09d` (#17370), `cc41482df0` (#9791), `57b2418d4f` (#9790),
`7175edcff4` (#9789), `321c6f9d26` (#9788), `2eda8ac6a3` (#9787),
`28ce9d1c17` (#9786), at reference `9c161462c9`. The new standard
exchange grant, permissions-first decoding, legacy compatibility and
Permission update notice (`365aa87982`) already landed in #740.
Server-side session lifetime enforcement comes from that merged
immutable runtime pin; this PR presents its session records and retains
the existing expired-session handling.

| Acceptance | Result | Proof |
| --- | --- | --- |
| All sixteen pairing choices and exact custom grants | Live tree
verifies sixteen choices; exact-subset regressions pass |
[Pairing](https://github.com/user-attachments/assets/222073b9-7a66-42e9-afeb-38f7c72a4fef)
|
| Effective session permissions, including empty grants | Native
connected session shows sixteen rows; empty-grant projection tests pass
|
[Session](https://github.com/user-attachments/assets/04b19f03-2775-4122-8fd9-f308cd6e5ef1)
|
| Each operation requires its own permission | RPC categories tested
separately; mixed provider/settings patches covered | [Permission
tests](https://github.com/ccheever/exact2/blob/64ac78a9e9c3483e1ef67161e55297866fb9b3e9/examples/t3-code/tests/connections/auth-permissions.test.ts)
|
| Read-only observation and UI | Live Read only preset checks exactly
four grants; native bridge blocks terminal writes and resize | [Read
only](https://github.com/user-attachments/assets/8c74848a-7917-4d02-b70d-ff90492ca40c);
terminal suite: 52 run, zero failures, one optional scale skip |
| Legacy notice and session lifetime | Foundational runtime and decoding
already merged in #740; lifetime fields displayed | [Runtime
foundation](#740) |

Native qualification at `64ac78a9e9`: 88 local-backend tests passed; the
complete visible-window terminal suite ran 52 tests with zero failures
and one optional scale skip. Terminal assets, immutable runtime staging
and final signed bundle passed. Native before/after captures below show
the same 1280×840 viewport and isolated homes/ports. The final AFTER run
uses a fresh named agent store; its journal has no 3773 requests, and
the client is connected to its own 16494 backend.

Source validation across integration updates (final head `127f82df7f`,
target `6daa324d1c`):

- Frozen install and generated sources passed. Strict app TypeScript,
caps and whitespace checks passed at the final head. Full optimized
Contract preflight passed at the preceding `05ff4825c` integration
snapshot (36,372,882 bytes).
- After adopting merged prompt links, 274 directly affected
prompt/auth/transport/client tests passed with zero failures and 1,248
assertions across 16 files. ClientError context fields and bridge
propagation remain intact.
- The broad suite after the first integration merge passed **5,859
tests, 126,393 assertions**, with one inherited Files help-tag failure.
The target's separately published guard fixes that failure; after
adopting it and the Usage/banner updates, **624 affected tests passed
with zero failures, 18,273 assertions across 62 files**, including the
help-tag check and permission regressions. The preceding
connections/terminal/settings/provider sweep passed 1,012 tests.
- The native evidence qualifies frozen feature source `64ac78a9e9`; no
native bake was repeated solely for these app-task merges. The
coordinator performs final combined native qualification.
- The `environment:maintain` checks remain in both focused and fleet
server-update paths; newer Usage queries retain their individual RPC
permission checks.

![Effective session permissions before and
after](https://github.com/user-attachments/assets/04b19f03-2775-4122-8fd9-f308cd6e5ef1)

![Pairing choices before and
after](https://github.com/user-attachments/assets/222073b9-7a66-42e9-afeb-38f7c72a4fef)

![Read only before and
after](https://github.com/user-attachments/assets/8c74848a-7917-4d02-b70d-ff90492ca40c)

Known differences: none identified. Permission-denial tests retain
explicit restricted grants. Existing positive fixtures now state the
permissions their scenario uses. Evidence is kept outside git.

Prepared with Codex; continues work begun in the prior Claude session.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
…764)

Provider settings now follow the selected environment and project scope.
Project switches write checkout overrides; reset restores environment
inheritance. Model favorites, visibility, and order use atomic
environment settings, with a migration that preserves explicit empty
server lists.

The page also shows live installer progress, supports built-in model
names and blank secret replacement/clear fields, and adds local ACP
executable arguments and Muse Code. The model picker explains CLI-gated
models, workspace discovery refreshes stale scans, and Pi editor answers
retain literal text and whitespace. Usage includes Pi and Antigravity
quota presentation.

Scoped upstream changes at `9c161462c9`:

| Commit | Implementation |
| --- | --- |
| `8ac6846a0b` [#17879](pingdotgg/t3code#17879)
| Project provider switches/reset, all checkout overrides, composer
availability |
| `ff3a04a8eb` [#16958](pingdotgg/t3code#16958)
| Installer progress/status and failure details |
| `7b57b723d3` [#17307](pingdotgg/t3code#17307)
| CLI-required model notices and Provider settings link |
| `a1830915ec` [#16750](pingdotgg/t3code#16750)
| Five-minute workspace scan TTL and clock-skew request bound |
| `f845895271` [#16816](pingdotgg/t3code#16816)
| Environment model preferences, atomic writes, legacy migration |
| `b9ad3daf8d` [#18461](pingdotgg/t3code#18461)
| Continuation default true; execution supplied by runtime #740 |
| `8653c8f09b` [#20446](pingdotgg/t3code#20446)
| Blank configured secret fields, replacement and explicit clear |
| `ffb4af8d5d` [#18840](pingdotgg/t3code#18840)
| Rename built-in models without duplicate custom rows |
| `d6f47ff972` [#17082](pingdotgg/t3code#17082)
| Muse Code driver, settings and official mark |
| `9afde1c6db` [#17848](pingdotgg/t3code#17848)
| Pi usage labels/charts; scanning supplied by runtime #740 |
| `716357cbba` [#17530](pingdotgg/t3code#17530)
| Antigravity quota ordering/colors; quota data supplied by runtime #740
|
| `7b09ac7e00` [#17424](pingdotgg/t3code#17424)
| OpenCode Go/Zen provider labels; existing qualifier stripping retained
|
| `9d029a1df2` [#16021](pingdotgg/t3code#16021)
| Local ACP source/executable/literal arguments; execution supplied by
runtime #740 |
| `e8f5850b82` [#17206](pingdotgg/t3code#17206)
| Literal prefilled answers, including whitespace and intentional empty
replies |

Acceptance:

| Behavior | Result | Proof |
| --- | --- | --- |
| Project enablement and inheritance | Native switch writes a project
override; environment provider remains enabled | [Native
before/after](https://github.com/user-attachments/assets/a20cc522-7779-434d-8475-6c9b2f51c166)
|
| Shared favorites, visibility/order and built-in rename | Official
settings RPCs use atomic mutations; native favorite/rename/hide pass |
[Native
states](https://github.com/user-attachments/assets/c6bf2a8b-f4b3-452d-845f-8ef8dcdba057)
|
| Sensitive fields | Configured secret input is blank; explicit clear
reaches the official server | Same native states |
| Progress, Muse, local ACP | Native progress text captured; one update
completes; command arguments preserve whitespace | Same native states |
| Literal prefilled answers | Production AppKit component preserves
original text, then restores normal parsing | [Composer
fixture](https://github.com/user-attachments/assets/b18e28d8-1a46-4278-ba94-c2c1c4036aaf)
|
| CLI-gated models, skills TTL, usage labels and continuation default |
Focused semantic tests pass; runtime behavior comes from merged #740 |
Checks below |
| Fine permissions | Settings-only and providers-only sessions admit the
correct writes on focused and fleet environments | 10 focused tests / 88
assertions |

Native validation is frozen at `30813752db`; the shared before bundle is
`4e522ea9ba`. The official isolated runtime handles settings, project
overrides, secret clear and local ACP persistence. Only the model
catalog and installer lifecycle are synthetic. No provider login,
installer or local command was executed. The registry lookup is
unavailable in both captures; manual local ACP creation passes. The
literal comparison uses the real AppKit composer in a focused fixture,
not a Pi conversation.

One initial AFTER attempt missed progress because its 30-second fixture
had finished before inspection. One source-unchanged retry held progress
until capture and passed all assertions. Both apps and the 94-test
composer suite exited; the isolated server/proxy are stopped.

Integration adopts `72c487618f`, including #763 permissions and terminal
read-only behavior. Favorites/hidden/order/project overrides use
`settings:write`; provider CRUD/configuration/auth/install retain
`providers:manage`. Native pixels and Cargo results qualify the frozen
feature snapshot; the subsequent integration and permission gates are
qualified by the final source checks below, without another native bake.

Validation:

- Final integrated app Bun suite: `bun test --timeout 30000
examples/t3-code` — 5,966 passed, 0 failed; 128,214 assertions across
392 files (42.08 s).
- The first default-5-second integrated run recorded five subprocess
timeouts and one stale usage-provider count. The count now includes Pi;
the final run above passes every case.
- Fine-permission regression subset: 10 passed / 88 assertions; checks
actual outgoing RPC admission and target environment.
- Generator, strict app TypeScript, whitespace and staged caps pass.
- Optimized full Contract preflight: 112,149 nodes / 36,798,271-byte
plan.
- Frozen native bundle built and signed successfully; packaged runtime
manifest matches `0.1.1-nightly.20261018.3302` and pinned SHA-256.
Offline staging, 11 Mach-O signatures, version and isolated ready smoke
pass.
- Frozen Rust library tests: 25 data + 28 macOS tests pass. Native
AppKit composer suite: 94 tests, zero failures.
- Native baseline and corrected AFTER driver assertions pass; attached
screenshots were inspected.

No Exact framework source changed. Provider logins and equipment-only
checks are outside this task's scope.

Prepared with Codex; continues work begun in the prior Claude session.


Coordinator review: final copy repair at
`6908c3a5c7c6a63cfb000cc94ee64a3da7cd2945` describes provider-instance
management separately from settings-only favorites and project
overrides. Independent source review and three evidence composites
passed; 35 focused tests / 186 assertions, strict TypeScript and caps
passed on this final head. The full 5,966-test result above qualifies
`56f6c08cc5`; frozen native proof remains `30813752db`.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
)

Settings → General can install or remove the desktop `t3` command. The
app writes an executable launcher in `<T3 home>/bin`, prefers a writable
command directory already on PATH, preserves foreign commands, and warns
when another `t3` runs first. Its launcher preserves arguments and
`T3CODE_HOME` overrides and passes `T3CODE_CLI_PATH` to the bundled CLI
and backend.

Installed-backend admission and CLI availability share the exact
distribution-only handler plus registered-scheme predicate. No unwritten
resource marker is needed; ordinary development and `--release` builds
retain the isolated home/port guard.

Desktop bootstrap credentials derive from a native in-memory secret in
twelve-hour HMAC windows. The server receives the secret through its
stdin bootstrap envelope; fresh exchanges derive the current token after
suspend. Diff previews preserve the project's cwd without retrying at
the server's cwd. Project icon writes and the native picker admit
`.icns`; server conversion is supplied by #740's immutable runtime.

Upstream commits followed at `9c161462c9`: `0678e4e23d` (#16683),
`73e87f683a` (#16676), `3bfbc37dbf` (#17351), `5afe18eaf9` (#16275),
`cfbd1457ad` (#17724), `de49d637d4` (#17149). Their server-side portions
come from the merged runtime pin.

| Acceptance | Result | Proof |
| --- | --- | --- |
| Install/remove, PATH ordering and foreign command preservation |
Native executable/filesystem fixtures pass | [Native
tests](https://github.com/ccheever/exact2/blob/c9b1f2e41aa5bba81675683ab7adc49dda34ef45/examples/t3-code/macos/tests/local-backend/cli.swift)
|
| Launcher arguments, home override, CLI path and moved app | Real
launcher subprocesses pass, including Unicode and shell metacharacters |
Same native tests: three focused launcher cases pass at final source |
| Installed backend and distribution-only CLI availability | One
metadata predicate requires the exact handler and scheme; marker-only,
incomplete and wrong metadata remain refused |
[Policy](https://github.com/ccheever/exact2/blob/c9b1f2e41aa5bba81675683ab7adc49dda34ef45/examples/t3-code/modules/apple/T3LocalBackend.swift),
sixteen native policy/launcher/inspection cases pass |
| Twelve-hour rotation and secret envelope | Native known HMAC vector,
boundary, secret separation, dynamic clock and stdin tests pass; real
app connects to the official server | [Live
connection](https://github.com/user-attachments/assets/5541c209-39f6-431b-ac82-b88eb71454cd)
and native tests |
| Project cwd remains authoritative | Actual client command makes one
request and preserves its error | [Diff
regression](https://github.com/ccheever/exact2/blob/c9b1f2e41aa5bba81675683ab7adc49dda34ef45/examples/t3-code/tests/diff/diff-opens-on-changes.test.ts)
|
| `.icns` project icons | Project-update validation and native picker
admission pass | Native picker fixture and immutable server conversion
from #740 |

Validation:

- Final integrated source `c9b1f2e41a` includes reviewed provider
integration `4d312fec8f`. Generated assets, **891 affected tests with
zero failures (5,431 assertions/72 files)**, strict app TypeScript, full
Contract preflight (36,911,323 bytes), caps and whitespace passed.
- All app Swift plus backend/media-preview inspection fixtures compiled
at this final head. **Sixteen focused native policy/launcher/inspection
tests passed** with temporary homes and metadata dictionaries. They
cover complete/missing/wrong metadata, marker-only backend refusal,
packaged defaults and explicit home/port overrides, virtual port
exhaustion, launcher execution, and legacy inspection compatibility. No
packaged app was launched against the real home/3773, no lane metadata
was altered, and no OS scheme was registered.
- Frozen feature snapshot `4c791b6bd`: full Bun suite **5,576 passed,
zero failures, 125,211 assertions across 359 files**. Frozen
install/generator, strict app TypeScript, optimized Contract preflight
(34.4 MB plan), caps and boot passed.
- Native local-backend/CLI suite: **94 passed, zero failures**,
including six new CLI/bootstrap/icon cases. The subsequent `6af0045d5`
adjustment changed only the launcher's internal shell variable to
`t3_home`; all app Swift recompiled, three focused real launcher tests
passed, and caps/whitespace passed. No full native rebake was needed for
that variable rename.
- Terminal assets, offline runtime staging and signed native bundle at
`4c791b6bd` passed. The bundled 80,665,649-byte official archive
independently hashes to
`6bd4ba617d321f31ac0c4bffe154ab14bf9ed8d67a7c244dcbda4c5f9581c521`;
staging verified eleven Mach-O signatures, the actual CLI version and
isolated startup.
- Matched native BEFORE/AFTER passed on their first attempts, at
1280×840 with fresh isolated stores and homes. The search entry changes
from absent to present; AFTER connects to the real
`0.1.1-nightly.20261018.3302` server at port 16498 with the new secret
envelope. BEFORE uses the required baseline bundle at port 16499. Their
4,052/3,145-entry journals contain no 3773 requests. Both apps closed
and their PIDs are gone.

![Desktop t3 command search before and
after](https://github.com/user-attachments/assets/dec77887-61c4-4f95-8f5e-29bf38316094)

![Real desktop bootstrap connection before and
after](https://github.com/user-attachments/assets/5541c209-39f6-431b-ac82-b88eb71454cd)

The runtime version difference in the second pair belongs to #740; this
PR's verified change is successful startup/authentication with the
rotating secret envelope. Development bundles intentionally hide
Install, so launcher mutations are qualified by native
filesystem/subprocess fixtures rather than forcing distribution metadata
into a lane build.

Known differences: Exact ships the server as an executable rather than
Electron's Node entry, so the launcher invokes the verified installed
executable directly. The packaged-local-home blocker is resolved by the
shared metadata predicate, using #758's approved distribution-only
handler. Existing home/port overrides and defaults remain unchanged. A
legacy `distribution.json` marker alone no longer admits backend/browser
home access; it remains an additional Web Inspector-disable condition,
preserving old release inspection behavior and production receipt
handling. The resolution is recorded in
`clone/issues/cli-and-tokens-packaged-local-home.md`.

The existing isolated real-bootstrap images qualify frozen bundle
`4c791b6bd`; the shared packaging predicate is separately qualified by
the final-head pure policy tests, so no full bundle rebake was needed.
No framework files change, and evidence stays outside git.

Prepared with Codex; continues work begun in the prior Claude session.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
## Request

Source control settings now choose a GitHub account per host and store
per-host tokens. GitCafe joins the supported clone and publish hosts.
Pull-request controls follow host capabilities and item-specific
permissions, including confirmed source-branch deletion after merge or
close.

## Changes and reasons

- Share host names, clone transport, publish placement and quick-action
capabilities across consumers. New projects can publish to any ready
host whose signed-in account identifies the repository owner;
Bitbucket/Azure still use the existing publish dialog to supply a
workspace/project.
- Replace the separate Bitbucket form with host-defined fields,
including GitCafe’s token. Saved secrets remain write-only; patches
retain other hosts and redacted secrets. GitHub hosts can select a
stored login, follow the active login, or be disabled; unavailable pins
and environment overrides are explained.
- Honor explicit edit/resolve permissions before login inference, report
routed PR state back to the originating environment without delaying the
read, and add a destructive confirmation for branch deletion.
- Use the `t3` branch prefix and expose the scoped option to omit agent
credits from merge messages.

Follows T3 Code `9c161462c9`: `9ac8f33f16` (#16322), `4f63275ac7`
(#17901), `65d33177b7` (#17681), `24238fee32` (#16192), `2afe87ea4b`
(#16220), `9b40d37463` (#17774), `c3243f0508` (#17667), `a4c8745abe`
(#17860), `7bc7328042` (#17746), `339179f50a` (#19257), `6d5ea190a4`
(#17729), and `c8a603307c` (#17756). Each scoped change is represented
by the settings, host definitions, PR consumers, or existing publish
flow extended here.

## Verification

Final source: `68fb851a38176de7e7251259bad92f3fe8444d7e`, integrated
with `6d90af6f06`. Native pixels qualify frozen
`3fb6925fdd89130dcea5dc24cbd244c662bf2b1b`. The new-project host picker
sits beside the publish toggle. Integration retains model traits,
grouped settings, PR search badges, inline merge confirmations, and the
separate destructive branch-deletion dialog. All 5,984 app/tool tests
pass, along with strict TypeScript, caps and Contract preflight.
Selected background scope now supplies discovery, credentials, ordinary
row values/providers/label/grants, fetch interval and checkout identity;
it never falls back to the focused connection. Pinned Bun 1.4.2.

| Acceptance | Result | Proof |
|---|---|---|
| Account grouping, pin reset, host enablement and stale-secret
retention | Pass | [Host settings
cases](https://github.com/ccheever/exact2/blob/68fb851a38176de7e7251259bad92f3fe8444d7e/examples/t3-code/tests/settings/source-control-hosts.test.ts)
|
| Write-only token fields, unchanged-secret blur, scoped merge-credit
preference | Pass | [Settings and input
cases](https://github.com/ccheever/exact2/blob/68fb851a38176de7e7251259bad92f3fe8444d7e/examples/t3-code/tests/settings/source-control-hosts.test.ts)
|
| Ready-host new-project targets and GitCafe/GitLab checkout commands |
Pass | [Host and checkout
cases](https://github.com/ccheever/exact2/blob/68fb851a38176de7e7251259bad92f3fe8444d7e/examples/t3-code/tests/settings/source-control-hosts.test.ts)
|
| Host-specific quick actions; item edit/resolve permission | Pass |
[Quick-action
cases](https://github.com/ccheever/exact2/blob/68fb851a38176de7e7251259bad92f3fe8444d7e/examples/t3-code/tests/pull-requests/pages-pr-quick.test.ts)
|
| Branch deletion requires closed/merged state, host capability and
viewer permission | Pass | [Action and destructive-dialog
cases](https://github.com/ccheever/exact2/blob/68fb851a38176de7e7251259bad92f3fe8444d7e/examples/t3-code/tests/pull-requests/pages-pr-actions.test.ts)
|
| Routed PR state reaches the origin without waiting for reporting |
Pass | [Routing
cases](https://github.com/ccheever/exact2/blob/68fb851a38176de7e7251259bad92f3fe8444d7e/examples/t3-code/tests/pull-requests/pages-pr-routing.test.ts)
|
| App/tool tests on initial implementation | 5,343 pass, 0 fail, 367
files | `bun test --timeout 30000 examples/t3-code` |
| Final integrated app/tool suite | 5,984 pass, 0 fail, 394 files;
128,300 assertions | `bun test --timeout 30000 examples/t3-code` |
| Selected environment ownership | Pass | Six regressions cover remote
values/grants/checkout, offline focus, missing selection and owner
cache; actual real-server `sourceControlPage` + `restCommand` probe
reads gh 2.81.0 and writes Bob→Alice with `orchestration:read
settings:write` only, zero focused transport calls and unchanged focused
config. |
| Strict TypeScript, caps, whitespace | Pass | App strict typecheck;
caps; `git diff --check` |
| Full Contract plan | Pass | 113,206 nodes; 6,363 slots; 30 derives; 79
resources; 10,671 actions |
| Terminal assets and new runtime | Pass | Archive hash verified; 11
Mach-O signatures; isolated live startup on 16893 |
| Actual new-server host settings persistence | Pass | [Real-server
readback](#760 (comment))
on `4347bc735`, through the exact app `hostCredentialsCommand` at that
source: selected account/enablement, two GitHub token hosts, GitCafe
token, and Bitbucket email/API token survive restart; all secrets read
back redacted. Discovery uses a synthetic local gh executable with two
fixture accounts. |
| App data Rust tests | 29 pass, 0 fail | Consumer workspace; host-dev;
aarch64-apple-darwin |
| Signed native bundle | Pass | Frozen `3fb6925fdd`; client
`93fbc4677384330f3c8b5972`; deep codesign verified |
| Native before/after and actual picker persistence | Pass at frozen
`3fb6925fdd` | [Window comparison and restart
readback](#760 (comment)):
actual picker chooses Alice and restart retains it. |

## Risks and dependencies

Depends on merged runtime foundation #740. No Exact framework changes or
blocker found. The selected-page owner repair, palette help-tag and
branch-dialog focus reconciliation after the frozen capture are covered
by final tests/Contract and actual RPC readback; final combined native
qualification remains coordinated separately. App account operations use
isolated synthetic fixtures only; normal GitHub CLI use here publishes
this PR.

![Source control host settings before and
after](https://github.com/user-attachments/assets/eaed64b9-53c3-47da-9d9c-25fc45743327)

Prepared with Codex; continues work begun in the prior Claude session.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
…766)

Storage can run cleanup on selected machines and explain each removed,
kept or failed item. Worktree settings add a folder, local-change policy
and zero-day settled-thread retention. Threads with pull requests can
stay active; Stop ends a PR watch even before the first run. Project
actions can run on settle, and scheduled tasks can accept signed
webhooks with delivery details.

Task: `storage-settle`. Base: `daehyeon/t3-code-main`, including landed
runtime #740 and machine settings #750. Reference: T3 Code `9c161462c9`.
App files only; framework sources are unchanged.

| Scoped upstream change | Result | Proof |
| --- | --- | --- |
| `0caa95d6eb` [#17563](pingdotgg/t3code#17563),
`fa1184d29e` [#19749](pingdotgg/t3code#19749):
cleanup and orphan reports | Delete now uses each selected permitted
transport; Last run shows per-item reasons, sizes, files and omitted
results. Orphans retain full paths. | Focused rules/scope tests;
[Real3302 RPC
comparison](#766 (comment))
returned 0 removed, 1 kept, 0 failed |
| `21bedfb175` [#15208](pingdotgg/t3code#15208),
`65d390fc52` [#19437](pingdotgg/t3code#19437),
`1024941575` [#16231](pingdotgg/t3code#16231):
keep rules, settled retention, database notice, worktree location |
Capability-gated controls preserve per-checkout inheritance. Database
status streams show a copyable offline command when reclaimable space
reaches 1 GiB without incremental vacuum; dismissal persists per
machine. | Zero-day/mixed-scope/stale-target tests,
database-threshold/dismissal tests; real server settings round-trip |
| `bf8ffe81a6` [#14642](pingdotgg/t3code#14642):
keep PR threads | Project-scoped Keep threads with a PR requires
auto-settle and support on all selected machines. | Scope planner and
settings tests |
| `207f6a10b0` [#16204](pingdotgg/t3code#16204),
`51f7f77f87` [#16095](pingdotgg/t3code#16095):
PR watches and Stop | Never-run watched threads stay Working. Stop sends
watch=false for each visible active PR. The runtime from #740 ends
watches when threads settle. | Actual composer-command and sidebar
projection regression tests |
| `079e4bccdc` [#16290](pingdotgg/t3code#16290):
actions on settle | Setup and settle roles remain independent.
Settle-only actions stay reachable in Actions and never become the
primary Run button, including a remembered selection. | Role
transfer/import/primary-action tests; [Real server retained
runOnSettle=true](#766 (comment))
|
| `7dfb86a32b` [#15085](pingdotgg/t3code#15085),
`ea4b44343d` [#15088](pingdotgg/t3code#15088):
webhooks | Editor supports placeholders, signature fields, write-only
existing secrets, age limits, URL copy/rotation confirmation. Deliveries
show outcomes, redacted request, missing fields and rendered prompt.
Both dialogs trap and restore focus. | Validation/round-trip/delivery
tests; [Real signed-webhook
fixture](#766 (comment))
rejected an unsigned POST with 401; [signed
request](#766 (comment))
returned 202, verified the signature and rendered `{{body}}` |

Final source: `d1c3ad34b964fd486fcd367fa37ce648b6303008`, including
qualified app integration `70699d0379`. The two manual merge resolutions
retain all three environment-wide keys (`worktreesDirectory`,
`favorites`, `providerModelPreferences`), Storage's keep-PR default of
false and the incoming restart-continuation default of true. All changes
relative to that base are app files.

- Generated inputs refreshed with pinned Bun 1.4.2. Final affected
checks pass 539 tests / 4321 assertions across 35 files, strict app
TypeScript, caps and diff checks.
- The task-owned Contract compiler was rebuilt against this live SDK.
Both existing ambient-analysis integration tests pass. Final merged app
preflight passes: 6391 slots, 30 derives, 80 resources, 10731 actions,
118308 nodes, 49747 regions, 37815496 bytes. No deleted-worktree SDK
path or ambient bypass is used.
- Earlier broad validation on `9f4c6316b` passed 3807 tests / 41936
assertions across 256 files. Terminal-host build and offline 3302
staging passed, including archive hash, SHA256SUMS, 11 Mach-O signatures
and scratch smoke. The coordinator owns the final combined suite/native
qualification for incoming app tasks.
- [Isolated real-server
grants](#766 (comment))
confirm `settings:write` alone runs cleanup while `environment:maintain`
alone is denied. Per-target UI/dispatch tests independently cover the
same gate. The [signed
request](#766 (comment))
returned 202, verified the signature and rendered `{{body}}`; the
unsigned request returned 401.
- The first native task-editor drive exposed five persistence-only
fields leaking into the strict public resource shape. Repair `64876e527`
projects only declared editor and webhook fields. Its exact-key
regression derives the public fields from the actual Contract
declaration and fails before the repair. Expanded repair checks passed
83 tests / 327 assertions; these regressions are included in final
affected checks.

The final directory guard `1b69d667df` keys the draft occurrence by
scope, mixed state and saved path, matching pinned upstream’s input
identity. An actual Contract/Runner probe importing the product
StoragePanel reproduced stale display after switching machines, Reset,
value replacement and mixed-state changes; an edit then targeted machine
B with machine A’s stale path. The repaired source passes nine runtime
assertions, including scope-only changes with matching paths and
preserving an unsaved edit during an unrelated busy update. The
coordinator independently reviewed the two-line patch and reran the
probe with no findings. This guard is source-qualified after the frozen
native `64876e527` proof; the final combined native bake will cover it.

Native evidence is attached with exact snapshot qualifiers:

| Phase | Source and result |
| --- | --- |
| Shared BEFORE | Clean `4e522ea9ba67c7599fc69f5013299ad8cca7f4ca`,
built `2026-10-18T13:26:06.707Z`, independently verified from this
bundle's Info.plist and executable. SHA-256
`ba0d0ba66bf413b6a5b0d599478c106de988ec8d74517d6fd5242556e5604320`. |
| Storage AFTER | Signed `a8565502297a0c3ece4c35e087217ebdaede91f8`
(Cargo data tests 29/29); [independent native
comparison](#766 (comment))
proves the connected page, location, Any local files, 0-day settled
retention and Delete now → Last run / 0 removed / 2 kept. |
| Repaired webhook AFTER | Clean signed
`64876e527242a7308b60896bcc7d158db20457ce`, executable SHA-256
`a0cd91f5fc8777cf5ba5aff459beaa25c057afcbf44dbf2980d59647bac59717`; [18
assertions and six inspected window
captures](#766 (comment))
prove the real editor, signature/age/blank existing secret, Copy
preserving its draft, Rotate → Cancel preserving the draft, and
rejected/accepted delivery details with redaction, verified signature
and rendered prompt. |

The webhook drive used authored ArrowDown/Enter input for
Actions/Edit/Deliveries and native taps/text elsewhere. A preceding
pointer tap left the popup closed; pointer-menu acceptance is not
claimed. Rotation was cancelled, so URL replacement was not exercised in
this drive. Relative-age labels reflect the agent's virtual epoch versus
fixture timestamps and were not asserted. The native source qualifiers
above are retained after integration; the incoming app tasks were not
rebaked in this lane.

The isolated fixture uses port16771 and its own home under ignored
target/. Its provider is the local ACP stand-in; no real provider
account is used. Evidence files are attached through GitHub and are
never committed.

Prepared with Codex; continues work begun in the prior Claude session.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
## Request

Add the guided pull request review tour from T3 Code `1f6df6bf1f`
([upstream #18124](pingdotgg/t3code#18124)),
following the pinned `9c161462c9` implementation. Readers can follow a
change in reading order, discuss selected lines, and finish in the
existing review composer.

## Changes and reasons

- Add the responsive Guide tab, stop rail/picker, attention callouts,
old/new excerpts, lettered notes, file accordions, reading progress, and
keyboard navigation.
- Keep generation, refreshes, completion watches, and notification open
targets bound to the original environment. Retain the previous guide
while rewriting and isolate tour diffs from Code's commit/whitespace
scope.
- Share pending review comments with Code, retain Guide when asking an
agent, reveal files across paged diffs, and open review mode on Finish.
- Add inherited project review-guide instructions with trimmed edits,
reset, search, and untouched mixed-value handling.

## Verification

Implementation: `4f833fc97d` after fixed integration `6418f138c1`.
Native feature acceptance is frozen at
`920d67a50da3e6e5cac0f9f2ff8cd173f6608030`; the integration retains Code
Find controls beside Guide reveal/state/routing. No task behavior
changed in the conflict resolution.

| Criterion | Result | Evidence |
|---|---|---|
| Local TypeScript and source budgets | Pass: strict app TypeScript,
caps, staged whitespace | Local checks |
| Full Contract compilation | Pass: 152,837 nodes, 7,684 slots, 13,284
actions | Local standalone optimized compiler |
| Real immutable 3302 generation | Pass: exact app handlers observed
Running, retained the previous guide, decoded 3 normalized stops, and
made zero focused-Local calls | [Actual RPC and restart
readback](#781 (comment))
|
| Actual server persistence | Pass: generated guide remained
byte-identical after the owned runtime restarted | [Actual RPC and
restart
readback](#781 (comment))
|
| Full Bun suite | Pass: 6,084 tests, 128,773 assertions across 403
files at c793; final Storage key union:322 affected Guide/settings
tests, 2,746 assertions | Local checks |
| Signed native build | Pass: frozen `920d67a5`, client
`2bc0ad08d2bcf1280a67076d`; deep codesign verifies | Local signed bundle
|
| App data Rust tests | Pass: 39 tests after integration678 | The final
declarative Storage union preserves this source; frozen native920d
had28/29 due the centrally repaired stale icon assertion |
| Native before/after acceptance | Pass: real old-side source/expansion,
shared pending comment, platform J/K, Finish read3/Review mode, Ask
unsent draft with Guide retained | [Native images and
assertions](#781 (comment))
|

The runtime fixture uses real local Git commits and the unmodified
pinned runtime. Its provider and GitHub API responses are synthetic and
confined to owned local processes. No machine credentials or real GitHub
writes are used.

## Native evidence

![Pull request guided review before and
after](https://github.com/user-attachments/assets/4ee253e9-7b01-4445-b248-9e7f112fc381)

![Finish opens Review with all three stops
read](https://github.com/user-attachments/assets/fc9dc512-2021-4109-ad19-6f4c33d76838)

![Guide question in an unsent draft with review
retained](https://github.com/user-attachments/assets/d140fc69-0d7a-43e7-9f95-eedf736f4ed1)

## Risks and dependencies

Runtime #740 and source-control-hosts #760 are merged prerequisites. No
framework or app-owned Swift changes. Native evidence qualifies
frozen920d; final integration is separately covered by the complete
source checks. No review was submitted and no question was sent.

## Next action

Coordinator review of the final integration delta; keep this PR a draft.

---------

Co-authored-by: Codex <noreply@openai.com>
daehyeon-mun added a commit that referenced this pull request Oct 18, 2026
## Request

Claude workflows in Lineage show their named phases and member agents.
Users can expand workflows and phases, open available member
conversations, inspect reported model/status/output, and stop a workflow
or native Claude task while its owner continues running.

## Changes and reasons

- Project workflow snapshots into coordinator and member records. Keep
coordinator status authoritative when its child conversation has newer
activity; phase counts, elapsed times and settled outcomes follow the
reported members.
- Preserve independent workflow/phase expansion and header pagination.
Expanded rows are flattened before rendering, avoiding nested
fixed-capacity loops. A running phase starts open; member hover cards
use the window layer so scrolling cannot clip them.
- Stop strongly identified live native tasks with `subagent.stop`, using
the task's owner/run/task identifiers. Workflow Stop uses the dedicated
`orchestration.stopWorkflow` write RPC. T3-owned child Stop continues to
interrupt only the child with its queue held. Read-only controls and
duplicate commands are gated; failures use the upstream toast titles.
- Name `t3_workflow_stop` in the work log and count unique coordinator
identifiers in grouped summaries.

Follows upstream T3 Code `9c161462c9`: `b9afba59f4` (#12598), workflow
phases/members and stopWorkflow, and `8c777fbfad` (#17826), stopping a
native subagent without stopping its owner. Server behavior and schemas
come from merged runtime #740; Lineage controls and layout come from
merged #752. No framework source changes.

## Verification

Final source `5e256bb82` includes fixed integration `6418f138c1`. Native
feature acceptance is frozen at
`a50a912169ce8c8ebe3e7c20aed08b75a4c5beda`; the integration preserves
the updated Details breakpoint and linked-prompt handling alongside
workflow controls.

| Acceptance | Result | Proof |
|---|---|---|
| Phase/member projection, attempts, usage, timing, terminal propagation
and model metadata | Pass | [Projection
cases](https://github.com/ccheever/exact2/blob/a50a912169ce8c8ebe3e7c20aed08b75a4c5beda/examples/t3-code/tests/details/lineage-workflows.test.ts)
|
| Independent workflow/phase expansion, coordinator grouping/status and
member availability | Pass | [Consumer and Contract action
cases](https://github.com/ccheever/exact2/blob/a50a912169ce8c8ebe3e7c20aed08b75a4c5beda/examples/t3-code/tests/details/lineage-workflows.test.ts)
|
| Native task Stop targets its task, workflow Stop targets its
coordinator; read-only and refusals | Pass | [Operation
cases](https://github.com/ccheever/exact2/blob/a50a912169ce8c8ebe3e7c20aed08b75a4c5beda/examples/t3-code/tests/shell/lineage-native-stop.test.ts)
|
| Existing T3-owned child Stop and duplicate gate | Pass | [Child Stop
cases](https://github.com/ccheever/exact2/blob/a50a912169ce8c8ebe3e7c20aed08b75a4c5beda/examples/t3-code/tests/shell/lineage-stop-subagent.test.ts)
|
| Workflow Stop tool labels, requested effect, unique counts and effect
priority | Pass | [Work-log
cases](https://github.com/ccheever/exact2/blob/a50a912169ce8c8ebe3e7c20aed08b75a4c5beda/examples/t3-code/tests/timeline/timeline-tool-calls.test.ts)
|
| Full app/tool Bun suite | Pass | 6,073 tests, 401 files, 128,801
assertions at final5e256; pinned Bun1.4.2, timeout120s |
| Strict TypeScript, caps and whitespace | Pass | App strict typecheck;
final caps and staged whitespace pass |
| Full Contract preflight | Pass | 122,148 nodes; 6,486 slots; 31
derives; 81 resources; 10,922 actions |
| New embedded runtime staging | Pass | Immutable archive SHA-256
verified; 11 Mach-O signatures; isolated startup |
| Actual new-runtime native-task/workflow Stop | Pass | Real server and
synthetic CLI through exact app shellCommand: task cancelled while
workflow/owner run stayed running, then workflow cancelled while owner
stayed running. No run.interrupt sent. [Actual
readback](#771 (comment)).
|
| App data Rust tests | 29 pass, 0 fail | Consumer workspace; host-dev;
aarch64-apple-darwin |
| Signed native bundle | Pass | Frozen `a50a912169`; client
`1c54876d6bc8e29b68d346c0`; deep codesign verifies |
| Live native before/after, phase/member controls and navigation | Pass
| Inspected original window captures and asserted child-thread
selection. [Native images and
attempt](#771 (comment))
|
| Native Stop button acceptance | Pass | Unique seed77119031; fresh
accepted Stop UUID, actual SDK stop_task for both current tasks,
cancelled targets while owner remains running. [Native
readback](#771 (comment)).
|

## Native comparison

Before/after at the same 1280×840 window size and fixture: the flat
workflow row becomes named phases with reported member counts and
navigable agent rows. Original pixels are unchanged apart from the label
band. Both native Stop buttons subsequently passed the unique-seed
operation proof linked below.

![Workflow phases and member agents before and
after](https://github.com/user-attachments/assets/f8ee7e19-d22d-4c37-b36b-939fde0baf4a)


## Native operation proof

The [unique-seed native
drive](#771 (comment))
completes Stop acceptance at the frozen source. The earlier attempts
reused seed1 and collided with an older `thread.visit` receipt; the
[retained trace
diagnosis](#771 (comment))
and successful fresh UUID establish an apparatus cause. No product
repair, database reset or rebuild was needed.

Final integration is separately covered by the complete source checks.
Keep this PR a draft for coordinator review.

## Known differences

No product behavior difference identified. Contract refuses `rem` inside
CSS `min()`; this uses the existing `min(${28 * rem}px, 55dvh)`
expression to preserve upstream sizing. No framework change is required.

---------

Co-authored-by: Codex <noreply@openai.com>
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