1715 Commits

Author SHA1 Message Date
iamtoruk fee06a7e54 feat(app): Kimi Code live quota on the Plans page (#1136)
Ports the menubar's Kimi flow to the Electron quota module: read-only
~/.kimi-code/credentials (KIMI_CODE_HOME honored), api.kimi.com usages
snapshot, terminal expired-login state that never refreshes the CLI's
short-lived token, 5-hour/weekly window mapping with over-limit clamp,
membership plan label, and the standard per-provider Settings toggle.
desktop-v0.9.21
2026-08-24 12:28:32 -07:00
iamtoruk 908a2e1a1d feat(app): period payloads persist for the session and revalidate behind an instant paint
The renderer memo was an LRU capped at 8-24 entries, so cycling periods
evicted payloads and returning to one forced a skeleton plus a 1.5-6s
recompute. The memo is now one latest payload per key for the app
session: a revisited period paints its cached numbers in the same
commit, skips the CLI entirely when the payload is under 30s old, and
otherwise revalidates behind the painted data and swaps in place.
Failed revalidates keep last-good data with the existing error surface;
first visits keep the loading state. (#1135 part 1)
2026-08-24 11:56:37 -07:00
iamtoruk 195bb9128e chore: release 0.9.21
Version 0.9.21 across CLI, desktop app, and Windows menubar; refreshed
LiteLLM pricing snapshot and fallback (catches the 2026-08-24 OpenAI
GPT-5.6 cut and DeepSeek v4 repricing mid-rollout, #1134 tracks
re-tightening); CHANGELOG stamped for 0.9.21; README release links to
0.9.21. Snapshot-pinned model tests updated to current catalog truth.
mac-v0.9.21 v0.9.21 windows-v0.9.21
2026-08-24 11:16:55 -07:00
iamtoruk 42e39ecff8 test(menubar): align Gemini retired-tier expectation with the em-dash-free message 2026-08-24 10:08:33 -07:00
Resham Joshi e0a12de542 Merge pull request #1133 from getagentseal/feat/menubar-quota-parity
Menubar: Gemini/Copilot/Antigravity live quota, CodexBar-style Settings, brand refresh
2026-08-24 10:02:41 -07:00
iamtoruk 44027ad11f polish(menubar): pane-named window title, single tagline, version dedupe, em-dash sweep
Settings window titles itself after the visible pane like System
Settings; the popover subtitle adopts the website tagline (Your AI
Bill, Itemized); About stops printing dev (dev) when version and build
match; remaining user-facing em-dashes across popover and service
strings become sentence breaks.
2026-08-24 09:48:16 -07:00
iamtoruk 5783d1a6ff polish(menubar): solid flame silhouette for the About sidebar row
The 0101-detail flame collapses into a faint smudge at 20px; the row
now uses a solid silhouette cut from the website flame's own outline.
2026-08-24 09:43:41 -07:00
iamtoruk c6ba1d5189 polish(menubar): brand and window refinements from live review
Status item returns to the SF flame (the 0101 mark blurs at menubar
size); About hero shows the full-color binary flame and the About
sidebar row its bare white template, no chip; footer credits Resham
Joshi (iamtoruk) / AgentSeal, MIT; About tagline matches the website
(Your AI Bill, Itemized); UI copy drops em-dashes (currency rows use
middots); Settings window is resizable and fullscreen-capable and
recenters when restored off-screen.
2026-08-24 09:41:53 -07:00
iamtoruk c595cf5589 feat(menubar): animated flame-gradient wordmark matching the website
Popover header now renders the full CodeBurn wordmark filled with the
site's .flame-text gradient (#ff6a00 > #ffda44 > #e8553a > #ff8c00,
300% width, 3s ease sweep). Static gradient under Reduce Motion.
2026-08-24 09:40:28 -07:00
iamtoruk 0213f7e9f8 feat(menubar): live Antigravity quota — local language-server probe, Settings pane, Plan tab
Ports the desktop app's Antigravity flow: ps+lsof discovery of the
local language server, Connect-RPC quota/status probes over loopback
HTTPS with the self-signed-cert trust override scoped strictly to
127.0.0.1, disconnected-state UX when the app is not running. Also
swaps all provider sidebar marks to the official LobeHub icon set.
2026-08-24 09:40:04 -07:00
iamtoruk 8908bce69e feat(menubar): CodexBar-faithful Settings shell, binary-flame status icon, resource-bundle packaging
Settings window now replicates CodexBar's System Settings layout
(880x620 fullSizeContentView window, transparent titlebar, fixed 260pt
sidebar, SF Symbol gradient chips, native search field, grouped About
pane with Updates/Links). Status item renders the 0101 flame template
with severity tints. package-app.sh ships the SwiftPM resource bundle,
fixing the Bundle.module launch crash. Sidebar layout modeled on
CodexBar (MIT, steipete/CodexBar).
2026-08-24 09:22:21 -07:00
iamtoruk 831754b8aa feat(brand): app icon becomes the website's binary 0101 flame, background-free 2026-08-24 09:11:00 -07:00
iamtoruk 826342179e feat(menubar): live GitHub Copilot quota — service, Settings pane, Plan tab
Ports the desktop app's Copilot flow (editor-plugin OAuth token from
~/.config/github-copilot, copilot_internal/user snapshot) read-only,
with github.com-host preference and UI-string sanitization.
2026-08-24 09:10:09 -07:00
iamtoruk 71771a41a4 feat(menubar): System Settings-style sidebar Settings with provider logo rows
Replaces the tab strip with a NavigationSplitView shell: search field,
General/About tile rows, and a data-driven Providers section whose real
logo marks render gray at rest and accent-tinted on hover, with green
connected dots and an N-on counter. Bundles template icon assets.
2026-08-24 08:51:07 -07:00
iamtoruk 05fb99d9af feat(menubar): live Gemini quota — service, Settings pane, popover Plan tab
Ports the desktop app's Gemini Code Assist quota flow (loadCodeAssist
tier + retrieveUserQuota buckets, ~/.gemini/oauth_creds.json read-only,
in-memory-only refresh) to the menubar. Plan tab and empty-state gating
now treat Gemini as plan-capable.
2026-08-24 08:43:47 -07:00
Resham Joshi 485b2c5721 Merge pull request #1128 from avs-io/codex/post-1126-project-privacy
fix(sync): trust only proven outbound project metadata
2026-08-24 07:50:06 -07:00
Resham Joshi 991ee6fe35 Merge pull request #1131 from getagentseal/fix/1130-range-filter
fix(daily-cache): ranged parses never write days outside their range
2026-08-24 07:46:40 -07:00
iamtoruk 4e7149d2d5 test(sync): the unproven-provenance fixture now asserts ai.project omission
The #1126 test pinned basename presence; under #1128's fail-closed
provenance the same fixture (no trusted provider-recorded cwd) correctly
omits the field entirely — stronger privacy, same zero-paths guarantee.
The positive basename-on-the-wire case is covered by
sync-project-provenance.
2026-08-24 07:45:35 -07:00
iamtoruk d098628b93 Merge remote-tracking branch 'origin/main' into codex/post-1126-project-privacy 2026-08-24 07:44:10 -07:00
Aditya Vikram Singh cc721f00a7 fix(sync): address project privacy review 2026-08-24 20:09:27 +05:30
iamtoruk 99d9ec89d2 fix(daily-cache): ranged parses never write days outside their range
A turn anchored before the range start survives range slicing whole, so
the aggregator can emit a residue day the parse never covered (#1130,
found in #1127's root-cause work). The merge guards already defuse the
overwrite; this stops the residue from reaching durable history at all.
Applied at both ranged call sites (re-derive and gap); the aggregator
and slicer semantics are untouched — whole-corpus callers still
aggregate undated parses freely.
2026-08-24 07:28:43 -07:00
iamtoruk fe89385af8 docs: mark the Omarchy plugin community-maintained (#1125 follow-up) 2026-08-24 07:16:06 -07:00
Resham Joshi 4176a2f89e Merge pull request #1125 from erzz/docs-add-omarchy-plugin
docs: add Omarchy plugin installation
2026-08-24 07:15:36 -07:00
Resham Joshi 439a72105d Merge pull request #1099 from avs-io/fix/ft002-harness-launcher
fix(doctor): treat Buzz as a launcher, not a second Codex tree
2026-08-24 07:15:28 -07:00
iamtoruk 04cd6d0bf3 Merge remote-tracking branch 'origin/main' into fix/ft002-harness-launcher
# Conflicts:
#	src/doctor.ts
2026-08-24 07:15:08 -07:00
Resham Joshi 1936f6997e Merge pull request #1123 from avs-io/local/943-copilot-credits
feat: Copilot AI Credit plan math from total_nano_aiu
2026-08-24 07:14:04 -07:00
Resham Joshi fe25d52215 Merge pull request #1118 from avs-io/local/1058-orcarouter
Price and label OrcaRouter gateway model ids as the model they route to
2026-08-24 07:13:56 -07:00
Resham Joshi 9476623c77 Merge pull request #1126 from getagentseal/fix/sync-project-basename
fix(sync): wire truth — no filesystem paths in ai.project, billable output tokens
2026-08-24 07:12:23 -07:00
Resham Joshi 06c0072ea3 Merge pull request #1129 from getagentseal/fix/1127-daily-cache-guards
fix(daily-cache): never-lose guards — degraded gap parses, residue-only days, doctor cache health
2026-08-24 06:46:37 -07:00
iamtoruk b0a42172fb fix(daily-cache): never-lose guards for degraded parses and residue-only days
Diagnosed via #1127. Three guards:

- The gap-fill path no longer overwrites cached days wholesale: a
  complete parse wins per (date, provider) through the same guarded
  merge the re-derive path uses; a partial parse only fills days and
  slices the baseline lacks. Previously a parse degraded by the
  refresh lock (menubar running) could replace a good day with its
  undercount permanently. The gap path also stops dropping
  pendingRederive.
- A day whose only content is turn-anchored residue (a midnight-
  straddling turn's category counts with zero cost/calls/tokens) is
  never sealed: the watermark pulls back so the next launch re-derives
  it — self-healing for every broken cache in the wild, no version
  bump. Bounded to the settle window and never for the oldest cached
  day.
- codeburn doctor gains a read-only Cache health section listing
  residue-only dates and failed/empty session-cache entries, so the
  next report like #1127 is diagnosable in one command.

Tests: residue-shape pin (day-aggregator), partial-gap cannot shrink a
populated day (fails on the old code), complete-gap parity, watermark
pull-back re-derive.
2026-08-24 06:41:47 -07:00
Aditya Vikram Singh ada8ce2ac4 fix(codex): read a complete session_meta first line
rolloutFileSessionId sliced 8192 bytes then JSON.parse. Production
session_meta first lines are 22-27 KB, so both trees returned
undefined ids and the overlapping nest source was kept. Read up to
the existing 1 MiB first-line cap and parse payload.session_id from
the complete line. Pin billed-A / nest-A / nest-B at 30 KB on the
exported no-arg singleton.
2026-08-24 18:36:25 +05:30
Aditya Vikram Singh 57e897c74a fix(plan): close Copilot nanoAiu twins once per session
foldCopilotSupplementaryTurns will not fold a supplementary twin across
a local-day boundary, so the pair can occupy separate turns. Credit
spend now groups at session scope.
2026-08-24 18:35:59 +05:30
Aditya Vikram Singh 2c87ee3eaa fix(codex): walk billed+nest trees on the no-arg singleton
filterOverlap required an explicit nest path, so export const codex =
createCodexProvider() never deduped. When the resolved dir is a launcher
nest and ~/.codex is a distinct existing tree, discover both and drop nest
sources whose session id is already billed. Unique nest and billed sessions
stay. Soften the Buzz doctor note to a presence heuristic.
2026-08-24 18:15:34 +05:30
Aditya Vikram Singh 33dc05bb90 fix(sync): trust only proven outbound project metadata 2026-08-24 16:05:35 +05:30
iamtoruk 619c17ec2e fix(sync): export billable output tokens, not raw output
Providers that bill reasoning separately from output (the exclusive set)
were under-reported on the wire by exactly their reasoning volume —
measured on a real pilot push: opencode short by 37,848 tokens, the
summed reasoningTokens of the window. Cost was already correct (priced
locally before export). Route ai.output_tokens through
billableOutputTokens, the same correction the display layer took in
PR #1115. Inclusive providers (claude, codex, copilot) are byte-identical.
Span ids derive from dedup keys that carry no token counts, so nothing
re-sends and nothing duplicates.
2026-08-24 02:25:38 -07:00
iamtoruk fcbc28540f fix(sync): never put a filesystem path on the wire as ai.project
Several providers key a project by its sanitized absolute path
("-Users-me-Projects-app"), and sync shipped that verbatim as ai.project
on usage and attribution spans — contradicting docs/sync/README.md's
promise that file paths stay local. Confirmed on real exports.

One choke point after parseAllSessions maps project to the leaf directory
name before either wire path reads it; codeburn yield's local output is
untouched. Never-lose: usage span ids and commit attribution keys carry
no project (unchanged, no re-send); session attribution keys hash the
record, so each already-synced session re-emits once and the receiver
upserts by (org, trace) — replaced, not duplicated. Two directories with
the same leaf name now collapse to one wire project identity; that is
the documented contract, and git.repo still disambiguates.
2026-08-24 02:19:34 -07:00
Resham Joshi e5f02933c4 Merge pull request #1119 from getagentseal/feat/1110-surface-hydration
feat: surface-wide progressive hydration — explicit partiality in the serve payload
2026-08-24 01:34:50 -07:00
iamtoruk 424d71ec02 Merge remote-tracking branch 'origin/main' into feat/1110-surface-hydration
# Conflicts:
#	CHANGELOG.md
2026-08-24 01:30:27 -07:00
Resham Joshi 84c4a973a0 Merge pull request #1120 from getagentseal/fix/1117-menubar-livelock
fix(menubar): no-output watchdog, lock signal cleanup, dead-pid takeover, serve orphan reaping
2026-08-24 01:29:52 -07:00
Sean Erswell-liljefelt 053fa1cd9a docs: add Omarchy plugin installation 2026-08-24 09:21:22 +02:00
Aditya Vikram Singh ee6d614557 merge: rematch #1123 onto main after #1121
Keep both cachedCallToApiCall spreads: nanoAiu from this PR and
supplementaryAccounting / Hermes observation keys from #1121.
2026-08-24 00:01:18 +05:30
Resham Joshi e5e6e59317 Merge pull request #1121 from avs-io/local/916-hermes-ledger
fix(hermes): keep post-finalization session growth on the observation day
2026-08-23 11:15:57 -07:00
Aditya Vikram Singh 82b3b70aaa docs(hermes): record restore wipe-both ledger contract
Owner ruling: state.db restored from backup without wiping the ledger
re-credits regrowth. Wipe both stores or accept the overcount. A
high-water-mark guard is rejected because it would eat 150→0→40 resets.
2026-08-23 23:25:04 +05:30
Aditya Vikram Singh 066e10a3b5 merge(main): rematch #1121 after #1116/#1122
Keep-both CHANGELOG: #916 ledger + #899 probeRoots.
No cache bump.
2026-08-23 21:18:30 +05:30
Aditya Vikram Singh af073bccdd merge(main): rematch #1118 after #1116/#1122 — daily cache v29
#1115 took v28 on main. OrcaRouter pricing takes the next number.
Keep-both CHANGELOG. MIN_SUPPORTED stays 28.
2026-08-23 21:18:07 +05:30
Aditya Vikram Singh 7042048608 fix(codex): dedup nest rollouts by session id on the default factory
Wire defaultLauncherRoots into createCodexProvider(nest) so overlap
filtering is not opts-only. Compare payload.session_id, not basename.
2026-08-23 20:54:21 +05:30
Aditya Vikram Singh 55155c10ed fix(plan): do not double Copilot credits when both twins have nanoAiu
Store-row nanoAiu is still the bill when the JSONL twin has none.
USD plans keep the cost-or-calls retain predicate.
2026-08-23 20:54:21 +05:30
Aditya Vikram Singh 6006811441 docs(hermes): record restore and recovery-horizon ledger contract
state.db restore is out of contract and will overcount. Recovery starts
from the warm-cache seed; historically dropped growth stays dropped.
2026-08-23 20:54:21 +05:30
Aditya Vikram Singh aa1e38016f fix(models): leave orcarouter/auto unpriced and bump daily cache to v28
Sonnet was a guess against a Qwen/Llama flash route. Fusion aliases keep
the 2026-08 live completion-model provenance. Warm days re-derive.
2026-08-23 20:54:21 +05:30
Resham Joshi 7e23ed8083 Merge pull request #1122 from avs-io/local/899-proberoots
feat(doctor): probeRoots for five fixed-location providers (#899 Tier 2, batch 2)
2026-08-23 08:10:18 -07:00