@@ -2818,6 +2818,55 @@ describe("ChatView timeline estimator parity (full app)", () => {
28182818 }
28192819 } ) ;
28202820
2821+ it ( "uses the active worktree path when saving a proposed plan to the workspace" , async ( ) => {
2822+ const snapshot = createSnapshotWithLongProposedPlan ( ) ;
2823+ const threads = snapshot . threads . slice ( ) ;
2824+ const targetThreadIndex = threads . findIndex ( ( thread ) => thread . id === THREAD_ID ) ;
2825+ const targetThread = targetThreadIndex >= 0 ? threads [ targetThreadIndex ] : undefined ;
2826+ if ( targetThread ) {
2827+ threads [ targetThreadIndex ] = {
2828+ ...targetThread ,
2829+ worktreePath : "/repo/worktrees/plan-thread" ,
2830+ } ;
2831+ }
2832+
2833+ const mounted = await mountChatView ( {
2834+ viewport : DEFAULT_VIEWPORT ,
2835+ snapshot : {
2836+ ...snapshot ,
2837+ threads,
2838+ } ,
2839+ } ) ;
2840+
2841+ try {
2842+ const planActionsButton = await waitForElement (
2843+ ( ) => document . querySelector < HTMLButtonElement > ( 'button[aria-label="Plan actions"]' ) ,
2844+ "Unable to find proposed plan actions button." ,
2845+ ) ;
2846+ planActionsButton . click ( ) ;
2847+
2848+ const saveToWorkspaceItem = await waitForElement (
2849+ ( ) =>
2850+ ( Array . from ( document . querySelectorAll ( '[data-slot="menu-item"]' ) ) . find (
2851+ ( item ) => item . textContent ?. trim ( ) === "Save to workspace" ,
2852+ ) ?? null ) as HTMLElement | null ,
2853+ 'Unable to find "Save to workspace" menu item.' ,
2854+ ) ;
2855+ saveToWorkspaceItem . click ( ) ;
2856+
2857+ await vi . waitFor (
2858+ ( ) => {
2859+ expect ( document . body . textContent ) . toContain (
2860+ "Enter a path relative to /repo/worktrees/plan-thread." ,
2861+ ) ;
2862+ } ,
2863+ { timeout : 8_000 , interval : 16 } ,
2864+ ) ;
2865+ } finally {
2866+ await mounted . cleanup ( ) ;
2867+ }
2868+ } ) ;
2869+
28212870 it ( "keeps pending-question footer actions inside the composer after a real resize" , async ( ) => {
28222871 const mounted = await mountChatView ( {
28232872 viewport : WIDE_FOOTER_VIEWPORT ,
0 commit comments