hotsheet 0.17.3 → 0.18.0-beta.3

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
@@ -203,6 +203,22 @@ Requires Claude Code v2.1.80+ with channel support. See [docs/12-claude-channel.
203
203
  <img src="docs/demo-9.png" alt="Claude Channel integration with play button, custom command buttons, and AI-driven workflow" width="900">
204
204
  </p>
205
205
 
206
+ ### Telemetry & Cost Tracking
207
+
208
+ **On by default** (HS-8684 — opt out per project via Settings → Telemetry). Hot Sheet stamps Claude Code's spawn env so its OpenTelemetry exporter posts cost / token / latency events back to a localhost-bound endpoint. The data drives several surfaces:
209
+
210
+ - **Today's cost widget** in the sidebar — total spend across today's Claude prompts in this project, updated as the channel ticks. A `*` superscript reminds Pro / Max subscribers the figure is the API-equivalent cost, not what they actually pay.
211
+ - **Per-project analytics dashboard** gains a **Claude usage** section below the ticket charts: window-total chips (today / week / month / all-time), a cost-over-time chart, cost-by-model donut, per-tool latency histograms, and the 10 most recent prompts — click any row for a timeline drilldown showing every event with its attribute / body JSON.
212
+ - **Cross-project stats page** (header-bar `line-chart` icon, visible when any project has telemetry on) — cost rollup across every loaded project: window-total chips, a by-project stacked cost-over-time chart, sortable cost-by-project table, model donut, and a 7×24 hourly-activity heatmap for the trailing 90 days.
213
+ - **Per-ticket Claude usage** — when you trigger Claude via the channel with an active ticket selected, Hot Sheet prepends an invisible `<!-- hotsheet:ticket=HS-NNNN -->` marker to the prompt so the cost / tokens / wall-clock from that work attribute back to the ticket and appear as a "Claude usage on this ticket" block in the detail panel.
214
+ - **Beta enhanced tracing** — separate toggle wires `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` so each prompt's drilldown switches from a flat event timeline to a parent-child span tree with an inline waterfall chart. New `claude` sessions started after the toggle begin capturing spans.
215
+
216
+ Security model: localhost-bound OTLP receiver + `hotsheet_project` resource-attribute filter — foreign OTLP traffic from other tools on the same machine can't pollute Hot Sheet's tables even if it tries. 30-day default retention via the cleanup sweep; **Clear telemetry data** in Settings wipes the project's rows on demand.
217
+
218
+ <p align="center">
219
+ <img src="docs/demo-13.png" alt="Cross-project telemetry stats page with cost-over-time chart, cost-by-project table, model donut, and hourly activity heatmap" width="900">
220
+ </p>
221
+
206
222
  ### Other AI Tools
207
223
 
208
224
  The worklist works with any AI tool that reads files — Cursor, Copilot, Aider, etc. Each ticket includes its number, type, priority, status, title, and details.
@@ -295,6 +311,10 @@ By default, backups are stored in `.hotsheet/backups/`. To store them elsewhere
295
311
 
296
312
  This can also be changed from the settings panel UI.
297
313
 
314
+ ### Snapshot Protection (on by default)
315
+
316
+ In addition to the timed backups, Hot Sheet keeps a single fresh **atomic snapshot** at `<dataDir>/.hotsheet/snapshot.tar.gz` — written debounced ~2 s after every ticket change plus on graceful shutdown plus on a 120 s safety timer. On launch, if the live database fails an integrity probe (corrupt files, half-flushed write, PGLite crash mid-checkpoint), Hot Sheet **automatically restores from the latest good source** (canonical snapshot → 5-min / hourly / daily backup tier), preserves the corrupt cluster aside, and surfaces a toast. The bound on data loss is "writes since the last snapshot" (clean exit = zero loss); the failure mode is no longer "open an empty DB." Toggle in Settings → Backups.
317
+
298
318
  ### Instance locking
299
319
 
300
320
  Only one Hot Sheet instance can use a data directory at a time. If you accidentally start a second instance pointing at the same `.hotsheet/` folder, it will exit with a clear error instead of risking database corruption. The lock is automatically cleaned up when the app stops.
@@ -458,6 +478,14 @@ The E2E suite carries an error-capture fixture (HS-8435 / HS-8436, `e2e/coverage
458
478
 
459
479
  ---
460
480
 
481
+ ## Sponsor
482
+
483
+ Hot Sheet is free and open source. If it saves you time, consider [sponsoring development on GitHub](https://github.com/sponsors/brianwestphal) — every sponsorship goes directly toward more features and bug fixes.
484
+
485
+ [![Sponsor](https://img.shields.io/badge/Sponsor-brianwestphal-ea4aaa?logo=github-sponsors&logoColor=white)](https://github.com/sponsors/brianwestphal)
486
+
487
+ ---
488
+
461
489
  ## License
462
490
 
463
491
  MIT