Skip to content

chore(sync): rebase latest upstream and preserve fork integrations - #62

Merged
ScriptedAlchemy merged 234 commits into
mainfrom
sync/upstream-rebase-2026-11-04
Nov 5, 2026
Merged

ScriptedAlchemy merged 234 commits into
mainfrom
sync/upstream-rebase-2026-11-04

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Syncs the fork with pingdotgg/t3code upstream main at 7f6f47b (v0.1.7). The merge-preserving rebase retains project memory, summaries, Loom/code intelligence, pstack, Traex, provider pools, linked environments and device discovery. A final reconciliation merge includes fork main so this PR can merge normally without rewriting main.

Resolves auth/crypto and client integration conflicts, retains fork migration numbering, repairs the Loom JSON index for legacy-row recovery, regenerates dependencies, and aligns Codex replay fixtures without relaxing protocol assertions or timeouts. Changed checks omit read-only vendored reference paths from formatter/test inputs to avoid macOS E2BIG errors.

Verification:

  • Final vp run check:changed e6c4180b7a --concurrency 1: all steps passed, including 9 affected typechecks and 207 tests.
  • Focused full Codex/Claude/install/context-budget suite: 500 tests passed.
  • Additional focused persistence, recovery, memory/summaries, peer, client-runtime, contracts, mobile, Loom/watch and offline eval tests passed; eval graders: 474 passed.
  • Desktop/macOS/self-contained/pstack packaging checks: 14 passed. Frozen dependency install passed.
  • Actual changed application files independently pass format/lint. Web, mobile, desktop, server and core shared packages typecheck under Node 26.12.1. Context budget matches exact measured fork tool payloads.
  • Full-diff check was attempted: after fixes, its large 341-file test batch hit the existing 900-second ceiling; no timeout budgets were increased. React compiler coverage passed (186 tests). CI still owns the complete suites and release builds.
  • No real-client browser verification, paid model calls, app replacement, main push or live userdata changes.

Model/harness: GPT-6.1 Sol via T3 Code/Codex.

t3dotgg and others added 30 commits November 2, 2026 22:56
…29909)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…arent's turn (pingdotgg#29752)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…and longer fences (pingdotgg#29755)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ts or subagents (pingdotgg#29917)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… without raw provider text (pingdotgg#29877)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ect under diff.relative (pingdotgg#29879)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…in a subagent or side chat (pingdotgg#29891)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ingdotgg#28684)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…squash-merged (pingdotgg#29919)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ointed parent run (pingdotgg#25662)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
pingdotgg#29580)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
… the project folder (pingdotgg#29908)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Maria <maria-rcks@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…oading it (pingdotgg#29893)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
juliusmarminge and others added 24 commits November 4, 2026 10:35
…intSigner (pingdotgg#30529)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…bile (pingdotgg#30540)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…he git-read timeout (pingdotgg#30554)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Merge pingdotgg/t3code main through 61c3794, retaining fork provider pools, project intelligence, PEA/pstack, and client integrations.

Resolve Effect service and MCP registration changes, preserve existing migrations, and reconcile provider refresh, orchestration, authentication, and client behavior.
Merge main's hosted-runner validation and private Linux CI routing while preserving upstream macOS release preparation.
…1-02

chore: merge upstream main and resolve fork integration conflicts
The Windows job gave up when `Build Linux <arch>` was missing from the run
for 5 minutes, treating that as a renamed job. Since the validate job was
added, the build is unlisted until validate finishes, so a busy hosted queue
failed a healthy release (run 41752989226).

Treat absence as still waiting, bounded by the step timeout. Raise that to
180 minutes, since that run needed about 50 and exceeded the old 40.

[skip ci] so this push does not cancel the in-progress release re-run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Wait for LegendList to finish its hidden initial layout before recording the heading position. Keep real timers running through the click and expansion so the virtualizer can complete its layout work.

Co-authored-by: GPT-6 Astra <noreply@openai.com>
…es (#60)

* fix(connection): reconnect paired devices over authenticated LAN routes

* fix(connection): adapt LAN credentials to current auth and discovery APIs
* fix(opencode): point agents at T3's browser instead of OpenCode's

OpenCode denies its own browser tool until its desktop app attaches, but
T3's full-access `*` allow re-enabled it. Agents reached for a browser that
can never connect under T3 and never found `preview_*`. Re-deny the browser
tool and skill in full-access sessions, and give OpenCode the T3 browser
instructions Codex and ACP already get when browser access is enabled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(opencode): preserve external browsers and v1 tool guidance

Scope native browser denies to T3-managed OpenCode 2 servers and retain external desktop browser access. Add the existing T3 browser instructions to OpenCode 1 turns only when its MCP connection and browser capability are available. Cover managed/external resume and disconnected/disabled browser states.

Validated with 170 OpenCode tests and direct provider/server typechecks.

Reviewed and repaired with GPT-6 Astra Pro through ChatGPT coding tools.

* fix(opencode): retain MCP ownership and native browser permissions

* fix(opencode): deny browsers children inherit through full access

A child that inherits only a `*` allow kept OpenCode's browser, because stripping explicit browser allows does nothing to that rule. A desktop permission event during session.update could also leave the stale allow list on the server while the local cache moved on.

Co-Authored-By: Grok 4.7 <noreply@x.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
Angle-bracketed link destinations ([label](<t3-thread://...>)) were not
parsed as labeled links: the inner <...> matched as an autolink, the
label was discarded, and an unresolved title substituted "Thread no
longer available" as the destination text.

Thread titles were also resolved only from the shell snapshot, which
omits idle subagent children and all but the 25 newest settled threads,
so live threads cited from chat read as deleted. Mobile and web now
mount the cited thread's family read (the on-demand rows search and the
Settled shelf already use) until its title lands.

Generated with [Devin](https://devin.ai)

Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* refactor(server): resolve the mDNS host name in one place

RemoteOpenTargets derived <first-label>.local from os.hostname(), which is
wrong on a Mac whose hostname came from DHCP: Bonjour answers to
LocalHostName instead. Move the decision into a shared helper that prefers
scutil on macOS and falls back to the hostname.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): advertise the mDNS hostname as a LAN route

Every direct route was a raw IPv4 address, so a router or Wi-Fi change left
clients reconnecting forever. Report <name>.local after the LAN addresses.
Clients already save it as a learned LAN route, and the name survives a
subnet change. Machines with no LAN address do not report it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: explain the learned local network name route

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): retry a failed Bonjour name lookup

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(connection): keep host names off LAN credential routes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat(evals): evaluate independent thread suggestions

* feat(chat): suggest fresh threads for independent drafts

* fix(server): thread split suggestions ignore empty message context

Most real user messages carry a context object with zero records, and the
suggestion service treated any context object as a reason to abstain, so
most threads could never receive a suggestion. Abstain only when a prior
message actually references context records.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(chat): dismissed thread split suggestion stays hidden while the draft is edited

Dismissal was keyed to the exact draft text, so continuing to type the same
draft requested inference again and brought the suggestion back. Dismissal
now holds until the draft is sent or cleared, on web and mobile. Mobile also
skips requests when the environment has no decision endpoint, matching web.
The user guide names the setting as the UI labels it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(chat): dismissed thread split suggestion stays hidden across remounts

The composer remounts when switching threads or restoring a persisted
draft, which reset dismissal to false and brought the suggestion back
for a draft the user already declined. Hold dismissal in a per-thread
set so it survives remounts until the draft is sent or cleared, on web
and mobile.

Co-Authored-By: SWE-2 High <noreply@cognition.ai>

* chore(evals): ignore python bytecode cache

Running the thread-split unittest leaves evals/thread-split/__pycache__
untracked; ignore it alongside eval run output.

Co-Authored-By: SWE-2 High <noreply@cognition.ai>

* test(evals): measure thread split detection on held-out human conversations

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: SWE-2 High <noreply@cognition.ai>
@changeset-bot

changeset-bot Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ef528c3

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy
ScriptedAlchemy merged commit 54d7c11 into main Nov 5, 2026
15 checks passed
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.