Repository navigation
feat: integrate upstream T3 Code improvements into Phoenix - #110
Merged
Merged
Conversation
Co-authored-by: codex <[email protected]>
pingdotgg#10547) Co-authored-by: Claude Code <[email protected]>
…dotgg#10598) Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Julius Marminge <[email protected]>
Co-authored-by: Cursor Agent <[email protected]>
…ut of credits" (pingdotgg#10473) Co-authored-by: Claude Fable 5.1 <[email protected]>
…tgg#10620) Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: Dara Adedeji <[email protected]> Co-authored-by: Dara Adedeji <[email protected]> Co-authored-by: Wout Stiens <[email protected]> Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Julius Marminge <[email protected]> Co-authored-by: Claude Fable 5.1 <[email protected]>
…surviving consumer With the managed relay product removed, nothing reads the baked-in relay URL or relay-client tracing values anymore. Verified against the combined branch: no T3CODE_RELAY_URL / VITE_T3CODE_RELAY_URL / *RELAY_CLIENT_OTLP* / VITE_RELAY_OTLP_* consumer remains in apps, packages, or infra. - scripts/lib/public-config.ts no longer resolves or projects the relay URL (T3CODE_RELAY_URL -> VITE_T3CODE_RELAY_URL) or the relay client OTLP tuple (T3CODE_RELAY_CLIENT_OTLP_TRACES_* -> VITE_RELAY_OTLP_*). Explicitly set values still pass through the env merge for local tooling; general mobile OTLP tracing (T3CODE_MOBILE_OTLP_TRACES_* -> EXPO_PUBLIC_OTLP_TRACES_*) is unchanged, as are direct endpoint settings. A regression test pins the removed projections. - release.yml drops the relay_url output, the per-job T3CODE_RELAY_URL env, and the Vercel --build-env relay arg; public_config validates only the explicit hosted-web targets and the npm trusted-publisher gate. - release-public-config.cjs loses the now-outputless relay validation. - release.md documents that the release workflow needs no relay/Cloudflare/ PlanetScale/Axiom configuration. - release-smoke.ts stops copying infra/relay/package.json: the managed relay removal gutted infra/relay to its historical migrations, so the fixture no longer has that manifest to version. Verified: scripts suite 300/300 (includes rewritten public-config tests), scripts typecheck clean, node --test .github/scripts/release-public-config.test.cjs passes, and the release-smoke lockfile-less resolution succeeds once the root's stale @clerk/expo patchedDependencies entry is removed (parent-owned; simulated in a fixture copy only). Model: kimi-k3 (OpenCode), Phoenix orchestration child session.
roughcoder
marked this pull request as ready for review
September 13, 2026 12:52
This was referenced Sep 26, 2026
roughcoder
added a commit
that referenced
this pull request
Sep 28, 2026
…llback Picking another account on a started thread is meant to hand the thread to the migration flow. Instead every other account is greyed out with "<name> is unavailable in this thread. Start a new thread to switch providers." PR #45 removed that lock by nulling lockedProvider in ChatView. The upstream integration merge d185ed5 (PR #110) resolved ChatView.tsx in favour of its upstream parent, which never carried #45, so deriveLockedProvider came back and the lock with it. Only the wiring was lost: ThreadMigrationDialog, the usage-limit entry point and getStartedThreadModelChangeBlockReason's cross-instance allowance all survived, and docs/user/switching-accounts.md still tells users to pick a model from a different account in the picker — so the shipped build contradicted its own documentation. Do not restore #45 verbatim. That flag feeds two consumers with different jobs: ProviderModelPicker, which decides what is selectable, and resolveComposerProviderSelection, which decides what the composer resolves to. Nulling both reopens a hole upstream closed in d92dca7 ("resume imported custom-provider threads", pingdotgg#10184) after #45 was written: without the lock, compatibleEntries stops being filtered by driver, so a started thread whose account is disabled or missing from the catalog falls through to any selectable entry — including another driver. The composer then displays that driver while resolveNextTurnModelSelection still sends on the thread's own instance, because a started thread keeps threadModelSelection whenever the requested instance differs. Displayed provider and running provider disagree. So unlock only the picker, at its one call site in ChatComposer. The composer's own resolution keeps the lock, the missing/disabled-instance protection and its tests stay exactly as upstream left them, and ModelPickerContent gates all greying on lockedProvider !== null, so a non-null lockedContinuationGroupKey alone greys nothing. Mobile was never affected: ThreadComposer opens the migration flow on a cross-instance pick. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phoenix had diverged from upstream across providers, clients and orchestration. This integrates upstream through
b1e223e2b0while preserving Phoenix queues, reports, schedules, provider routing, failover and direct remote connections.The resulting implementation:
Validation at reviewed HEAD
aff65bd633:Implementation and integration: Codex through Phoenix. Independent reviews: Codex Astra, Terra and Sol, plus OpenCode DeepSeek, Grok and Kimi through Phoenix.