Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
1f128eb
feat: add configurable recent models count
ariane-emory Dec 14, 2025
7d85b14
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 17, 2025
6bca905
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 17, 2025
bdb42f9
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 18, 2025
1d86508
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 19, 2025
4a41677
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 19, 2025
017e6fb
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 20, 2025
27326bc
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 20, 2025
115e6e0
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 20, 2025
c5d2edc
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 21, 2025
a40eb98
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 21, 2025
33fe348
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 22, 2025
56c7f6c
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 23, 2025
a896e66
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 23, 2025
e42742a
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 23, 2025
dc2dbc7
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 23, 2025
354d5ba
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 23, 2025
898043e
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 24, 2025
81cfe5a
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 24, 2025
a6de56f
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 24, 2025
545a697
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 24, 2025
f044243
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 25, 2025
09879a5
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 25, 2025
83066f7
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 25, 2025
0a2a03f
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 26, 2025
cd7e450
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 27, 2025
e6ecce8
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 27, 2025
7dfca1e
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 27, 2025
f963683
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 27, 2025
f6ec685
Merge branch 'feat/configurable-recent-models-limit' of github.com:ar…
ariane-emory Dec 27, 2025
bd2a590
Merge dev into feat/configurable-recent-models-limit
ariane-emory Dec 28, 2025
0f90a72
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 28, 2025
cfaf696
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 28, 2025
3ac980e
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 29, 2025
75f3fdd
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 29, 2025
150d1f1
Merge branch 'feat/configurable-recent-models-limit' of github.com:ar…
ariane-emory Dec 29, 2025
f66de9c
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 29, 2025
1d55b48
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 29, 2025
6115b8b
Merge branch 'feat/configurable-recent-models-limit' of github.com:ar…
ariane-emory Dec 29, 2025
1a5c9bf
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 29, 2025
bcd90e7
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 29, 2025
68322b1
Merge branch 'dev' into feat/configurable-recent-models-limit
ariane-emory Dec 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,13 @@ export function DialogModel(props: { providerID?: string }) {
const favorites = showExtra() ? local.model.favorite() : []
const recents = local.model.recent()

const limit = sync.data.config.tui?.recent_models_count ?? 10
const recentList = showExtra()
? recents.filter(
(item) => !favorites.some((fav) => fav.providerID === item.providerID && fav.modelID === item.modelID),
)
? recents
.filter(
(item) => !favorites.some((fav) => fav.providerID === item.providerID && fav.modelID === item.modelID),
)
.slice(0, limit)
: []

const favoriteOptions = favorites.flatMap((item) => {
Expand Down
6 changes: 4 additions & 2 deletions packages/opencode/src/cli/cmd/tui/context/local.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,8 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
if (!next) return
setModelStore("model", agent.current().name, { ...next })
const uniq = uniqueBy([next, ...modelStore.recent], (x) => x.providerID + x.modelID)
if (uniq.length > 10) uniq.pop()
const limit = sync.data.config.tui?.recent_models_count ?? 10
if (uniq.length > limit) uniq.pop()
setModelStore("recent", uniq)
save()
},
Expand All @@ -283,7 +284,8 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
setModelStore("model", agent.current().name, model)
if (options?.recent) {
const uniq = uniqueBy([model, ...modelStore.recent], (x) => x.providerID + x.modelID)
if (uniq.length > 10) uniq.pop()
const limit = sync.data.config.tui?.recent_models_count ?? 10
if (uniq.length > limit) uniq.pop()
setModelStore("recent", uniq)
save()
}
Expand Down
9 changes: 9 additions & 0 deletions packages/opencode/src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -597,7 +597,16 @@ export namespace Config {
.enum(["auto", "stacked"])
.optional()
.describe("Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column"),
recent_models_count: z
.number()
.int()
.min(1)
.max(50)
.optional()
.default(10)
.describe("Number of recent models to store and display in model selection"),
})
export type TUI = z.infer<typeof TUI>

export const Server = z
.object({
Expand Down
4 changes: 4 additions & 0 deletions packages/sdk/js/src/v2/gen/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1433,6 +1433,10 @@ export type Config = {
* Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column
*/
diff_style?: "auto" | "stacked"
/**
* Number of recent models to store and display in model selection
*/
recent_models_count?: number
}
server?: ServerConfig
/**
Expand Down