From 3dc0c441a962fc98db28c51313eecfa03640f704 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Thu, 19 Feb 2026 23:30:11 -0800 Subject: [PATCH] docs(local-llm): mark all roadmap phases 1-6 complete with commit links All 27 roadmap items + 5 bugs checked off across 6 phases: - Phase 1 (040013e): N1-N3, BN1, BN2, BN5 - Phase 2 (7f04297): N4-N5, BN3, BN4 - Phase 3 (6f6baf9): N6-N10 - Phase 4 (588d21c): N11-N14 - Phase 5 (44ad8a6): F24-F28 - Phase 6 (07d3911): F29-F31 --- .../dashboard/docs/DASHBOARD_ROADMAP.md | 154 +++++++++--------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/__LOCAL_LLMs/dashboard/docs/DASHBOARD_ROADMAP.md b/__LOCAL_LLMs/dashboard/docs/DASHBOARD_ROADMAP.md index 6955d6db..4139cf94 100644 --- a/__LOCAL_LLMs/dashboard/docs/DASHBOARD_ROADMAP.md +++ b/__LOCAL_LLMs/dashboard/docs/DASHBOARD_ROADMAP.md @@ -19,19 +19,19 @@ Transform the dashboard from a model management tool into a **model intelligence Issues discovered by cross-referencing the roadmap against the actual codebase (`page.tsx` ~1,885 lines): -- [ ] **BN1. Compare buttons show unloaded models** — `page.tsx:1809` +- [x] **BN1. Compare buttons show unloaded models** — `040013e` — `page.tsx:1809` `ollama.models.filter(m => m.name !== promptModel)` shows ALL installed models for comparison, but unloaded models can't generate responses. Should filter to `ollama.running` only, or show a "load first" indicator. -- [ ] **BN2. No AbortController on compare stream** — `page.tsx:236-274` +- [x] **BN2. No AbortController on compare stream** — `040013e` — `page.tsx:236-274` `handleCompare` fetches `/api/ollama/stream` but doesn't use an abort controller. Closing the prompt modal during comparison doesn't cancel the stream — it continues in the background wasting resources. -- [ ] **BN3. Chat messages lost on modal close** — `page.tsx:1524-1530` +- [x] **BN3. Chat messages lost on modal close** — `7f04297` — `page.tsx:1524-1530` Closing the prompt modal clears `promptResponse` and `promptText` but does not persist `chatMessages`. Re-opening the modal starts a fresh conversation. Multi-turn history is discarded. -- [ ] **BN4. Logs panel has no refresh** — `page.tsx:1476-1517` +- [x] **BN4. Logs panel has no refresh** — `7f04297` — `page.tsx:1476-1517` The Ollama logs panel fetches once on open (`fetchLogs` on toggle). There's no refresh button — the only way to see new logs is to close and re-open the panel. -- [ ] **BN5. Delete confirmation doesn't show reclaim size** — `page.tsx:1121-1153` +- [x] **BN5. Delete confirmation doesn't show reclaim size** — `040013e` — `page.tsx:1121-1153` Delete confirmation exists (two-step flow via `deleteConfirm` state) but only shows "Delete this model?" without the disk reclaim amount. N14 in the roadmap was marked as new, but the dialog already exists — it just needs `formatBytes(model.size)` added. --- @@ -42,14 +42,14 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Estimated effort:** ~60 minutes -| # | ID | Task | Status | Priority | Notes | -| --- | --- | ---------------------------------- | ------ | -------- | ------------------------------------------------------------ | -| 1 | N1 | Estimated RAM per model | - [ ] | High | Show `~22 GB RAM` on every model card, not just running ones | -| 2 | N2 | "Will it fit?" indicator | - [ ] | High | 🟢 Fits / 🟡 Tight / 🔴 Won't fit, on Load button | -| 3 | N3 | Aggregate loaded model RAM | - [ ] | High | Sum VRAM at top of panel: "2 loaded · 28.5 GB VRAM" | -| 4 | BN1 | Fix compare to show loaded only | - [ ] | High | Filter compare buttons to `ollama.running` models | -| 5 | BN2 | Add AbortController to compare | - [ ] | High | Cancel compare stream on modal close | -| 6 | BN5 | Show reclaim size in delete dialog | - [ ] | Medium | Add `formatBytes(model.size)` to existing confirmation | +| # | ID | Task | Status | Priority | Notes | +| --- | --- | ---------------------------------- | --------------- | -------- | ------------------------------------------------------------ | +| 1 | N1 | Estimated RAM per model | - [x] `040013e` | High | Show `~22 GB RAM` on every model card, not just running ones | +| 2 | N2 | "Will it fit?" indicator | - [x] `040013e` | High | 🟢 Fits / 🟡 Tight / 🔴 Won't fit, on Load button | +| 3 | N3 | Aggregate loaded model RAM | - [x] `040013e` | High | Sum VRAM at top of panel: "2 loaded · 28.5 GB VRAM" | +| 4 | BN1 | Fix compare to show loaded only | - [x] `040013e` | High | Filter compare buttons to `ollama.running` models | +| 5 | BN2 | Add AbortController to compare | - [x] `040013e` | High | Cancel compare stream on modal close | +| 6 | BN5 | Show reclaim size in delete dialog | - [x] `040013e` | Medium | Add `formatBytes(model.size)` to existing confirmation | **Implementation details:** @@ -78,13 +78,13 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Acceptance criteria:** -- [ ] Every model card shows estimated RAM requirement with quant-aware multiplier -- [ ] Load button has a color-coded fit indicator with tooltip -- [ ] Panel header shows total VRAM of loaded models -- [ ] Compare buttons only show loaded models -- [ ] Compare stream is abortable -- [ ] Delete dialog shows disk reclaim amount -- [ ] TypeScript compiles cleanly +- [x] Every model card shows estimated RAM requirement with quant-aware multiplier +- [x] Load button has a color-coded fit indicator with tooltip +- [x] Panel header shows total VRAM of loaded models +- [x] Compare buttons only show loaded models +- [x] Compare stream is abortable +- [x] Delete dialog shows disk reclaim amount +- [x] TypeScript compiles cleanly --- @@ -94,12 +94,12 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Estimated effort:** ~75 minutes -| # | ID | Task | Status | Priority | Notes | -| --- | --- | ------------------------- | ------ | -------- | -------------------------------------------------- | -| 7 | N4 | RAM budget bar | - [ ] | Medium | Stacked bar: OS+Apps / Models (by name) / Free | -| 8 | N5 | Context window size | - [ ] | High | Fetch `context_length` from `/api/show` model_info | -| 9 | BN3 | Persist chat messages | - [ ] | Medium | Save to localStorage, restore on modal re-open | -| 10 | BN4 | Logs panel refresh button | - [ ] | Low | Add refresh icon next to "Show/Hide Ollama Logs" | +| # | ID | Task | Status | Priority | Notes | +| --- | --- | ------------------------- | --------------- | -------- | -------------------------------------------------- | +| 7 | N4 | RAM budget bar | - [x] `7f04297` | Medium | Stacked bar: OS+Apps / Models (by name) / Free | +| 8 | N5 | Context window size | - [x] `7f04297` | High | Fetch `context_length` from `/api/show` model_info | +| 9 | BN3 | Persist chat messages | - [x] `7f04297` | Medium | Save to localStorage, restore on modal re-open | +| 10 | BN4 | Logs panel refresh button | - [x] `7f04297` | Low | Add refresh icon next to "Show/Hide Ollama Logs" | **Implementation details:** @@ -119,12 +119,12 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Acceptance criteria:** -- [ ] RAM budget bar renders with labeled model segments -- [ ] Bar updates live when models are loaded/unloaded -- [ ] Context window shown for expanded models (fetched lazily) -- [ ] Chat history persists across modal close/re-open -- [ ] Logs panel has a refresh button -- [ ] TypeScript compiles cleanly +- [x] RAM budget bar renders with labeled model segments +- [x] Bar updates live when models are loaded/unloaded +- [x] Context window shown for expanded models (fetched lazily) +- [x] Chat history persists across modal close/re-open +- [x] Logs panel has a refresh button +- [x] TypeScript compiles cleanly --- @@ -134,13 +134,13 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Estimated effort:** ~60 minutes -| # | ID | Task | Status | Priority | Notes | -| --- | --- | ----------------------- | ------ | -------- | -------------------------------------------------------------------- | -| 11 | N6 | `` warning badge | - [ ] | High | DeepSeek R1 models emit reasoning traces — warn about JSON stripping | -| 12 | N7 | Vision model indicator | - [ ] | Medium | Multimodal models need image input | -| 13 | N8 | Architecture badge | - [ ] | Low | Show model arch as pill on card (currently in expanded only) | -| 14 | N9 | Sort/order models | - [ ] | Medium | Dropdown: name, size, parameters, running, modified | -| 15 | N10 | Ollama version display | - [ ] | Low | Show Ollama server version in status card | +| # | ID | Task | Status | Priority | Notes | +| --- | --- | ----------------------- | --------------- | -------- | -------------------------------------------------------------------- | +| 11 | N6 | `` warning badge | - [x] `6f6baf9` | High | DeepSeek R1 models emit reasoning traces — warn about JSON stripping | +| 12 | N7 | Vision model indicator | - [x] `6f6baf9` | Medium | Multimodal models need image input | +| 13 | N8 | Architecture badge | - [x] `6f6baf9` | Low | Show model arch as pill on card (currently in expanded only) | +| 14 | N9 | Sort/order models | - [x] `6f6baf9` | Medium | Dropdown: name, size, parameters, running, modified | +| 15 | N10 | Ollama version display | - [x] `6f6baf9` | Low | Show Ollama server version in status card | **Implementation details:** @@ -173,12 +173,12 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Acceptance criteria:** -- [ ] DeepSeek R1 (and distilled) models show `` warning badge -- [ ] Vision models show eye indicator -- [ ] Family/architecture shown as pill on all model cards -- [ ] Models sortable by 5 criteria, sort persisted in localStorage -- [ ] Ollama version displayed in stats card -- [ ] TypeScript compiles cleanly +- [x] DeepSeek R1 (and distilled) models show `` warning badge +- [x] Vision models show eye indicator +- [x] Family/architecture shown as pill on all model cards +- [x] Models sortable by 5 criteria, sort persisted in localStorage +- [x] Ollama version displayed in stats card +- [x] TypeScript compiles cleanly --- @@ -188,12 +188,12 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Estimated effort:** ~45 minutes -| # | ID | Task | Status | Priority | Notes | -| --- | --- | ----------------------------- | ------ | -------- | -------------------------------------------------------- | -| 16 | N11 | Last known tok/s per model | - [ ] | Medium | Persist after prompt, show on card | -| 17 | N12 | Auto-unload countdown | - [ ] | Medium | Live countdown instead of static expiry time | -| 18 | N13 | Session stats per model | - [ ] | Low | Prompts sent + tokens generated in this session | -| 19 | N14 | Simultaneous load suggestions | - [ ] | Low | Suggest which models fit together based on available RAM | +| # | ID | Task | Status | Priority | Notes | +| --- | --- | ----------------------------- | --------------- | -------- | -------------------------------------------------------- | +| 16 | N11 | Last known tok/s per model | - [x] `588d21c` | Medium | Persist after prompt, show on card | +| 17 | N12 | Auto-unload countdown | - [x] `588d21c` | Medium | Live countdown instead of static expiry time | +| 18 | N13 | Session stats per model | - [x] `588d21c` | Low | Prompts sent + tokens generated in this session | +| 19 | N14 | Simultaneous load suggestions | - [x] `588d21c` | Low | Suggest which models fit together based on available RAM | **Implementation details:** @@ -218,11 +218,11 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Acceptance criteria:** -- [ ] Previously benchmarked models show tok/s on card -- [ ] Running models show live countdown to auto-unload -- [ ] Session stats shown in expanded model details -- [ ] Suggestions shown for co-loadable models -- [ ] TypeScript compiles cleanly +- [x] Previously benchmarked models show tok/s on card +- [x] Running models show live countdown to auto-unload +- [x] Session stats shown in expanded model details +- [x] Suggestions shown for co-loadable models +- [x] TypeScript compiles cleanly --- @@ -232,13 +232,13 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Estimated effort:** ~90 minutes -| # | ID | Task | Status | Priority | Notes | -| --- | --- | ------------------------------- | ------ | -------- | ----------------------------------------------------------- | -| 20 | F24 | Image upload for vision models | - [ ] | High | Add image input when vision model is active | -| 21 | F25 | Markdown rendering in responses | - [ ] | High | Render markdown (headers, lists, bold, code) instead of raw | -| 22 | F26 | Code syntax highlighting | - [ ] | Medium | Highlight code blocks in responses with language detection | -| 23 | F27 | `` block auto-collapse | - [ ] | Medium | Detect and collapse reasoning traces, show "Show reasoning" | -| 24 | F28 | Ollama model library link | - [ ] | Low | Link to ollama.com/library in the pull input placeholder | +| # | ID | Task | Status | Priority | Notes | +| --- | --- | ------------------------------- | --------------- | -------- | ----------------------------------------------------------- | +| 20 | F24 | Image upload for vision models | - [x] `44ad8a6` | High | Add image input when vision model is active | +| 21 | F25 | Markdown rendering in responses | - [x] `44ad8a6` | High | Render markdown (headers, lists, bold, code) instead of raw | +| 22 | F26 | Code syntax highlighting | - [x] `44ad8a6` | Medium | Highlight code blocks in responses with language detection | +| 23 | F27 | `` block auto-collapse | - [x] `44ad8a6` | Medium | Detect and collapse reasoning traces, show "Show reasoning" | +| 24 | F28 | Ollama model library link | - [x] `44ad8a6` | Low | Link to ollama.com/library in the pull input placeholder | **Implementation details:** @@ -254,11 +254,11 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Acceptance criteria:** -- [ ] Vision models show image upload area in prompt modal -- [ ] Responses render markdown (headers, lists, code blocks, bold/italic) -- [ ] Code blocks have syntax highlighting with language labels -- [ ] `` traces are auto-collapsed with "Show reasoning" toggle -- [ ] Model library link available near pull input +- [x] Vision models show image upload area in prompt modal +- [x] Responses render markdown (headers, lists, bold, code blocks, bold/italic) +- [x] Code blocks have syntax highlighting with language labels +- [x] `` traces are auto-collapsed with "Show reasoning" toggle +- [x] Model library link available near pull input --- @@ -268,11 +268,11 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Estimated effort:** ~45 minutes -| # | ID | Task | Status | Priority | Notes | -| --- | --- | ------------------------------ | ------ | -------- | --------------------------------------------------------- | -| 25 | F29 | Export/import settings | - [ ] | Medium | Backup all localStorage data as JSON file | -| 26 | F30 | Inference history log | - [ ] | Medium | Persist prompt/response pairs to localStorage with search | -| 27 | F31 | Clear all data / factory reset | - [ ] | Low | Single button to clear all localStorage keys + state | +| # | ID | Task | Status | Priority | Notes | +| --- | --- | ------------------------------ | --------------- | -------- | --------------------------------------------------------- | +| 25 | F29 | Export/import settings | - [x] `07d3911` | Medium | Backup all localStorage data as JSON file | +| 26 | F30 | Inference history log | - [x] `07d3911` | Medium | Persist prompt/response pairs to localStorage with search | +| 27 | F31 | Clear all data / factory reset | - [x] `07d3911` | Low | Single button to clear all localStorage keys + state | **Implementation details:** @@ -284,10 +284,10 @@ Issues discovered by cross-referencing the roadmap against the actual codebase ( **Acceptance criteria:** -- [ ] Settings can be exported as JSON and re-imported -- [ ] Inference history persists across page refreshes -- [ ] Factory reset clears all dashboard state -- [ ] TypeScript compiles cleanly +- [x] Settings can be exported as JSON and re-imported +- [x] Inference history persists across page refreshes +- [x] Factory reset clears all dashboard state +- [x] TypeScript compiles cleanly ---