make variant modal less annoying (#19998)
parent
6926fe1c74
commit
186af2723d
|
|
@ -581,10 +581,22 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Switch model variant",
|
title: "Variant cycle",
|
||||||
value: "variant.cycle",
|
value: "variant.cycle",
|
||||||
keybind: "variant_cycle",
|
keybind: "variant_cycle",
|
||||||
category: "Agent",
|
category: "Agent",
|
||||||
|
onSelect: () => {
|
||||||
|
local.model.variant.cycle()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Switch model variant",
|
||||||
|
value: "variant.list",
|
||||||
|
category: "Agent",
|
||||||
|
hidden: local.model.variant.list().length === 0,
|
||||||
|
slash: {
|
||||||
|
name: "variants",
|
||||||
|
},
|
||||||
onSelect: () => {
|
onSelect: () => {
|
||||||
dialog.replace(() => <DialogVariant />)
|
dialog.replace(() => <DialogVariant />)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,13 @@ export function DialogModel(props: { providerID?: string }) {
|
||||||
|
|
||||||
function onSelect(providerID: string, modelID: string) {
|
function onSelect(providerID: string, modelID: string) {
|
||||||
local.model.set({ providerID, modelID }, { recent: true })
|
local.model.set({ providerID, modelID }, { recent: true })
|
||||||
if (local.model.variant.list().length > 0) {
|
const list = local.model.variant.list()
|
||||||
|
const cur = local.model.variant.selected()
|
||||||
|
if (cur === "default" || (cur && list.includes(cur))) {
|
||||||
|
dialog.clear()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (list.length > 0) {
|
||||||
dialog.replace(() => <DialogVariant />)
|
dialog.replace(() => <DialogVariant />)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,21 +8,31 @@ export function DialogVariant() {
|
||||||
const dialog = useDialog()
|
const dialog = useDialog()
|
||||||
|
|
||||||
const options = createMemo(() => {
|
const options = createMemo(() => {
|
||||||
return local.model.variant.list().map((variant) => ({
|
return [
|
||||||
value: variant,
|
{
|
||||||
title: variant,
|
value: "default",
|
||||||
onSelect: () => {
|
title: "Default",
|
||||||
dialog.clear()
|
onSelect: () => {
|
||||||
local.model.variant.set(variant)
|
dialog.clear()
|
||||||
|
local.model.variant.set(undefined)
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}))
|
...local.model.variant.list().map((variant) => ({
|
||||||
|
value: variant,
|
||||||
|
title: variant,
|
||||||
|
onSelect: () => {
|
||||||
|
dialog.clear()
|
||||||
|
local.model.variant.set(variant)
|
||||||
|
},
|
||||||
|
})),
|
||||||
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DialogSelect<string>
|
<DialogSelect<string>
|
||||||
options={options()}
|
options={options()}
|
||||||
title={"Select variant"}
|
title={"Select variant"}
|
||||||
current={local.model.variant.current()}
|
current={local.model.variant.selected()}
|
||||||
flat={true}
|
flat={true}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -321,12 +321,18 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
variant: {
|
variant: {
|
||||||
current() {
|
selected() {
|
||||||
const m = currentModel()
|
const m = currentModel()
|
||||||
if (!m) return undefined
|
if (!m) return undefined
|
||||||
const key = `${m.providerID}/${m.modelID}`
|
const key = `${m.providerID}/${m.modelID}`
|
||||||
return modelStore.variant[key]
|
return modelStore.variant[key]
|
||||||
},
|
},
|
||||||
|
current() {
|
||||||
|
const v = this.selected()
|
||||||
|
if (!v) return undefined
|
||||||
|
if (!this.list().includes(v)) return undefined
|
||||||
|
return v
|
||||||
|
},
|
||||||
list() {
|
list() {
|
||||||
const m = currentModel()
|
const m = currentModel()
|
||||||
if (!m) return []
|
if (!m) return []
|
||||||
|
|
@ -339,7 +345,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
|
||||||
const m = currentModel()
|
const m = currentModel()
|
||||||
if (!m) return
|
if (!m) return
|
||||||
const key = `${m.providerID}/${m.modelID}`
|
const key = `${m.providerID}/${m.modelID}`
|
||||||
setModelStore("variant", key, value)
|
setModelStore("variant", key, value ?? "default")
|
||||||
save()
|
save()
|
||||||
},
|
},
|
||||||
cycle() {
|
cycle() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue