fix(desktop): allow preview automation in agent-created threads - #8483
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a narrowly scoped desktop IPC contract fix that allows existing preview automation to round-trip long internal runtime tab IDs without changing the public 128-character contract. The manager logic and downstream behavior remain unchanged, with regression coverage for both boundaries. You can add or adjust custom eligibility rules. Learn more. |
Brings in pingdotgg#8483 (preview automation in agent-created threads) and pingdotgg#8484. Upstream introduced DesktopPreviewAutomationStatus, wrapping the existing PreviewAutomationStatus fields, and moved the automation surface onto it. Kept the fork's two automation extras on that surface — snapshot()'s `include` filter and setViewport() — and dropped the now-unused PreviewAutomationStatus imports from preview.ts and Manager.ts, whose remaining fork-only imports (browser profile ids, snapshot include) are still referenced.
## What's Changed * fix(grok): improve skills, plans, usage, and turn reliability by @t3dotgg in pingdotgg/t3code#8358 * fix(server): recover stale Codex approval callbacks by @luckyPipewrench in pingdotgg/t3code#5195 * test(server): remove duplicate missing worktree test by @t3-code[bot] in pingdotgg/t3code#8252 * fix(server): replay all un-applied events during projection bootstrap by @krutftw in pingdotgg/t3code#7538 * test: remove low-signal test files by @t3-code[bot] in pingdotgg/t3code#8397 * test: prune trivial error and layout tests by @t3-code[bot] in pingdotgg/t3code#8400 * Fix Android adaptive launcher icon by @colonelpanic8 in pingdotgg/t3code#4332 * feat(web): split provider settings into list and editor by @t3dotgg in pingdotgg/t3code#8380 * fix(codex): accept Codex 0.150 account plans by @gsimone in pingdotgg/t3code#8447 * fix(tooling): allow ignored-only staged changes by @juliusmarminge in pingdotgg/t3code#8468 * fix(mobile): keep iOS home header stable by @juliusmarminge in pingdotgg/t3code#8467 * fix(web): stop showing red x summaries for ordinary tool failures by @t3dotgg in pingdotgg/t3code#8395 * fix(mobile): refine Git action toast glass styling by @juliusmarminge in pingdotgg/t3code#8399 * fix(desktop): allow preview automation in agent-created threads by @t3dotgg in pingdotgg/t3code#8483 * test(web): remove redundant cache key test by @t3-code[bot] in pingdotgg/t3code#8484 * fix(release): move nightly schedule to minute 38 by @t3dotgg in pingdotgg/t3code#8509 * fix(web): stabilize the provider settings editor by @t3dotgg in pingdotgg/t3code#8472 * fix(web): open GitHub pull requests in browser when loading fails by @t3dotgg in pingdotgg/t3code#8507 * fix(codex): show sub-agent models by @t3dotgg in pingdotgg/t3code#8502 * feat(analytics): report connected client platforms by @t3dotgg in pingdotgg/t3code#8481 * feat(server): accept PDF, ZIP, and other file uploads up to 50MB by @t3dotgg in pingdotgg/t3code#8235 * feat(web): toggle a thread's pin from the keyboard by @ipanasenko in pingdotgg/t3code#8440 * fix(web): add back button to project settings by @StiensWout in pingdotgg/t3code#8168 * refactor(mobile): compile semantic themes for Uniwind by @juliusmarminge in pingdotgg/t3code#7327 * fix(desktop): Cache Runtime locally on WSL Filesystem, dramatically improving launch times by @ikifar2012 in pingdotgg/t3code#5769 * fix(mobile): show OpenCode model sources in picker by @juliusmarminge in pingdotgg/t3code#8573 * fix(clients): honor project default models in new threads by @anirudhsama in pingdotgg/t3code#6011 * fix(mobile): show file actions on Android by @none23 in pingdotgg/t3code#8215 * fix(connect): explain DPoP connection failures by @extoci in pingdotgg/t3code#8351 * feat(web): make the sidebar project filter a searchable combobox by @SunkenInTime in pingdotgg/t3code#5931 * fix(server): a draft can retry its first send after a failed bootstrap by @shivamhwp in pingdotgg/t3code#8226 * fix(desktop): stop hidden previews draining battery by @Bil0000 in pingdotgg/t3code#8567 * fix(desktop): oauth popups open from the browser preview by @walid-baharwal in pingdotgg/t3code#8435 * fix(web): keep long task drawers usable on small screens by @shivamhwp in pingdotgg/t3code#8313 * fix(opencode): handle child approvals, stops, and model catalogs by @t3dotgg in pingdotgg/t3code#8480 * fix: make thread auto-settling opt-in by @shivamhwp in pingdotgg/t3code#8321 * fix(web): stop session activity timing test from blocking releases by @t3dotgg in pingdotgg/t3code#8585 * fix(mobile): show composer menus when starting a task by @juliusmarminge in pingdotgg/t3code#8587 * fix(web): show the configured stash shortcut by @UtkarshUsername in pingdotgg/t3code#8437 * feat(web): add toggleable confirmation before unpinning a thread by @UtkarshUsername in pingdotgg/t3code#7313 * fix: restore automatic thread settling defaults by @t3dotgg in pingdotgg/t3code#8596 * fix(mobile): restore composer glass and rounded shadows by @juliusmarminge in pingdotgg/t3code#8597 ## New Contributors * @luckyPipewrench made their first contribution in pingdotgg/t3code#5195 * @krutftw made their first contribution in pingdotgg/t3code#7538 * @colonelpanic8 made their first contribution in pingdotgg/t3code#4332 * @ikifar2012 made their first contribution in pingdotgg/t3code#5769 * @walid-baharwal made their first contribution in pingdotgg/t3code#8435 **Full Changelog**: pingdotgg/t3code@v0.0.35...v0.0.36 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.36
Preview automation fails from agent-created threads because their desktop runtime tab IDs can exceed the public 128-character tab ID limit. Desktop IPC rejects the status result after the browser action has already run.
Use a desktop-only status schema for this IPC result. This keeps the public contract limit intact while allowing the internal runtime ID to return through IPC. The manager and bridge types now describe the same boundary.
Tests:
Fixes #7720
Made with GPT-5.6 Sol using Codex.
Note
Low Risk
Contract boundary change limited to desktop IPC and bridge types; public automation status validation stays the same.
Overview
Fixes preview automation failing on agent-created threads when the desktop runtime tab ID exceeds the public 128-character
PreviewTabIdlimit. Automation could run in the browser, but the desktop automation status IPC path then rejected the encoded result because it used the publicPreviewAutomationStatusschema.Introduces
DesktopPreviewAutomationStatusSchema, which keeps the public status fields but typestabIdwithDesktopPreviewTabIdSchema(trimmed, non-empty, no 128-char cap). The preview IPC handler, preview manager, andDesktopPreviewBridge.automation.statusnow use that desktop-only result type so internal runtime IDs can round-trip over IPC.The public
PreviewAutomationStatuscontract and its 128-character tab ID limit are unchanged for cross-boundary APIs.Reviewed by Cursor Bugbot for commit 90d266a. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix
preview.automationStatusIPC to allow nulltabIdIntroduces
DesktopPreviewAutomationStatusSchemain ipc.ts that extendsPreviewAutomationStatusbut permitstabIdto benullinstead of requiring a valid tab identifier. Thepreview.automationStatusIPC handler andPreviewManager.automationStatusreturn type are switched to the new schema. Risk: out-of-tree consumers expecting a non-nulltabIdfrom theautomationStatusIPC method will now encounternullvalues for agent-created threads.Macroscope summarized 90d266a.