diff --git a/README.md b/README.md index 43b9d273c3..73ab217459 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ Contribution: Christoph Leiter's [PR #2986](https://github.com/getpaseo/paseo/pull/2986). Baseline: current main `433e67b18b7964a92d593bdc78c518143accfc8b`. -Verified implementation: `9457bb6f4053b6ab36e7eabcae0a2902176635c8`. +Original recorded implementation: `9457bb6f4053b6ab36e7eabcae0a2902176635c8`. +Latest verified implementation: `1b96fa4fdcf147f7d412f210ff45170a9112da8d`. These are recorded Chromium interactions with the real Expo app and isolated Linux daemons. Workspace registry updates, git worktree creation, uploaded files, and shell terminals are real. @@ -32,6 +33,22 @@ then opening the new workspace reveals `captured: Hello from the navigation guar ![Chosen workspace remains active](focus-preserved.png) ![New terminal has received the submitted prompt](terminal-started.png) +## Context ownership repair verification + +The latest head also preserves a newer fork draft's setup and chat-history context, +including context-only edits that do not change the text version. Cleanup captures +ownership before workspace creation begins. A regression using the previous head's +background helper fails; all seven cleanup tests pass on the repair. + +All ten browser journeys were rerun together and recorded on this repair: +[complete results](context-e2e.txt), [newer-draft recording](after-context-repair-newer-draft.webm). +These recordings repeat the real-daemon method and platform/provider limitations above. +The fork context race is verified through the real draft stores in the focused unit test; +the browser newer-draft journey covers text preservation. + +[Context regression before](context-red.txt), [after](context-green.txt), +[typecheck](context-typecheck.txt), [lint](context-lint.txt), [format](context-format.txt). + ## Results - Current-main baseline: both original local journeys fail on the wrong final route. diff --git a/after-context-repair-newer-draft.webm b/after-context-repair-newer-draft.webm new file mode 100644 index 0000000000..596034ef9e Binary files /dev/null and b/after-context-repair-newer-draft.webm differ diff --git a/context-e2e.txt b/context-e2e.txt new file mode 100644 index 0000000000..8c5f710264 --- /dev/null +++ b/context-e2e.txt @@ -0,0 +1,85 @@ + +> @getpaseo/app@0.8.0-beta.1 test:e2e +> playwright test --project=browser e2e/browser/new-workspace-navigation-guard.spec.ts --retries=0 --output=../../.dev/qa-2986/context-fix-results + +(node:2099649) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2099649) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +[metro] (node:2100598) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +[metro] (Use `node --trace-warnings ...` to show where the warning was created) +[metro] Starting project at /packages/app +[metro] Using src/app as the root directory for Expo Router. +[metro] Experimental Expo Autolinking module resolver is enabled. +[metro] React Compiler enabled +[metro] Metro is running in CI mode, reloads are disabled. Remove CI=true to enable watch mode. +[metro] Starting Metro Bundler +[metro] Waiting on http://localhost:45237 +[metro] Logs for your project will appear below. +[metro] | (node:2102687) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +[metro] | (Use `node --trace-warnings ...` to show where the warning was created) +[metro] Web packages/app/index.ts ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░ 97.6% (5002/5062) +[metro] Web Bundled 2609ms packages/app/index.ts (5129 modules) +[e2e] Metro warmed on port 45237 + +Running 10 tests using 1 worker + +(node:2104797) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2104797) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +[e2e] Worker 0 daemon started on port 38113, home: /.dev/qa-2986/context-fix/worker-0 +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 175ms packages/app/index.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console +[metro] Web Bundled 52ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) + ✓ 1 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:8:9 › Delayed workspace creation › chat: keeps the workspace chosen during creation (14.4s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 192ms packages/app/index.ts (1 module) +[metro] Web Bundled 5ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 2 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:11:9 › Delayed workspace creation › worktree chat: keeps the workspace chosen during creation (14.3s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 192ms packages/app/index.ts (1 module) +[metro] Web Bundled 11ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 3 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:14:9 › Delayed workspace creation › chat: opens the created workspace when the user stays (13.7s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 343ms packages/app/index.ts (1 module) +[metro] Web Bundled 6ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 4 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:8:9 › Delayed workspace creation › terminal: keeps the workspace chosen during creation (15.4s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 230ms packages/app/index.ts (1 module) +[metro] Web Bundled 7ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 5 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:11:9 › Delayed workspace creation › worktree terminal: keeps the workspace chosen during creation (14.0s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 171ms packages/app/index.ts (1 module) +[metro] Web Bundled 5ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 6 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:14:9 › Delayed workspace creation › terminal: opens the created workspace when the user stays (12.6s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 214ms packages/app/index.ts (1 module) +[metro] Web Bundled 8ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 7 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:8:9 › Delayed workspace creation › empty: keeps the workspace chosen during creation (13.4s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 225ms packages/app/index.ts (1 module) +[metro] Web Bundled 7ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 8 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:11:9 › Delayed workspace creation › worktree empty: keeps the workspace chosen during creation (13.7s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 179ms packages/app/index.ts (1 module) +[metro] Web Bundled 5ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 9 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:14:9 › Delayed workspace creation › empty: opens the created workspace when the user stays (12.9s) +[metro] Web packages/app/index.ts ░░░░░░░░░░░░░░░░ 0.0% (0/1) +[metro] Web Bundled 282ms packages/app/index.ts (1 module) +[metro] Web Bundled 5ms packages/app/src/attachments/web/indexeddb-attachment-store.ts (1 module) +[metro] LOG [web] Logs will appear in the browser console + ✓ 10 [browser] › e2e/browser/new-workspace-navigation-guard.spec.ts:19:7 › Delayed workspace creation › preserves a newer draft opened while creation is pending (15.9s) +[e2e] Worker 0 daemon stopped +[e2e] Metro stopped + + 10 passed (2.5m) diff --git a/context-format.txt b/context-format.txt new file mode 100644 index 0000000000..a6c17223f9 --- /dev/null +++ b/context-format.txt @@ -0,0 +1,39 @@ + +> paseo@0.8.0-beta.1 format +> oxfmt . + +(node:2132879) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132992) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132926) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2133009) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132958) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132952) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132991) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132920) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132939) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132928) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132986) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132927) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132945) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2133003) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132990) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132965) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +(node:2132919) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +Finished in 1933ms on 4424 files using 16 threads. diff --git a/context-green.txt b/context-green.txt new file mode 100644 index 0000000000..8a3e48fa1f --- /dev/null +++ b/context-green.txt @@ -0,0 +1,17 @@ + +> @getpaseo/app@0.8.0-beta.1 test +> vitest run src/screens/new-workspace/background-handoff.test.ts --bail=1 + +(node:2135683) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) + + RUN v4.1.7 /packages/app + +(node:2135794) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) + + Test Files 1 passed (1) + Tests 7 passed (7) + Start at 19:13:25 + Duration 1.22s (transform 773ms, setup 33ms, import 1.07s, tests 8ms, environment 0ms) + diff --git a/context-lint.txt b/context-lint.txt new file mode 100644 index 0000000000..86dd30c597 --- /dev/null +++ b/context-lint.txt @@ -0,0 +1,6 @@ + +> paseo@0.8.0-beta.1 lint +> oxlint + +Found 0 warnings and 0 errors. +Finished in 1.3s on 4146 files with 177 rules using 16 threads. diff --git a/context-red.txt b/context-red.txt new file mode 100644 index 0000000000..d82280a60c --- /dev/null +++ b/context-red.txt @@ -0,0 +1,54 @@ + +> @getpaseo/app@0.8.0-beta.1 test +> vitest run src/screens/new-workspace/background-handoff.baseline.test.ts --bail=1 + +(node:2177266) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) + + RUN v4.1.7 /packages/app + +(node:2177513) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +stderr | src/screens/new-workspace/background-handoff.baseline.test.ts +[DraftStore] Failed to persist draft checkpoint ReferenceError: window is not defined + at /node_modules/@react-native-async-storage/async-storage/lib/commonjs/AsyncStorage.js:69:52 + at /node_modules/@react-native-async-storage/async-storage/lib/commonjs/AsyncStorage.js:39:21 + at new Promise () + at createPromise (/node_modules/@react-native-async-storage/async-storage/lib/commonjs/AsyncStorage.js:37:10) + at Object.setItem (/node_modules/@react-native-async-storage/async-storage/lib/commonjs/AsyncStorage.js:69:12) + at Object.setItem (/packages/app/src/storage/validated-persist-storage.ts:39:28) + at flush (/packages/app/src/stores/draft-store/persistence.ts:73:21) + at Object.setItem (/packages/app/src/stores/draft-store/persistence.ts:85:16) + at setItem (/node_modules/zustand/esm/middleware.mjs:358:20) + at Function.api.setState (/node_modules/zustand/esm/middleware.mjs:366:12) + + ❯ |unit| src/screens/new-workspace/background-handoff.baseline.test.ts (1 test | 1 failed) 7ms + × preserves context added to a newer draft without editing its text 3ms + +⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ + + FAIL |unit| src/screens/new-workspace/background-handoff.baseline.test.ts > createWorkspaceAgentInBackground > preserves context added to a newer draft without editing its text +AssertionError: Target cannot be null or undefined. + ❯ src/screens/new-workspace/background-handoff.baseline.test.ts:70:83 + 68| }); + 69| }); + 70| expect(useWorkspaceAttachmentsStore.getState().attachmentsByScope[… + | ^ + 71| expect(useWorkspaceDraftSubmissionStore.getState().setupByDraftId[… + 72| "/work/new-repo", + +⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ + + + Test Files 1 failed (1) + Tests 1 failed (1) + Start at 19:14:12 + Duration 1.14s (transform 716ms, setup 40ms, import 996ms, tests 7ms, environment 0ms) + +npm error Lifecycle script `test` failed with error: +npm error code 1 +npm error path /packages/app +npm error workspace @getpaseo/app@0.8.0-beta.1 +npm error location /packages/app +npm error command failed +npm error command sh -c vitest run src/screens/new-workspace/background-handoff.baseline.test.ts --bail=1 diff --git a/context-typecheck.txt b/context-typecheck.txt new file mode 100644 index 0000000000..d594044096 --- /dev/null +++ b/context-typecheck.txt @@ -0,0 +1,59 @@ + +> paseo@0.8.0-beta.1 typecheck +> npm run typecheck --workspaces --if-present + + +> @getpaseo/expo-two-way-audio@0.8.0-beta.1 typecheck +> tsgo --noEmit + + +> @getpaseo/highlight@0.8.0-beta.1 typecheck +> tsgo --noEmit + + +> @getpaseo/plugin@0.8.0-beta.1 typecheck +> tsgo --noEmit && tsgo -p tsconfig.examples.json --noEmit + + +> @getpaseo/protocol@0.8.0-beta.1 pretypecheck +> npm run generate:validators + + +> @getpaseo/protocol@0.8.0-beta.1 generate:validators +> node scripts/generate-validation-aot.mjs + +(node:2135571) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set. +(Use `node --trace-warnings ...` to show where the warning was created) +generated src/generated/validation/ws-outbound.aot.ts from codegen/ws-outbound.compile.ts (WSOutboundMessageSchema) + +> @getpaseo/protocol@0.8.0-beta.1 typecheck +> tsgo --noEmit + + +> @getpaseo/client@0.8.0-beta.1 typecheck +> tsgo --noEmit + + +> @getpaseo/server@0.8.0-beta.1 typecheck +> tsgo -p tsconfig.server.typecheck.json --noEmit + + +> @getpaseo/app@0.8.0-beta.1 typecheck +> tsgo --noEmit + + +> @getpaseo/relay@0.8.0-beta.1 typecheck +> tsgo --noEmit + + +> @getpaseo/website@0.8.0-beta.1 typecheck +> tsgo --noEmit + + +> @getpaseo/desktop@0.8.0-beta.1 typecheck +> tsgo --noEmit -p tsconfig.json + + +> @getpaseo/cli@0.8.0-beta.1 typecheck +> tsgo --noEmit +