Skip to content

feat: adopt the 2026-08-12 upstream batch (11 of 12 change sets) - #9

Merged
rynfar merged 15 commits into
pylonfrom
upstream/2026-08-12-batch
Aug 12, 2026
Merged

feat: adopt the 2026-08-12 upstream batch (11 of 12 change sets)#9
rynfar merged 15 commits into
pylonfrom
upstream/2026-08-12-batch

Conversation

@rynfar

@rynfar rynfar commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Problem

Twelve T3 Code commits landed past Pylon's review cursor (c196f422e..b73232bdd), covering sidebar chrome, the right panel, the composer, mobile thread actions, and the Connect CLI OAuth flow. Upstream is in polish mode — nine of the twelve are fix — so most of this is inherited-defect repair Pylon was still carrying.

What this does

Adopts eleven of the twelve change sets and skips one. Ten cherry-picked clean; O1 was ported by hand.

Three adaptations are worth review attention:

O1 (sidebar footer compaction) reverts a Pylon fix if taken verbatim. Upstream deletes useCanGoBack and makes the footer's Back button always navigate to /. Pylon had deliberately fixed that so Back returns to the thread the user actually came from. The port keeps Pylon's handler, keeps SidebarAccountDrainPill in the footer stack, and preserves PylonMark in the same file. Upstream's "Dismiss until next launch" goes away with the change — the pill is no longer a full-width banner, so there is nothing left to dismiss.

O7 (right panel empty state) shipped a real defect, fixed here rather than carried in. The new launcher claims bare B/T/F/D/P/A on a capture-phase window listener and treated an empty contenteditable as "not typing". Pylon's composer is a Lexical ContentEditable that is empty at rest, so with a thread open and the right panel empty, a message starting with any of those six letters lost its first keystroke to a surface opening instead — and stopPropagation meant nothing downstream could put it back. A focused text surface now always keeps its own keystrokes.

O9 (Connect CLI OAuth) is inert in Pylon, taken for drift reduction. It fixes a genuine upstream bug (parameters dropped across Clerk's sign-in redirect) but does nothing until Pylon owns a Clerk application — E21 was skipped precisely so a fresh clone does not point at T3 infrastructure.

O4 is skipped: it vouches a T3 contributor in .github/VOUCHED.td, which has no Pylon meaning. Same class as F24 and G4.

Full per-change-set reasoning is in .agents/upstream-review.md, which also advances the cursor to b73232bdd.

Verification

  • Typecheck clean across web, mobile, shared, and contracts. Server reports 0 errors — only effect diagnostic suggestions in files this batch does not touch.
  • Tests: web 2324 (244 files), mobile 657 (105 files), shared connectAuth 7, server publicConfig 12. All passing.
  • vp lint clean over all 33 changed TypeScript files; vp fmt --check clean over all 36 changed files.
  • O11's bundled contrast test asserts ≥4.5:1 across every built-in palette and passes against Pylon's F10-tuned palettes, not just upstream's.

Not verified in a real client. No browser or mobile pass ran. O1's compacted footer and O7's launcher plus its guard fix are the two that changed interaction rather than only layout, so they are where a UI pass would be worth the most. Happy to run one before merge if you want it.

Model: Claude Opus 5 via Claude Code.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.

@github-actions github-actions Bot added size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 12, 2026
@rynfar

rynfar commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator Author

Real-client verification

Ran both passes. Web against a VACUUM INTO copy of the real database (9 threads); iOS on a purpose-booted iPhone 17 Pro simulator. Migrations 37–42 applied cleanly over that real database on first boot.

Six change sets confirmed against live behavior:

  • O1 — footer is one 48px row (flex-direction: row) with three 32px icon buttons, replacing three stacked labeled rows. The Pylon-first adaptation is confirmed: from a thread, Usage → Back returned to /cec0464d…/6531739c…, the exact thread, not /. Upstream's version would have landed on root. On a footer page the row collapses to a single Back.
  • O2 — at the 208px sidebar minimum, .sidebar-brand computes display: flex and renders 58px wide. The retired 13.5rem (216px) gate would have hidden it there.
  • O5 — picker glyphs at x=294 vs prompt text at x=293 (1px); the button box still extends 10px left for the hit target, as intended.
  • O7 — launcher renders with its six Kbd badges, and availability gating is right: data-surface-launcher-keys="TFDA", so Browser and Pull request stay visible-but-disabled without claiming their letters. Both guard paths confirmed — empty composer focused, t typed into the composer and nothing opened; launcher focused, t opened the Terminal. That is the reported defect and its fix, exercised.
  • O12 — double-click cleared the persisted width (208null) and reset the live sidebar 208px → 256px.
  • O3 — full round trip on iOS. Long-press showed the native menu as Un-settle / Regenerate title / Delete; tapping it regenerated through the provider: "Fork T3 Code With Pylon Branding""Build and Update Pylon Desktop Fork", title_regeneration_started_at back to null, new title rendering in the list.

Still unproven, with reasons:

  • O6 cannot be verified on this host at all. It is gated to Platform.OS === "android", so on iOS includeOrderedLists is false and the changed path is inert — an iOS pass gives it zero coverage. There is no Android SDK or adb here. It rests on its unit tests.
  • O11 and O8 are structurally unreachable locallywindow.Clerk is undefined (Pylon has no Clerk app, see E21), and hosted-static onboarding does not exist in local mode. Both need a hosted deployment.
  • O10 was not reached. Only one thread carries file-edit activities, its earlier turns sit behind E10 pagination, and it is heavy enough to wedge the automation bridge. Rests on its class-level unit test.
  • O1's update pill was not exercisedSidebarUpdatePill returns null outside Electron, so the icon button, checking spinner, and release-notes tooltip need a desktop pass.

No before/after images attached: the measurements above are the evidence, and the browser tooling here returns screenshots to the agent rather than to a file I can upload. Say the word if you want images and I will capture them properly.

Two environment gotchas are now recorded in the ledger: the mobile dev bundle id is Pylon-owned (com.rynfar.pylon.dev, not the documented com.t3tools.t3code.dev), and ios/Pods goes stale whenever vp i changes a pnpm patch hash — needing pod install, which on this host also needs a UTF-8 LANG to survive CocoaPods 1.17.0 on Ruby 4.0.6.

@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 7506bdb.

This comment will update automatically after the next completed run.

rynfar added a commit that referenced this pull request Aug 12, 2026
The thread-transfer upload is a few KB of JSON whose only consumer is
thread-transfer-report.yml, which turns it into a PR comment. Account artifact
storage is shared and org-wide, so anything can exhaust it — and once it is
exhausted every upload fails. A fatal step here therefore lets an unrelated
storage condition fail a run whose tests passed, which is exactly what
happened to #9 twice: step "Test" succeeded and the job went red on
"Failed to CreateArtifact: Artifact storage quota has been hit".

Losing the transfer comment is the right way to degrade. Blocking code review
on shared storage headroom is not.
extoci and others added 15 commits August 12, 2026 11:07
(cherry picked from commit 560d4a4560ddb5f42c8f8e0e35fa7827c0e46f80)
(cherry picked from commit d37a9b09b8ea6b014e9ea2d6b00d9b25cde0efc6)
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
(cherry picked from commit 5a84614809b6e853b872f9e57ff4b97e9df5df02)
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
(cherry picked from commit e1378a1f4d6a78d51c2d583997121f6adc0ad6cc)
(cherry picked from commit b54bfc9312b030bad9d89771fbf561ccbfb2d315)
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
(cherry picked from commit 6fd088af9f77933745c8ecb93dda98fa0938ea4d)
…#6285)

(cherry picked from commit 849bac8946c40420174b4187e36fcf17b5ea7cc4)
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
(cherry picked from commit e321667b100a18d5306f845c655dce6f20525776)
(cherry picked from commit f131228a5908974c90d9b80a4d8ef866bb29e973)
(cherry picked from commit b73232bdd31e83914a8a943960c7dc4b6390b39b)
Ports upstream 52e5a75a872289040df85621d7a82ea9cba05182 (#6210) by hand.
Settings, Pull Requests and Usage collapse from three full-width labeled
rows into one icon row with tooltips, and the update pill becomes a round
icon button in the same row that also serves "Check for updates".

Kept Pylon-first:

- the history-preferring Back handler. Upstream deletes useCanGoBack and
  always navigates to "/", which would undo Pylon's fix for Back landing
  somewhere the user never came from.
- SidebarAccountDrainPill, which has no upstream counterpart, stays at the
  top of the footer stack.

Upstream's removal of "Dismiss until next launch" is taken with it: the
pill is no longer a full-width banner competing with the sidebar, so there
is nothing left to dismiss.
The right-panel empty state adopted in b54bfc931 claims bare B/T/F/D/P/A on
a capture-phase window listener, and treated an empty contenteditable as
'not typing'. Pylon's composer is a Lexical ContentEditable that is empty at
rest, so a message starting with any of those six letters lost its first
keystroke to a surface opening instead — and stopPropagation meant nothing
downstream could recover it.

A focused text surface now always keeps its own keystrokes.
The Clerk appearance map's doc comment referred to the T3 Code palette, and
the Connect OAuth note carried a bare #5051 that reads as a Pylon issue.
@rynfar
rynfar force-pushed the upstream/2026-08-12-batch branch from 5ae117c to 7506bdb Compare August 12, 2026 17:08
@rynfar
rynfar merged commit fdd2bdf into pylon Aug 12, 2026
11 checks passed
@rynfar
rynfar deleted the upstream/2026-08-12-batch branch August 12, 2026 17:12
rynfar added a commit that referenced this pull request Aug 21, 2026
* fix(server): enable the Cursor provider by default like every other provider (#7089)

(cherry picked from commit 730ce9edd9873144c1d2b01e5f1c85414c3760ad)

* fix(web): fix thread jumping after reorder (#7103)

(cherry picked from commit 1afe5545b7d0397bbd6515981372072d146002ad)

* fix(server): keep Daybreak models out of legacy models (#7659)

(cherry picked from commit 4bdbd8ce15fbeeb6514623704a203c43ad37d2cd)

* fix(contracts): reconcile provider default tests (#7725)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
(cherry picked from commit fe87502084ad99209a22f801347102ebb29cc65b)

* fix(web): polish theme library buttons, search, and import dialog (#7580)

(cherry picked from commit f0fb83aff1be5d093225cda511df1216cef748d2)

* fix(web): add space above composer task tabs (#7740)

(cherry picked from commit 68966c1e6603d6f5d52a4ee227e2b0ee03b7109f)

* feat(composer): list skills with slash commands (#7737)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
(cherry picked from commit e723501227b7d1d0b960eb8fcfd9c8d6099d805e)

* fix(web): show the full path in file link tooltips (#7741)

Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 6d3bf01b4f021eb3fbd2feaf07fcacaa4f55881d)

* fix(server): serve html assets with utf-8 charset (#6409)

(cherry picked from commit 820e5639c30be83a9433f696613760f8ee42075a)

* fix(vcs): give `git worktree add` a longer timeout on large repos (#6326)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 12c497083e6ed2d6f90cc7775b5ecea232926b4a)

* chore: move implementation plans out of repository (#7665)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
(cherry picked from commit 9167622a4ec1e540938adbb1dec70d255fdeb041)

* fix(desktop): restrict editor deep links (#7697)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
(cherry picked from commit 20e5a3396858f93157a4ad6b1f3a2f565c032fee)

* fix(web): prevent pinned threads reshuffling after drop (#7676)

(cherry picked from commit 6d5c6c4a671c7b6fc9723c63c1003916fb3b8ab0)

* fix(web): encode shifted characters correctly in the terminal (#7485)

(cherry picked from commit 18f6d034897d9cc5429dcb88c6a9795d183f1687)

* fix(web): resolve sidebar provider icons from the thread's own environment (#7292)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit f3fcfe1f63ac58cc7bdad2b459931a52ae5f6fa2)

* fix(web): hide thread jump hints while the terminal is focused (#7277)

(cherry picked from commit ce8ca5bb3d005d8653d1b09c1e7c9e02d3ef8ae4)

* fix(web): keep following the stream after scrolling back to the live edge (#6519)

(cherry picked from commit e2697d63ec52e719ebd2d4e25baee2cb58243c83)

* chore: stop committing pull request assets (#7762)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
(cherry picked from commit 9f12eab383ab0fd348c9d35cd248cd939a2c5796)

* fix(clients): default GitHub clones to HTTPS (#7760)

Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
(cherry picked from commit 549201fcfd3baa6cf92f09e5d868c536c80d2d55)

* perf(web): stop preview loading rerenders (#7561)

(cherry picked from commit be7d35aaeb49a04483ec5e0d2284e8b5b70a3b6e)

* docs(internals): move the Prime Agent plans into docs/internals

#7665 gitignores `.plans/` and rules that durable architecture belongs in
`docs/internals/`. Pylon's two Prime Agent documents were the only files in
`.plans/` upstream did not delete, and they describe a shipping Pylon
provider rather than an abandoned intention, so they move rather than go.

The integration document keeps its own "historical investigation" banner:
it records why the daemon-first direction won over the ACP spike, which is
the part still worth reading.

* perf(ci): shard the server suite and split out the Rust checks

Ports #7286. `apps/server` sets `fileParallelism: false`, so its 278 test
files ran strictly one at a time on a single runner; sharding spreads them
over three runners without ever putting two server test files on the same
machine, so the isolation that flag buys survives intact. Everything else
runs with `--parallel`, which drops package dependency ordering these test
tasks never needed. Rust moves to its own 4vcpu job because Check and Test
each paid 7-9s installing a toolchain for checks that take under 3s.

Two Pylon-first departures from upstream's version:

- the transfer-result upload keeps `continue-on-error: true` from #9. It
  now also carries upstream's presence gate, because those guard different
  failures: the gate stops the two shards that legitimately produce nothing
  from racing for the artifact name, while `continue-on-error` stops an
  exhausted org artifact quota from failing a run whose tests passed.
- both test jobs pass `--fail-if-no-match`. Without it a filter matching no
  package only warns and exits 0, which would turn a renamed package into a
  green job that tested nothing.

* docs(user): note that GitHub clones now use HTTPS

#7760 switched GitHub clones from the SSH URL to the HTTPS one, which is a
change users notice: `gh auth login` is now sufficient and no SSH key setup
is needed. The other providers still clone over SSH, and pasting a full
`git@` URL still forces SSH anywhere.

* docs(upstream): record the second 2026-08-21 batch

Twenty of twenty-three upstream commits adopted, three skipped, cursor to
be7d35aae. DEF-6 came due when #7725 reconciled the contradictory provider
default tests and was adopted after re-probing exactly as the register
instructed, so the deferred register is empty again.

* docs(upstream): record the ThemeSearchSection comment defect

A high-effort review of #66 found one issue: the search effect's comment
claims `installingId` is deliberately not a dependency while it is in the
array, above a dead eslint directive in an oxlint repo. `vp check` is clean
and the file is byte-identical to upstream, so it is recorded rather than
fixed.

---------

Co-authored-by: Rishet11 <154429365+Rishet11@users.noreply.github.com>
Co-authored-by: Illia Panasenko <hello@ipanasenko.me>
Co-authored-by: Niklas Schmidt <72155745+cn0ss@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: s243a <JohnCreighton_@hotmail.com>
Co-authored-by: John William Creighton (s243a) <s243a@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Zach Webb <zacharyjwebb@gmail.com>
Co-authored-by: Chamaru Amasara <mailtochamaru@gmail.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Taras <Taras.Fomin@gmail.com>
Co-authored-by: Chris Deeming <chris@xenforo.com>
Co-authored-by: Vitaly Iegorov <vitalyiegorov@gmail.com>
Co-authored-by: Lars Nieuwenhuis <35393046+lnieuwenhuis@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

6 participants