Releases: erayendes/mimir
Releases · erayendes/mimir
Mimir v1.13
Added
- Turkish localization: Mimir now displays in Turkish when macOS is set to Turkish, and in English otherwise — chosen automatically from the system language.
Changed
- Usage rows now lead with the remaining time; the reset clock moved to a secondary spot, and weekly windows show just the countdown. Claude's Sonnet weekly window is now always shown.
Eklendi
- Türkçe dil desteği: macOS Türkçe olduğunda Mimir Türkçe, değilse İngilizce görünür — sistem dilinden otomatik seçilir.
Değişti
- Kullanım satırları artık önce kalan süreyi gösteriyor; sıfırlanma saati ikincil konuma alındı ve haftalık pencereler yalnızca geri sayımı gösteriyor. Claude'un Sonnet haftalık penceresi artık her zaman görünüyor.
SHA256: 013d30490e40458a5ea854ebf90f43efd913244e7184b714933c114ce022baf8
Mimir v1.12
Changed
- Crash reporting no longer flags normal dialogs (the update sheet or the login prompt) as "app not responding".
Değişti
- Hata raporlama, normal dialog'ları (güncelleme penceresi veya giriş sorusu) artık "uygulama yanıt vermiyor" olarak işaretlemiyor.
SHA256: 37013446cb9900c902c7669727762a16aee9bf787ee24796f4aeecd4da071b47
Mimir v1.11
Added
- First launch now offers to open Mimir automatically at login (toggleable later in System Settings › Login Items).
Fixed
- Security: OAuth credentials and the Antigravity language-server token are no longer passed as command-line arguments, so other local processes can't read them from the process table.
- The Antigravity info text and status labels are now in English, matching the rest of the app.
Eklendi
- İlk açılışta Mimir'i girişte otomatik başlatma seçeneği sunuluyor (sonradan System Settings › Login Items'tan değiştirilebilir).
Düzeltildi
- Güvenlik: OAuth kimlik bilgileri ve Antigravity dil-sunucusu token'ı artık komut satırı argümanı olarak geçirilmiyor; böylece sistemdeki başka süreçler bunları process table'dan okuyamıyor.
- Antigravity bilgi metni ve durum etiketleri artık İngilizce (uygulamanın geri kalanıyla uyumlu).
SHA256: 263e9dc6112039c5f9016b9ac29b2927c3d8cd281c505207932af08edba891d1
Mimir v1.10
Fixed
- Release builds are now Developer ID-signed and notarized by Apple, so macOS opens them without Gatekeeper warnings and Sparkle auto-updates install cleanly.
Düzeltildi
- Release derlemeleri artık Developer ID ile imzalanıp Apple tarafından notarize ediliyor; macOS Gatekeeper uyarısı vermeden açıyor ve Sparkle otomatik güncellemeleri sorunsuz kuruluyor.
SHA256: 07140b16fa57fd9a45d9493f8a304450659cced074b0f2256b45c83665fb4dff
Mimir v1.9
Added
- Sparkle auto-update integration: "Check for updates" now uses the native Sparkle sheet instead of a browser redirect. The button moved to an inline refresh icon next to the version number in the branding footer.
Changed
- Branding footer: the "milowda" byline is now a clickable link to milowda.com/apps/mimir.
Eklendi
- Sparkle otomatik güncelleme entegrasyonu: "Check for updates" artık tarayıcıya yönlendirmek yerine native Sparkle sheet'ini açıyor. Buton, branding footer'da versiyon numarasının yanındaki inline yenile ikonuna taşındı.
Değişti
- Branding footer: "milowda" yazısı milowda.com/apps/mimir'e tıklanabilir link oldu.
Mimir v1.7
Added
- Credit & billing tracking (#8, #9, #10): each service card now surfaces its financial layer when there is one — Antigravity shows the Google One AI credit balance, Codex shows the premium credit balance, and Claude shows pay-as-you-go billing usage (spent / monthly limit). All of it is read from data the existing integrations already fetch (no extra login), the row is omitted for accounts without credits/billing, and the menu-bar low badge also lights when a balance is below its threshold. (Antigravity credit expiry/activity and a dedicated Gemini quota card, #11, are deferred — no reachable data source yet.)
SHA256: dc53ae683b61de0ac459a8cd8fd836e3174d6bedf98553d692242108237a03df
Mimir v1.6
Added
- Mimir now refreshes Claude's OAuth token itself, the same way it already does for Codex and Antigravity. When the token is expired or within 5 minutes of expiry, it exchanges the stored refresh token for a fresh one and writes the rotated pair back to where it came from (the keychain entry, updated in place, or
~/.claude/.credentials.json). So Claude usage stays live and correct without depending on Claude Code to refresh first — and because the new token is written back, Claude Code's own login keeps working. On refresh failure it falls back to last-known data and backs off rather than hammering the token endpoint
Fixed
- Claude could show a stale reading (or none at all) when its token wasn't being refreshed — e.g. a 5-hour window that had already reset shown as if current. Card data is now trusted by reset time rather than cache age (a window still within its reset shows; one that has reset is blanked), and the last-known reading is persisted, so the card stays correct and never silently vanishes
- App-hang reports on quit: the terminate-time Sentry flush blocked the main thread for up to 2s, tripping Sentry's own 2000 ms app-hang detector (MIMIR-4). The flush timeout is now 1s, safely under the threshold
SHA256: 001c8c3342138d76310296063f22fd1b254e06b1f7201bb39593094087743c2c
Mimir v1.5
Changed
- Quota notifications reworked around the 5-hour and weekly windows. Live Claude/Codex warn once when the 5h window drops below 20% or the weekly window below 10%; the 5h "refilled" notice fires only after the window fully drains to 0% and resets to 100%, while the weekly "refilled" fires on every reset. Per-model rows no longer notify, and messages are now English with the live percentage and reset countdown
- Antigravity notifications limited to a single reliable event — its weekly refill. Usage/low and 5h alerts are dropped because Antigravity data is only live while the IDE is open; but the weekly reset time is deterministic and the quota can't be spent while the IDE is closed, so "weekly quota refilled" fires exactly when that time passes, even with the IDE closed and even if the quota was never touched
Fixed
- A service card could silently vanish on a transient failure. The last-known snapshot pattern (previously Antigravity-only) now covers Claude and Codex too: each service's last live reading is persisted and, when a live fetch fails, shown instead of hidden — fresh windows live-from-cache, reset-passed windows blanked, all-stale as a dimmed "güncel değil" card. Only a service that has never once produced a reading is hidden
- Claude no longer hammers the usage API with a dead token. Mimir reads the token's
expiresAtand, if it has already expired, skips the API call entirely (this was what escalated to HTTP 429), showing last-known data with a "token expired — open Claude Code" note. Mimir stays read-only — it never refreshes Claude's token (which could rotate Claude Code's own credentials out from under it); live data returns automatically once Claude Code refreshes the keychain - Added per-service fetch backoff: after an HTTP 429 (honoring
Retry-After) or an expired token, Mimir parks that service from network polling for a cooldown and serves it from the snapshot, clearing the cooldown on the next live success
SHA256: 9565649128bc2dde8686c750878064fd6842c558a1b9be00c8ed2b19a87ddba7
Mimir v1.4
Changed
- Antigravity now reflects its new grouped quota model. Antigravity moved quota off per-model limits and onto shared group buckets — a Gemini group and a Claude + GPT group, each with a weekly and a 5-hour window — exposed via the new
RetrieveUserQuotaSummarylanguage-server RPC. The card now shows four rows (Gemini · 5h, Gemini · Weekly, Claude/GPT · 5h, Claude/GPT · Weekly) sourced from that endpoint, instead of one row per model family from the old per-modelGetUserStatus(which only ever carried the 5-hour window)
Fixed
- Popover height was locked at its 500pt maximum even when fewer cards were shown (e.g. only Codex running), leaving a large empty area below the branding footer. SwiftUI preference updates were being silently dropped inside the
TimelineView/ScrollViewhierarchy, so the height listener never saw the measured value. The popover is now sized directly from the measured content, so it shrinks and grows live as services appear, disappear, or expand their info panel
SHA256: 4741c87eb19709d83e5ff3bc4a278d963c81f65cd16b3939f6efdb2c50574c78
Mimir v1.3
Added
- In-app update check (#20): on launch and once per day, Mimir queries the GitHub Releases API and shows an unobtrusive banner at the top of the popover when a newer version is available; tapping it opens the release page in the browser
- Antigravity quota snapshot: the last live reading is persisted to disk, so quota and reset time stay visible after the IDE/Cockpit closes — until each model's reset time passes, after which the card is marked "güncel değil" instead of showing stale numbers
Changed
- Popover empty state (#18): services with no data are no longer rendered as meaningless "0%" rows; when nothing is running, a centred placeholder is shown, and a spinner appears while refreshing. A stale Antigravity snapshot ("güncel değil") is kept visible (dimmed) rather than hidden, so a closed IDE doesn't make the card silently vanish
- Antigravity card now has an (i) info icon explaining that quota is read from the local language server and that Antigravity must be open to refresh the data (last-seen values are shown while it's closed)
Fixed
- Antigravity quota and reset time were not shown even with the IDE open — the
lsofport lookup was missing the-aflag, so the-iTCP/-pfilters were OR'd instead of AND'd, returning every listening port on the system; probing dozens of wrong ports blew the 8-second fetch timeout and produced no data. Added-aso only the language server's own ports are probed
SHA256: 64af0136e283d2a1ca14000bf028c880d65815a099fbaa9782ce15c128e69087