Omelette v2.7.0 🍳
Hardening: 28 defects found by a full code review, each verified and fixed. No new features; the freeze is lifted.
Last-known numbers
- Never presented as live. The status line says how old a last-known number is (
◐ 95% (as of 14:05)) and drops a reset that has passed;get_usagepaces against live windows only; threshold, pace and reset alerts fire only for providers that are reporting now; the floating panel dims last-known numbers and shows the provider's state chip. - A switched-off provider stays off. Its old numbers no longer come back on every refresh.
- Pay-as-you-go spend survives a failed refresh and a relaunch, dimmed like other last-known numbers, in the menu bar, the tile, the popover and the floating panel.
- Codex keeps its last numbers when it reports no limits, dimmed under "Codex reported no limits".
- The widget never shows sample numbers. Before Omelette has written anything it says "Open Omelette", and it learns when a provider is forgotten.
Costs (API list-price equivalents)
- Turns read before the price table knew their model are priced once it does, for Codex, Grok and Claude; a failed models.dev fetch retries after 15 minutes.
- Local dollar figures say they are API-equivalent everywhere they were bare: the All tab,
omelette status, the status line (≈$),get_sessions, Insights, Activity. - A Codex rollout that shrinks no longer counts the responses it names twice.
Time zones
- "Today" and the day totals follow a time-zone change without a relaunch; Activity squares older than a month stay filled after a relaunch in another zone.
Agents
- Codex MCP setup finds its own table however its header is spelled (a comment, a quoted name, spaces in the brackets), instead of adding a second table that stopped Codex from starting.
- A finished Codex session stays finished; a "working" guessed from the log is undone once the log is quiet. The log scan reads every day folder of the month.
Dashboard
- A slow provider no longer paints over the one you switched to; an open chat's breakdown keeps up with its totals; the History header fits the smallest window and the Tokens table a wide sidebar; chats expand from the keyboard and VoiceOver; provider tabs show keyboard focus.
Settings, history, status file
- Settings → Updates follows Sparkle as it checks. The quota history can no longer be replaced by one record or lose a newer legacy file. A session that ends leaves
status.jsonat once.