Commit Graph

557 Commits

Author SHA1 Message Date
can1357 24341e4abf chore: bump version to 16.2.2 2026-06-27 13:24:46 +02:00
can1357 d738329485 chore: bump version to 16.2.1 2026-06-27 06:35:42 +02:00
can1357 7463818a32 chore: bump version to 16.2.0 2026-06-27 04:39:59 +02:00
can1357 5a044dc0da feat: consolidated and automate changelog management
- Added `rewrite-changelog.ts` and `fix-changelogs.ts` utilities to automate the consolidation of release notes using LLM-assisted processing.
- Updated multiple internal changelog files by consolidating redundant entries and improving phrasing for readability.
- Implemented `previewLine` utility in `coding-agent` to prevent visual spillover in status rows by managing text truncation and whitespace.
- Updated `package.json` with new workflow scripts for managing package-level change histories and documentation indexes.
2026-06-27 03:08:52 +02:00
can1357 577d2a8eb8 style: biome format/organize-imports across integrated PRs 2026-06-27 02:06:38 +02:00
can1357 5a1c17c1cb Fix gain dashboard project scoping 2026-06-27 02:04:51 +02:00
can1357 847990f5bc Merge PR #3543: feat(stats): dashboard project filter + unparsed commands panel (@GratefulDave) 2026-06-27 02:04:51 +02:00
David Andrews 619c0aab24 fix(stats/gain): normalize cwd before project match
matchesProject now applies normalizeProjectPath to the raw cwd before
comparing against the selected project root. Without this, a record with
cwd=/repo-worktrees/lane/src would not match the normalized project root
/repo displayed in the selector, causing project-scoped views to show
empty data for any worktree-layout cwd that normalizes to a shorter root.

Addresses codex P2 on commit 8390d278df.
2026-06-26 16:01:27 -04:00
David Andrews 8390d278df fix(stats/gain): address review feedback
- Parse minimizer JSONL once per request; derive records/unparsed/projects
  sets in a single pass instead of three separate reads+parse loops
- Use getTimeRangeConfig from aggregator.ts (export it) instead of a
  local RANGE_MS table that would drift on new range additions
- Fix startsWith project filter to be separator-aware (=== project ||
  startsWith(project+'/')) via shared matchesProject helper — prevents
  false matches on path prefix collisions across all three call sites
- Remove author-specific paths (PycharmProjects, .herdr) from
  normalizeProjectPath; replace with generic worktree-suffix regex
  covering .wt/, -wt/, .worktrees/, -worktrees/, and /.*/worktrees/
  layout patterns, keeping /.omp/wt/ drop
- Exclude snapcompact from project-scoped responses (no cwd field means
  no project filter is possible — mixing all-projects savings into a
  per-project view is misleading); global view still shows snapcompact
- Fix overall.reductionPercent to only divide minimizer+distill saved
  bytes by minimizer+distill original bytes; snapcompact has no
  originalBytes so including it in the numerator overstated the ratio
- Key unparsed command map on the full command string; command field in
  GainUnparsedCommand now stores the full string (callers truncate for
  display) to avoid merging distinct long commands sharing a 120-char
  prefix
- Fix api.ts getGainDashboardStats arg order: project before signal to
  match sibling convention; update GainRoute.tsx call site accordingly
- Add CHANGELOG entry under [Unreleased]
2026-06-26 15:27:57 -04:00
can1357 011f036ef5 chore: bump version to 16.1.23 2026-06-26 18:29:01 +02:00
David Andrews 6ed4e4a0ba stats: gain dashboard client — project selector + unparsed commands panel
- GainRoute.tsx: project state, GainProjectSelector dropdown (113 roots),
  GainUnparsedCommandsPanel showing actual command strings + hit count + input bytes
- useHashRoute.ts: added 'gain' to VALID_SECTIONS (was falling back to 'overview')
- api.ts: getGainDashboardStats accepts optional project? param
- formatters.ts, routes.ts, App.tsx: wiring for Gain tab route
2026-06-26 04:16:38 -04:00
David Andrews 0fa4affcc4 stats: gain dashboard — project filter, unparsed commands panel
- GainUnparsedCommand type: actual command strings that had no filter match
  (replaces GainMissedSaving which grouped by filter name — not useful for tuning)
- readMinimizerUnparsedRecords(): filter==='missed' && kind==='missed', skips temp paths
- dedupeProjects(): normalize worktree sub-paths → project roots, drop ephemeral dirs
- getGainDashboardStats(range?, project?): project-scoped reads across all sources,
  top-25 unparsed commands sorted by hit count
- server.ts: ?project= query param forwarded to aggregator
- shared-types.ts: GainUnparsedCommand, GainDashboardStats.{unparsedCommands,project,projects}
2026-06-26 04:16:38 -04:00
can1357 ff759ed850 chore: bump version to 16.1.22 2026-06-26 09:19:53 +02:00
can1357 018a9638c0 chore: bump version to 16.1.21 2026-06-26 07:39:22 +02:00
can1357 0fc6d136c3 chore: bump version to 16.1.20 2026-06-25 22:45:00 +02:00
can1357 451af61280 chore: bump version to 16.1.19 2026-06-25 13:14:44 +02:00
can1357 c03a78917a test(coding-agent): disabled fsmonitor during test repo initialization
- Added core.fsmonitor configuration to the git initialization process in test setup to prevent potential environment-specific conflicts.
2026-06-25 12:55:01 +02:00
can1357 1a89d784e7 chore: bump version to 16.1.18 2026-06-25 05:17:47 +02:00
can1357 8d60776a6f chore: bump version to 16.1.17 2026-06-24 21:11:31 +02:00
roboomp b5769a4e10 fix(stats): dedupe forked-session entries to stop double-counting
SessionManager.fork() and createBranchedSession() deep-copy a parent's
entries into the child JSONL — same entry_id, timestamp, model,
responseId, token counts, cost. Stats keyed uniqueness on
(session_file, entry_id), so both files contributed to request, token,
and cost totals.

insertMessageStats and insertUserMessageStats now skip rows whose
(entry_id, timestamp) already exists under a different session_file
(first-write-wins). A one-shot migration on initDb, gated by the
fork_dedupe_v1 meta sentinel, collapses pre-existing duplicate rows
in messages and user_messages by keeping the lowest-id row per
(entry_id, timestamp) group.

Fixes #3370
2026-06-24 14:14:25 +00:00
can1357 2c3e0d79a4 chore: bump version to 16.1.16 2026-06-23 08:22:21 +02:00
can1357 7f7a7e59db chore: bump version to 16.1.15 2026-06-22 17:47:45 +02:00
can1357 0c1ef77a7c chore: update changelogs 2026-06-22 17:47:09 +02:00
can1357 153fd78345 feat(stats): added token usage breakdown by agent type
- Implemented agent type classification and persistence in the database, including a backfill for legacy records.
- Added `AgentType` categorization and aggregated token usage metrics to the backend services.
- Created an `AgentTokenShare` visualization component to display usage distribution on the overview dashboard.
- Integrated agent-based tracking into existing data pipelines, view models, and testing suites.
2026-06-22 17:42:58 +02:00
can1357 320261fca9 chore: bump version to 16.1.14 2026-06-22 07:23:40 +02:00
can1357 cc0c67beb1 chore: bump version to 16.1.13 2026-06-22 04:47:47 +02:00
can1357 0a1323ae80 chore: bump version to 16.1.12 2026-06-22 01:14:32 +02:00
can1357 7962a39f86 chore: bump version to 16.1.11 2026-06-21 18:34:15 +02:00
can1357 35508c48f7 chore: bump version to 16.1.10 2026-06-21 08:40:20 +02:00
can1357 5ba474656c chore: bump version to 16.1.9 2026-06-21 04:16:49 +02:00
can1357 12cfb530ad chore: bump version to 16.1.8 2026-06-21 00:39:58 +02:00
can1357 62756efb8f chore: bump version to 16.1.7 2026-06-20 05:40:49 +02:00
can1357 73065ea431 chore: bump version to 16.1.6 2026-06-20 02:47:39 +02:00
can1357 1a92b3f854 chore: bump version to 16.1.5 2026-06-19 22:27:50 +02:00
can1357 ee2b000bdc chore: bump version to 16.1.4 2026-06-19 20:45:56 +02:00
can1357 259bb004e1 chore: bump version to 16.1.3 2026-06-19 17:52:38 +02:00
can1357 db7ca77a8f chore: bump version to 16.1.2 2026-06-19 16:17:09 +02:00
can1357 492fe5e896 chore: bump version to 16.1.1 2026-06-19 09:03:07 +02:00
can1357 3d0b3d71af chore: bump version to 16.1.0 2026-06-19 08:08:44 +02:00
can1357 f7937c5e8d chore: bump version to 16.0.11 2026-06-19 04:59:59 +02:00
can1357 623ae8df35 chore: bump version to 16.0.10 2026-06-19 01:32:28 +02:00
can1357 a7fdd0b4ed chore: reformat 2026-06-19 01:22:20 +02:00
can1357 f743ddc83d feat: replaced XML-style pi dialect with sigil-delimited format
- Migrated the `pi` AI dialect from legacy XML-style elements to a compact, token-frugal sigil-delimited format using `§` for calls, `""` for body fences, and `¤` for thinking.
- Implemented robust parsing for the new format, including support for incremental streaming of tool arguments and automatic escalation of body fences to prevent content collisions.
- Updated documentation, settings configurations, and test suites across the `ai` and `coding-agent` packages to ensure consistency with the new dialect rules.
- Standardized moderation category terminology in `stats` to improve clarity in reporting metrics.
2026-06-19 01:19:41 +02:00
can1357 51f54ad30a docs(changelog): consolidate changelog entries under [Unreleased]; add #2906/#2839 notes 2026-06-19 00:14:20 +02:00
can1357 71de9a3eb2 Merge PR #2904: fix(stats): contain wide mobile-card tables on narrow desktops (@wolfiesch) 2026-06-18 23:32:53 +02:00
can1357 20f8c3776f chore: bump version to 16.0.9 2026-06-18 23:01:31 +02:00
can1357 2023a6f674 chore: bump version to 16.0.8 2026-06-18 20:05:56 +02:00
can1357 f5ebab2b83 feat(utils): vendor mermaid rendering 2026-06-18 18:52:38 +02:00
can1357 93624f0239 chore: bump version to 16.0.7 2026-06-18 16:38:08 +02:00
can1357 159b8a1c63 chore: bump version to 16.0.6 2026-06-18 03:20:08 +02:00