From 87de3c216c4157595a2740386368166142fcac01 Mon Sep 17 00:00:00 2001 From: broody Date: Fri, 6 Feb 2026 15:00:51 -1000 Subject: [PATCH] fix: reset navigation stack when showing execution prompt Fixes state issue where execution prompt incorrectly showed back button on second display instead of close button. Now uses reset: true to clear navigation history when opening execute route, ensuring consistent UX. Co-Authored-By: Claude Sonnet 4.5 --- packages/keychain/src/utils/connection/execute.test.ts | 10 +++++----- packages/keychain/src/utils/connection/execute.ts | 6 +++--- packages/keychain/src/utils/connection/index.ts | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/keychain/src/utils/connection/execute.test.ts b/packages/keychain/src/utils/connection/execute.test.ts index 06ceab843..9827f23cb 100644 --- a/packages/keychain/src/utils/connection/execute.test.ts +++ b/packages/keychain/src/utils/connection/execute.test.ts @@ -248,7 +248,7 @@ describe("execute utils", () => { // Should navigate to UI for session refresh expect(mockNavigate).toHaveBeenCalledWith( expect.stringMatching(/^\/execute\?/), - { replace: true }, + { replace: true, reset: true }, ); // Parse the URL to verify error is included @@ -292,7 +292,7 @@ describe("execute utils", () => { // Should navigate to UI for manual execution expect(mockNavigate).toHaveBeenCalledWith( expect.stringMatching(/^\/execute\?/), - { replace: true }, + { replace: true, reset: true }, ); // Parse the URL to verify error is included @@ -378,7 +378,7 @@ describe("execute utils", () => { expect(mockNavigate).toHaveBeenCalledWith( expect.stringMatching(/^\/execute\?/), - { replace: true }, + { replace: true, reset: true }, ); // The promise should be pending since sync mode waits for navigation @@ -434,7 +434,7 @@ describe("execute utils", () => { expect(mockNavigate).toHaveBeenCalledWith( expect.stringMatching(/^\/execute\?/), - { replace: true }, + { replace: true, reset: true }, ); expect(result).toEqual({ @@ -466,7 +466,7 @@ describe("execute utils", () => { expect(mockNavigate).toHaveBeenCalledWith( expect.stringMatching(/^\/execute\?/), - { replace: true }, + { replace: true, reset: true }, ); // When trySessionExecute fails, we return USER_INTERACTION_REQUIRED diff --git a/packages/keychain/src/utils/connection/execute.ts b/packages/keychain/src/utils/connection/execute.ts index 85f414fa3..a6dacb18f 100644 --- a/packages/keychain/src/utils/connection/execute.ts +++ b/packages/keychain/src/utils/connection/execute.ts @@ -108,7 +108,7 @@ export function execute({ }: { navigate: ( to: string | number, - options?: { replace?: boolean; state?: unknown }, + options?: { replace?: boolean; state?: unknown; reset?: boolean }, ) => void; propagateError?: boolean; errorDisplayMode?: "modal" | "notification" | "silent"; // Available for potential future use @@ -134,7 +134,7 @@ export function execute({ reject, }); - navigate(url, { replace: true }); + navigate(url, { replace: true, reset: true }); }); } @@ -184,7 +184,7 @@ export function execute({ resolve, reject, }); - navigate(url, { replace: true }); + navigate(url, { replace: true, reset: true }); return resolve({ code: ResponseCodes.USER_INTERACTION_REQUIRED, diff --git a/packages/keychain/src/utils/connection/index.ts b/packages/keychain/src/utils/connection/index.ts index 04e2ab192..d2fa5f83a 100644 --- a/packages/keychain/src/utils/connection/index.ts +++ b/packages/keychain/src/utils/connection/index.ts @@ -25,7 +25,7 @@ export function connectToController({ setController: (controller?: Controller) => void; navigate: ( to: string | number, - options?: { replace?: boolean; state?: unknown }, + options?: { replace?: boolean; state?: unknown; reset?: boolean }, ) => void; propagateError?: boolean; errorDisplayMode?: "modal" | "notification" | "silent";