codeburn/extensions/gnome-shell
AgentSeal 6358100d3d fix(extensions): period switching and currency conversion on GNOME
Period bug:
_refresh() returned early when a previous fetch was still in flight, so
clicking a new period tab while the initial load was running silently
dropped the second click. Swap the loading-guard for a generation counter:
every refresh increments a counter, and only the callback whose generation
matches the latest value applies the result. Older responses are dropped,
newer ones win.

Currency bug:
codeburn status --format menubar-json is a raw USD payload; the CLI does
not convert it. The popup was only changing the symbol prefix, not the
values. Fetch the USD->target rate from Frankfurter via Soup and apply it
in formatCost(). Rate is cached per-session so tab switches don't hit the
network; on currency change we kick off a fresh fetch (or reuse the cached
rate) and re-render with the new multiplier.

Other small fixes:
* Show a single-provider tab row (when exactly one provider is installed)
  instead of hiding it, so the user still sees which agent the numbers
  are for.
* Activity bar chart track is now a BoxLayout so the fill width takes
  effect; previously every bar rendered as 100% because the St.Widget
  track stretched its only child.
* Findings CTA no longer runs labels together ("findingssave"). Adds
  8px spacing between count and savings.
2026-04-18 05:21:09 -07:00
..
codeburn@agentseal.org fix(extensions): period switching and currency conversion on GNOME 2026-04-18 05:21:09 -07:00
README.md feat(extensions): add GNOME Shell extension for native panel feel 2026-04-18 04:06:44 -07:00

CodeBurn GNOME Shell extension

Native GNOME panel button that shows today's AI coding spend with a click-to-open popover, matching the feel of Ubuntu's Quick Settings menu.

This is an alternative to the cross-platform Tauri tray app in ../desktop/. Use this on GNOME for the most native UX. The Tauri app stays the right choice for KDE, Unity, wlroots compositors, Windows, and headless systems.

Requirements

  • GNOME Shell 45, 46, 47, or 48 (Ubuntu 22.04 LTS, 24.04 LTS, and Fedora 39+)
  • codeburn CLI on PATH (npm install -g codeburn)

Install (from source, local user)

cp -r extensions/gnome-shell/codeburn@agentseal.org ~/.local/share/gnome-shell/extensions/
gnome-extensions enable codeburn@agentseal.org

Then restart GNOME Shell so the extension loads:

  • X11: press Alt + F2, type r, press Enter.
  • Wayland: log out and log back in (GNOME on Wayland has no in-session shell restart).

What it shows

Panel button:

  • 🔥 icon
  • Today's cost (e.g. $24.73)

Popup menu:

  • Header: period + cost + call count + session count
  • Top 5 activities (Coding, Debugging, Testing, etc.) with per-activity cost and turn count
  • Optimize findings count with potential savings (if any)
  • Refresh and Open Full Report actions

Data refreshes every 60 seconds. Right-click the panel button to open the default panel context menu.

Uninstall

gnome-extensions disable codeburn@agentseal.org
rm -rf ~/.local/share/gnome-shell/extensions/codeburn@agentseal.org

Development

Run a nested shell to iterate without restarting your session (X11 only):

dbus-run-session -- gnome-shell --nested --wayland

Tail the extension log:

journalctl -f -o cat /usr/bin/gnome-shell

The extension uses the GNOME 45+ ESM-based extension API (import + Extension class). It will not load on GNOME 44 or earlier.