|
1 | 1 | --- |
2 | 2 | remote: t3code-upstream |
3 | 3 | branch: main |
4 | | -reviewed-through: "82b8a9380298509d68170961d9717be62836e490" |
5 | | -reviewed-through-date: "2026-08-18" |
| 4 | +reviewed-through: "2aa5f095fc3bb65c00cc4efce66a5473e2d4554a" |
| 5 | +reviewed-through-date: "2026-08-19" |
6 | 6 | --- |
7 | 7 |
|
8 | 8 | # T3 upstream review log |
@@ -1618,6 +1618,90 @@ rather than on busy pull requests generally. |
1618 | 1618 |
|
1619 | 1619 | **Mobile (N7, N8) was not exercised at all.** |
1620 | 1620 |
|
| 1621 | +## 2026-08-19 — `82b8a9380298509d68170961d9717be62836e490..2aa5f095fc3bb65c00cc4efce66a5473e2d4554a` |
| 1622 | + |
| 1623 | +Twenty-two upstream commits, ten change sets, one PR. **Twenty commits adopted** onto |
| 1624 | +`upstream/2026-08-19-batch`; two skipped. `git cherry` reported every one absent from Pylon, |
| 1625 | +so nothing was patch-equivalent. The deferred register was empty going in and stays empty. |
| 1626 | + |
| 1627 | +**CS-1 (`#7459`) is the most valuable change here.** It flips the Grok and OpenCode schema |
| 1628 | +defaults to `false` (Cursor was already `false` in Pylon) and adds |
| 1629 | +`providerInstanceConfigEnabledFlag` / `resolveProviderInstanceEnabled`, resolving an |
| 1630 | +envelope-vs-config `enabled` conflict most-restrictively so a user's explicit disable is |
| 1631 | +never silently undone. **Accepted consequence worth remembering:** `writeSettingsAtomically` |
| 1632 | +strips values equal to the default, so an install that had Grok on by matching the old |
| 1633 | +default has nothing written for it and comes back disabled after this change. That is the |
| 1634 | +point of the commit rather than a regression, but it is a one-way default flip with no |
| 1635 | +migration, and the sparse-persistence detail means an explicit opt-in is indistinguishable |
| 1636 | +from an untouched default. |
| 1637 | + |
| 1638 | +**CS-2 (`#7473` then `#7477`) had to be taken as an ordered pair.** `#7477` deletes |
| 1639 | +`macArch.ts` and `macArch.test.ts` outright and moves detection into `download.astro` and |
| 1640 | +`index.astro`, superseding the fix in `#7473`. Adopting only the later commit risks a |
| 1641 | +delete/modify conflict. The end state deliberately serves **every** Mac the arm64 build from |
| 1642 | +the hero button, with a code comment saying not to add arch detection back — browsers cannot |
| 1643 | +tell Apple Silicon from Intel, and Intel users choose on `/download`. |
| 1644 | + |
| 1645 | +**CS-3 (`#7445` then `#7460`) is likewise inseparable**: the first throttles hidden preview |
| 1646 | +rendering, the second exempts cold start because the first regressed first paint. |
| 1647 | + |
| 1648 | +**The launchd change (`#6286`) carried every branding conflict in the batch** — three files, |
| 1649 | +all resolved Pylon-first by taking upstream's platform-aware behavior and keeping Pylon's |
| 1650 | +copy. The launch agent label stays the compatibility identifier `com.t3tools.t3code.service` |
| 1651 | +per AGENTS.md; see the open question below. |
| 1652 | + |
| 1653 | +Conflicts and adaptations, all resolved Pylon-first: |
| 1654 | + |
| 1655 | +| File | Conflict | Resolution | |
| 1656 | +| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
| 1657 | +| `apps/web/src/components/ThreadCommandSubtitle.tsx` | `#7392` adds a `ThreadCommandSubtitleVariant` design-review toggle; Pylon had simplified that away | Kept Pylon's single `WorkspaceIcon(isWorktree)` and dropped the variant harness; adopted the `COMMAND_PALETTE_META_ICON_CLASS` / `CommandPaletteMetaDot` renames the new palette imports. Nothing outside the file referenced the variant. | |
| 1658 | +| `apps/web/src/components/chat/ChatComposer.tsx` | `#7122` against a file that has diverged structurally (Pylon 4240 lines vs upstream 2824) | Manual port of the two-line change (import + placeholder constant) onto Pylon's file. Applied byte-wise because the file carries 6 NUL bytes and defeats `grep`. | |
| 1659 | +| `apps/web/src/providerInstances.ts`, `.../settings/ProviderSettingsPanel.tsx` | Import-list collision: Pylon's `providerInstancePrioritySortKey` vs upstream's `resolveProviderInstanceEnabled` | Union — both symbols are used. | |
| 1660 | +| `apps/server/src/cli/service.ts`, `apps/server/src/cli/connect.ts` | `#6286` platform-aware copy written as "T3 Code" / "T3 Connect" | Took the darwin/else branching, kept Pylon naming. | |
| 1661 | +| `docs/user/background-service.md` | Same, plus a whole new Platform Support section | Adopted the macOS content verbatim except product names; kept the literal `t3code.service` and `com.t3tools.t3code.service.plist` paths because that is what the code writes. | |
| 1662 | + |
| 1663 | +Skipped: |
| 1664 | + |
| 1665 | +| ID | Upstream | Why | |
| 1666 | +| ----- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
| 1667 | +| CS-10 | `db0659fe` (`#7421`) | AUR launcher icon paths. Pylon has no `packaging/aur` directory, so it is not applicable. | |
| 1668 | +| CS-9 | `324ddda3` (`#6563`) | `npx t3 triage`. 779 insertions whose playbook hardcodes `pingdotgg/t3code`, fetches the playbook from T3's raw GitHub URL, searches T3's issues, and builds a `github.com/pingdotgg/t3code/issues/new` URL. Adopting as-is would funnel Pylon users' bug reports into T3's tracker. Held for a from-scratch Pylon implementation, which needs a product decision first: `pylon-code/pylon` is private, so there is no public tracker for a user's generated issue to land in. | |
| 1669 | + |
| 1670 | +Review and validation: |
| 1671 | + |
| 1672 | +- 21 changed test files, **617 tests, 0 failures**. Note for future sessions: `vp test run` |
| 1673 | + globs nested worktrees under `.prime/` and `.claude/worktrees/`, which have no |
| 1674 | + `node_modules`, producing ~72 phantom module-resolution failures **and still exiting 0**. |
| 1675 | + Pass `--exclude '**/.prime/**' --exclude '**/.claude/worktrees/**'` for a real signal. |
| 1676 | +- Typecheck clean across 8 packages (server, web, desktop, contracts, shared, client-runtime, |
| 1677 | + marketing, mobile). |
| 1678 | +- Validated live in the web client against a seeded copy of real data: pairing, the new |
| 1679 | + composer placeholder, Settings → Providers showing Cursor/Grok/OpenCode disabled, and the |
| 1680 | + command palette rendering the new project-location subtitle. |
| 1681 | +- An xhigh review produced 13 findings. One was confirmed and fixed in `7d0a295db`: the |
| 1682 | + `#7317` inherited-upstream guard returned without `skipped`, so the caller wiped the |
| 1683 | + branch's last-known PR and dropped the Merged-badge fallback — the adjacent |
| 1684 | + unpublished-branch guard sets that flag for exactly this reason. **Worth sending upstream.** |
| 1685 | + The rest describe upstream design tradeoffs that were adopted as-is rather than rewritten |
| 1686 | + inside an adoption PR; the notable ones are recorded below. |
| 1687 | + |
| 1688 | +Open questions raised by this batch, for a later decision: |
| 1689 | + |
| 1690 | +- **The launchd label is `com.t3tools.t3code.service`.** AGENTS.md forbids renaming |
| 1691 | + compatibility identifiers during adoption, so it was kept. But Pylon's stated goal is that |
| 1692 | + Pylon and T3 Code can be installed side by side, and both would now claim the same launch |
| 1693 | + agent label and TCC records on one Mac. Upstream's own comment says the label is chosen so |
| 1694 | + those never collide — which only holds for a single product. |
| 1695 | +- **`QuitHold`** (`#7397`) clears its watchdog on entering `quitOnRelease` without installing |
| 1696 | + a replacement, so if key events stop arriving mid-hold the "Hold to Quit" overlay can stay |
| 1697 | + up with no quit. |
| 1698 | +- **The launchd plist has no `StartLimitBurst` equivalent**, so a server that cannot boot |
| 1699 | + respawns every 5 seconds indefinitely where systemd gives up after 5 failures in 300s. |
| 1700 | +- **`backgroundThrottling` now has two independent owners** — `#7460`'s first-reveal trigger |
| 1701 | + and `#7445`'s frame-capture accounting — with no shared state between them. |
| 1702 | +- **A muted preview tab loses its speaker affordance** once the guest goes silent |
| 1703 | + (`tabAudioState` returns "none"), leaving no in-strip way to see or undo the mute. |
| 1704 | + |
1621 | 1705 | ## Deferred register |
1622 | 1706 |
|
1623 | 1707 | _The register is currently empty. DEF-1 and DEF-2 were adopted on 2026-08-11 |
|
0 commit comments