What
Model alias matching now uses a canonical wire model ID to let hosts correctly match a stored explicit model ID (e.g., a saved claude-sonnet-4-6) against the alias row that covers it, surviving model transitions without breaking saved settings.
Details
- New
resolvedModelfield (previously documented ascanonicalId) in the model row schema:"Canonical wire model id this row's value resolves to (e.g. 'sonnet' → 'claude-sonnet-5'). Lets hosts match a persisted explicit id against the alias row that covers it."— populated byY4t()viaBo(value), which resolves an alias to its concrete wire model ID - New
cda(options, persistedId)function: ifpersistedIdalready exists verbatim in the option list it is returned unchanged; otherwise az4t()scan finds a covering alias by checking in order — exactvaluematch, fable-family membership, same model family AND (same 1M-context flag OR model is natively 1M-capable) - When
cda()finds a match it returns the alias option'svalue(e.g.,"sonnet"), so the picker highlights the correct alias row for the persisted model; if no alias covers the persisted ID the call-site expressioncda(options, initial) ?? initialkeeps the original persisted value as the initial selection rather than discarding it
Evidence
Schema field resolvedModel and description (search for "Canonical wire model id this row's"); cda(e, t) function definition; z4t() matcher (search for "Lets hosts match a persisted explicit id")
Strings lifted out of the shipped bundle, so the claim above can be checked against them.