Skip to content

v0.12.0

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Sep 12:10
9d2df6b

0.12.0 (2026-09-24)

Features

  • 'What happened' timeline — prompt snippets read live, Claude stretches with branch/tools/files, copied sessions counted once (be16b84)
  • browser-ingest: heartbeat ingest with work-hours + privacy filters (T002) (f352b61)
  • cli: T004 verdict serve pins git rev + huggingface_hub (27a12db)
  • cli: wire fish shell history and git reflog into worklog collect (c2d396a)
  • collectors: add claude_turn transcript collector for the invisible-afternoon gap (7f7a8f9)
  • collectors: add fish shell history collector (3f2c386)
  • collectors: add git reflog collector (8793685)
  • collectors: count Claude working in an interactive session, one marker per minute, no text (16217ac)
  • collectors: T004 Slack collector for sent messages (20d4518)
  • daemon: answer CORS preflight for extension heartbeats (69880ae)
  • daemon: expose overlaps on GET /days/:day and allocation endpoints (960d0dd)
  • daemon: surface block confidence and day gaps on /days/:day (252c1d5)
  • daemon: T005 ratio settings (abstain_margin + runner_up_ratio) (03d9a70)
  • infer: honour saved overlap allocations when building blocks (7190ddb)
  • infer: parallel projects get parallel blocks instead of one fused block (9bf3920)
  • overlaps: detect overlapping work windows and persist manual splits (b3bca0f)
  • routing: absorb work-stretch events and hide the rest as noise (84abefd)
  • routing: dismiss events as noise, with optional ignore rule (1caa291)
  • routing: Link/Context label origins + Slack time-context filing (a19b7f3)
  • routing: schema v11 and module stubs for browser/Slack event routing (799fa76)
  • routing: T003 daemon routes for browser/Slack event routing (ac97b1a)
  • routing: T003 relative filing rule (abstain margin + runner-up ratio) (2909ea6)
  • routing: T005 router core — rules, threshold, container narrowing (fa55128)
  • routing: T006 Laya client, helper script and CLI (19cf90f)
  • routing: T007 route before inference in collect all and POST /infer (acdbeec)
  • slack: title DMs with the counterpart's name via users.info (4996e31)
  • timeline: add block_confidence and day_gaps helpers (5d9eaa6)
  • upgrade: bring the web UI and collect agent onto the new binary (#43) (d1fc7dc)
  • verdict: T002 helper script and client (probability, runner_up, abstain) (6faf2db)
  • web: calmer day strip — merge same-project stretches, 4-project legend with +N more and Other, labels only when they fit (546f96c)
  • web: click-and-drag time-range selection with saved-allocation brackets (949d0cd)
  • web: day strip groups by the daemon's repo-folded project field (e5cb1b1)
  • web: day strip, grouped sort tray with Not work, compact auto-filed list (bc8a48e)
  • web: drop the no-ticket banner — the owner does not want it (665f8cb)
  • web: interactive day strip — lanes view, legend focus, rich tooltip (536ef44)
  • web: label the day gap that covers 11:30 as lunch (bba82ea)
  • web: linked split sliders that start from today's split, drag measured on the track, 0% shares dropped on save (40a2b61)
  • web: overlap types, daemon client and allocation server actions (8b5c31a)
  • web: plain-language origin badges + preview on filed rows (442a6f7)
  • web: render overlap bands, a count chip and the split popover (fe87073)
  • web: saved splits read as chips (range, project, percent, reset) under the lanes (0595637)
  • web: show block confidence badge and day gaps on the day page (2969486)
  • web: show what each clue said or where it went, and why it was hidden, in the review drawer (203fe14)
  • web: T010 routing types, daemon client and server actions (70fdecf)
  • web: T011 unsorted list, label picker with always, source badges (B12) (3fcdff5)
  • web: T012 settings routing controls, hard rules, source status (dcca57f)
  • web: the day strip shows work only — no personal time (9077afd)
  • web: zero-touch day page — quiet summary + review drawer, block clue line, attention line (fd9e317)

Bug Fixes

  • billing: map a submodule's GitHub repo to the work folder that vendors it (b93e080)
  • cli: worklog day collects slack, shell, and reflog again (83e4f4f)
  • collectors: count only prompts the owner typed, never headless runs or system notifications (d9a2071)
  • collectors: keep shell command text out of project_path (cee2052)
  • collectors: read transcripts still being written after the day ends (b52119e)
  • collectors: reflog reads worktree and submodule logs, not just the main repo (45e541c)
  • collectors: store only a sanitised program name as the shell event title (7612edf)
  • daemon: day summary reports the folded billing folder, not just the raw path (3262147)
  • daemon: mask slack_user_token in GET /settings (f867a21)
  • daemon: read settings off the async workers; raise default abstain margin to 1.20 (1f8013d)
  • daemon: stop holding the sqlite mutex across the claude shell-out (#41) (5d16542)
  • infer: a rebuild never fuses two ticketed blocks, so no ticket is lost (f3eee4f)
  • infer: a saved split divides the worked minutes, wherever the idle stretches fall (1665307)
  • infer: a saved split only moves work minutes, never personal time (631da71)
  • infer: a saved split re-cuts the work time the day already had, so it never adds time (0e43946)
  • infer: blocks follow a saved split, spanning the minutes it hands each project (990421e)
  • infer: client work claims a minute before any personal project (62105e6)
  • infer: each minute belongs to one project, so parallel sessions never double-bill (bd00b97)
  • infer: each project's block spans the minutes it owns; quick hops join a neighbour instead of vanishing (bde2a80)
  • infer: focus follows the owner's latest action; Claude working in the background only fills idle minutes (b40dc92)
  • infer: split pieces link their own project's events, so the saved block keeps its project (5c924e3)
  • infer: worklog day and worklog infer keep saved splits (the 15-min schedule undid them) (c91ebcf)
  • laya: run the real laya Router in the helper script (718f692)
  • repo: preserve routing label through re-collect (5be7681)
  • routing: file exact repo/path mentions by rule before the classifier (737d516)
  • routing: match named projects in the visited URL or own message, never the page title (fb3a1a9)
  • routing: propagate edited always-rule folder to rule-labelled events (c9bab1a)
  • routing: reject always-rule when kind mismatches event source (36a7d95)
  • schedule: never repoint the real collect agent at a temp-dir binary (updater tests broke it) (16b5daf)
  • slack: paginate search.messages and isolate per-message failures (550b63b)
  • slack: skip empty profile names when titling DMs (ff91dac)
  • verdict: never guess a lone option and ask with the measured wording (fbefc11)
  • verdict: T002 never send a Choice with fewer than 2 options (22a3a36)
  • web: colour day-strip segments per project and show a short Lunch/Away label on narrow gaps (31b381d)
  • web: give labelled routed rows the same two-column layout as unsorted rows (4709a48)
  • web: lanes-view band misalignment and full per-project activity (f990daf)
  • web: lay out unsorted rows so the rule checkbox and picker sit under the event text (bd6f96a)
  • web: plain names for Claude prompt and working clues (4e92682)
  • web: point the container healthcheck at IPv4 loopback (0742476)
  • web: pressing a slider or button in the split box no longer starts a new drag (1130bdb)
  • web: rename settings ratio fields to abstain_margin/runner_up_ratio (e40a8e7)
  • web: space the day's project colours by golden angle so busy projects never share a hue (b170a92)
  • web: T011 remount UnsortedList on day change (0b5f04f)
  • web: T012 review round 1 — blank threshold no longer saves 0, tighten reachable assertion (e17d9a6)
  • web: use typographic quotes in the sort tray hint so the build lints (616ed01)

Documentation

  • specs: 003 amend — heartbeat CORS preflight, Slack DM names; CHK002 evidence (be83095)
  • specs: 003 approved by user (1b7863b)
  • specs: 003 checkpoints wait for the tasks they check (ccb6bb0)
  • specs: 003 CHK001 pre-check evidence (246ac68)
  • specs: 003 CHK001 user-verified (6d8b882)
  • specs: 003 contract for the Firefox add-on (3238b06)
  • specs: 003 gates green, PASS-4709a48 (21f964f)
  • specs: 003 note phase 2 test command (f365a22)
  • specs: 003 notes — phase 5 test filter, missing slop-check (d968c96)
  • specs: 003 prep awaiting lint ruling (c127063)
  • specs: 003 prep ready for spec (user kept one file over 12-question lint) (73e0a7f)
  • specs: 003 re-tick CHK001 against manifest commit (f60167b)
  • specs: 003 spec, design, tasks + routing contract module (0fa7830)
  • specs: 003 tick CHK001 (b2b064b)
  • specs: 003 tick CHK003 (user verified day page) (830c4a7)
  • specs: 003 tick T003 (daemon routes) (b6d3771)
  • specs: 003 tick T006 (Laya client + helper) (4645778)
  • specs: 003 tick T007 (route before inference) (d4cdc75)
  • specs: 003 tick T010 (web routing types + actions) (0433e11)
  • specs: 003 tick T011, T012 (unsorted list, settings) (12c6f73)
  • specs: 003 tick T013 (heartbeat CORS preflight) (51d853f)
  • specs: 003 tick T014 (Slack DM names) (f12df60)
  • specs: 003 wave 1 ticked (schema v11, Firefox add-on) (893323a)
  • specs: 003 wave 2 ticked (browser ingest, Slack collector, router core) (5cb926d)
  • specs: 004 approved and verified by user, gates green (7dcef4e)
  • specs: 004 real-day verification, ticks and notes (e913371)
  • specs: 004 tick T001, progress and notes (4bb8246)
  • specs: 004 Verdict routing spec, design and tasks (eb435ef)
  • specs: day page screenshot with confidence badges and gap rows (43e4c4d)
  • specs: gap audit across every readable local source (7d71808)
  • specs: gap audit across every readable local source (86bee78)
  • specs: inventory of local timeline data sources (f3bed27)
  • specs: prep for browser + Slack event routing (003) (1dbb2f8)
  • specs: timeline report — day page, review fix, gates (45af703)
  • specs: timeline report for the first day with shell and reflog sources (08052fe)
  • specs: user stories for the zero-effort day view (ca18a09)
  • specs: zero-touch day design and status (9f52582)
  • specs: zero-touch status — attention-first split, adjustable overlaps (be2b86b)