Skip to content

fix(worktrees): route OpenCode calls through workspaces#521

Merged
shantur merged 1 commit into
devfrom
worktree-missing-sessions
Jun 4, 2026
Merged

fix(worktrees): route OpenCode calls through workspaces#521
shantur merged 1 commit into
devfrom
worktree-missing-sessions

Conversation

@shantur

@shantur shantur commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

This fixes #518 by moving CodeNomad worktree execution from directory-header routing to OpenCode experimental workspace routing.

OpenCode changed existing-session routing so session routes can prefer the session's stored directory over x-opencode-directory. That made the old CodeNomad worktree proxy model unreliable for sessions that should execute in a worktree. This PR switches CodeNomad to resolve an OpenCode workspace ID for each CodeNomad worktree and pass that workspace ID on worktree-scoped OpenCode calls.

What changed

  • Start OpenCode with OPENCODE_EXPERIMENTAL_WORKSPACES=true.
  • Change the OpenCode server base URL from /workspaces/:id/worktrees/root/instance to /workspaces/:id/instance.
  • Add a root OpenCode client helper in packages/ui/src/stores/opencode-client.ts.
  • Add OpenCode workspace sync/cache helpers in packages/ui/src/stores/opencode-workspaces.ts.
  • Sync OpenCode workspaces after CodeNomad worktree hydration and after worktree create/delete flows.
  • Map CodeNomad worktree slugs/directories to OpenCode workspace.id values discovered by experimental.workspace.syncList and experimental.workspace.list.
  • Replace all OpenCode worktree clients with the root client plus explicit workspace payloads where the active session/worktree requires it.
  • Route session, permission/question, file browser reads, SDK git status, and prompt/action calls through root OpenCode client + workspace ID.
  • Keep CodeNomad local git worktree server APIs intact; those still need filesystem directories for local git operations.

Review fix

  • Fixed right-panel file saves so they no longer write to the root workspace after reading from a selected worktree.
  • The existing CodeNomad file-content API now accepts an optional worktree query parameter.
  • Right-panel saves pass worktreeSlugForViewer(), and the server resolves that slug to the same worktree directory used by local git worktree APIs before writing.
  • Root saves continue to use the original root workspace path.

Removed old routing

  • Removed /workspaces/:id/worktrees/:slug/instance OpenCode proxy routes.
  • Removed directory override proxy support using /__dir/<encoded>.
  • Removed proxy injection of x-opencode-directory.
  • Removed the remaining background-process completion prompt x-opencode-directory header.
  • Removed getOrCreateWorktreeClient, getOrCreateWorktreeClientWithDirectoryOverride, and worktree proxy path helpers from the UI worktree store.
  • Simplified sdkManager.createClient because clients are no longer keyed by worktree slug.

Why this fixes #518

Worktree sessions can now stay visible under the root project session listing while worktree execution is selected through OpenCode's workspace routing model. CodeNomad no longer depends on x-opencode-directory to override existing session directories, so sessions should not disappear from the root-directory list or execute in the wrong directory because of stale session directory fallback behavior.

Fixes #518

Validation

  • npm run typecheck --workspace @codenomad/ui
  • npm run typecheck --workspace @neuralnomads/codenomad
  • git diff --check

Notes

Some touched files are already oversized and were not refactored as part of this migration: packages/server/src/server/http-server.ts, packages/ui/src/stores/instances.ts, packages/ui/src/stores/session-api.ts, packages/ui/src/stores/session-state.ts, packages/ui/src/components/instance/shell/right-panel/RightPanel.tsx, packages/ui/src/stores/session-events.ts, and packages/server/src/background-processes/manager.ts.

@shantur

shantur commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator Author

@CodeNomadBot

I want you to perform the gatekeeper checks for latest PR state

check for regressions
check if the PR could be better implemented in any other way
Be the PR gatekeeper
Be ruthless about code quality

@codenomadbot

codenomadbot Bot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Gatekeeper review for latest PR state.

Request understood: review PR #521 ruthlessly for regressions, implementation quality, and whether the fix should be implemented differently. Assumption: scope is the current single-commit PR diff against origin/dev.

Findings: no blocking code findings found in the PR diff.

Review notes:

  • The implementation is intentionally narrow: createSession now creates parent sessions through getRootClient(instanceId), then persists the inherited worktree slug via setWorktreeSlugForParentSession(..., { currentSlug: "root" }).
  • That matches the stated bug: root-directory session list hydration can find the parent session after restart, while later operations still use getWorktreeSlugForSession(...) and route through the worktree client once metadata is persisted.
  • The currentSlug: "root" change is important and correct because the metadata update must address the newly created root-directory session. Keeping the previous currentSlug: worktreeSlug would be a likely regression for non-root worktrees.
  • I did not find a smaller/cleaner implementation that preserves both requirements. Creating directly in the worktree fixes routing but preserves the restart visibility bug; creating in root without metadata would break inherited worktree routing. This split is the minimal bridge between those constraints.

Validation:

  • git diff --check origin/dev...HEAD passed.
  • npm run typecheck --workspace @codenomad/ui could not complete in this checkout because dependencies/types are missing, with errors like missing solid-js, solid-js/jsx-runtime, and @opencode-ai/sdk/v2/client. This looks environmental/dependency-install related rather than caused by the one-line behavioral change, but it means I cannot independently confirm the PR's stated typecheck result from this workspace.

Residual risk:

  • There is no targeted automated test for the exact restart scenario: create a new parent session while a non-root worktree session is active, restart/reload, confirm the new parent remains visible in the root session list, and confirm subsequent operations still route to the stored worktree slug. The code path is coherent, but this is the regression-prone behavior and deserves a focused test if the current test harness can exercise it.

Gatekeeper verdict: no code-quality blocker found. I would not request implementation changes for this diff, but I would want either CI typecheck confirmation or a clean local dependency install before merge, plus preferably a focused regression test for #518.

--
Yours,
CodeNomadBot

@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26833236698

Artifacts expire in 7 days.
Artifacts:

  • pr-521-cbb0e2226d8250b881cb1d2de3febf948427fd1b-tauri-macos
  • pr-521-cbb0e2226d8250b881cb1d2de3febf948427fd1b-tauri-linux
  • pr-521-cbb0e2226d8250b881cb1d2de3febf948427fd1b-tauri-windows
  • pr-521-cbb0e2226d8250b881cb1d2de3febf948427fd1b-tauri-macos-arm64
  • pr-521-cbb0e2226d8250b881cb1d2de3febf948427fd1b-electron-macos
  • pr-521-cbb0e2226d8250b881cb1d2de3febf948427fd1b-electron-windows
  • pr-521-cbb0e2226d8250b881cb1d2de3febf948427fd1b-electron-linux

@shantur shantur closed this Jun 2, 2026
@shantur shantur force-pushed the worktree-missing-sessions branch from cbb0e22 to b3594d2 Compare June 2, 2026 17:37
@shantur shantur changed the title fix(sessions): keep worktree sessions visible after restart fix(worktrees): route OpenCode calls through workspaces Jun 2, 2026
@shantur shantur reopened this Jun 2, 2026
@shantur

shantur commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator Author

@CodeNomadBot

PR is changed completely go through it again.
I want you to perform the gatekeeper checks for latest PR state

check for regressions
check if the PR could be better implemented in any other way
Be the PR gatekeeper
Be ruthless about code quality

@codenomadbot

codenomadbot Bot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Gatekeeper review for the changed PR state.

Request understood: the previous review is obsolete; review the current PR #521 diff against origin/dev ruthlessly for regressions, implementation quality, and better alternatives. Assumption: scope is the current single commit 4111d141 and the workspace-routing migration described in the PR body.

Findings:

  1. P1 blocker: file browser saves still write to the root workspace while reads now come from the selected OpenCode workspace.

    packages/ui/src/components/instance/shell/right-panel/RightPanel.tsx:497, :521, :552, and :705 correctly pass the OpenCode workspace payload for file list/read operations based on worktreeSlugForViewer(). But saveBrowserFile still calls serverApi.writeWorkspaceFile(props.instanceId, path, content) at RightPanel.tsx:581, and that API writes /api/workspaces/:id/files/content rooted at the CodeNomad workspace root (packages/ui/src/lib/api-client.ts:351). There is no worktree slug or OpenCode workspace passed on save.

    Repro path: select a non-root worktree in the right panel, open foo.ts, edit it, and save. The editor loaded foo.ts from the non-root OpenCode workspace, but the save writes foo.ts in the root workspace path. Best case the wrong file is modified; worst case a same-path root file is silently overwritten while the worktree file remains unchanged. This directly violates the PR's claim that file browser calls are routed through the active worktree/workspace.

    Required fix: make writes use the same routing basis as reads. Either add a worktree-aware server write endpoint, route save through an OpenCode file write API with the same workspace payload if available, or otherwise carry worktreeSlugForViewer() through the server write path. Reads and writes must be symmetric.

Implementation review notes:

  • The broad direction is reasonable: dropping x-opencode-directory and moving existing-session operations to explicit OpenCode workspace IDs matches the stated OpenCode behavior change.
  • The new opencode-workspaces.ts cache is a sensible thin adapter, but it currently silently falls back to root when workspace resolution fails. For execution paths (promptAsync, shell, commands, permission/question replies), that fallback can be dangerous because it turns a worktree operation into a root operation. Consider failing loudly for non-root slugs when a workspace ID cannot be resolved, at least for mutating/execution calls.
  • The migration removed per-permission/question stored worktree slug maps and now derives workspace from session metadata at response time. That is cleaner if metadata is stable, but it makes stale/missing metadata more consequential. This reinforces the need to avoid silent root fallback.

Validation:

  • git diff --check origin/dev...HEAD passed.
  • npm run typecheck --workspace @codenomad/ui failed in this checkout because dependencies/types are missing, including solid-js, solid-js/jsx-runtime, and @opencode-ai/sdk/v2/client.
  • npm run typecheck --workspace @neuralnomads/codenomad failed in this checkout because @types/node is missing.
  • These typecheck failures appear environmental for this local workspace, but they prevent me from independently confirming the PR's stated typecheck results.

Gatekeeper verdict: do not merge yet. The workspace-routing approach is directionally plausible, but the file browser save path is currently inconsistent with the new read routing and can write to the wrong directory for non-root worktrees.

--
Yours,
CodeNomadBot

@shantur shantur force-pushed the worktree-missing-sessions branch from 4111d14 to 0d24ce9 Compare June 2, 2026 20:22
@shantur

shantur commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator Author

@CodeNomadBot

Check now

@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26845457913

Artifacts expire in 7 days.
Artifacts:

  • pr-521-4111d14114296e2934156f8289b4c85f07dd7081-electron-windows
  • pr-521-4111d14114296e2934156f8289b4c85f07dd7081-electron-linux

@codenomadbot

codenomadbot Bot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Re-check for latest PR state after the file-save fix.

Request understood: verify the previous blocker and run another gatekeeper pass on the current PR state. Assumption: scope is the latest local PR head 0d24ce9d against origin/dev.

Findings: no blocking findings found in this pass.

What changed relative to the previous blocker:

  • The right panel now calls serverApi.writeWorkspaceFile(props.instanceId, path, content, { worktree: worktreeSlugForViewer() }) in packages/ui/src/components/instance/shell/right-panel/RightPanel.tsx:581.
  • serverApi.writeWorkspaceFile now serializes non-root worktrees into the worktree query parameter in packages/ui/src/lib/api-client.ts:351.
  • The server file-content route now accepts worktree, resolves it via the same resolveGitWorktreeDirectory(...) helper used by the local worktree git APIs, and writes through WorkspaceManager.writeFileInDirectory(...) for non-root worktrees in packages/server/src/server/routes/workspaces.ts:155.
  • WorkspaceManager.writeFileInDirectory(...) uses FileSystemBrowser rooted at the resolved worktree directory in packages/server/src/workspaces/manager.ts:111, so writes remain restricted to the target directory.

Gatekeeper assessment:

  • The previously reported P1 mixed-directory save bug is fixed. Reads still use OpenCode workspace routing, and saves now use the corresponding CodeNomad worktree slug on the server write path.
  • I did not find a new blocker in the changed file-save path.
  • The broader residual risk remains the silent root fallback when OpenCode workspace ID resolution fails for non-root worktrees. That is not introduced by this follow-up fix, but for mutating/execution calls it is still worth hardening before or soon after merge.

Validation:

  • git diff --check origin/dev...HEAD passed.
  • npm run typecheck --workspace @codenomad/ui still cannot complete in this checkout because dependency/type packages are missing, including solid-js, solid-js/jsx-runtime, and @opencode-ai/sdk/v2/client.
  • npm run typecheck --workspace @neuralnomads/codenomad still cannot complete because @types/node is missing.
  • These failures appear environmental for this local workspace, but I cannot independently confirm the PR's stated typecheck results from here.

Verdict: the previously blocking file-save issue is resolved. I would still require CI or a clean dependency-installed typecheck before merge, but I do not have a remaining code-level blocker from this re-check.

--
Yours,
CodeNomadBot

@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26845817287

Artifacts expire in 7 days.
Artifacts:

  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-macos
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-linux
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-windows
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-electron-macos
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-macos-arm64
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-electron-windows
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-electron-linux

1 similar comment
@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26845817287

Artifacts expire in 7 days.
Artifacts:

  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-macos
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-linux
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-windows
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-electron-macos
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-tauri-macos-arm64
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-electron-windows
  • pr-521-0d24ce9d6def4e672aa9b63ebe22905cdca08ad5-electron-linux

@shantur shantur force-pushed the worktree-missing-sessions branch from 0d24ce9 to 754fd9f Compare June 3, 2026 17:36
Migrate CodeNomad worktree execution from per-worktree OpenCode proxy clients and x-opencode-directory headers to OpenCode experimental workspace routing.

OpenCode is now started with OPENCODE_EXPERIMENTAL_WORKSPACES=true and the root instance proxy path. The UI syncs OpenCode workspaces after worktree hydration and maps CodeNomad worktree slugs to OpenCode workspace IDs.

Session, file, git status, permission, and question calls now use the root OpenCode client and pass the resolved workspace ID when the active session belongs to a worktree. Worktree metadata updates also use the root client.

The obsolete worktree instance proxy routes, directory override handling, and x-opencode-directory forwarding were removed so existing-session routing no longer depends on stale directory headers.

Validated with npm run typecheck --workspace @codenomad/ui, npm run typecheck --workspace @neuralnomads/codenomad, and git diff --check.
@shantur shantur force-pushed the worktree-missing-sessions branch from 754fd9f to c51dfd4 Compare June 3, 2026 17:43
@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26902083433

Artifacts expire in 7 days.
Artifacts:

  • pr-521-754fd9fb49f5727d150c58db6d3403dc2602eead-electron-windows
  • pr-521-754fd9fb49f5727d150c58db6d3403dc2602eead-electron-linux

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26902427539

Artifacts expire in 7 days.
Artifacts:

  • pr-521-c51dfd4980dd793e2fc173967a805e82a0fe259f-tauri-macos
  • pr-521-c51dfd4980dd793e2fc173967a805e82a0fe259f-tauri-linux
  • pr-521-c51dfd4980dd793e2fc173967a805e82a0fe259f-tauri-windows
  • pr-521-c51dfd4980dd793e2fc173967a805e82a0fe259f-electron-macos
  • pr-521-c51dfd4980dd793e2fc173967a805e82a0fe259f-tauri-macos-arm64
  • pr-521-c51dfd4980dd793e2fc173967a805e82a0fe259f-electron-windows
  • pr-521-c51dfd4980dd793e2fc173967a805e82a0fe259f-electron-linux

@shantur shantur merged commit 9d4c304 into dev Jun 4, 2026
11 checks passed
@shantur shantur deleted the worktree-missing-sessions branch June 4, 2026 10:25
shantur added a commit that referenced this pull request Jun 8, 2026
…ions, safer settings, more languages and smoother desktop performance (#534)

## Thanks for contributions

- [@pascalandr](https://github.com/pascalandr):
[#242](#242),
[#340](#340),
[#357](#357),
[#406](#406),
[#407](#407),
[#458](#458),
[#472](#472),
[#501](#501),
[#513](#513),
[#528](#528),
[#531](#531)
- [@OfflinePing](https://github.com/OfflinePing):
[#413](#413),
[#497](#497),
[#498](#498),
[#499](#499)
- [@omercnet](https://github.com/omercnet):
[#459](#459),
[#466](#466),
[#512](#512)
- [@VooDisss](https://github.com/VooDisss):
[#493](#493),
[#511](#511)
- [@JDis03](https://github.com/JDis03):
[#481](#481),
[#519](#519)
- [@bluelovers](https://github.com/bluelovers):
[#278](#278),
[#284](#284)
- [@aayurt](https://github.com/aayurt):
[#523](#523)
- [@MusiCode1](https://github.com/MusiCode1):
[#388](#388)
- [@jollyxenon](https://github.com/jollyxenon):
[#439](#439)

## Highlights

- **Provider setup is easier from the model selector**: Manage provider
authentication directly from the place where you choose models, with
provider settings scoped to the current CodeNomad instance.
- **Settings are more useful and transparent**: A new Info section shows
version, runtime, and diagnostic details, and a new global config editor
makes it easier to inspect and update CodeNomad/OpenCode configuration
without leaving the app.
- **Sessions load faster and are easier to find**: Session history now
supports progressive loading, server-side search, and stronger workspace
scoping, making large workspaces feel much more responsive.
- **Workspace names are customizable**: Give workspaces friendlier names
so multi-project and multi-instance setups are easier to recognize.
- **Desktop event handling is faster and more reliable**: Tauri desktop
builds now use a Rust-native event transport for better performance and
fewer moving parts during live session updates.
- **More languages are available**: German and Nepali localization
support was added, and Hebrew translation coverage was improved.

## What’s Improved

- **Better chat readability**: Pasted text can collapse in chat history,
session titles now appear in the header bar, and message timing metrics
make it easier to understand how long responses take.
- **More flexible composer experience**: The session composer can now be
resized, making long prompts and detailed instructions easier to work
with.
- **Safer environment variable editing**: Environment variable values
are hidden and password-style inputs are masked, reducing the chance of
exposing sensitive values on screen.
- **Better permission feedback**: Permission requests now show clearer
rejection feedback, and YOLO mode behavior is shared more consistently
across related session flows.
- **More helpful notifications and logs**: Toast notification history
and server log access were improved so important events are easier to
revisit after they disappear.
- **Cleaner status panels**: Status panel sections can now collapse,
making dense side-panel information easier to scan.
- **Smaller desktop packages**: Electron package size was reduced,
making downloads and installs lighter.

## Fixes

- **More reliable live updates**: SSE pong retry logic and message-load
retry handling were tightened to avoid connection issues and runaway
retry loops.
- **Smoother scrolling while sessions stream**: Virtual
follow/autoscroll behavior is more stable, so active conversations
should jump around less while new content arrives.
- **Better OpenCode SDK compatibility**: CodeNomad now supports OpenCode
SDK 1.16 runtime APIs.
- **More reliable worktree behavior**: Worktree mappings now live in
session metadata, and OpenCode calls are routed through workspaces more
consistently.
- **Better draft prompt handling**: Draft prompt command sessions are
supported more reliably, and switching focus between tabs no longer
accidentally clears prompts.
- **Improved mobile usability**: Instance and project tabs remain
tappable while the session drawer is open, and the folder home screen
behaves better on small mobile viewports.
- **Improved Linux browser launching**: Linux browser launch detection
now checks more common browser candidates.
- **Better plugin handling**: Plugin base URLs work better with host
binding, and tuple-style plugin metadata is supported.
- **Markdown rendering polish**: Horizontal rules now render correctly
in markdown content.
- **Simpler session diff UI**: The session diff right-drawer flow was
removed to reduce UI complexity and avoid confusing side-panel behavior.

## Docs

- **Contributor architecture guide added**: A CodeNomad architecture
guide skill was added to help contributors understand the project
structure and key integration patterns.
- **Quick-start guidance improved**: Authentication requirements and
self-signed certificate warnings were added to the quick-start docs.
- **Release automation documented**: Winget release automation docs and
workflow support were added.

### Contributors

- [@shantur](https://github.com/shantur)
- [@pascalandr](https://github.com/pascalandr)
- [@OfflinePing](https://github.com/OfflinePing)
- [@omercnet](https://github.com/omercnet)
- [@JDis03](https://github.com/JDis03)
- [@VooDisss](https://github.com/VooDisss)
- [@bluelovers](https://github.com/bluelovers)
- [@aayurt](https://github.com/aayurt)
- [@MusiCode1](https://github.com/MusiCode1)
- [@jollyxenon](https://github.com/jollyxenon)

**Full Changelog**:
[v0.16.0...v0.17.0](v0.16.0...v0.17.0)

## Merged Pull Requests

### [@shantur](https://github.com/shantur)

- PR [#446](#446)
“fix(ui): support draft prompt command sessions”
- PR [#452](#452)
“fix(ui): keep home actions visible on short viewports”
- PR [#453](#453)
“Reduce Electron package size”
- PR [#476](#476)
“feat(ui): add instance-scoped provider manager from model selector”
- PR [#477](#477) “Add
global config file editor”
- PR [#514](#514)
“Migrate worktree mappings to session metadata”
- PR [#521](#521)
“fix(worktrees): route OpenCode calls through workspaces”
- PR [#522](#522)
“feat(ui): support custom workspace names”
- PR [#526](#526)
“Support OpenCode SDK 1.16 runtime APIs”
- PR [#529](#529)
“fix(ui): stop message load retry loop”
- PR [#532](#532)
“fix(ui): remove session diff right drawer flow”

### [@pascalandr](https://github.com/pascalandr)

- PR [#242](#242)
“perf(tauri): Rust-native desktop event transport”
- PR [#340](#340)
“feat(ui): show the session title in the header bar”
- PR [#357](#357)
“feat(ui): add message timing metrics”
- PR [#406](#406)
“fix(ui): stabilize virtual follow autoscroll”
- PR [#407](#407)
“feat(ui): collapse pasted text in chat history”
- PR [#458](#458)
“fix(ui): allow status panel sections to collapse”
- PR [#472](#472)
“revert: remove tracked NomadWorks repo state”
- PR [#501](#501)
“fix(ui): support tuple plugin metadata”
- PR [#513](#513)
“chore: TASK-075 automate Winget updates on release”
- PR [#528](#528)
“fix(ui): scope primary agent selector to selectable agents”
- PR [#531](#531)
“revert: remove tracked NomadWorks task artifacts”

### [@OfflinePing](https://github.com/OfflinePing)

- PR [#413](#413)
“feat(settings): add Info section with version, runtime, and
diagnostics”
- PR [#497](#497) “Share
YOLO mode across session families”
- PR [#498](#498)
“fix(ui): render markdown horizontal rules”
- PR [#499](#499) “Add
reject feedback to permission UI”

### [@omercnet](https://github.com/omercnet)

- PR [#459](#459)
“fix(mobile): tappable instance/project tab bar while session drawer is
open”
- PR [#466](#466) “ci:
increase comment-pr-artifacts polling timeout”
- PR [#512](#512) “fix:
handle plugin base URL for host binding”

### [@VooDisss](https://github.com/VooDisss)

- PR [#493](#493) “feat:
add CodeNomad architecture guide skill for contributors”
- PR [#511](#511)
“feat(sessions): progressive loading, server-side search, and workspace
scoping”

### [@JDis03](https://github.com/JDis03)

- PR [#481](#481) “docs:
add auth requirement and self-signed cert warning to quick-start”
- PR [#519](#519)
“fix(ui): add retry logic to SSE pong to improve connection resilience”

### [@bluelovers](https://github.com/bluelovers)

- PR [#278](#278)
“feat(ui): Toast Notification History & Server Logs Enhancements”
- PR [#284](#284)
“fix(ui): hide environment variable values and mask inputs as password”

### [@aayurt](https://github.com/aayurt)

- PR [#523](#523) “Add
German and Nepali Localizations”

### [@MusiCode1](https://github.com/MusiCode1)

- PR [#388](#388)
“Update Hebrew translation coverage”

### [@jollyxenon](https://github.com/jollyxenon)

- PR [#439](#439)
“feat(ui): add resizable session composer”
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Losing sessions on codenomad worktrees on restarts

1 participant