Performance issue: session-child-cycle becomes extremely slow with many sessions
Description
session-child-cycle (ctrl+right) and session-child-cycle-reverse (ctrl+left) become extremely slow in workspaces with many sessions (e.g., after subagents create child sessions). Response time exceeds 10 seconds, causing input lag and ignored commands.
Root cause: `Session.children()` in `packages/opencode/src/session/index.ts` performs O(N) scan of all sessions via `Storage.list()` and `Storage.read()` per cycle.
OpenCode version
0.15.23 (sessions persist across versions)
Steps to reproduce
- Create workspace with 500+ sessions (e.g., run complex tasks with subagents).
- Press ctrl+right or ctrl+left to cycle sessions.
- Observe delay in switching.
Screenshot and/or share link
... no wonder 😅
Operating System
macOS (Darwin)
Terminal
No response
good to know thx
Should more then resolve the problem but open to comments or concerns: https://github.com/ry2009/opencode/pull/4
Guys please add input about your recent experience with this issue, since I myself have not suffered this issue these days.
- Before: took >20s every time
- After: takes <2s (not an exact science)
For the record
now my storage looks like this after extensive use of OC:
- No gigantic
/sessionfolder anymore! 👍 Huge W - No, the switch is not INSTANT fast yet. But it works within reasonable time nonetheless.
So... of course, this could be even better with more optimizations. But I consider this mostly solved.
@zenyr is this what you found naturally with the newest OpenCode version?
I did do a small optimization for subagent stuff in terms of perf that could be what fixed it
also we are improving the ux of subagent nav soon
Should I close out my perf with extra caches fix then? @rekram1-node