Skip to content

Releases: victorhqc/filbert

v0.7.0

Choose a tag to compare

@victorhqc victorhqc released this 29 Jul 08:44
aaf8c87

Description

Smart refresh now reacts to provider-reported usage, credit, and availability changes. Presentation-only quota changes no longer trigger fast polling, and refresh intervals offer finer control.

Features

  • Semantic Smart refresh — tracks meaningful provider activity across Claude Code, Cursor, DeepSeek, OpenAI Codex, and z.ai.
  • Finer intervals — slow refresh supports 1–60 minutes; fast refresh supports 10–60 seconds in five-second steps.
  • Structured diagnostics — reports safe activity reasons without exposing provider values.

Bug fixes

  • False fast refreshes — reset dates, labels, limits, and other presentation changes no longer count as activity.

What's Changed

  • feat: refine Smart refresh detection with provider activity observations by @victorhqc in #46

Full Changelog: v0.6.0...v0.7.0


Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: Filbert-0.7.0-arm64.dmg
  • SHA-256: 4955db909ba90899ba75ef71e0b6b74daa302848b583535efab69d68742b1049

Install

  1. Mount the DMG and drag Filbert to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click Filbert in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/Filbert.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.6.0

Choose a tag to compare

@victorhqc victorhqc released this 28 Jul 09:46
b55a690

Description

Filbert adds opt-in automatic refresh for each provider. Users can choose Regular or Smart refresh behavior, with clear settings, accessibility support, and Claude Code quota warnings.

Features

  • Per-provider automatic refresh — enable background checks only for selected providers.
  • Regular and Smart modes — use fixed intervals or adjust refresh speed based on usage changes.
  • Refresh Settings — configure shared intervals with localized and accessible controls.
  • Fast refresh status — show which providers are currently refreshing more often.
  • Claude Code disclosure — explain that automatic checks may use Claude Code quota.

What's Changed

  • feat: add opt-in smart auto-refresh with per-provider settings by @victorhqc in #45

Full Changelog: v0.5.0...v0.6.0

Filbert 0.6.0

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: Filbert-0.6.0-arm64.dmg
  • SHA-256: a568883ad6940117f82d7c5b84029aa658b993620be0b17416fb2b8eae4ee487

Install

  1. Mount the DMG and drag Filbert to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click Filbert in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/Filbert.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.5.0

Choose a tag to compare

@victorhqc victorhqc released this 26 Jul 11:35
37fdfdf

Overview

Every provider now has an on/off switch. You can keep a provider configured
but turned off — Filbert won't fetch, refresh, or import credentials from it
until you flip the switch back on. Saving an API key automatically enables
the provider.

✨ Features

  • Enable/disable toggles for every provider. Each provider card in
    Settings has a toggle. When a provider is off, Filbert skips it entirely.
    Saving an API key turns the provider on automatically.
  • Disabled providers show guidance. Instead of setup controls, a disabled
    provider card shows a short note telling you to enable it first.

📝 Changes since v0.4.0

  • feat: add explicit enable/disable toggles for every provider in Settings (#44) (37fdfdf)

Full Changelog: v0.4.0...v0.5.0

Filbert 0.5.0

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: Filbert-0.5.0-arm64.dmg
  • SHA-256: 60c681709ec96bbe8cb9c117f8015c30a5416995c339e546ec1a06b41e635096

Install

  1. Mount the DMG and drag Filbert to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click Filbert in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/Filbert.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.4.0

Choose a tag to compare

@victorhqc victorhqc released this 25 Jul 23:20
5934c6e

Overview

This release cuts Keychain prompts to one per session, raises the Settings
window instead of hiding it when re-clicked, and hardens the entire codebase
with strict type checking. The internals shed legacy migration code, banned the
Any type, and slimmed 914 lines of redundant comments.

✨ Features

  • One Keychain prompt per session. Filbert now shares a single
    authorization context across all providers. Saving API keys no longer triggers
    a second prompt on verification. Cursor credentials import through the same
    context.
  • Settings window raises on re-click. Clicking "Settings…" when the window
    is already open now brings it to the front instead of leaving it buried.
  • Provider order shows only configured providers. The Appearance tab's
    drag-and-drop list now hides providers you have not set up, with an
    empty-state hint when none are configured.

📝 Changes since v0.3.1

  • feat: consolidate Keychain auth via shared Core accessor (#40) (847346a)
  • feat(ui): raise Settings window and filter provider order to configured (#38) (782b8a6)
  • chore: remove legacy keychain and brand migration code (#39) (5e2a88b)
  • ci: enforce strict type-checking and ban Any in sources (#41) (6aedf67)
  • refactor: enforce minimal, why-only comments — codify the rule, then apply it everywhere (#42) (953d16b)
  • refactor: update README description and clarity (#43) (5934c6e)

Full Changelog: v0.3.1...v0.4.0

Filbert 0.4.0

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: Filbert-0.4.0-arm64.dmg
  • SHA-256: 19a24822b252d036726e376fbb6773bfb43a74fa3a07bddf86e9e414d8aa5551

Install

  1. Mount the DMG and drag Filbert to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click Filbert in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/Filbert.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.3.1

Choose a tag to compare

@victorhqc victorhqc released this 23 Jul 22:16
0e39ab5

Overview

Cursor users can now remove the Cursor provider from the popover. The Settings "Remove Helper" action clears filbert's stored Cursor credentials instead of throwing an error.

✨ Features

  • Cursor provider now responds to the "Remove Helper" action, clearing its imported credentials so the provider leaves the popover.

📝 Changes since v0.3.0

  • feat(cursor): add credential removal via removeHelper (#37) (0e39ab5)

Full Changelog: v0.3.0...v0.3.1

Filbert 0.3.1

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: Filbert-0.3.1-arm64.dmg
  • SHA-256: f933df0c0feab00114c7b280eca85b21d40fc2c0d7221b8c9c3d5b330845dbd2

Install

  1. Mount the DMG and drag Filbert to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click Filbert in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/Filbert.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.3.0

Choose a tag to compare

@victorhqc victorhqc released this 23 Jul 21:40
1489a7b

Overview

Filbert gets a new Cursor provider, a project rename from AI Usage, and
smarter Keychain handling. Claude Code refreshes are more isolated, and
Keychain prompts no longer fire on every refresh.

✨ Features

  • New Cursor provider tracks subscription and on-demand spend using your
    local Cursor auth tokens — no API key needed.
  • The app is now called Filbert. Your keys, preferences, and Claude Code
    setup migrate automatically on first launch.
  • Claude Code refresh runs in an isolated temp directory, so you won't see
    macOS permission dialogs during usage checks.
  • The Claude Code provider now shows an "Install Claude Code" link in
    Settings for new users.

🐛 Bug Fixes

  • Keychain prompts no longer fire on every Cursor refresh. Tokens are
    imported once into Filbert's vault and refreshed from there.
  • Keychain write failures now show an error in Settings instead of silently
    discarding your API key.
  • Cursor provider now recognizes tokens from the latest Agent CLI Keychain
    layout.

📝 Changes since v0.2.2

  • Fix/permissions (#36) (1489a7b)
  • fix(cursor): support current Cursor Agent keychain layout (#35) (069b702)
  • docs: add screenshots to README and mark widgets as WIP (1bb7e34)
  • feat: add cursor as ai provider (#34) (bead8c4)
  • feat: rename project to Filbert (#33) (faa99b6)
  • feat: restrict Claude Code spawn startup probes (#32) (9ecd578)
  • feat(claude-code): add setup-help link to the Claude Code provider (#31) (c9e6015)
  • docs: rewrite README for clarity and add Conventional Commits guide (3f37c87)
  • docs: update mascot image in README (4542ad5)

Filbert 0.3.0

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: Filbert-0.3.0-arm64.dmg
  • SHA-256: 25775e677c381ec13b684b9cc77fd4d5489dee296b51df15133b9d76079c9b23

Install

  1. Mount the DMG and drag Filbert to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click Filbert in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/Filbert.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.2.2

Choose a tag to compare

@victorhqc victorhqc released this 22 Jul 21:55
6c08126

Overview

The v0.2.1 DMG linked against the macOS 14 SDK even though the code targeted macOS 26. This release moves CI to the macos-26 runner so the shipped binary links against the correct SDK. On macOS 26, the popover now uses the correct material and the menu bar window resizes when a provider expands.

🐛 Bug Fixes

  • The DMG binary now links against the macOS 26 SDK, fixing the popover appearance and window resizing on macOS 26.

📝 Changes since v0.2.1

  • fix: bump deployment target and CI runners to macOS 26 (#30) (6c08126)

Full Changelog: https://github.com/victorhqc/ai-usage/compare/v0.2.1...v0.2.2


AI Usage 0.2.2

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: AI-Usage-0.2.2-arm64.dmg
  • SHA-256: 51a7f143a36ed553fcf1ac264c545081829f01a0c9a8131d10b60beff582b280

Install

  1. Mount the DMG and drag AI Usage to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click AI Usage in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/AI Usage.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.2.1

Choose a tag to compare

@victorhqc victorhqc released this 22 Jul 21:31
4d054bd

Overview

This patch fixes the DMG-packaged build. The relink step was stamping the wrong
SDK version into the binary, which caused visual differences and a broken
popover compared to swift run. The script now exports SDKROOT so the linker
uses the correct SDK.

📝 Changes since v0.2.0

  • fix(build): set SDKROOT for relink step in build-dmg (#29) (4d054bd)

Full Changelog: https://github.com/victorhqc/ai-usage/compare/v0.2.0...v0.2.1


AI Usage 0.2.1

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: AI-Usage-0.2.1-arm64.dmg
  • SHA-256: 9b6406aa034d0df5fd6c30bd2cbc697dd3cdb2b38fa343edca1eddb087bd46ac

Install

  1. Mount the DMG and drag AI Usage to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click AI Usage in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/AI Usage.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.2.0

Choose a tag to compare

@victorhqc victorhqc released this 22 Jul 20:51
3aa0f9b

Overview

This release adds three new features (Vintage Mac icon, OpenAI Codex provider, collapsible provider cards), a full Settings visual refresh, and fixes for multiple keychain prompts and WCAG color contrast.

✨ Features

  • Vintage Mac icon. An opt-in menu-bar mode that replaces the usage ring with a Happy/Neutral/Sad Mac pixel face, tiered by your usage thresholds. Toggle it in Settings → Appearance.
  • OpenAI Codex provider. Track Codex CLI subscription usage alongside other providers. The provider talks to the local codex binary — no API keys or network calls needed.
  • Collapsible provider cards. Each provider in the popover is now a card with a logo badge and chevron. Collapse secondary providers to scan all usage at a glance without scrolling.
  • Settings visual refresh. The Settings window now uses the same card-based layout as the popover, with provider badges, rounded surfaces, and consistent spacing. The window is resizable with a minimum size of 520×420.

🐛 Bug Fixes

  • Single keychain prompt. Previously each provider triggered its own keychain-access prompt. Now all API keys live in one keychain item, so you see one prompt regardless of how many providers are configured.
  • WCAG AA color contrast. Tier colors (green/orange/red) now meet WCAG AA contrast ratios in both light and dark mode. Balance-threshold controls moved from the Providers tab to the Appearance tab, and refresh buttons moved to the top-right of each provider card.

📝 Changes since v0.1.0

  • feat(core): consolidate keychain to single item for single auth prompt (#28) (3aa0f9b)
  • feat: refresh Settings with popover-derived card visuals (#27) (a49ea7e)
  • feat: make each provider section collapsible with a logo badg (#26) (c046a14)
  • feat: add OpenAI Codex provider with CLI-based usage tracking (#24) (3805a7b)
  • Feat/vintage mac icon (#23) (b70a0a5)
  • docs: reorder badges and mascot in README (1fa249e)
  • refactor: polish cosmetic issues across popover and Settings (#22) (154b0f1)

Full Changelog: https://github.com/victorhqc/ai-usage/compare/v0.1.0...v0.2.0


AI Usage 0.2.0

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: AI-Usage-0.2.0-arm64.dmg
  • SHA-256: becc5b8eccc01c827b9ab724f0a30f449755cc71639e842cfc4df1dbde822927

Install

  1. Mount the DMG and drag AI Usage to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click AI Usage in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/AI Usage.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.

v0.1.0

Choose a tag to compare

@victorhqc victorhqc released this 21 Jul 22:29
c5d5048

Overview

The first release of AI Usage — a macOS menu-bar app that tracks your AI provider usage at a glance. Monitor z.ai quotas, Claude Code session limits, and DeepSeek prepaid balances from the menu bar. Each provider refreshes independently every 5 minutes, and the menu-bar icon shows your top provider's live status as a ring.

✨ Features

  • Three providers. z.ai (token usage + web-tool calls), Claude Code (session/weekly limits, no API key needed), and DeepSeek (prepaid balance with configurable low-balance alerts).
  • Live menu-bar ring. A dynamic ring + percentage replaces the static icon, showing the top provider's usage without opening the popover.
  • Usage bars. Horizontal color-coded bars (green/orange/red) for every quota line, making usage scannable at a glance.
  • Peak-hours panel. z.ai's GLM Coding Plan multiplier shown inline with timezone-aware labels so you know when rates are highest.
  • Provider ordering. Drag and drop providers in Settings to set your preferred popover order. Survives restarts.
  • Quiet refresh. Last-known data stays visible during refresh — no flicker. The Refresh icon animates while fetching, and errors appear as a non-blocking indicator.
  • Multi-provider settings. A dedicated Settings window with per-provider API keys, base URL overrides for proxy routing, and balance threshold controls for DeepSeek.
  • Four locales. English, Spanish (Spain), Spanish (Mexico), and German.
  • App icon. A proper Dock and Notification Center icon, plus mascot branding.

🐛 Bug Fixes

  • Release builds no longer crash with "could not load resource bundle" — the build script patches SPM's resource accessor to find bundles inside Contents/Resources/.
  • The z.ai peak-hours label now converts Shanghai (UTC+8) hours to your local timezone instead of showing raw UTC+8 times.
  • The peak-hours block re-evaluates on manual refresh so the peak/off-peak status stays current.
  • SPM no longer regenerates the patched resource accessor during the relink step of release builds.
  • The chflags uchg approach for freezing accessors (which failed on GitHub Actions runners) is replaced with a direct swiftc command replay from the llbuild manifest.

📝 Changes

  • feat: add agents, skills, and project documentation (574e3e2)
  • ci: add validation-gate workflow and spec (f549f68)
  • feat: bootstrap project (#1) (371842a)
  • feat: z.ai provider (#2) (445822b)
  • feat: settings view (#3) (834afca)
  • feat: add usage bars, peak block, and icon refresh (#4) (7acd946)
  • feat: add Spanish and German localizations (#5) (c975e8f)
  • feat: claude code (#6) (76c5d73)
  • Update README provider status and Claude setup (#7) (597b2a8)
  • fix: claude code (#8) (84e04d7)
  • UX improvements: quiet refresh, animated icon, cleaner popover footer (#9) (1031e67)
  • Add DeepSeek prepaid balance monitoring (#10) (b011c83)
  • fix: peak-hour time label for ZAI's Shanghai time zone (#11) (6e002f8)
  • fix: force PeakHoursBlock re-evaluation on refresh (#12) (5d4168b)
  • refactor: decouple peak hours block from ZAI provider (#13) (f01828f)
  • feat: add provider ordering settings with drag-and-drop (#14) (4139075)
  • feat: add live status ring to menu bar (#15) (6d98458)
  • docs: add CONTRIBUTING.md and update README (#16) (52987b1)
  • feat: add app icon and mascot branding assets (#17) (4a27d3c)
  • feat: automate unsigned DMG builds triggered by GitHub Release publish events (#18) (b480f05)
  • fix: patch resource bundle accessor to load from Contents/Resources/ (#19) (7a908ba)
  • feat: freeze resource accessor patch during relink (#20) (67a49aa)
  • fix: replay SPM compile commands instead of using chflags (#21) (c5d5048)

AI Usage 0.1.0

Unsigned macOS build (Apple Silicon). Direct distribution, ad-hoc signed.

  • DMG: AI-Usage-0.1.0-arm64.dmg
  • SHA-256: 2f057126d76c0aaec039ad61ddffff1db85605f47f1b5e98c817c0c80fd6de2a

Install

  1. Mount the DMG and drag AI Usage to /Applications.
  2. On first launch, macOS Gatekeeper will block the app because it is
    unsigned. Do one of:
    • Right-click AI Usage in /Applications → Open → confirm the
      prompt. Only needed once.

    • Or run this in Terminal:

      xattr -cr '/Applications/AI Usage.app'

Why unsigned?

This is a transitional state. The moment an Apple Developer Program
membership is configured, releases automatically become signed and
notarized with no action on your part.