fix(tui): sort model picker by release date (#33558)

This commit is contained in:
Aiden Cline 2026-06-23 22:35:47 -05:00 committed by GitHub
parent 784eea3911
commit c416ede20d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 6 deletions

View File

@ -118,7 +118,10 @@ export function DialogModel(props: { providerID?: string }) {
if (needle) {
return [
...fuzzysort.go(needle, providerOptions, { keys: ["title", "category"] }).map((x) => x.obj),
...sortModelOptions(
fuzzysort.go(needle, providerOptions, { keys: ["title", "category"] }).map((x) => x.obj),
false,
),
...fuzzysort.go(needle, popularProviders, { keys: ["title"] }).map((x) => x.obj),
]
}
@ -188,6 +191,7 @@ export function sortModelOptions<T extends { footer?: string; releaseDate: strin
return sortBy(
options,
(option) => option.footer !== "Free",
[(option) => option.releaseDate, "desc"],
(option) => option.title,
)
}

View File

@ -15,16 +15,18 @@ describe("sortModelOptions", () => {
expect(sorted.map((model) => model.title)).toEqual(["GPT 5.4", "GPT 5.2", "GPT 5.1"])
})
test("preserves free-first alphabetical ordering for the regular picker", () => {
test("orders regular model choices free-first and then newest-first", () => {
const sorted = sortModelOptions(
[
{ title: "Beta", releaseDate: "2026-01-01" },
{ title: "Alpha", releaseDate: "2025-01-01", footer: "Free" },
{ title: "Gamma", releaseDate: "2024-01-01", footer: "Free" },
{ title: "GLM 5", releaseDate: "2025-07-28" },
{ title: "GLM 5.1", releaseDate: "2025-12-09" },
{ title: "GLM 5.2", releaseDate: "2026-02-16" },
{ title: "Free old", releaseDate: "2024-01-01", footer: "Free" },
{ title: "Free new", releaseDate: "2025-01-01", footer: "Free" },
],
false,
)
expect(sorted.map((model) => model.title)).toEqual(["Alpha", "Gamma", "Beta"])
expect(sorted.map((model) => model.title)).toEqual(["Free new", "Free old", "GLM 5.2", "GLM 5.1", "GLM 5"])
})
})