Commit graph

258 commits

Author SHA1 Message Date
iamtoruk
bfff986b26 Hide console window when spawning CLI on Windows 2026-04-29 18:06:35 -07:00
iamtoruk
acad48a8d6 Fix dark mode dropdown: style select/option elements explicitly for WebView2 2026-04-29 17:56:04 -07:00
iamtoruk
5e1ad15707 Keep app alive in background when popup is hidden, like macOS menubar 2026-04-29 17:26:27 -07:00
iamtoruk
e854d23a18 Dark theme for native select dropdowns via color-scheme 2026-04-29 17:25:08 -07:00
iamtoruk
614a0bbf9f Dark-aware thin scrollbar styling 2026-04-29 17:24:30 -07:00
iamtoruk
bd9e09cf0e Transparent borderless window with floating popover and rounded corners 2026-04-29 17:22:44 -07:00
iamtoruk
1609f2bd4b Fix transparent popup background in light mode 2026-04-29 17:22:08 -07:00
iamtoruk
3993ee623d Add dark/light theme toggle via tray right-click menu 2026-04-29 17:20:26 -07:00
iamtoruk
6e958b02ba Flame tray icon with concave base 2026-04-29 17:15:51 -07:00
iamtoruk
a893d303f5 Clean single-color wide flame tray icon 2026-04-29 17:13:49 -07:00
iamtoruk
8f19366565 Flame tray icon, close popup on tray re-click, fix tooltip token values 2026-04-29 17:11:26 -07:00
iamtoruk
5f8f4ef0eb Fix popup: close on focus loss, taskbar offset, polished footer buttons 2026-04-29 17:03:03 -07:00
iamtoruk
6c37e45cf8 Use config-created tray icon, configure events programmatically 2026-04-29 16:52:50 -07:00
iamtoruk
1348a4e23a Fix tray icon: load icon explicitly, remove config-based tray to avoid conflict 2026-04-29 16:29:19 -07:00
iamtoruk
8b6119639c Fix tray click: handle double-click, show before position, clear stale cache 2026-04-29 16:24:42 -07:00
iamtoruk
25f8b40a7b Debug: show popup on startup to verify window rendering 2026-04-29 16:21:35 -07:00
iamtoruk
15d0d3a00d Fix popup positioning: pass tray click coords, open above taskbar on Windows 2026-04-29 16:08:13 -07:00
iamtoruk
2f16b22d7f Remove cost text from system tray, show icon only with click-to-toggle 2026-04-29 15:59:34 -07:00
iamtoruk
3139b2c3af fix(desktop): gate flock/mode behind cfg(unix) for Windows compatibility 2026-04-29 15:48:55 -07:00
iamtoruk
af44848af2 fix(desktop): add missing CSS classes, fix longest streak to iterate calendar days, fix insight pill padding 2026-04-29 15:23:44 -07:00
iamtoruk
1b6f2f9946 feat(desktop): extract hero/period components, add NZD + export, wire final layout with todayPayload 2026-04-29 15:10:18 -07:00
AgentSeal
864a7e29a1 feat(desktop): add findings tips, collapsible activity, loading overlay, empty state, star banner 2026-04-29 15:05:39 -07:00
AgentSeal
026795cd34 feat(desktop): add insight modes — trend chart, forecast, pulse tiles, and stats grid
Adds InsightPills mode switcher and four insight panels: 19-day bar chart with hover
tooltips (TrendInsight), month-to-date + projection with prior-month delta (ForecastInsight),
three efficiency tiles for cache hit / 1-shot / cost-per-session (PulseInsight), and a
2-column stats grid with streaks and lifetime total (StatsInsight). Wired into App.tsx
with an insight-area section between period tabs and the activity section.
2026-04-29 14:24:39 -07:00
iamtoruk
e2ebdc92e4 Add UTC-based date helpers for period calculations 2026-04-29 14:13:03 -07:00
iamtoruk
d61ea56b3e Add collapsible models section with bar chart and token summary 2026-04-29 14:12:24 -07:00
iamtoruk
637c88a86d Add dynamic agent tab strip with per-tab cost and 7-provider support 2026-04-29 14:09:39 -07:00
iamtoruk
7206638a7d Add payload cache with 5-minute TTL and concurrent fetch guarding 2026-04-29 14:07:44 -07:00
AgentSeal
a05dabf12b feat(desktop): Windows MSI build + tray + CLI discovery
Windows-specific pieces that were stubbed or missing:

- icon.ico multi-resolution (16/24/32/48/64/128/256) so the MSI bundler
  and the Windows taskbar/installer get a proper app icon. Generated from
  icons/icon.png with ImageMagick; also listed in tauri.conf.json.
- cli.rs defaults program to 'codeburn.cmd' on Windows because npm installs
  a cmd shim, not an .exe, and std::process::Command does not guarantee
  PATHEXT resolution for extensionless names.
- cli.rs is_safe_arg now accepts '\\', ':', '(', ')' on Windows so a user
  supplied CODEBURN_BIN like C:\\Users\\...\\codeburn.cmd is not rejected.
  These are not shell metacharacters in a direct-argv spawn; we never
  invoke sh -c or cmd /c with string interpolation.
- spawn_in_terminal on Windows now passes an explicit empty title to
  'start' so the program name is not eaten as the window title.
- release-desktop-windows.yml mirrors the Linux release workflow on
  windows-latest. Triggered by 'win-v*' tag or workflow_dispatch. Caches
  Cargo, runs 'npm run tauri build', uploads .msi/.exe to a GitHub Release
  (or an artifact on manual runs).

Also drops the AgentSeal/codeburn URLs that pre-date the getagentseal org
rename so new pulls hit the canonical URL instead of the 301.
2026-04-18 15:52:22 -07:00
AgentSeal
c179118aa6 merge: bring main into Windows menubar work
Picks up all 0.7.3 npm fixes, mac-v0.7.3-0.7.5 menubar releases,
semgrep CI guard (#78), --from/--to date filtering (#80), org rename
to getagentseal (#97), and docs catch-up (#99).

# Conflicts:
#	src/menubar-installer.ts
2026-04-18 15:48:59 -07:00
AgentSeal
82df214958
docs: cover --from/--to, avgCostPerSession, and semgrep guard (#99)
Some checks are pending
CI / semgrep (push) Waiting to run
README gains a --from/--to example in the Usage block, a dedicated
'Date range filtering' subsection, and a note that JSON projects[]
now includes avgCostPerSession.

CHANGELOG opens an Unreleased section crediting @lfl1337 for PRs #78
and #80. Flags the projects.csv column-order shift (Avg/Session now
between Cost and Share) so consumers parsing by position read by
header instead.

Co-authored-by: AgentSeal <hello@agentseal.org>
2026-04-18 15:45:45 -07:00
Ninym
c634b10560
feat(report): add --from/--to date range filtering and avgCostPerSession (#80)
* test(cli): failing tests for parseDateRangeFlags helper

* feat(cli): add parseDateRangeFlags helper with local-time dates

* feat(report): add --from/--to date range filtering

* feat(report): add avgCostPerSession to JSON report and CSV/JSON export
2026-04-18 15:11:33 -07:00
Ninym
5932a273a1
chore(ci): add semgrep guard against prototype pollution regressions in provider hot paths (#78)
* chore(ci): add semgrep rule no-bracket-assign-on-literal-object-map

* chore(ci): add workflow running semgrep bracket-assign guard on push/PR

* fix(parser): use Object.create(null) for categoryBreakdown map

* chore(ci): expand semgrep rule to cover ||, ??=, and if-guard variants

* chore(ci): limit push trigger to main and add semgrep --strict

* chore(ci): use jq to enforce finding count (--error unreliable in semgrep 1.x)
2026-04-18 15:10:24 -07:00
AgentSeal
a031c8d32d
chore: point repo URLs at getagentseal org (#97)
Add package.json repository/bugs/homepage fields. Swap hardcoded
AgentSeal/codeburn URLs to getagentseal/codeburn across README,
mac README, macOS menubar star banner, and the menubar installer's
release-API endpoint. 301 redirects keep old URLs working, but
canonical links now point at the current org.

Co-authored-by: AgentSeal <hello@agentseal.org>
2026-04-18 14:55:44 -07:00
AgentSeal
af3676a2b1
Merge pull request #95 from getagentseal/fix/trend-tooltip-per-provider
fix(mac): show correct cost in trend tooltip for per-provider views
2026-04-18 13:41:49 -07:00
AgentSeal
94240f5341 fix(mac): show correct cost in trend tooltip for per-provider views
The trend chart tooltip always displayed `bar.tokens` in its header,
which is zero for provider-filtered history (the CLI only carries
per-provider cost+calls in the daily cache, not tokens). Result: when
you selected Claude/Codex/Cursor/Pi, hovering a bar showed $0.00 even
on days with real spend.

The trend chart's main metric already falls back to cost when tokens
are zero. Pass that same metric value through to the tooltip so both
stay consistent.

Also removed the misleading "No model breakdown available" fallback
line. For provider-filtered views the per-model breakdown legitimately
doesn't exist in the payload, so the tooltip now just shows date +
cost without the error-sounding message.
2026-04-18 13:18:11 -07:00
AgentSeal
70f47f8d9e
Merge pull request #94 from getagentseal/fix/menubar-today-cache-staleness
fix(mac): keep (today, all) cache fresh for menubar title and tab labels
2026-04-18 13:03:07 -07:00
AgentSeal
7ee8b679f9 fix(mac): keep (today, all) cache fresh for menubar title and tab labels
The refresh loop previously skipped `refreshQuietly(.today)` when the
user was already viewing the Today period. That guard meant while the
user was on (today, claude) or any other non-.all provider, the
(today, all) cache went stale. The menubar title and the agent tab
strip both read from that cache, so they displayed stale costs while
the hero section (which reads the currently-viewed payload) showed
the correct fresh value.

Remove the guard so the (today, all) cache refreshes every cycle
regardless of the currently selected period/provider.

Shipped as mac-v0.7.4.
2026-04-18 12:58:50 -07:00
AgentSeal
8ee1f38f86
Merge pull request #92 from AgentSeal/chore/reset-version-to-0.7.3
chore: reset version to 0.7.3 to match published npm
2026-04-18 09:57:52 -07:00
AgentSeal
c83a12efed chore: reset version to 0.7.3 to match published npm 2026-04-18 09:54:03 -07:00
AgentSeal
476b3c51ee
Merge pull request #91 from AgentSeal/revert/remove-npm-oidc
revert: remove npm OIDC publish workflow
2026-04-18 09:53:53 -07:00
AgentSeal
9ac2144950 revert: remove npm OIDC publish workflow
Three consecutive failed publish attempts on a live repo are not
acceptable. Reverting to manual `npm publish` from the laptop, which
has always worked. OIDC can be revisited later in a staging
environment, not on the production package.
2026-04-18 09:51:58 -07:00
AgentSeal
c62a1cf21f
Merge pull request #90 from AgentSeal/chore/bump-0.7.4-rc.2
chore: bump to 0.7.4-rc.2
2026-04-18 09:47:25 -07:00
AgentSeal
35d4d32955 chore: bump to 0.7.4-rc.2 for Node 24 OIDC retry 2026-04-18 09:47:21 -07:00
AgentSeal
ec130037f5
Merge pull request #89 from AgentSeal/fix/node-24-for-oidc
fix(ci): use Node 24 for npm OIDC trusted publishing
2026-04-18 09:47:18 -07:00
AgentSeal
4fccca47d2 fix(ci): use Node 24 for npm OIDC trusted publishing
Node 22 on GitHub's hosted runners currently pins to a broken npm
10.9.7 whose internal `promise-retry` module is missing from the
toolcache (runner-images#13883, nodejs/node#62430). Self-upgrading
via `npm install -g npm@latest` crashes before the install can run,
because `@npmcli/arborist` cannot start without that module.

Node 24 LTS bundles npm 11.x natively, which supports OIDC trusted
publishing out of the box (minimum is 11.5.1, per npm docs). Bumping
the runtime lets us delete the fragile upgrade step entirely.

Test: tag `v0.7.4-rc.2` after merge to validate the flow publishes
successfully with provenance.
2026-04-18 09:46:13 -07:00
AgentSeal
27af2ef96a
Merge pull request #88 from AgentSeal/chore/bump-0.7.4-rc.1
chore: bump to 0.7.4-rc.1
2026-04-18 09:36:52 -07:00
AgentSeal
e7f1b33196 chore: bump to 0.7.4-rc.1 for OIDC retry after npm upgrade fix 2026-04-18 09:36:38 -07:00
AgentSeal
679363a25c
Merge pull request #87 from AgentSeal/fix/npm-version-for-oidc
fix(ci): upgrade npm to 11.5.1+ for OIDC trusted publishing
2026-04-18 09:36:36 -07:00
AgentSeal
832dd4ada1 fix(ci): upgrade npm to 11.5.1+ for OIDC trusted publishing
Node 22 ships with npm 10.x, which does not know how to exchange the
GitHub OIDC id-token for a short-lived npm token. Without this upgrade,
the publish step silently falls back to the empty NODE_AUTH_TOKEN that
setup-node writes to .npmrc, and the registry returns 404.

First test publish (v0.7.4-rc.0) failed at exactly this point, even
though provenance signing via sigstore succeeded, confirming the OIDC
handshake with GitHub was fine and only the npm-side auth was broken.

Fix: `npm install -g npm@latest` before the publish step. Adds ~5s to
runtime.
2026-04-18 09:33:52 -07:00
AgentSeal
bed772b6a5
Merge pull request #86 from AgentSeal/chore/bump-0.7.4-rc.0
chore: bump to 0.7.4-rc.0 for OIDC test publish
2026-04-18 09:27:05 -07:00