Repository navigation
Upstream sync needs review - #16
github-actions[bot] wants to merge 52 commits into
Conversation
fork/README.md explains how the fork is structured, how to add, sync and release changes; fork/CHANGES.md lists every change the fork carries. A short note at the top of AGENTS.md points agents at both. fork/INSTALL.md covers installing fork builds on other computers. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagents for fork rules and changes <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent <noreply@openai.com>
Follow upstream nightlies with linear rebases, checked candidates, and a T3 conflict resolver. Publish Windows and Linux fork releases through the updater. Gate releases and branch checks on a rolling daily runner-job budget, preserving the settle wait and failing closed when usage cannot be counted. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6-Luna at low effort, release verification subagent <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 at high effort, cleanup review subagent for fork release assets <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5, implementation for CI job budget <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 at high effort, implementation subagent for rolling CI budget <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagents for CI job budget and integrated sync <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at high effort, test triage subagent <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagents for sync repair <noreply@openai.com>
Blocking waits default to 30 seconds and cap at 45 seconds, preserving the existing secret request budgets. Upstream-PR: pingdotgg#15622 (at 059bb40)
Relative file links in replies resolve against the thread's workspace root, so an agent that cd's elsewhere (e.g. from a scratch thread into ~/Sync/Agents) produced links whose previews failed with ENOENT. Muse replay fixtures embed the runtime instructions verbatim, so they carry the new sentence too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
File links in chat only offered copying their path, so getting an agent's output (a handoff, a zip) onto a remote client meant leaving T3 Code. The link's context menu now has "Download file" while the connection can read host files. It mints a signed media-file URL with a new `download` flag. With that flag the server accepts any regular file type and serves it as an attachment; the flag is signed, preview URLs keep their type checks, and the existing exact-file identity checks still apply. The browser streams the response to disk instead of buffering it. Electron would otherwise open cross-origin asset navigations in the system browser, so it hands URLs marked `#download` to `webContents.downloadURL`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Run the fork release-note tests only when the checked branch contains them, so upstream-only pull request branches can use the fork check workflow. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com>
A /compact on a Claude thread whose prompt cache has expired re-writes the whole old history to the cache, although the summary replaces it. An opt-in Claude instance setting now runs such a cold compaction (last turn 70+ minutes ago, no live CLI process) in a process opened with DISABLE_PROMPT_CACHING=1 and its own query-policy key. The next turn uses the normal key, so the existing replacement path reopens Claude with caching. Live processes, warm compactions, and the default are unchanged. Savings need every gateway between Claude Code and Anthropic to forward markerless requests unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep rejected window metadata on the same native conversation and model when retries omit it. Clear retained windows through turn finalization and preserve unknown windows until they are resolved. Upstream-PR: pingdotgg#15110
Codex fails a turn immediately with "Selected model is at capacity" when the server is overloaded and sends no Retry-After. The run stays open and continues with empty-input turns that see the failed turn's recorded work. Waits start at 10s and double up to three minutes, totaling one hour across 24 retries. The existing provider retry row shows the countdown; Stop during a wait settles the run. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagent for capacity retry timing <noreply@openai.com> Co-Authored-By: Claude Opus 5.5, original capacity retry implementation <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 at low effort, retry after running subagents finish <noreply@anthropic.com>
Squash of upstream PR 17618 by danielyc, adapted to the fork: the settings order and the Claude provider docs keep the fork's cold-compaction setting, and the wake-turn hunk drops code from newer upstream. Upstream-PR: pingdotgg#17618
Add an opt-in Codex setting that asks ChatGPT's composer prediction service for the next prompt after each completed root turn and shows it through the shared prompt suggestion channel. Predictions need ChatGPT sign-in, follow custom model providers, and are revoked on the next send, goal command, rollback, or adapter shutdown. Co-Authored-By: Claude Opus 5.5 at medium effort <noreply@anthropic.com>
Keep the provider settings tests aligned with the intentional Codex and Claude prompt-suggestion fields so the fork release checks validate the current schemas. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com>
Carry PR pingdotgg#16790 at 42f18bd. Adapt provider namespaces, credential refresh and test dependencies to the fork, and use explicit milestones for the worker regression. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at medium effort, upstream research subagent <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, worker and provider review subagent <noreply@openai.com> Co-Authored-By: Claude Opus 5.5, upstream implementation <noreply@anthropic.com> Upstream-PR: pingdotgg#16790
Keep drain as a completion milestone while daemon workers can release a slot after its lease. The regression fails with the carried PR's behavior. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, worker and provider review subagent <noreply@openai.com>
Keep each native thread's acceptance request observable after its caller times out. Serialize replacements until an abandoned request rejects or its accepted turn completes, and use native start notifications to accept requests whose RPC reply is withheld. Apply the same ownership to compact requests and automatic capacity retries. Keep unresolved native ownership visible to idle cleanup and suppress publication after cancellation during prediction cleanup. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at high effort, Codex implementation and regression test subagents <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, worker and provider review subagent <noreply@openai.com>
…'s T3 tool access Each thread had a single MCP credential slot. Preparing a session for one provider revoked every credential on the thread and replaced the slot, so a provider session still attached from before the switch kept calling T3 tools with a revoked token (401 "Authentication required"), or read a token scoped to the other provider (parent_not_active). Credentials are now kept per thread and provider instance. Rotation revokes only the credential being replaced, and session release only defers revocation to other live sessions of the same provider instance. Fixes pingdotgg#16565 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Upstream-PR: pingdotgg#19413
…ges the thread When a context handoff could not fit the target's context budget, turn start failed with "Insufficient context allowance" on every turn, so the thread was unusable until the user compacted it manually. An oversized handoff is marked deferred and the turn proceeds without it. Later turns on the same provider thread retry it until delivery settles. Pending sends retain the marker, and deferred missed-run history is reused across low-budget turns. The additive optional flag needs no migration. Fixes pingdotgg#16147 Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at high effort, implementation subagent for handoff deferral <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at high effort, review subagent for deferred handoff recovery <noreply@openai.com> Upstream-PR: pingdotgg#19414
…e before auto-pull Reuse the local status already read by explicit and background refreshes instead of scanning the working tree again before auto-pull. Invalidate local status after the fetch so concurrent refreshes cannot leave a stale snapshot in the cache. Resolve auto-pull policy before taking the shared local snapshot, so edits made while the policy lookup is pending still prevent an automatic pull. Cover both refresh paths with deterministic deferred-policy regressions. Reconcile local state after a failed pull or post-pull status read rather than retaining the pre-pull snapshot in background refreshes. Let a failed recovery scan reach refresh failure handling and backoff. Upstream-PR: pingdotgg#19447 Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagents <noreply@openai.com>
Expose Fork beside eligible compaction markers on web, desktop, and mobile. Reuse run-based forks and require an exact native turn reference for native compaction forks, so automatic compaction includes the containing turn and unsupported cursors stay unavailable. Allow every finished run status the server can fork. Claude /compact turns record their persisted command echo, the turn's last transcript entry after the compaction summary, as an exact fork point, so their markers offer Fork. A live SDK probe confirmed a fork there keeps the compacted context and drops later turns; the compaction boundary itself would drop the summary. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at high effort, analysis and review subagent for compaction forks <noreply@openai.com> Co-Authored-By: Claude Opus 5.5, review and run-status fix <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagent for compaction fork recovery <noreply@openai.com> Co-Authored-By: Claude Opus 5.5, review and Claude compaction fork integration <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at high effort, exploration and implementation subagents for Claude compaction forks <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagent for Claude compaction forks <noreply@openai.com>
Retry guarded failure finalization when ingestion and its terminal write fail. Bind recovery to the service lifetime so a rejected startup cannot abandon it, preserve run/attempt ownership on every retry, and throttle persistent failure warnings. Upstream-PR: pingdotgg#19646 Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at high effort, implementation and investigation subagents <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at high effort, startup recovery review subagent <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, independent review subagents <noreply@openai.com> Co-Authored-By: Claude Opus 5.5, independent investigation and sanity review <noreply@anthropic.com>
Fork releases are named after the upstream nightly they are built on, plus .fork for a rebase with no fork changes or .fork.<n> for the nth release with new or updated fork patches on that nightly. Upstream's nightly version checks accept the suffix so fork builds stay on the nightly update channel. Standalone upstream server targets, version comparisons, npm availability checks, and manual commands use the corresponding upstream version. Servers already running the fork retain the full fork target in comparisons and update requests, including older-host recovery. Fork archive updates and desktop-managed servers do not wait for npm publication. Mobile and CLI release checks, archive downloads, and SSH bootstrap select the fork repository for fork versions while preserving explicit download mirrors. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent for server update versions <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at high effort, implementation subagent for ARM CLI archives <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagents for sync repair <noreply@openai.com>
A retained provider session can outlive a provider switch. Scope suggestion publication and cleanup to the run that claimed the thread, so late results cannot replace or clear its newer suggestion. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 at high effort, implementation <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, fork audit and final review <noreply@openai.com>
electron-builder's NSIS StartApp relaunches through ExecShellAsUser, which always de-elevates, so a T3 Code run as administrator came back without it after an auto-update. A customInstall hook starts the app directly from the per-user installer, which inherits the elevation of the app that spawned it, then exits before StartApp. Co-Authored-By: Claude Opus 5.5 at low effort <noreply@anthropic.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagent <noreply@openai.com>
Default the Claude API timeout to one hour while preserving host and instance overrides. Copy the merged environment rather than mutating shared state. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at high effort, implementation subagent for account pin CLI <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagent for Claude timeout and integrated sync <noreply@openai.com>
…thread Mark buffered wake output settled when a user turn consumes its result. The queued continuation replays that output and finishes, while a later wake reopens the buffer. Preserve all visible output. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Codex, investigation and reproduction subagent in an earlier session <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagent for the wake stall fix <noreply@openai.com>
Keep the fork's safe steering and Stop/disposal protections around upstream's question reactor. Serialize late-notice checks with parent commands and cancel queued question notices with their task, retaining upstream's read/respond flow. Co-Authored-By: GPT-6.1-Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at high effort, implementation subagent for delegated question rebase protections <noreply@openai.com> Co-Authored-By: GPT-6.1-Sol at xhigh effort, review subagent for fork rebase <noreply@openai.com>
The test creates native filesystem paths but forced Linux PATH parsing. On Windows that split drive letters at their colon and returned a path without its drive. Use the host platform and matching separator while keeping the existing lookup assertions. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent for launcher test portability <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Validate IANA zones at the server write boundary, calculate wall-clock slots and weekdays in that zone, and retain zones through web/mobile edits, including legacy client saves. Keep client reads and encoding independent of local time-zone database versions. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent for scheduled task time zones <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at high effort, implementation subagent for time-zone corrections <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagents for sync repair <noreply@openai.com>
After publishing, the resolver runs settle-candidate.sh when it has no concerns about its resolution. The helper waits for the review PR's checks and Codex's review of the exact candidate SHA, and dispatches promotion only if checks passed, Codex found nothing, and main is unchanged. Otherwise it comments the reason on the tracking issue and leaves the candidate for a person. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream now runs every React test in headless Chromium, so the fork's Web tests job fails without a browser. Install it when the checked-out upstream base has the web Playwright dependency. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deliver Claude agent updates through root PostToolBatch and Stop hook context without interrupting running tools. Defer to the durable next-turn queue after one minute without a boundary, or when the update contains attachments. Let human steering and immediate controls pass a waiting boundary delivery. Revoke pending updates on Stop and task disposal, and refresh completion pointers when only part of a task cohort remains unacknowledged. Keep native human steering and other providers' delivery behavior unchanged. Exercise the real send service, hook adapter, outbox ordering and ownership races with deterministic regression coverage. Related-PR: pingdotgg#21158 Co-Authored-By: GPT-6.1 Sol at high effort, implementation and SDK research <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, independent review <noreply@openai.com>
When the settled candidate's checks fail or Codex has findings, the settle helper reopens the request instead of leaving it for review. The resolver reproduces each failure, fixes it in the responsible patch, and publishes again. After two fix rounds the candidate falls back to human review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The short-script workflow opening test waited the default second for its first JavaScript highlight. Shiki loads that grammar lazily, which took longer on the fork's 4-core GitHub runners and failed both CI runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the outbox-held boundary steer (435526e) with the upstream maintainer's queue rule plus hook claims. Agent updates to a Claude turn wait in the durable queue instead of steering, which would cancel running tools that Claude reads as a user refusal. The running turn takes them at its next root PostToolBatch or Stop hook as additional context, so an update arrives right after the current tool call instead of after the whole turn. The hook claims queued updates through ProviderContinuationRequests; the worker promotes each into the running run with the existing promote-to-steer command (no steer effect, the run's own model selection, delegated completions accepted in the same commit). Held queues and stopped runs refuse the claim, so Stop wins. Unclaimed updates start the next turn. Updates with attachments, which hooks cannot carry, still steer natively with a note that they came from another agent. Related-PR: pingdotgg#21158 Co-Authored-By: Claude Opus 5.5 at high effort <noreply@anthropic.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagents for sync repair <noreply@openai.com>
Match delegated completion cards by the notification's task IDs. Follow-up tasks reuse their child conversation, so a child-thread lookup can display the original task's interrupted result on every later completion card. Keep child-thread lookup for legacy notifications and generic rendering when the referenced task is unavailable. Cover repeated child tasks, navigation, legacy notifications, and unavailable task identities in Chromium. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at medium effort, investigation subagents <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, independent review subagents <noreply@openai.com> Upstream-PR: pingdotgg#22141
Rebasing rewrote every fork commit on each sync. Each new SHA added a "referenced this pull request" entry to the upstream PR its trailer links, and main was force-pushed every time. Sync now merges the upstream nightly into main and promotion only fast-forwards. Patches whose Upstream-PR merged are reverted first, with their CHANGES.md entries; a Related-PR trailer keeps them. A stopped revert or merge resumes by rerunning the same command after committing the resolution, and only unmerged paths count as a conflict. Also fix the failures that produced a failed run every 30 minutes: the blobless sync clone could not fetch upstream blobs for the merge, the conflict report read REBASE_HEAD even when the rebase never stopped, and the Lazarus backstop dispatched runs that skipped the settle wait. Backstop runs now pass backstop=true and follow the scheduled rules. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent <noreply@openai.com>
Rebase-era syncs removed both patches but left their entries: pingdotgg#17773 merged upstream, and pingdotgg#15269 closed after upstream landed the same change as pingdotgg#19697. Merge-based sync prunes an entry only when it reverts the patch, so these would never be pruned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent <noreply@openai.com>
When Fork checks passes on a ref given as a full commit SHA, a separate record job sets a fork-checks commit status on that commit, naming the commit the checks workflow came from. Only that job can write statuses; the check jobs, which run the checked code, are read-only. Fork release skips its six check jobs when that status is on the commit it releases and the checks workflow is unchanged there. That holds for a promoted sync candidate, and for a branch pushed to main unchanged after Fork PR checks ran on its SHA. Fork sync loses its hourly schedule and backstop input. The Lazarus watchdog now decides when upstream has settled and dispatches only then, so the hourly checks that found nothing to do no longer cost a job each. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent <noreply@openai.com>
Sync reverts a patch only when its own Upstream-PR merges. When upstream lands the same change through a different PR and closes ours as superseded, the resolver, or whoever syncs by hand, reverts the patch and its CHANGES.md entry before merging, so the merge takes upstream's version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, release fallback review <noreply@openai.com>
Labs checks now default to the self-hosted Lazarus runners because Blacksmith usage is running out. The guide says how long they take, how to tell when Lazarus is down or busy, and how to switch a run or all of Labs back to Blacksmith or GitHub-hosted runners. It also warns that the Lazarus check runners are not a release runner pool. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream PR pingdotgg#19646 is present as 801dbf6; take its current implementation. This reverts commit 1ce67d2. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com>
# Conflicts: # apps/mobile/src/features/settings/environment-maintenance.test.ts # apps/mobile/src/features/settings/environment-maintenance.ts # apps/server/src/cli/update.ts # apps/server/src/mcp/OrchestratorMcpService.test.ts # apps/server/src/mcp/OrchestratorMcpService.ts # apps/server/src/mcp/toolkits/orchestrator/tools.ts # apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts # apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts # apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts # apps/server/src/orchestration-v2/EffectWorker.ts # apps/server/src/orchestration-v2/Orchestrator.ts # apps/server/src/orchestration-v2/ProjectionStore.ts # apps/server/src/orchestration-v2/RunExecutionService.ts # apps/server/src/orchestration-v2/ThreadManagementService.ts # apps/server/src/orchestration-v2/testkit/ProviderSwitch.integration.test.ts # apps/server/src/orchestration-v2/testkit/fixtures/multi_turn/muse_transcript.ndjson # apps/server/src/orchestration-v2/testkit/fixtures/muse_permission/muse_transcript.ndjson # apps/server/src/orchestration-v2/testkit/fixtures/muse_subagent_approval/muse_transcript.ndjson # apps/server/src/orchestration-v2/testkit/fixtures/muse_subagent_interrupt/muse_transcript.ndjson # apps/server/src/orchestration-v2/testkit/fixtures/muse_workflow/muse_transcript.ndjson # apps/server/src/orchestration-v2/testkit/fixtures/simple/muse_transcript.ndjson # apps/server/src/orchestration-v2/testkit/fixtures/subagent_v2/muse_transcript.ndjson # apps/server/src/orchestration-v2/testkit/fixtures/turn_interrupt/muse_transcript.ndjson # apps/server/src/provider/CodexProvider.test.ts # apps/server/src/provider/CodexProvider.ts # apps/server/src/scheduledTasks/ScheduledTaskService.ts # apps/web/src/components/ChatMarkdown.permissions.browser.test.tsx # apps/web/src/components/ChatMarkdown.tsx # apps/web/src/components/ComposerPromptEditorTiptap.tsx # apps/web/src/components/chat/ContextWindowMeter.logic.ts # apps/web/src/components/chat/MessagesTimeline.browser.test.tsx # apps/web/src/versionSkew.test.ts # docs/user/composer.md # packages/provider-core/src/server/McpProviderSessions.ts # packages/provider-core/src/server/failure.ts # packages/provider-cursor/src/server/adapter.ts # packages/shared/src/cliRelease.ts
Read capacity failures from the new Codex error-info field, use the resolved host path for downloads, and update merged provider test fixtures. Apply the required formatter after resolving the upstream tracing wrappers. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Use named Effect.fn generators for the nine retained functions required by upstream's tracing lint rule, preserving their operations and recovery policy. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagent for tracing adaptation <noreply@openai.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 31a2372594
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| yield* Ref.update(htmlRenders, (kept) => { | ||
| const next = new Map(kept); | ||
| next.delete(config.threadId); | ||
| return next; |
There was a problem hiding this comment.
Keep HTML render cache isolated across live providers
When a thread switches providers while the previous session remains alive, adding the new provider has no existing entry for its instance, so this branch deletes every pending HTML-render reference for the thread, including references owned by the still-running previous provider. The new clear(threadId, providerSessionId) path likewise retains other provider credentials but unconditionally deletes the same thread-wide cache. If either provider reports a delayed html_render completion afterward, takeHtmlRender cannot recover its attachment reference, leaving the rendered artifact absent from the timeline. Preserve these entries while another provider session is live, or key them by provider/session as well.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in b41aa9d. Pending HTML references now survive attachment, replacement, or removal of a provider while another session remains attached. Last-session removal, whole-thread clearing, and sole-session replacement still clear stale references. The provider lifecycle and session registry suites pass (16 tests), as do the focused HTML publication and Antigravity integration regressions. Published through the official resolver helper; fresh CI is running.
The upstream assistant-error fallback must complete or replace a window inherited from a previous failed turn. Only a rejection event from the current turn takes precedence over that fresh metadata. Keep known deadlines when a sparse assistant error omits its reset. A failed explicit compaction also retains an existing limit when Claude emits only its local-command success envelope. Successful compactions clear it. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagents for sync integration and quota reset fixes <noreply@openai.com>
Adding, replacing or releasing one provider must retain thread HTML references that another attached provider may still need. Clear stale references when the last session leaves, the thread is cleared, or its sole session is replaced. Co-Authored-By: GPT-6.1 Sol at high effort <noreply@openai.com> Co-Authored-By: GPT-6.1 Sol at xhigh effort, review subagents for sync integration and provider lifecycle fixes <noreply@openai.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Promoted to main by https://github.com/Alb11747/t3code/actions/runs/39425163791. |
Upstream
d36b7da2485bc889b320a285deea181f637d760amerged into the fork as candidateb41aa9da9bbfa2f8d6dab0703b862d14ca5efe6d.Checks: success (https://github.com/Alb11747/t3code/actions/runs/39423448853)
Tracking issue (T3 resolution summary): #15
Review the merge and the fork's changes against upstream. To ship it, run Fork sync with
mode=promoteandcandidate_sha=b41aa9da9bbfa2f8d6dab0703b862d14ca5efe6d. Merging this PR does nothing.