Changelog

[Unreleased]

[15.1.6] - 2026-05-19

Fixed

  • Fixed omp stats crashing on first session sync in published omp-{linux,darwin,windows}-* binaries with BuildMessage: ModuleNotFound resolving "./packages/stats/src/sync-worker.ts"; the release build script now lists the stats sync, browser tab, and JS eval workers as explicit --compile entrypoints so Bun emits them into bunfs, matching the dev build script and the AGENTS.md worker spawn contract. (#1150)

[15.1.0] - 2026-05-15

Fixed

  • 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)

[15.0.1] - 2026-05-14

Breaking Changes

  • Raised the minimum required Bun version to >=1.3.14 in package metadata

Changed

  • Changed the "Premium Reqs" dashboard card to also include OpenAI priority service-tier requests (serviceTier: "priority"), counting each as 1 premium request alongside GitHub Copilot premium calls. Pre-existing sessions are backfilled on the next omp stats run: a one-shot premium_requests_priority_v1 sentinel wipes file_offsets so every session re-parses, and insertMessageStats now UPSERTs premium_requests (other columns untouched) using the service_tier_change entries already in the session log to retroactively credit priority traffic.

[14.9.9] - 2026-05-12

Added

  • Added separate input-token and output-token totals to the overview dashboard cards.

Fixed

  • Fixed omp stats in compiled binaries by using the serial sync path instead of spawning a raw file-asset worker that cannot import bundled parser code.
  • Fixed behavior backfills after failed compiled-binary sync attempts by marking the backfill sentinel only after a successful full sync.

[14.9.7] - 2026-05-12

Breaking Changes

  • 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

Added

  • Added SyncOptions to syncAllSessions with onProgress and workers to optionally show per-file sync progress and tune parser concurrency
  • Added new frustration behavior metrics (negation, repetition, blame) plus a frustration aggregate in behavior charts, model tables, and summary cards

Changed

  • Changed sync ingestion to parse session files through a worker pool while applying parsed results and database writes on the main thread
  • Changed behavior analysis to strip code blocks, XML/URLs, quoted lines, and placeholders before scoring and to suppress signals on long structured messages
  • Changed dashboard metrics labels and totals to the new signal names, including replacing the old three-signal totals with yelling, profanity, anguish, and frustration
  • Changed sync output to print a live terminal progress indicator while processing session files

Fixed

  • Fixed user-message attribution so assistant model/provider links are backfilled during incremental sync instead of being left unknown
  • Fixed word-boundary regex handling in profanity detection so matching now works as intended in normal prose

[14.9.5] - 2026-05-12

Added

  • Added time range selection options (1h, 24h, 7d, 30d, 90d, All) to the dashboard header and bound them to reloading statistics for the selected window
  • Added a Behavior dashboard page that tracks user yelling (CAPS), profanity, and dramatic punctuation (!!! / ???) per day, with by-model comparisons mirroring the cost page
  • Added a per-model behavior table to the Behavior page mirroring the Models table: sortable rows of CAPS / profanity / drama hits per model with sparkline trend and an expandable per-model breakdown chart
  • Added optional range query parameter support on stats endpoints to retrieve metrics scoped to a requested time window

Changed

  • Changed the Costs dashboard summary to report totals, average per day, and top model for the selected time range instead of a fixed 30-day window and removed the previous-30-day trend comparison
  • Changed behavior metrics ingestion to compute yelling from user message sentence-level uppercase ratios, filtering out short uppercase fragments so the behavior data is attributed to messages more accurately
  • Removed per-chart 14/30/90 day pickers on Costs and Behavior pages so every page obeys the single time-range selector in the header
  • Changed dashboard and stats queries to return data from the selected time window instead of always using all-time aggregates
  • Changed the default displayed range in the UI/API to last 24h
  • Added support for returning all data when range=all is requested

Fixed

  • Fixed handling of unknown range values by falling back to the last 24h instead of returning unscoped data
  • Fixed omp stats failing to build the client on globally-installed installs by promoting tailwindcss from devDependencies to dependencies (the client build runs at runtime)

[14.5.4] - 2026-04-28

Fixed

  • Fixed GPT cost reporting by deriving missing OpenAI Codex costs from the model catalog and backfilling existing zero-cost rows.

[13.6.0] - 2026-03-03

Fixed

  • Include subtask session files in usage stats (#250)