claude-finops 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -318,7 +318,7 @@ agents listed under Multi-agent.
318
318
  server binds to `127.0.0.1` only, but treat the database and any export you
319
319
  generate as sensitive.
320
320
 
321
- **Hide prompts** in the top bar hides prompt text and session titles as dots,
321
+ **Hide prompts** (the eye icon in the top bar) hides prompt text and session titles as dots,
322
322
  for when you share your screen. Session titles fall back to their short id. The
323
323
  setting is remembered in that browser. It only changes what the page shows: the
324
324
  database and exports still contain the full text.
@@ -364,7 +364,8 @@ files on Windows.
364
364
 
365
365
  ## Actions (these change your machine, and only when you click)
366
366
 
367
- - **⟳ Sync** (top bar) re-reads `~/.claude` and swaps in fresh data without restarting.
367
+ - **Sync** (top bar, database icon) re-reads `~/.claude` and swaps in fresh data without restarting.
368
+ The circular-arrow **Reload** next to it only redraws the page from the data already loaded.
368
369
  - **Free models** adds a launcher such as `claude-qwen` in `~/.local/bin` that runs Claude Code
369
370
  on a free model (Ollama locally, or OpenRouter). It lists every step first, and asks before it
370
371
  installs Ollama or downloads a model. Your normal `claude` is unchanged. Edit the list in
@@ -378,7 +379,7 @@ files on Windows.
378
379
  - **Hand over / split** (Running sessions) writes a brief of the session to
379
380
  `~/.claude/finops-handoffs/` and opens fresh session(s) in new terminals, one per sub-task if
380
381
  you list them; it can close the old session (resumable).
381
- - **☰ Recent** (top bar, or press `R`) opens a side panel on any page: running sessions first,
382
+ - **Recent** (clock icon in the top bar, or press `R`) opens a side panel on any page: running sessions first,
382
383
  with Resume, Compact and Stop (Interrupt), then past sessions newest first. Click a session to
383
384
  list its prompts, and click a prompt for its full details. Search matches your prompt text.
384
385
  It covers all dates but keeps the agent and project filters. Close and Force kill stay on
package/finops/api.py CHANGED
@@ -575,6 +575,15 @@ def _notify_update():
575
575
  notify()
576
576
 
577
577
 
578
+ def _open_browser(url):
579
+ # A headless box or SSH session has no browser to open; the printed URL is enough there.
580
+ import webbrowser
581
+ try:
582
+ webbrowser.open(url)
583
+ except Exception:
584
+ pass
585
+
586
+
578
587
  def serve(port=8787, db=DB_PATH, background=None):
579
588
  global A
580
589
  ensure_dirs()
@@ -602,6 +611,9 @@ def serve(port=8787, db=DB_PATH, background=None):
602
611
  from .update import disabled
603
612
  if not disabled():
604
613
  threading.Thread(target=_notify_update, daemon=True).start()
614
+ # The socket is already listening, so the page's first request just waits for
615
+ # serve_forever. Off the main thread: some platforms block while the browser starts.
616
+ threading.Thread(target=_open_browser, args=(f"http://127.0.0.1:{port}",), daemon=True).start()
605
617
  with open(PIDFILE, "w") as fh:
606
618
  fh.write(str(os.getpid()))
607
619
  try:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-finops",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "Local FinOps dashboard for Claude Code: what you used, what it cost, why it cost that much, and what to change. Reads your own transcripts, no API key, no data leaves the machine.",
5
5
  "bin": {
6
6
  "claude-finops": "bin/claude-finops.js"