test(opencode): cover Windows session list directory spellings#34857
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds Win32-gated regression coverage in packages/opencode to ensure session listing works across real-world Windows directory “spellings” (forward slashes, lowercase drive letters, trailing separators) and for the global worktree sentinel ("/"), exercising the full HTTP request path (routing middleware → handlers).
Changes:
- Add a Windows-only test that creates a session once, then verifies it can be listed back using multiple equivalent directory spellings.
- Add a Windows-only test that creates a session using the global worktree sentinel (
x-opencode-directory: /) and verifies it lists back via the same hint. - Increase timeout headroom to 15s for these Win32-only tests.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+923
to
+927
| for (const spelling of [forwardSlashes, lowercaseDrive, trailingSeparator]) { | ||
| const query = new URLSearchParams({ directory: spelling, roots: "true" }) | ||
| const listed = yield* requestJson<Session.Info[]>(`${SessionPaths.list}?${query}`, { headers }) | ||
| expect({ spelling, ids: listed.map((item) => item.id) }).toEqual({ spelling, ids: [created.id] }) | ||
| } |
Comment on lines
+947
to
+949
| const query = new URLSearchParams({ directory: globalWorktreeSentinel, roots: "true" }) | ||
| const listed = yield* requestJson<Session.Info[]>(`${SessionPaths.list}?${query}`, { headers }) | ||
| expect(listed.map((item) => item.id)).toContain(driveRootSession.id) |
Wiktor102
pushed a commit
to Wiktor102/opencode
that referenced
this pull request
Jul 5, 2026
github-actions Bot
added a commit
to wallentx/opencode-termux
that referenced
this pull request
Jul 6, 2026
* ci: Add Android build and publish workflow with APK artifact upload Signed-off-by: wallentx <william.allentx@gmail.com> * ci: Allow publish workflow to run with android_only input Signed-off-by: wallentx <william.allentx@gmail.com> * ci: Use github.token instead of committer output in publish workflow Signed-off-by: wallentx <william.allentx@gmail.com> * feat: Add aarch64-linux-android target to sidecar binaries Signed-off-by: wallentx <william.allentx@gmail.com> * ci: Simplify publish workflow and fix Android build conditions Signed-off-by: wallentx <william.allentx@gmail.com> * feat: Refactor app initialization and add WSL path conversion Signed-off-by: wallentx <william.allentx@gmail.com> * ci: Fix Android-only workflow condition and update dependencies Signed-off-by: wallentx <william.allentx@gmail.com> * sync release versions for v1.17.13 * chore: bump gitlab-ai-provider to 6.10.0 (anomalyco#34756) * chore: update nix node_modules hashes * feat(stats): redesign lab hero * feat(stats): add lab overview * feat(stats): redesign lab usage * feat(data): another redesigned lab section * feat(stats): use catalog descriptions * chore: generate * fix(stats): refine lab page tooltips * fix(stats): include locale header in vary (anomalyco#34789) * zen: new inference * fix(desktop): keep window tabs across app close (anomalyco#34807) * fix(app): stabilize session timeline layout continuity (anomalyco#34533) * feat(desktop): refine session tab preview popover (anomalyco#34792) * fix(ui): raise v2 tooltip layer (anomalyco#34455) Co-authored-by: Jay <53023+jayair@users.noreply.github.com> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> * chore: update nix node_modules hashes * fix(opencode): update Cerebras SDK reasoning replay (anomalyco#34826) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> * chore: update nix node_modules hashes * fix(app): resolve target session lineage outside router transition (anomalyco#34838) * chore: generate * fix(opencode): filter session list by resolved instance directory (anomalyco#34842) * fix(app): only allow \(...\) syntax for inline latex (anomalyco#34850) * test(opencode): cover Windows session list directory spellings (anomalyco#34857) * fix(app): scope session tab indicators to the tab's server (anomalyco#34861) * chore: generate * fix(app): clear original prompt after retarget (anomalyco#34863) * fix(app): seed session status before warming session info (anomalyco#34864) * feat(app): v2 review panel overhaul (anomalyco#31882) Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com> * fix(app): keep terminal mounted when switching session tabs in a workspace (anomalyco#34852) Co-authored-by: Brendan Allan <git@brendonovich.dev> * fix(ui): resolve toast icon inside the toast component (anomalyco#34874) * fix(copilot): honor advertised model endpoints (anomalyco#34958) * fix(stats): polish lab pages * feat(stats): redesign model hero * chore: generate * feat(tui): add debug info dialog with copy to clipboard (anomalyco#35004) * zen: new inference * zen: new inference * feat(app): navigate tabs on mousedown in new layout (anomalyco#35042) * zen: new inference * zen: new inference * fix(app): keep v2 review pane mounted across session tab switches (anomalyco#35074) * feat: experimental codemode (anomalyco#34677) * chore: generate * fix(ci): setup Node 24 before bun install for node-gyp (anomalyco#35076) * revert: back out experimental codemode (anomalyco#35077) * feat(codemode): add confined execution package (anomalyco#35079) * chore: generate * chore: update nix node_modules hashes * chore: remove root node-gyp pin after Node 24 setup (anomalyco#35092) * feat(desktop): add recently closed projects to home (anomalyco#34926) * feat(app): align subagent UI with v2 (anomalyco#34931) Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> * chore: generate * feat(desktop): papercut fixes (anomalyco#34939) * refactor(opencode): expose MCP tools in native shape from the service (anomalyco#35103) * feat(app): improvements to model search (anomalyco#34954) * chore: generate * feat(opencode): add code-mode MCP adapter (anomalyco#35085) * chore: generate * chore: update nix node_modules hashes * feat(app): dropdown search fix (anomalyco#34961) Co-authored-by: Brendan Allan <git@brendonovich.dev> * fix(opencode): provide Observability beneath all route service graphs (anomalyco#35171) * chore: upgrade turbo (anomalyco#35173) * feat(stats): add model momentum section * chore: generate * fix(core): rewrite replacements while hoisting layers (anomalyco#35175) * fix(stats): link market share labs * chore: artifacts * chore: generate * feat(tui): render code-mode execute tool with child calls (anomalyco#35113) * refactor(opencode): fail the execute tool on program failure (anomalyco#35180) * fix(tui): align execute child calls with task indentation (anomalyco#35190) * refactor(core): move path resolve into fs service (anomalyco#35202) * feat(opencode): gate execute tool behind code mode flag (anomalyco#35185) * chore: generate * cleanup: tweak compaction prompt (anomalyco#35220) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> * fix(app): restore unfocused composer typing (anomalyco#35249) * fix(app): delay initial tab preview (anomalyco#35266) Co-authored-by: Jay <53023+jayair@users.noreply.github.com> * fix(desktop): stabilize esm shim injection (anomalyco#35270) * fix(app): match new session panel corners (anomalyco#35257) * tui: preserve spinner registration (anomalyco#35292) * feat: Add aarch64-linux-android target to sidecar binaries Signed-off-by: wallentx <william.allentx@gmail.com> * chore(ci): Improve workflow portability and add Android build support Signed-off-by: wallentx <william.allentx@gmail.com> * feat(ci): Add Android artifact build workflow and guidance Signed-off-by: wallentx <william.allentx@gmail.com> * fix(opencode): use NDK sysroot for Android artifact build * fix(opencode): pass Android NDK libc paths to Zig * fix(opencode): patch OpenTUI Android system libs * fix(opencode): rely on NDK libc config for Android * fix(opencode): resolve Android OpenTUI loader relatively * chore(ci): add Android Bun compile smoke target * fix(opencode): relocate Android Bun payload pointer * chore(ci): build Android Bun runtime from source * fix(ci): install LLVM for Android Bun source build * fix(ci): bootstrap LLVM 21 for Android Bun build * fix(ci): keep Bun Android build inside source tree * fix(ci): link Android NDK runtimes for Bun build * fix(ci): use Android strip for Bun runtime build * chore(termux): add release mirror workflows * chore(termux): align app token variables * chore(termux): use app client id input * chore(termux): fall back to github token * chore(termux): prepare v1.17.13 --------- Signed-off-by: wallentx <william.allentx@gmail.com> Co-authored-by: wallentx <william.allentx@gmail.com> Co-authored-by: opencode <opencode@sst.dev> Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> Co-authored-by: Frank <frank@anoma.ly> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com> Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Jay <53023+jayair@users.noreply.github.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: Kit Langton <kit.langton@gmail.com> Co-authored-by: James Long <longster@gmail.com> Co-authored-by: Simon Klee <hello@simonklee.dk> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@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.
What does this PR do?
Follow-up to #34842 (merged before the test commit was pushed). Adds win32-gated regression tests naming the exact Windows directory spellings from the field reports (#34723, #30374, #31597), exercised through the full HTTP middleware + handler chain:
lists Windows sessions for equivalent directory spellings— creates one session at the instance directory, then lists withforwardSlashes(C:/...),lowercaseDrive(c:\...), andtrailingSeparator(C:\...\). The assertion carries the spelling so a failure names the offending form.lists Windows sessions created through the global worktree sentinel— creates viax-opencode-directory: /(the value the desktop persists for global-project workspaces), asserts it stored a real drive root, and lists it back with the same/hint. This is the literal [Desktop] Sessions disappear from sidebar when creating new session - Windows v1.17.12 #34723 scenario.Validated TDD-style before #34842 merged: with the handlers reverted to the pre-fix commit, the spellings test fails at
lowercaseDrivewithReceived: []; with the fix it passes.Tests are skipped on non-Windows (
process.platform !== "win32"), matching the platform-gated codec tests inpackages/core/test/database-migration.test.ts. A 15sTestOptionstimeout gives the drive-root instance boot headroom on slower Windows machines.Type of change
How did you verify your code works?
bun test test/server/httpapi-session.test.ts -t "Windows sessions"on Windows 11 against merged dev — 2 pass.lowercaseDrive->[]).bun typecheckinpackages/opencode— clean.Checklist
Issue for this PR
Relates to #34723 (fixed by #34842)