kimi
66dfb353d7
feat: generate daily/weekly agent scorecards ( #712 )
...
Implements agent scorecard system that tracks and summarizes agent performance:
- Track issues touched, PRs opened/merged, tests affected, tokens earned/spent
- Generate compact scorecards for daily or weekly periods
- Pattern detection: high/low merge rates, silent workers, token accumulation
- API endpoints for programmatic access (/scorecards/api/*)
- HTML dashboard with HTMX-powered live updates
- Added navigation link in both desktop and mobile menus
New modules:
- dashboard/services/scorecard_service.py: Core scoring logic
- dashboard/routes/scorecards.py: API and HTML routes
- templates/scorecards.html: Dashboard UI
- tests/dashboard/test_scorecards.py: Comprehensive test suite
Refs #712
2026-03-21 16:55:15 -04:00
a95cf806c8
[kimi] Implement token quest system for agents ( #713 ) ( #789 )
2026-03-21 20:45:35 +00:00
7e983fcdb3
[kimi] Add dashboard card for Daily Run and triage metrics ( #718 ) ( #786 )
2026-03-21 19:58:25 +00:00
b08ce53bab
[kimi] Refactor request_logging.py::dispatch ( #616 ) ( #765 )
2026-03-21 18:06:34 +00:00
dc9f0c04eb
[kimi] Add rate limiting middleware for Matrix API endpoints ( #683 ) ( #746 )
2026-03-21 16:23:16 +00:00
815933953c
[kimi] Add WebSocket authentication for Matrix connections ( #682 ) ( #744 )
2026-03-21 16:14:05 +00:00
d54493a87b
[kimi] Add /api/matrix/health endpoint ( #685 ) ( #745 )
2026-03-21 15:51:29 +00:00
695d1401fd
[kimi] Add CORS config for Matrix frontend origin ( #679 ) ( #741 )
2026-03-21 14:56:43 +00:00
ddadc95e55
[kimi] Add /api/matrix/memory/search endpoint ( #678 ) ( #740 )
2026-03-21 14:52:31 +00:00
8fc8e0fc3d
[kimi] Add /api/matrix/thoughts endpoint for recent thought stream ( #677 ) ( #739 )
2026-03-21 14:44:46 +00:00
2a7b6d5708
[kimi] Add /api/matrix/bark endpoint — HTTP fallback for bark messages ( #675 ) ( #737 )
2026-03-21 14:32:04 +00:00
9d4ac8e7cc
[kimi] Add /api/matrix/config endpoint for world configuration ( #674 ) ( #736 )
2026-03-21 14:25:19 +00:00
c9601ba32c
[kimi] Add /api/matrix/agents endpoint for Matrix visualization ( #673 ) ( #735 )
2026-03-21 14:18:46 +00:00
3474eeb4eb
[kimi] refactor: extract presence state serializer from workshop heartbeat ( #668 ) ( #697 )
2026-03-21 13:41:42 +00:00
e3d425483d
[kimi] fix: add logging to silent except Exception handlers ( #646 ) ( #692 )
2026-03-21 03:50:26 +00:00
c9445e3056
[kimi] refactor: extract helpers from CSRFMiddleware.dispatch ( #628 ) ( #691 )
2026-03-21 03:41:09 +00:00
9d0f5c778e
[loop-cycle-2] fix: resolve endpoint before execution in CSRF middleware ( #626 ) ( #656 )
2026-03-20 23:05:09 +00:00
2bfc44ea1b
[loop-cycle-1] refactor: extract _try_prune helper and fix f-string logging ( #653 ) ( #657 )
2026-03-20 17:44:32 -04:00
faad0726a2
[loop-cycle-1666] fix: replace remaining deprecated utcnow() in calm.py ( #633 ) ( #644 )
2026-03-20 17:22:35 -04:00
6f66670396
[loop-cycle-1664] fix: replace deprecated datetime.utcnow() ( #633 ) ( #636 )
2026-03-20 17:01:19 -04:00
a3f61c67d3
refactor: break up post_morning_ritual into helpers ( #631 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:43:14 -04:00
2c217104db
feat: real-time Spark visualization in Mission Control ( #615 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:22:15 -04:00
9732c80892
feat: Real-time Spark Visualization in Tower Dashboard ( #612 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:10:42 -04:00
4ba8d25749
feat: Lightning Network integration for tool usage ( #610 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 13:07:02 -04:00
bc010ecfba
[loop-cycle-1233] refactor: add docstrings to calm.py route handlers ( #569 ) ( #585 )
2026-03-20 11:44:06 -04:00
50c8a5428e
refactor: break up api_chat() into helpers ( #544 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:49:04 -04:00
88e59f7c17
refactor: break up chat_agent() into helpers ( #542 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:38:46 -04:00
2d69f73d9d
fix: add timeout to thinking/loop-QA schedulers ( #530 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:18:31 -04:00
9f2728f529
refactor: break up lifespan() into testable helpers ( #515 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 19:30:32 -04:00
e4de539bf3
fix: extract ollama_url normalization into shared utility ( #508 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 19:18:22 -04:00
5f52dd54c0
[loop-cycle-932] fix: add logging to bare except Exception blocks ( #484 ) ( #501 )
2026-03-19 19:05:02 -04:00
7f20742fcf
fix: replace hardcoded secret placeholder in CSRF middleware docstring ( #488 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 15:52:29 -04:00
50aaf60db2
[loop-cycle-2] fix: strip CORS wildcards in production ( #462 ) ( #469 )
2026-03-19 15:05:27 -04:00
a751be3038
fix: default CORS origins to localhost instead of wildcard ( #467 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 14:57:36 -04:00
76b26ead55
rescue: WS heartbeat ping + commitment tracking from stale PRs ( #415 )
...
## What
Manually integrated unique code from two stale PRs that were **not** superseded by merged work.
### PR #399 (kimi/issue-362) — WebSocket heartbeat ping
- 15-second ping loop detects dead iPad/Safari connections
- `_heartbeat()` coroutine launched as background task per WS client
- `ping_task` properly cancelled on disconnect
### PR #408 (kimi/issue-322) — Conversation commitment tracking
- Regex extraction of commitments from Timmy replies (`I'll` / `I will` / `Let me`)
- `_record_commitments()` stores with dedup + cap at 10
- `_tick_commitments()` increments message counter per commitment
- `_build_commitment_context()` surfaces overdue commitments as grounding context
- Wired into `_bark_and_broadcast()` and `_generate_bark()`
- Public API: `get_commitments()`, `close_commitment()`, `reset_commitments()`
### Tests
22 new tests covering both features: extraction, recording, dedup, caps, tick/context, integration, heartbeat ping, dead connection handling.
---
This PR rescues unique code from stale PRs #399 and #408 . The other two stale PRs (#402 , #411 ) were already superseded by merged work and should be closed.
Co-authored-by: Perplexity Computer <perplexity@tower.dev >
Reviewed-on: http://localhost:3000/rockachopa/Timmy-time-dashboard/pulls/415
Co-authored-by: Perplexity Computer <perplexity@tower.local >
Co-committed-by: Perplexity Computer <perplexity@tower.local >
2026-03-19 03:22:44 -04:00
9b8ad3629a
fix: wire Pip familiar into Workshop state pipeline ( #412 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 03:09:22 -04:00
b67dbe922f
fix: conversation grounding to prevent topic drift in Workshop ( #406 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 02:39:15 -04:00
3571d528ad
feat: Workshop Phase 1 — State Schema v1 ( #404 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 02:24:13 -04:00
e89aef41bc
[loop-cycle-392] refactor: DRY broadcast + bark error logging ( #397 , #398 ) ( #400 )
2026-03-19 02:01:58 -04:00
86224d042d
feat: Workshop Phase 4 — visitor chat via WebSocket bark engine ( #394 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 01:54:06 -04:00
f9d8509c15
fix: send world state snapshot on WS client connect ( #390 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 01:28:57 -04:00
da43421d4e
feat: broadcast Timmy state changes via WS relay ( #380 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 00:25:11 -04:00
19e7e61c92
[loop-cycle] refactor: DRY PRESENCE_FILE — single source of truth in workshop_state ( #381 ) ( #382 )
2026-03-18 22:33:06 -04:00
b7573432cc
fix: watch presence.json and broadcast state via WS ( #379 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 22:22:02 -04:00
3108971bd5
[loop-cycle-155] feat: GET /api/world/state — Workshop bootstrap endpoint ( #373 ) ( #378 )
2026-03-18 22:13:49 -04:00
864be20dde
feat: Workshop state heartbeat for presence.json ( #377 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 22:07:32 -04:00
8ef0ad1778
fix: pause thought counter during idle periods ( #319 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 19:12:14 -04:00
f4106452d2
feat: implement v1 API endpoints for iPad app ( #312 )
...
Co-authored-by: manus <manus@timmy.local >
Co-committed-by: manus <manus@timmy.local >
2026-03-18 18:20:14 -04:00
f5a570c56d
fix: add real-time data disclaimer to welcome message ( #304 )
2026-03-18 16:56:21 -04:00
a50af74ea2
[loop-cycle-56] fix: resolve 5 lint errors on main ( #203 ) ( #224 )
2026-03-15 13:40:40 -04:00