Files
ClaudeDo/docs/superpowers/plans/2026-04-21-open-items-consolidation.md

190 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Open Items Consolidation — 2026-04-21
Consolidates everything still open from `docs/open.md`, `docs/improvement-plan.md`, and the 2026-04-16 subtask-tree spec. Today's plans/specs (stream-formatter, settings-modal, continue-and-reset) are explicitly out of scope — those are tracked separately.
Grouped by priority and sorted by UX impact vs. effort. Each item lists **Soll**, **Dateien**, **Aufwand**, **Risiko**.
---
## P1 — UX blockers and robustness
### 1. Auto-Reconnect (ex IP-1)
**Soll:** `HubConnectionBuilder.WithAutomaticReconnect(...)` + event handlers for `Reconnecting`/`Reconnected`/`Closed`. Exponential backoff.
**Dateien:** `src/ClaudeDo.Ui/Services/WorkerClient.cs`
**Aufwand:** klein (~30 Zeilen)
**Risiko:** klein
### 2. Reconnect-State in StatusBar (ex IP-7)
**Soll:** States `connected | connecting | reconnecting | offline`, farb-codiert. Depends on #1.
**Dateien:** `src/ClaudeDo.Ui/ViewModels/StatusBarViewModel.cs`, StatusBar view
**Aufwand:** klein
**Risiko:** klein
### 3. Folder-Picker für Working Directory (ex open.md 2.1)
**Soll:** Button neben Pfad-TextBox → `IStorageProvider.OpenFolderPickerAsync`.
**Dateien:** `src/ClaudeDo.Ui/Views/ListEditorView.axaml(.cs)`, `ViewModels/ListEditorViewModel.cs`
**Aufwand:** klein (~30 Zeilen)
**Risiko:** klein
### 4. Markdown-Rendering für Result/Description (ex open.md 2.3)
**Soll:** `Markdown.Avalonia` Paket einbinden, `MarkdownScrollViewer` statt readonly `TextBox` in Details-Island.
**Dateien:** `src/ClaudeDo.Ui/ClaudeDo.Ui.csproj`, `Views/Islands/DetailsIslandView.axaml`
**Aufwand:** mittel (Theme-Integration kann zicken)
**Risiko:** kleinmittel
### 5. Live-Log Auto-Scroll (ex open.md 2.4)
**Soll:** Sticky-Bottom-Pattern: `ScrollToEnd()` auf neue Zeilen, außer User hat manuell hochgescrollt.
**Dateien:** `src/ClaudeDo.Ui/Views/Islands/SessionTerminalView.axaml(.cs)`
**Aufwand:** klein
**Risiko:** klein
### 6. CLI-Preflight beim Worker-Start (ex open.md 3.1)
**Soll:** Startup-Check `claude --version` + Login-Status. Wenn fehlt → laut failen mit Hinweis, nicht still in Queue idlen.
**Dateien:** `src/ClaudeDo.Worker/Runner/ClaudeProcess.cs`, Worker startup (Program.cs / HostedService)
**Aufwand:** klein
**Risiko:** klein
---
## P2 — Daten & Features
### 7. Notes-Mode (ex IP-2)
**Soll:** Neue Spalte `lists.kind` (`agent` | `notes`). Worker filtert auf `kind = 'agent'`. UI versteckt Run/Schedule/Worktree-Felder für `notes`.
**Dateien:**
- Migration + `TaskList` Entity + `IEntityTypeConfiguration`
- `src/ClaudeDo.Worker/Queue/QueueService.cs` (Filter)
- `ViewModels/ListEditorViewModel.cs`, `Views/Islands/*` (conditional visibility)
**Aufwand:** mittel
**Risiko:** mittel (Default für bestehende Listen = `agent`)
### 8. Subtask-Tree im TaskList-Island (ex 2026-04-16 spec)
**Soll:** Indented Subtasks unter Parent-Task, Expand/Collapse, Chevron-Spalte, Count-Indikator. Batch-Query `GetCountsByTaskIdsAsync`.
**Dateien:** `ViewModels/TaskItemViewModel.cs` (+ `Subtasks`, `IsExpanded`, `HasSubtasks`), `Views/Islands/TaskListView.axaml`, `Data/Repositories/SubtaskRepository.cs`
**Aufwand:** mittel
**Risiko:** kleinmittel (spec ist fertig)
### 9. Tag-Repository `GetAllKnownTagsAsync` (ex IP-8)
**Soll:** Distinct-Query über alle Tags. Voraussetzung für #10.
**Dateien:** neuer `Data/Repositories/TagRepository.cs` (oder in bestehendem Repo)
**Aufwand:** klein
**Risiko:** klein
### 10. Tag Multi-Select Control (ex IP-4)
**Soll:** AutoCompleteBox / Chips statt Freitext. Datenquelle aus #9.
**Dateien:** `Views/Islands/DetailsIslandView.axaml` (Tag-Sektion), ggf. neues `TagPickerControl`
**Aufwand:** kleinmittel
**Risiko:** klein
### 11. Worktree-Cleanup bei Anlegefehler (ex open.md 3.2)
**Soll:** Wenn `git worktree add` teilweise anlegt dann failed → best-effort `git worktree remove --force` + DB-Row nicht persistieren.
**Dateien:** `src/ClaudeDo.Data/Services/GitService.cs`, `src/ClaudeDo.Worker/Runner/TaskRunner.cs`
**Aufwand:** klein
**Risiko:** klein
### 12. Tag-Negation / Exclusion (ex open.md 3.4)
**Soll:** Queue respektiert `task_tag_exclusions` laut Plan. Aktuell nur `agent`-Include.
**Dateien:** `src/ClaudeDo.Worker/Queue/QueueService.cs`
**Aufwand:** klein
**Risiko:** klein
---
## P3 — Tests, CI, Docs
### 13. Gitea-Actions CI Pipeline (ex open.md 5.1)
**Soll:** `.gitea/workflows/ci.yml`: restore → build → test auf push/PR. Nur `release.yml` existiert bisher.
**Dateien:** neu — `.gitea/workflows/ci.yml`
**Aufwand:** klein
**Risiko:** klein
### 14. SignalR Roundtrip-Test (ex open.md 5.2)
**Soll:** `WebApplicationFactory` + `HubConnectionBuilder` testen `Ping`, `GetActive`, `RunNow`-Throw-Verhalten.
**Dateien:** neu — `tests/ClaudeDo.Worker.Tests/Hub/WorkerHubTests.cs`
**Aufwand:** mittel
**Risiko:** klein
### 15. Claude-CLI Smoke-Test (ex open.md 5.3)
**Soll:** `[Fact(Skip=...)]` Real-CLI-Test, aktiviert nur wenn `CLAUDE_AUTHENTICATED=1`.
**Dateien:** neu — `tests/ClaudeDo.Worker.Tests/Runner/ClaudeProcessSmokeTest.cs`
**Aufwand:** klein
**Risiko:** klein
### 16. README ausbauen (ex open.md 6.1)
**Soll:** Ist 107 Zeilen. Ergänzen: Screenshots, Quickstart (Worker + UI starten), Konfiguration, Troubleshooting.
**Dateien:** `README.md`
**Aufwand:** klein
**Risiko:** keiner
### 17. `docs/architecture.md` herausziehen (ex open.md 6.2)
**Soll:** Architektur-Sektion aus `plan.md` in eigenes Dokument.
**Dateien:** neu — `docs/architecture.md`
**Aufwand:** klein
**Risiko:** keiner
### 18. ADRs für Kern-Entscheidungen (ex open.md 6.3)
**Soll:** Kurze ADRs (1 Seite) für: SignalR vs. SQLite-Polling; Worktree pro Task; SignalR über Loopback ohne Auth; EF Core statt Dapper.
**Dateien:** neu — `docs/adr/0001-*.md``0004-*.md`
**Aufwand:** klein
**Risiko:** keiner
### 19. Strukturiertes Logging (ex open.md 3.3)
**Soll:** `Console.WriteLine` / manuelle Log-Zeilen durch `ILogger<T>` ersetzen. Log-Levels, Scope für TaskId.
**Dateien:** `src/ClaudeDo.Worker/**` (query-able via `grep Console.Write`)
**Aufwand:** mittel
**Risiko:** klein
---
## P4 — Service-Deployment (später)
### 20. Windows-Service Hosting in Code (ex open.md 4.1)
**Soll:** `.UseWindowsService()` + `Microsoft.Extensions.Hosting.WindowsServices` Paket.
**Aufwand:** klein
### 21. Absolute Pfad-Auflösung (ex open.md 4.2)
**Soll:** Config-Pfade immer absolut auflösen (Service läuft in `C:\Windows\System32`).
**Aufwand:** klein
### 22. Install-Skripte / Doku (ex open.md 4.3)
**Soll:** `sc create` / PowerShell-Skript, Doku in README.
**Aufwand:** klein
---
## Empfohlene Reihenfolge
**Block 1 — Sofortige UX-Wins (1 Session):**
1. → 2. (Auto-Reconnect + StatusBar) — zusammenhängend, klein
3. Folder-Picker
5. Log Auto-Scroll
**Block 2 — Content-Qualität (1 Session):**
4. Markdown-Rendering
6. CLI-Preflight
**Block 3 — Daten-Features (2 Sessions):**
7. Notes-Mode (mit Migration)
8. Subtask-Tree
9. → 10. Tag-Repo + Multi-Select
**Block 4 — Worker-Robustheit:**
11. Worktree-Cleanup
12. Tag-Exclusion
19. Strukturiertes Logging
**Block 5 — Tests + CI + Docs:**
13. CI Pipeline
14. → 15. Hub-Tests + Smoke-Test
16. → 17. → 18. README + architecture.md + ADRs
**Block 6 — Service-Deployment (wenn gewünscht):**
20. → 21. → 22.
---
## Nicht im Plan
- Alles aus heute (2026-04-21): Stream-Formatter-Rewrite, Settings-Modal, Continue-and-Reset — sind eigene Plans.
- UI-Rewrite-Islands, UI-Polish-Design-Parity, UX-Redesign, Worker-CLI-Modernization, EF-Core-Migration, Installer-Download-Mode, Logic-Bug-Fixes — bereits gemerged (siehe git log).
- IP-3 (Doppelklick) und IP-5 (Kontextmenü) — vermutlich im Zuge des UI-Rewrites erledigt; falls nicht, trivial nachzuziehen.