@oh-my-pi/omp-stats 15.12.4 → 15.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/CHANGELOG.md CHANGED
@@ -2,28 +2,29 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
- ## [15.12.4] - 2026-06-13
6
-
7
- ### Fixed
8
-
9
- - Fixed the stats dashboard's SQLite init never setting `PRAGMA busy_timeout`, so a concurrent `omp` startup hitting WAL recovery could crash `initDb()` with `SQLITE_BUSY` instead of waiting through it. The busy handler is now installed before `PRAGMA journal_mode=WAL` ([#2421](https://github.com/can1357/oh-my-pi/issues/2421)).
10
-
11
- ## [15.11.0] - 2026-06-10
12
5
  ### Added
13
6
 
14
7
  - Added support for prebuilt npm bundle mode via `PI_BUNDLED`, allowing the stats server to use an embedded dashboard bundle in packaged CLI distributions
15
8
 
9
+ ### Changed
10
+
11
+ - Bundled-model lookups (`getBundledModel`, `GeneratedProvider`) now import from the new `@oh-my-pi/pi-catalog` package instead of the `@oh-my-pi/pi-ai` barrel, which no longer re-exports catalog values
12
+ - The session-sync worker re-enters the host CLI entry (`workerHostEntry()` + `__omp_stats_sync_worker` argv selector) when running inside omp — source, npm bundle, or compiled binary — and keeps loading its own `sync-worker.ts` module directly for standalone `omp-stats`, bun test, and SDK hosts
13
+
16
14
  ### Fixed
17
15
 
16
+ - Dropped `git` from the profanity list so normal repository mentions no longer count as profanity
17
+ - Fixed the stats dashboard's SQLite init never setting `PRAGMA busy_timeout`, so a concurrent `omp` startup hitting WAL recovery could crash `initDb()` with `SQLITE_BUSY` instead of waiting through it. The busy handler is now installed before `PRAGMA journal_mode=WAL` ([#2421](https://github.com/can1357/oh-my-pi/issues/2421)).
18
18
  - Fixed handling of legacy `embedded-client.generated.txt` placeholder content so it is treated as missing archive instead of being decoded into invalid bytes
19
19
  - Fixed ENOENT handling while scanning dashboard source/build directories so missing `client/` or `dist/client` trees no longer crash startup
20
20
 
21
- ## [15.10.11] - 2026-06-10
21
+ ## [15.13.0] - 2026-06-14
22
22
 
23
- ### Changed
23
+ ## [15.12.4] - 2026-06-13
24
24
 
25
- - Bundled-model lookups (`getBundledModel`, `GeneratedProvider`) now import from the new `@oh-my-pi/pi-catalog` package instead of the `@oh-my-pi/pi-ai` barrel, which no longer re-exports catalog values
26
- - The session-sync worker re-enters the host CLI entry (`workerHostEntry()` + `__omp_stats_sync_worker` argv selector) when running inside omp — source, npm bundle, or compiled binary — and keeps loading its own `sync-worker.ts` module directly for standalone `omp-stats`, bun test, and SDK hosts
25
+ ## [15.11.0] - 2026-06-10
26
+
27
+ ## [15.10.11] - 2026-06-10
27
28
 
28
29
  ## [15.1.6] - 2026-05-19
29
30
 
@@ -38,6 +39,7 @@
38
39
  - Fixed incremental `parseSessionFile(path, fromOffset)` losing the active service tier when resuming past a `service_tier_change` entry, so priority OpenAI replies appended after the offset are now credited with `premiumRequests: 1` (regression introduced by 13f59162e which stopped folding priority-tier into per-message premium counts)
39
40
 
40
41
  ## [15.0.1] - 2026-05-14
42
+
41
43
  ### Breaking Changes
42
44
 
43
45
  - Raised the minimum required Bun version to >=1.3.14 in package metadata
@@ -58,6 +60,7 @@
58
60
  - Fixed behavior backfills after failed compiled-binary sync attempts by marking the backfill sentinel only after a successful full sync.
59
61
 
60
62
  ## [14.9.7] - 2026-05-12
63
+
61
64
  ### Breaking Changes
62
65
 
63
66
  - Broke backward compatibility of behavior stats fields by replacing `yellingSentences`/`dramaRuns` with `yelling`/`anguish` and adding `negation`, `repetition`, `blame` in query result types and persisted `user_messages` schema
@@ -109,6 +112,7 @@
109
112
  - Fixed GPT cost reporting by deriving missing OpenAI Codex costs from the model catalog and backfilling existing zero-cost rows.
110
113
 
111
114
  ## [13.6.0] - 2026-03-03
115
+
112
116
  ### Fixed
113
117
 
114
- - Include subtask session files in usage stats ([#250](https://github.com/can1357/oh-my-pi/issues/250))
118
+ - Include subtask session files in usage stats ([#250](https://github.com/can1357/oh-my-pi/issues/250))
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/omp-stats",
4
- "version": "15.12.4",
4
+ "version": "15.13.0",
5
5
  "description": "Local observability dashboard for pi AI usage statistics",
6
6
  "homepage": "https://omp.sh",
7
7
  "author": "Can Boluk",
@@ -37,9 +37,9 @@
37
37
  "fmt": "biome format --write ."
38
38
  },
39
39
  "dependencies": {
40
- "@oh-my-pi/pi-ai": "15.12.4",
41
- "@oh-my-pi/pi-catalog": "15.12.4",
42
- "@oh-my-pi/pi-utils": "15.12.4",
40
+ "@oh-my-pi/pi-ai": "15.13.0",
41
+ "@oh-my-pi/pi-catalog": "15.13.0",
42
+ "@oh-my-pi/pi-utils": "15.13.0",
43
43
  "@tailwindcss/node": "^4.3.0",
44
44
  "chart.js": "^4.5.1",
45
45
  "date-fns": "^4.4.0",
package/src/db.ts CHANGED
@@ -38,7 +38,7 @@ let db: Database | null = null;
38
38
 
39
39
  const BACKFILL_COMPLETE = "complete";
40
40
  const BACKFILL_PENDING = "pending";
41
- const USER_MESSAGES_BACKFILL_KEY = "user_messages_v5";
41
+ const USER_MESSAGES_BACKFILL_KEY = "user_messages_v6";
42
42
  const USER_MESSAGE_LINKS_REPAIR_KEY = "user_message_links_v1";
43
43
  const PRIORITY_PREMIUM_REQUESTS_BACKFILL_KEY = "premium_requests_priority_v1";
44
44
  function shouldResetBackfill(value: string | undefined): boolean {
@@ -776,6 +776,8 @@ export function getCostTimeSeries(days = 90, cutoff?: number | null): CostTimeSe
776
776
  * left those metrics matching nothing in real prose.
777
777
  * - v5: renamed `yelling_sentences` column to `yelling` to match the other
778
778
  * single-word signal columns (profanity, anguish, negation, ...).
779
+ * - v6: dropped `git` from the profanity word list - it collided with the
780
+ * version-control tool name, so existing rows over-counted profanity.
779
781
  *
780
782
  * Existing `messages` rows are unaffected - `INSERT OR IGNORE` keeps them.
781
783
  */
@@ -381,7 +381,6 @@ const PROFANITY: readonly string[] = [
381
381
  "jerk",
382
382
  "jerks",
383
383
  "jerkface",
384
- "git",
385
384
  "gits",
386
385
  "sod",
387
386
  "sodding",