feat(tui): add session_list_limit for session picker#6138
feat(tui): add session_list_limit for session picker#6138CasualDeveloper wants to merge 1 commit intoanomalyco:devfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds a configurable message_limit option to control the number of messages loaded per session in the TUI. The default value remains 100, but users can now configure it up to 10,000 messages through the config file.
- Add
message_limitconfiguration field to TUI schema with validation constraints (1-10,000) - Update implementation to use the configured value with fallback to 100
- Generate corresponding TypeScript type definitions
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
packages/sdk/openapi.json |
Adds message_limit field to the schema with integer constraints (1-10,000) and description |
packages/sdk/js/src/v2/gen/types.gen.ts |
Generated TypeScript types for the new message_limit config option |
packages/sdk/js/src/gen/types.gen.ts |
Generated TypeScript types with incorrect default value in documentation |
packages/opencode/src/config/config.ts |
Adds Zod schema validation for message_limit with proper constraints |
packages/opencode/src/cli/cmd/tui/context/sync.tsx |
Updates message loading to use configured limit with fallback to 100 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
f0fea03 to
0a0b93e
Compare
|
Fixed the inconsistent default value in the SDK types (was 500, now correctly 100). Thanks Copilot! |
0a0b93e to
9f54237
Compare
|
Fixed second hardcoded |
|
I have a working implementation ready - typechecks pass. |
|
@CasualDeveloper I also want to see this feature. I've had a half-finished PR in my pocket for a while that addresses this (and also makes the length of I cordially invite you to steal anything you think might be useful from my unfinished PR: ariane-emory#43 The team may (or may not) conclude that this also resolves my original Issue on the topic, #4918. |
9f54237 to
c22ee69
Compare
|
@ariane-emory Thanks for linking your PR! I've incorporated |
ef4a090 to
4a4438c
Compare
|
Re-committed with valid GPG signature. PR ready. |
4596a07 to
da1e0bc
Compare
872e100 to
1e84d56
Compare
|
Will continue rebasing on top of release tags as they're set. |
1e84d56 to
0414034
Compare
325c7f5 to
8fc7ac0
Compare
c0282dc to
a566be1
Compare
bd214cc to
a7d1cc1
Compare
00637c0 to
71e0ba2
Compare
Adds an optional `session_list_limit` setting to `tui.json` (default 150) that caps how many root sessions the picker renders when not searching. Search still requests the existing server-limited result set and renders an empty pending state instead of falling back to the full synced list. The active session remains visible in capped lists by reserving space for it and reinserting it with the same day-bucket/created-time ordering used by the picker.
Issue for this PR
Closes #20754
Related to #6137, #8535, and #4918.
Type of change
What does this PR do?
Adds optional
tui.session_list_limitconfig for the TUI session picker. The picker uses a default cap of 150 root sessions when not searching, while search keeps the existing server-limited request path.The current session stays visible when capped, and picker ordering stays aligned with the existing day-bucket and created-time sort.
This is intentionally scoped to the picker render list, not broader session loading or pagination.
How did you verify your code works?
packages/opencode:bun run test test/cli/tui/session-list.test.tspackages/opencode:bun test --timeout 120000 test/cli/tui/session-list.test.ts test/config/tui.test.ts --max-concurrency=1bun turbo typecheckScreenshots / recordings
N/A. This is a TUI config and picker behavior change with no visual layout change.
Notes
AI Assistance: OpenCode + openai/gpt-5.5; Review: Human operator reviewed.
Checklist