Commit graph

  • cf69452e42 feat: implement FetchView — SSE progress bars, account selection, targeted fetch pyr0ball 2026-03-04 12:23:58 -0800
  • 6b6205e4ed feat: implement StatsView — label distribution bars, file info, download pyr0ball 2026-03-04 12:21:21 -0800
  • a9f7ba1b0c feat: implement StatsView — label distribution bars, file info, download pyr0ball 2026-03-04 12:21:21 -0800
  • 9ef2c1251d feat: implement SettingsView — IMAP account management, test connection, display toggles pyr0ball 2026-03-04 12:20:30 -0800
  • d372155e4b feat: implement SettingsView — IMAP account management, test connection, display toggles pyr0ball 2026-03-04 12:20:30 -0800
  • c94d271f4c feat: add useApiSSE helper for Server-Sent Events connections pyr0ball 2026-03-04 12:17:46 -0800
  • 7fa62ae073 feat: add useApiSSE helper for Server-Sent Events connections pyr0ball 2026-03-04 12:17:46 -0800
  • 2a48ab0f03 feat: add Vue Router + stow-able AppSidebar; stub Fetch/Stats/Settings views pyr0ball 2026-03-04 12:12:26 -0800
  • 7bd37ef982 feat: add Vue Router + stow-able AppSidebar; stub Fetch/Stats/Settings views pyr0ball 2026-03-04 12:12:26 -0800
  • 07407117a5 feat: add GET /api/fetch/stream SSE endpoint for real-time IMAP progress pyr0ball 2026-03-04 12:05:23 -0800
  • f38c73db97 feat: add GET /api/fetch/stream SSE endpoint for real-time IMAP progress pyr0ball 2026-03-04 12:05:23 -0800
  • e5e66b09cc feat: add POST /api/accounts/test endpoint pyr0ball 2026-03-04 12:04:42 -0800
  • 965362f5e3 feat: add POST /api/accounts/test endpoint pyr0ball 2026-03-04 12:04:42 -0800
  • 47a2178ee4 feat: add GET /api/stats and GET /api/stats/download endpoints pyr0ball 2026-03-04 12:04:11 -0800
  • f64be8bbe0 feat: add GET /api/stats and GET /api/stats/download endpoints pyr0ball 2026-03-04 12:04:11 -0800
  • 3f0cd7e837 feat: add GET/POST /api/config endpoints for IMAP account management pyr0ball 2026-03-04 12:03:40 -0800
  • c5a74d3821 feat: add GET/POST /api/config endpoints for IMAP account management pyr0ball 2026-03-04 12:03:40 -0800
  • 8a0545a6e7 feat: extract IMAP logic to app/imap_fetch.py for reuse by API pyr0ball 2026-03-04 11:42:22 -0800
  • 1d1f25641b feat: extract IMAP logic to app/imap_fetch.py for reuse by API pyr0ball 2026-03-04 11:42:22 -0800
  • dc92ecff5f fix: bucket grid now renders 3x3+1 numpad layout on all screen sizes pyr0ball 2026-03-04 11:31:36 -0800
  • 8ec2dfddee fix: bucket grid now renders 3x3+1 numpad layout on all screen sizes pyr0ball 2026-03-04 11:31:36 -0800
  • 8d2fdf6299 fix: UndoToast now emits expire after 5s so toast self-dismisses pyr0ball 2026-03-04 11:29:03 -0800
  • 92da5902ba fix: UndoToast now emits expire after 5s so toast self-dismisses pyr0ball 2026-03-04 11:29:03 -0800
  • 3788254abd fix: prevent blank page on rebuild and queue drain on skip/discard pyr0ball 2026-03-03 19:26:34 -0800
  • 82eeb4defc fix: prevent blank page on rebuild and queue drain on skip/discard pyr0ball 2026-03-03 19:26:34 -0800
  • a06b133a6e docs(avocet): document email field schemas and normalization layer pyr0ball 2026-03-03 18:43:41 -0800
  • cb9ebb805c fix(avocet): normalize queue schema + bind to 0.0.0.0 for LAN access pyr0ball 2026-03-03 18:43:00 -0800
  • b54b2a711e fix(avocet): normalize queue schema + bind to 0.0.0.0 for LAN access pyr0ball 2026-03-03 18:43:00 -0800
  • 5ac64b3429 fix(avocet): start-api polls port instead of sleeping 1s — avoids false-success on slow start pyr0ball 2026-03-03 18:11:53 -0800
  • cd7bbd1dbf fix(avocet): start-api polls port instead of sleeping 1s — avoids false-success on slow start pyr0ball 2026-03-03 18:11:53 -0800
  • 2fdafc1d10 fix(avocet): strip HTML from email bodies — stdlib HTMLParser, no deps pyr0ball 2026-03-03 16:28:18 -0800
  • 682a958c28 fix(avocet): strip HTML from email bodies — stdlib HTMLParser, no deps pyr0ball 2026-03-03 16:28:18 -0800
  • 65d9f6089e feat(avocet): easter eggs — hired confetti, century mark, clean sweep, midnight labeler, cursor trail pyr0ball 2026-03-03 16:24:47 -0800
  • 47973aeba6 feat(avocet): easter eggs — hired confetti, century mark, clean sweep, midnight labeler, cursor trail pyr0ball 2026-03-03 16:24:47 -0800
  • 5cf5fe9c43 feat(avocet): manage.sh start-api / stop-api / open-api commands pyr0ball 2026-03-03 16:23:56 -0800
  • deddd763ea feat(avocet): manage.sh start-api / stop-api / open-api commands pyr0ball 2026-03-03 16:23:56 -0800
  • 8e3d263847 feat(avocet): LabelView — wires store, API, card stack, keyboard, easter eggs pyr0ball 2026-03-03 16:21:07 -0800
  • 382bca28a1 feat(avocet): LabelView — wires store, API, card stack, keyboard, easter eggs pyr0ball 2026-03-03 16:21:07 -0800
  • 05d12a1417 feat(avocet): LabelBucketGrid bucket-mode CSS — spring expansion, glow on drop pyr0ball 2026-03-03 16:19:29 -0800
  • b623d252d0 feat(avocet): LabelBucketGrid bucket-mode CSS — spring expansion, glow on drop pyr0ball 2026-03-03 16:19:29 -0800
  • 97437f39c9 feat(avocet): EmailCardStack — swipe gestures, depth shadows, dismissal classes pyr0ball 2026-03-03 16:16:09 -0800
  • 9b5a1ae752 feat(avocet): EmailCardStack — swipe gestures, depth shadows, dismissal classes pyr0ball 2026-03-03 16:16:09 -0800
  • 5f03db20dc feat(avocet): UndoToast — 5-second countdown, undo button, accessible pyr0ball 2026-03-03 16:13:02 -0800
  • e7f08ce685 feat(avocet): UndoToast — 5-second countdown, undo button, accessible pyr0ball 2026-03-03 16:13:02 -0800
  • 2fd101f382 feat(avocet): useLabelKeyboard — 1-9, h, S, D, U, ? shortcuts pyr0ball 2026-03-03 16:12:58 -0800
  • 5114e6ac19 feat(avocet): useLabelKeyboard — 1-9, h, S, D, U, ? shortcuts pyr0ball 2026-03-03 16:12:58 -0800
  • 452730bb98 feat(avocet): LabelBucketGrid — numpad layout, bucket-mode expansion, drag drop pyr0ball 2026-03-03 16:04:31 -0800
  • cd6cae2040 feat(avocet): LabelBucketGrid — numpad layout, bucket-mode expansion, drag drop pyr0ball 2026-03-03 16:04:31 -0800
  • f5aca77ff6 feat(avocet): EmailCard component — subject, from/date, body preview, expand/collapse pyr0ball 2026-03-03 16:03:01 -0800
  • e05ac885d7 feat(avocet): EmailCard component — subject, from/date, body preview, expand/collapse pyr0ball 2026-03-03 16:03:01 -0800
  • 7edcb089a9 feat(avocet): useApi, useMotion, useHaptics, useEasterEgg (Konami/hacker mode) pyr0ball 2026-03-03 15:58:43 -0800
  • e823c84196 feat(avocet): useApi, useMotion, useHaptics, useEasterEgg (Konami/hacker mode) pyr0ball 2026-03-03 15:58:43 -0800
  • 50dd4c2f45 feat(avocet): Pinia label store with queue, lastAction, easter egg counter pyr0ball 2026-03-03 15:54:44 -0800
  • 209f49f7ea feat(avocet): Pinia label store with queue, lastAction, easter egg counter pyr0ball 2026-03-03 15:54:44 -0800
  • b10c337214 fix(avocet): align theme with Peregrine design system — full token set, dark mode, self-hosted fonts pyr0ball 2026-03-03 15:52:38 -0800
  • 2abda18b92 fix(avocet): align theme with Peregrine design system — full token set, dark mode, self-hosted fonts pyr0ball 2026-03-03 15:52:38 -0800
  • a9e5c0d8f3 feat(avocet): CircuitForge base theme + Avocet Slate Teal/Russet colors pyr0ball 2026-03-03 15:49:07 -0800
  • ac1f4b8ba1 feat(avocet): CircuitForge base theme + Avocet Slate Teal/Russet colors pyr0ball 2026-03-03 15:49:07 -0800
  • 02efd5fb1d feat(avocet): Vite + Vue 3 + UnoCSS + Vitest scaffold pyr0ball 2026-03-03 15:46:58 -0800
  • cb059492bf feat(avocet): Vite + Vue 3 + UnoCSS + Vitest scaffold pyr0ball 2026-03-03 15:46:58 -0800
  • 01cc908eab fix(avocet): undo — commit-then-clear order, empty-records guard, skip dedup, stronger test pyr0ball 2026-03-03 15:41:58 -0800
  • 4a76f6ba41 fix(avocet): undo — commit-then-clear order, empty-records guard, skip dedup, stronger test pyr0ball 2026-03-03 15:41:58 -0800
  • f4facc6484 feat(avocet): discard, undo, labels config, static serving — backend complete pyr0ball 2026-03-03 15:35:01 -0800
  • 80a8195899 feat(avocet): discard, undo, labels config, static serving — backend complete pyr0ball 2026-03-03 15:35:01 -0800
  • 5912b73705 feat(avocet): POST /api/skip endpoint pyr0ball 2026-03-03 15:21:32 -0800
  • f0e9886ab2 feat(avocet): POST /api/skip endpoint pyr0ball 2026-03-03 15:21:32 -0800
  • efd9d69692 fix(avocet): store original item in _last_action; add requirements.txt pyr0ball 2026-03-03 15:16:54 -0800
  • 816c0e3bb2 fix(avocet): store original item in _last_action; add requirements.txt pyr0ball 2026-03-03 15:16:54 -0800
  • ce202d97ea feat(avocet): POST /api/label endpoint pyr0ball 2026-03-03 15:14:04 -0800
  • ff27053aa9 feat(avocet): POST /api/label endpoint pyr0ball 2026-03-03 15:14:04 -0800
  • 6556e3fef0 fix(avocet): queue_with_items fixture uses api._DATA_DIR to avoid implicit tmp_path coupling pyr0ball 2026-03-03 15:03:57 -0800
  • c1a6dd4fc5 fix(avocet): queue_with_items fixture uses api._DATA_DIR to avoid implicit tmp_path coupling pyr0ball 2026-03-03 15:03:57 -0800
  • 8898258055 feat(avocet): GET /api/queue endpoint pyr0ball 2026-03-03 15:00:59 -0800
  • 9abae0478c feat(avocet): GET /api/queue endpoint pyr0ball 2026-03-03 15:00:59 -0800
  • d36d0be166 fix(avocet): _write_jsonl empty-list writes empty file; add reset_last_action helper pyr0ball 2026-03-03 14:36:18 -0800
  • c8aea3c39f fix(avocet): _write_jsonl empty-list writes empty file; add reset_last_action helper pyr0ball 2026-03-03 14:36:18 -0800
  • f06114e648 feat(avocet): FastAPI skeleton + JSONL helpers pyr0ball 2026-03-03 13:22:17 -0800
  • ffd1450f62 feat(avocet): FastAPI skeleton + JSONL helpers pyr0ball 2026-03-03 13:22:17 -0800
  • f48590f859 feat: discard button — removes email from queue without writing to score file pyr0ball 2026-02-27 15:48:40 -0800
  • 9133cadd66 feat: discard button — removes email from queue without writing to score file pyr0ball 2026-02-27 15:48:40 -0800
  • 732564ae5e fix: manage.sh restart — exec bash $0 so script path resolves correctly pyr0ball 2026-02-27 15:41:53 -0800
  • 18c7ed2c57 fix: manage.sh restart — exec bash $0 so script path resolves correctly pyr0ball 2026-02-27 15:41:53 -0800
  • ab764cb8f6 feat: targeted fetch — date range + sender/subject filter for historical email pulls pyr0ball 2026-02-27 15:15:49 -0800
  • a26a21e71d feat: targeted fetch — date range + sender/subject filter for historical email pulls pyr0ball 2026-02-27 15:15:49 -0800
  • f97ef32100 fix: RerankerAdapter falls back to label name when no LABEL_DESCRIPTIONS entry pyr0ball 2026-02-27 14:54:31 -0800
  • 1452889d0f fix: RerankerAdapter falls back to label name when no LABEL_DESCRIPTIONS entry pyr0ball 2026-02-27 14:54:31 -0800
  • d0dbc6e787 docs: update CLAUDE.md — 9 labels table with keys, wildcard shortcut pyr0ball 2026-02-27 14:49:24 -0800
  • 4c346aa328 feat: 9 labels (add event_rescheduled/unrelated/digest), wildcard Other label, InvalidCharacterError fix pyr0ball 2026-02-27 14:34:15 -0800
  • fd476e4199 feat: 9 labels (add event_rescheduled/unrelated/digest), wildcard Other label, InvalidCharacterError fix pyr0ball 2026-02-27 14:34:15 -0800
  • 4c659033c9 fix: fetch log — overwrite per-email progress instead of appending pyr0ball 2026-02-27 14:20:57 -0800
  • 66f69ff9a2 fix: fetch log — overwrite per-email progress instead of appending pyr0ball 2026-02-27 14:20:57 -0800
  • 260c7c0f96 feat: add Settings tab with IMAP account GUI + connection test pyr0ball 2026-02-27 14:18:51 -0800
  • 2824fca70c feat: add Settings tab with IMAP account GUI + connection test pyr0ball 2026-02-27 14:18:51 -0800
  • bd4911fe58 feat: add manage.sh with port collision detection pyr0ball 2026-02-27 14:10:24 -0800
  • e705962f7b feat: add manage.sh with port collision detection pyr0ball 2026-02-27 14:10:24 -0800
  • d68754d432 feat: initial avocet repo — email classifier training tool pyr0ball 2026-02-27 14:07:38 -0800
  • 0e238a9e37 feat: initial avocet repo — email classifier training tool pyr0ball 2026-02-27 14:07:38 -0800