Skip to content

Commit 0a0b93e

Browse files
feat(tui): add configurable message_limit for session history
Allow users to configure maximum messages loaded per session via tui.message_limit config option (default: 100, max: 10000). Previously hardcoded to 100, which prevented scrolling to earlier messages in long conversations.
1 parent 508578b commit 0a0b93e

File tree

5 files changed

+22
-1
lines changed

5 files changed

+22
-1
lines changed

packages/opencode/src/cli/cmd/tui/context/sync.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ export const { use: useSync, provider: SyncProvider } = createSimpleContext({
345345
if (fullSyncedSessions.has(sessionID)) return
346346
const [session, messages, todo, diff] = await Promise.all([
347347
sdk.client.session.get({ sessionID }, { throwOnError: true }),
348-
sdk.client.session.messages({ sessionID, limit: 100 }),
348+
sdk.client.session.messages({ sessionID, limit: store.config.tui?.message_limit ?? 100 }),
349349
sdk.client.session.todo({ sessionID }),
350350
sdk.client.session.diff({ sessionID }),
351351
])

packages/opencode/src/config/config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,13 @@ export namespace Config {
585585
.enum(["auto", "stacked"])
586586
.optional()
587587
.describe("Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column"),
588+
message_limit: z
589+
.number()
590+
.int()
591+
.min(1)
592+
.max(10000)
593+
.optional()
594+
.describe("Maximum number of messages to load per session (default: 100)"),
588595
})
589596

590597
export const Layout = z.enum(["auto", "stretch"]).meta({

packages/sdk/js/src/gen/types.gen.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,10 @@ export type Config = {
11951195
* Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column
11961196
*/
11971197
diff_style?: "auto" | "stacked"
1198+
/**
1199+
* Maximum number of messages to load per session (default: 100)
1200+
*/
1201+
message_limit?: number
11981202
}
11991203
/**
12001204
* Command configuration, see https://opencode.ai/docs/commands

packages/sdk/js/src/v2/gen/types.gen.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,6 +1409,10 @@ export type Config = {
14091409
* Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column
14101410
*/
14111411
diff_style?: "auto" | "stacked"
1412+
/**
1413+
* Maximum number of messages to load per session (default: 100)
1414+
*/
1415+
message_limit?: number
14121416
}
14131417
/**
14141418
* Command configuration, see https://opencode.ai/docs/commands

packages/sdk/openapi.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8167,6 +8167,12 @@
81678167
"description": "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column",
81688168
"type": "string",
81698169
"enum": ["auto", "stacked"]
8170+
},
8171+
"message_limit": {
8172+
"description": "Maximum number of messages to load per session (default: 100)",
8173+
"type": "integer",
8174+
"minimum": 1,
8175+
"maximum": 10000
81708176
}
81718177
}
81728178
},

0 commit comments

Comments
 (0)