merge: sync upstream through ba9c9ae81 (19 commits) - #383
Merged
Conversation
…#5745) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
… never ran (pingdotgg#5710) Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
pingdotgg#5756) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…gdotgg#5757) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…dotgg#5767) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otgg#5768) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#5772) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…pingdotgg#5774) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ep (pingdotgg#5776) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…data (pingdotgg#5773) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…g#5777) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…server (pingdotgg#5788) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adopts the 19 upstream commits that landed after 48aa875, headlined by the project settings overhaul (pingdotgg#5768), per-project worktree/checkout selection (pingdotgg#5766), sidebar drafts (pingdotgg#5777), manual project icons (pingdotgg#5775) and settle no longer leaving monitors and dev servers running (pingdotgg#5774). Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
- mobile ProjectFavicon kept the fork's older loaded-URL set and orphaned upstream's projectFaviconCache module (request identity, disk cache, recycling key). Upstream's component is a strict superset now that it carries faviconPath, so it is adopted wholesale. - upstream's new project settings page enforced single-owner only for runOnWorktreeCreate; the fork has three lifecycle hooks. It now uses the fork's clearConflictingLifecycleFlags, matching the chat header path. - the empty-draft workspace reset lost the fork's reuseBaseBranch: false, so a stale reuse flag survived a reset that clears everything else. - ClaudeAdapter granted the raw input.cwd while the query runs in the resolved cwd; the grant now names the same path. - the script editor kept a delete confirm open across a request swap. Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
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.
Adopts upstream through
ba9c9ae81— the 19 commits that landed after48aa875c0, headlined bypingdotgg#5768 (project settings become a real settings page), pingdotgg#5766 (worktree or current checkout,
per project), pingdotgg#5777 (unsent drafts in the sidebar) and pingdotgg#5774 (settle stops monitors and dev
servers).
Important
Merge with a merge commit, not squash. Squashing collapses the second parent and discards
upstream's commits as ancestors — the thing that keeps "commits behind upstream" honest.
Upstream commits entering the product
ba9c9ae81076e9048d05eb05118ddaa6afef6f69b44076dbffa0225bb8c0366886195ec1288d8e3455208bdeb0a6c9b41f970c423a5e89c320df0e70cdb478be01b287bc2f8cb7ca89ee692bf7b2cf4374·49964e38c.github/VOUCHED.tddeletion stands)Resolutions
15 conflicted files. What actually needed judgement:
ws.tsstampOrchestrationCommandSourcesit on the same dispatch, and the fork ownsthread.unarchiveworktree restoreonlyIfSettledso a re-engaged thread is not killedProjectScriptsControl.tsxprojectScriptEditor.tsx; the fork had added two lifecycle hooks and a menu-label helper to the inline dialogrunOnWorktreeRemove/runOnPrMergedrebuilt inside the extracted dialog (type, empty input, hydration, submit, two switches) andprojectScriptMenuLabelrestored on the menu rowAssetAccess.tsSidebar.tsxappendRecencyRowsgrouping kept under upstream's draft-then-pinned ordering, and the duplicatedSETTLED_TAIL_*consts collapsed onto the fork'sSidebar.logicexportsprojector.tsdefaultThreadEnvModeandfaviconPathland on a read model the fork moved toHashMapupdateProjecthelperuseHandleNewThread.tspickExplicitWorkspaceOptionsand made the default-mode resolution asyncreuseBaseBranchfolded into the helper and into the reset gateClaudeAdapter.tsdecider.projectThreadEnvMode.test.tsreadModel.projects[0]— an array the fork replaced with aHashMapprojectFromModelaccessor rather than weakening the assertionsendTurn, which in the fork goes throughturn/steer— a method the mock peer did not speakturn/steer(+ arejectSteerswitch and a turn-start sidecar). Upstream's test setsrejectSteerso it still exercises theturn/startpath its fix is about; a second fork test covers the accepted-steer path and asserts no second provider turn opensAdversarial review
Both reviewers ran over the
git show --ccresolution surface with the merged worktree available.Between them they found four real welds and one nit. All are fixed in
885b287f2.grok-4.5 — 2 HIGH, 2 MEDIUM, 2 LOW:
ProjectFaviconkept the fork's older loaded-URL set, orphaning upstream'sprojectFaviconCachemodule (request identity,memory-diskcache policy, recycling key). Its tests stayed green while nothing imported it — passing for the wrong reasonfaviconPath, so it is adopted wholesalerunOnWorktreeCreateonly; the fork has three lifecycle hooks. Two scripts could both claimrunOnWorktreeRemove, and only the first would ever runclearConflictingLifecycleFlags, matching the chat headerreuseBaseBranch: false, so a stale reuse flag survived a reset that clears branch, worktree, env mode and origin policyClaudeAdaptergranted the rawinput.cwdwhile the query runs in the resolved cwd, so the tool allowlist and the process cwd could disagreecwdgpt-5.6-sol — 1 HIGH, 1 MEDIUM:
buildPendingTaskreadsworkspaceSelection?.mode ?? workspaceModewith no settle gate, so submitting beforet3.jsonloads freezeslocalover a project that requiresworktreeHEAD^2(pingdotgg#5766); the fork's resolution kept upstream's gate exactly where upstream put it. Worth a follow-up PR against the behaviour itself rather than a divergence smuggled into a syncreuseBaseBranch: falsedropped from the empty-draft resetBoth independently confirmed the intentional keep/drop surface is coherent:
ws.tskeeps the fork'sclaim gate reachable while upstream's parking stop runs, the favicon path hint stays advisory
(server-side projection is authoritative), the extracted script editor carries all three fork
lifecycle hooks through hydration/import/submit, and no assertion was renamed or relaxed into
passing for an unrelated reason.
Verification
CodexTextGenerationlaunch-args one,which reproduces on unmerged
fork/dev(this merge touches nothing undertextGeneration/).forkSurfaceExistence(the anti-stack-drop net) green at 17/17.pnpm-lock.yamlregenerated rather than hand-merged.Co-authored by @patroza
opened by Patrick Roza in chat thread Discord · Discord · T3