Repository navigation
v0.6.0
Support for oh-my-openagent 5.0.x. omo 5.0 split the deep category into deep-low and
deep-high, and the bundled suggestions now follow omo 5.0.1. If you are still on omo 4.19,
stay on omodel 0.5.1 — a 4.19 omo does not read deep-low.
Upgrading is omodel --update for the standalone binary, or the command it prints for a
pipx/uv/pip install.
Added
show,candidatesandcheck(--json) carrydegraded_reason: why availability is
unknown —opencode is not on PATH, or whatopencode modelsdid instead of answering
(exited non-zero, printed nothing, timed out).degraded: truealone read the same for a
missing opencode and a broken one, and only the first is fixed by installing it. Every verb
now also says so on stderr.
Changed
- Bundled suggestions now come from omo 5.0.1. omo split the
deepcategory intodeep-low
anddeep-high, so there are 9 categories now, not 8. The fallback chains follow omo's new
models (gpt-6-astra,gpt-6-luna-fast,claude-fable-5-1,claude-opus-5-5, …), and the
vercelandquotio-openaiproviders are no longer suggested (chatgpt-subscriptionis new). - A
deepcategory in your config or in a saved preset now shows up asdeep-low, the same way
omo 5.0 reads it (ifdeep-lowis also set, the olddeepis dropped, as omo does). The new
name is written with your next save.omodel set cat:deepis refused with a message that
points tocat:deep-low.
Fixed
- A provider's
-thinking,-free,-base,-instruct,-chator-draftbuild no longer
stands in for the bare model omo named as if it were that model.glm-5.2-thinkingfilled a
glm-5.2slot as an exact match — no≈, no warning — the same holeminifell through in
0.5.1, one suffix family over. Such a build now shows as a marked≈substitute when it is
the same family as the model omo named, and is not offered at all when it is not (omo files
kimi-*-thinkingas its own family;big-picklehas none) — never as the model itself. - Saving no longer changes what kind of file your config is. A save used to reset its permission
bits to 0600, replace a symlinked config (a dotfile manager pointing~/.omo/omo.jsoncat a
repo file) with a detached copy, turn every CRLF line ending into LF, and — for a file with a
UTF-8 byte-order mark — drop every comment in the document. Bits, link, endings and comments
all survive now (a file that mixes endings keeps each line's own), and the preview diff
compares exactly what the save compares, listing only the lines that change. --jsonalways answers with JSON. A config that could not be parsed — or could not be opened
at all:--config ~/.omo, one component short of the file, or a file you cannot read — made
every verb exit 1 with an empty stdout (the unreadable case as a raw traceback). Both now
return the standard failure payload witherror: bad_config.omodel preset use +-1(any preset referenceint()refuses) is anunknown_presetrefusal
instead of a traceback.--dry-runreportschanged: truewhenever the real run would write. It looked at the config
diff alone, so a write that only adopts a foreign config into the active preset (a sync
conflict) previewed as a no-op and then wrote.apply --jsonreports the reasoning level it actually wrote: asked fornone, it echoed
noneback for a file that now saidoff.omodel --checkcounts the targets omo actually defines (31), not anultraworksub-target
on every agent (41) — ten of which every other verb refuses.omodel --restoreno longer burns a backup slot when asked for a backup that does not exist.
Notes
A deep already in your config or presets keeps working — omo 5.0 reads it as deep-low, and
omodel shows it that way. It is written as deep-low the next time you save.
Full history: CHANGELOG.md