Repository navigation
Conversation
A fresh browser on a shared server listed no projects because the sidebar came only from this browser's stored project list, and sessions created or deleted in another browser never reached Home. List the browser's opened projects followed by the server's other projects; closing one stays a local preference. The server publishes only session.created when another client's first session registers a new project, so that event reloads the inventory once. Remove rows on session.deleted from other clients and refetch the session index when the event stream reconnects. Fixes anomalyco#13626 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Thanks for your contribution! This PR doesn't have a linked issue. All PRs must reference an existing issue. Please:
See CONTRIBUTING.md for details. |
|
The following comment was made by an LLM, it may be inaccurate: |
|
Thanks for updating your PR! It now meets our contributing guidelines. 👍 |
|
@Hona @Brendonovich (app CODEOWNERS) — could one of you approve the workflow runs on this fork PR when you have a moment? Two notes for triage:
|
|
Before/after on a real Before ( After (this PR): the fresh browser lists |


Issue for this PR
Closes #13626
Related: #24035, #51475
Type of change
What does this PR do?
A fresh browser on a shared server showed no projects, and sessions created
or deleted in another browser never reached the Home list.
Project list: the sidebar came only from this browser's stored project list
(
createServerControllerinruntime/server/runtime.tsx), so a fresh browserlisted nothing even though
/api/projecthad the inventory. The list is nowthe browser's opened projects followed by the server's other projects; closing
one stays a local preference. A project registered by another client's first
session arrives as
session.createdonly (the server publishes noproject.updatedfor it), so that event reloads the inventory once.Session list:
session.deletedfrom other clients now removes the row, and theindex is refetched when the event stream reconnects, since events sent while
it was down are lost.
No browser-storage migration: discovered projects are derived from the server,
not written to the stored list.
How did you verify your code works?
packages/app/e2e/regression/home.spec.ts(fail on
v2before the fix): fresh browser discovery, create/rename/deletein one browser reaching another, reload / reconnect / cleared storage,
server and project scoping, failed fetch keeping the sidebar.
bun run typecheckandlint:changedclean on changed lines.opencode serve(isolated data dir): unpatched build lists sessions but no project rows;
patched build lists projects, including one registered live by the other
client.
Note: pushed with the local pre-push hook skipped; its
bun run typecheckfails on untouched
origin/v2in this environment too (@opencode/console-app/
@opencode/stats-appvite.config.tsoverload errors).packages/apptypecheck passes.
Screenshots / recordings
Before/after screenshots follow in a comment.
Checklist