← Back to Kontasks
Progress Kontask Rollup Plan
Confirmed approach: JSONL as immutable ledger, UI-side rollup for display
Output
✅ Plan Confirmed: Immutable JSONL + UI Rollup
📜 Core Principle: JSONL is Sacred
- NEVER modify existing progress kontask records
- JSONL is an append-only ledger - each write is a truth at that moment
- All "rollup" happens at runtime in the UI, not in storage
- Audit trail preserved - can replay history if needed
🛠️ Implementation Plan
1. Kontasks List Page - Filter + Rollup
- Group progress kontasks by
parentRequestId - Show only the latest progress kontask per request
- Hide progress kontasks where parent request is completed
- Display count badge: "3 progress updates" (expandable)
2. Progress Kontask Detail View - Rich Display
- Render
context.todosas visual checklist - Show progress bar with
completed/total - Highlight current in-progress task
- Show history of all updates (collapsed by default)
3. Console State Persistence
- Save console output to localStorage (keyed by requestId)
- On page return, restore from localStorage
- Resume SSE stream connection if still running
- Sync todo progress bar with restored state
📁 Files to Modify
konui/src/views/kontasks.ts |
Group & filter progress kontasks in list |
konui/src/views/kontask-detail.ts |
Rich progress display with todo checklist |
konui/src/kontask-db.ts |
Add query: getProgressByParent(requestId) |
konui/src/dashboard-console.ts |
Persist/restore console output |
✓ Plan confirmed. Ready to implement.
Priority: 1) Kontasks list rollup, 2) Rich progress detail, 3) Console persistence
Quick Actions
Original Request
No layout configured
Details
Type
General
Status
Completed
Scope
vibetools
Tags
kontasksuiarchitecture
Created
2 Jan 2026, 2:25 pm
Updated
2 Jan 2026, 2:25 pm
Created By
claude
Raw Data
{
"id": "ab9d4ea8-bbf0-4de8-8930-2757938fb5a5",
"type": "general",
"status": "completed",
"title": "Progress Kontask Rollup Plan",
"description": "Confirmed approach: JSONL as immutable ledger, UI-side rollup for display",
"context": {
"output": "<div style=\"background:#1e1e1e;color:#e0e0e0;padding:20px;border-radius:8px;font-family:system-ui,sans-serif;\">\n<h2 style=\"color:#4caf50;margin:0 0 16px 0;\">✅ Plan Confirmed: Immutable JSONL + UI Rollup</h2>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin:12px 0;border-left:3px solid #4caf50;\">\n<h3 style=\"color:#4caf50;margin:0 0 10px 0;\">📜 Core Principle: JSONL is Sacred</h3>\n<ul style=\"margin:8px 0;padding-left:20px;line-height:1.8;\">\n<li><strong>NEVER</strong> modify existing progress kontask records</li>\n<li>JSONL is an append-only ledger - each write is a truth at that moment</li>\n<li>All \"rollup\" happens at <strong>runtime in the UI</strong>, not in storage</li>\n<li>Audit trail preserved - can replay history if needed</li>\n</ul>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin:12px 0;\">\n<h3 style=\"color:#61afef;margin:0 0 12px 0;\">🛠️ Implementation Plan</h3>\n\n<h4 style=\"color:#c9a227;margin:12px 0 8px 0;\">1. Kontasks List Page - Filter + Rollup</h4>\n<ul style=\"margin:8px 0;padding-left:20px;line-height:1.6;font-size:0.9rem;\">\n<li>Group progress kontasks by <code>parentRequestId</code></li>\n<li>Show only the <strong>latest</strong> progress kontask per request</li>\n<li>Hide progress kontasks where parent request is <strong>completed</strong></li>\n<li>Display count badge: \"3 progress updates\" (expandable)</li>\n</ul>\n\n<h4 style=\"color:#c9a227;margin:12px 0 8px 0;\">2. Progress Kontask Detail View - Rich Display</h4>\n<ul style=\"margin:8px 0;padding-left:20px;line-height:1.6;font-size:0.9rem;\">\n<li>Render <code>context.todos</code> as visual checklist</li>\n<li>Show progress bar with <code>completed/total</code></li>\n<li>Highlight current in-progress task</li>\n<li>Show history of all updates (collapsed by default)</li>\n</ul>\n\n<h4 style=\"color:#c9a227;margin:12px 0 8px 0;\">3. Console State Persistence</h4>\n<ul style=\"margin:8px 0;padding-left:20px;line-height:1.6;font-size:0.9rem;\">\n<li>Save console output to localStorage (keyed by requestId)</li>\n<li>On page return, restore from localStorage</li>\n<li>Resume SSE stream connection if still running</li>\n<li>Sync todo progress bar with restored state</li>\n</ul>\n</div>\n\n<div style=\"background:#2d2d2d;padding:16px;border-radius:6px;margin:12px 0;\">\n<h3 style=\"color:#98c379;margin:0 0 10px 0;\">📁 Files to Modify</h3>\n<table style=\"width:100%;border-collapse:collapse;font-size:0.85rem;\">\n<tr style=\"border-bottom:1px solid #444;\">\n<td style=\"padding:8px;\"><code>konui/src/views/kontasks.ts</code></td>\n<td style=\"padding:8px;\">Group & filter progress kontasks in list</td>\n</tr>\n<tr style=\"border-bottom:1px solid #444;\">\n<td style=\"padding:8px;\"><code>konui/src/views/kontask-detail.ts</code></td>\n<td style=\"padding:8px;\">Rich progress display with todo checklist</td>\n</tr>\n<tr style=\"border-bottom:1px solid #444;\">\n<td style=\"padding:8px;\"><code>konui/src/kontask-db.ts</code></td>\n<td style=\"padding:8px;\">Add query: getProgressByParent(requestId)</td>\n</tr>\n<tr>\n<td style=\"padding:8px;\"><code>konui/src/dashboard-console.ts</code></td>\n<td style=\"padding:8px;\">Persist/restore console output</td>\n</tr>\n</table>\n</div>\n\n<div style=\"background:#1a3d1a;padding:12px 16px;border-radius:6px;margin-top:16px;\">\n<strong style=\"color:#4caf50;\">✓ Plan confirmed.</strong> Ready to implement.\n<p style=\"margin:8px 0 0 0;font-size:0.85rem;color:#888;\">Priority: 1) Kontasks list rollup, 2) Rich progress detail, 3) Console persistence</p>\n</div>\n</div>",
"requestId": "502aad04-0ca6-4d56-bdb4-8dcca58d6480",
"requestedAt": "2026-01-02T04:18:00.000Z"
},
"createdBy": "claude",
"createdAt": "2026-01-02T04:25:44.002Z",
"updatedAt": "2026-01-02T04:25:44.354Z",
"requestId": "502aad04-0ca6-4d56-bdb4-8dcca58d6480",
"scope": "vibetools",
"tags": [
"kontasks",
"ui",
"architecture"
],
"targetUser": "claude"
}