docs(local-llm): mark Sprint 2 items complete in DASHBOARD_REVIEW.md

Check off 5 items (B2, B7, B8, F1, F6) in bug list, features list,
and sprint tracker. Add commit 2d9475b to commit log.
This commit is contained in:
saravanakumardb1 2026-02-19 15:17:16 -08:00
parent 2d9475bd15
commit 7a82db4876

View File

@ -26,7 +26,7 @@
- [x] **B1. Hardcoded machine specs in header**`page.tsx:317`
Subtitle reads `Apple M4 Pro · 48 GB · {system?.platform}` — should use `system?.chip` and `formatBytes(system?.memory.total)` dynamically so it works on any machine.
- [ ] **B2. Pull model blocks UI — no progress feedback**`api/ollama/route.ts:84-92`
- [x] **B2. Pull model blocks UI — no progress feedback**`api/ollama/route.ts:84-92`
`handlePull` calls Ollama with `stream: false`. Large models (20+ GB) block for 30+ minutes. The Next.js API route will likely timeout. Must use `stream: true` and pipe progress events to the client. _(Combined with F1.)_
- [x] **B3. Dead code: non-streaming `generate` action**`api/ollama/route.ts:69-82`
@ -41,10 +41,10 @@
- [x] **B6. Toast ID collision on HMR remount**`page.tsx:156-159`
`toastId.current` resets to 0 on component remount during dev. Use `Date.now()` or `crypto.randomUUID()` for robust uniqueness.
- [ ] **B7. vm_stat page size hardcoded**`api/system/route.ts:103`
- [x] **B7. vm_stat page size hardcoded**`api/system/route.ts:103`
Hardcoded `16384`. Should parse from vm_stat's first line: `"(page size of NNNNN bytes)"` for portability.
- [ ] **B8. Whisper models dir not configurable**`api/whisper/route.ts:24`
- [x] **B8. Whisper models dir not configurable**`api/whisper/route.ts:24`
Hardcoded to `~/whisper-models`. Should scan multiple known paths (`/opt/homebrew/share/whisper-cpp/models/`, `~/whisper-models`, `~/.cache/whisper/`) or accept `WHISPER_MODELS_DIR` env var.
- [x] **B9. No AbortController for streaming fetch**`page.tsx:250-289`
@ -86,7 +86,7 @@
## 3. Features
- [ ] **F1. Streaming pull with progress bar** _(fixes B2)_
- [x] **F1. Streaming pull with progress bar** _(fixes B2)_
Use Ollama `stream: true` for `/api/pull`. Create `/api/ollama/pull/route.ts` that pipes NDJSON progress. UI shows progress bar with `completed/total` bytes, speed, and ETA.
- [ ] **F2. Model search/filter**
@ -101,7 +101,7 @@
- [ ] **F5. Model comparison (side-by-side)**
Send same prompt to 2 models simultaneously. Display responses side-by-side with latency/quality comparison.
- [ ] **F6. Token/s metrics after generation**
- [x] **F6. Token/s metrics after generation**
Parse `eval_count` and `eval_duration` from the final NDJSON chunk. Display tokens/second, total tokens, and latency in the response footer.
- [ ] **F7. System resource sparklines (time-series)**
@ -186,12 +186,12 @@
### Sprint 2 — Pull Progress + Metrics _(est. 23 hrs)_
| # | ID | Task | Effort | Commit |
| --- | ----------- | ----------------------------------- | ------ | ------ |
| 10 | - [ ] B2+F1 | Streaming pull with progress bar | 60 min | |
| 11 | - [ ] F6 | Display tokens/s after generation | 30 min | |
| 12 | - [ ] B7 | Parse vm_stat page size dynamically | 10 min | |
| 13 | - [ ] B8 | Multi-path whisper model discovery | 15 min | |
| # | ID | Task | Effort | Commit |
| --- | ----------- | ----------------------------------- | ------ | --------- |
| 10 | - [x] B2+F1 | Streaming pull with progress bar | 60 min | `2d9475b` |
| 11 | - [x] F6 | Display tokens/s after generation | 30 min | `2d9475b` |
| 12 | - [x] B7 | Parse vm_stat page size dynamically | 10 min | `2d9475b` |
| 13 | - [x] B8 | Multi-path whisper model discovery | 15 min | `2d9475b` |
### Sprint 3 — Component Refactor _(est. 23 hrs)_
@ -246,6 +246,7 @@ _Commits will be added here as work progresses._
| # | Date | Commit | Sprint | Items Completed |
| --- | ------ | --------- | -------- | ------------------------------------ |
| 1 | Feb 19 | `2da67c2` | Sprint 1 | B1, B3, B4, B5, B6, B9, B10, B11, P4 |
| 2 | Feb 19 | `2d9475b` | Sprint 2 | B2, B7, B8, F1, F6 |
---