114 lines
5.1 KiB
Markdown
114 lines
5.1 KiB
Markdown
# DisClaw — Kanban Board
|
||
|
||
> **Regeln**: Status nur in der Issue-Datei (`tasks/DIS-XXX.md`) ändern, dann hier die Karte verschieben.
|
||
> Developer-Agent nimmt eine "Ready"-Karte, setzt Status auf `in-progress`, erstellt Branch, öffnet PR.
|
||
> PM-Agent (oder User) reviewt PR und setzt Status auf `done`.
|
||
|
||
Letzte Aktualisierung: 2026-04-10 (DIS-151 done)
|
||
|
||
---
|
||
|
||
## Backlog
|
||
*Noch nicht startbar — Abhängigkeiten offen oder Phase noch nicht freigegeben.*
|
||
|
||
| ID | Titel | Phase | Branch | Blockiert durch |
|
||
|----|-------|-------|--------|-----------------|
|
||
| — | | | | |
|
||
|
||
---
|
||
|
||
## Ready
|
||
*Startbereit — kein Blocker. Agent kann Branch anlegen und loslegen.*
|
||
|
||
| ID | Titel | Phase | Branch | Priorität |
|
||
|----|-------|-------|--------|-----------|
|
||
| [DIS-152](DIS-152.md) | Gemappte Projektpfade (host:virtual) | 1.5 | `refinement/mapped-project-paths` | p2 |
|
||
|
||
---
|
||
|
||
## In Progress
|
||
*Branch existiert, Developer-Agent arbeitet aktiv daran.*
|
||
|
||
| ID | Titel | Branch | Agent | Gestartet |
|
||
|----|-------|--------|-------|-----------|
|
||
| — | | | | |
|
||
|
||
---
|
||
|
||
## In Review
|
||
*PR ist offen, wartet auf Review.*
|
||
|
||
| ID | Titel | PR | Reviewer |
|
||
|----|-------|----|----------|
|
||
| — | | | |
|
||
|
||
---
|
||
|
||
## Done — Phase 0 (Security Hardening)
|
||
*Gemergt in `main`.*
|
||
|
||
| ID | Titel | Gemergt | PR |
|
||
|----|-------|---------|----|
|
||
| [DIS-001](DIS-001.md) | Workspace-Root nach `~/.disclaw/workspaces/` | 2026-04-08 | — |
|
||
| [DIS-002](DIS-002.md) | `shell: false` + `cross-spawn` Windows-Fix | 2026-04-08 | — |
|
||
| [DIS-003](DIS-003.md) | `sanitizedEnv()` — Secrets aus Child-Env entfernen | 2026-04-08 | — |
|
||
| [DIS-004](DIS-004.md) | Runner: `--bare` entfernt (OAuth-Fix) | 2026-04-09 | #32 |
|
||
| [DIS-005](DIS-005.md) | Path-Traversal-Check in `/new-agent` | 2026-04-08 | — |
|
||
| [DIS-006](DIS-006.md) | `.claude/settings.json`-Template härten | 2026-04-08 | — |
|
||
| [DIS-007](DIS-007.md) | Lock-File gegen Doppelstart | 2026-04-08 | — |
|
||
| [DIS-008](DIS-008.md) | Forgejo Actions CI | 2026-04-08 | — |
|
||
|
||
---
|
||
|
||
## Done — Phase 1 (Solides MVP)
|
||
*Gemergt in `main`.*
|
||
|
||
| ID | Titel | Gemergt | PR |
|
||
|----|-------|---------|----|
|
||
| [DIS-101](DIS-101.md) | Pino-Logger einführen, `console.*` ersetzen | 2026-04-10 | #45 |
|
||
| [DIS-102](DIS-102.md) | `sanitizeForDiscord` — Pfade redaktieren | 2026-04-10 | #46 |
|
||
| [DIS-103](DIS-103.md) | `ChannelQueue` — Per-Channel-FIFO | 2026-04-10 | #48 |
|
||
| [DIS-104](DIS-104.md) | Globaler Semaphore (`max_concurrent_agents`) | 2026-04-10 | #44 |
|
||
| [DIS-105](DIS-105.md) | `splitForDiscord` — Codeblock-aware Splitting | 2026-04-10 | #47 |
|
||
| [DIS-106](DIS-106.md) | Runner-API-Refactoring → `RunResult`-Typ | 2026-04-10 | #51 |
|
||
| [DIS-107](DIS-107.md) | Zod-Schemas für Config, `agent.yaml`, CLI-Output | 2026-04-10 | #49 |
|
||
| [DIS-108](DIS-108.md) | DB-Schema SSOT → `src/db/schema.sql` | 2026-04-10 | #50 |
|
||
| [DIS-109](DIS-109.md) | `.env.example` + Vitest-Setup + `npm test` | 2026-04-10 | #42 |
|
||
| [DIS-110](DIS-110.md) | `docs/cli-feature-probe.md` — CLI-Regression-Script | 2026-04-10 | #43 |
|
||
|
||
---
|
||
|
||
## Done — Phase 1.5 (Refinement)
|
||
*Gemergt in `main`.*
|
||
|
||
| ID | Titel | Gemergt | PR |
|
||
|----|-------|---------|----|
|
||
| [DIS-151](DIS-151.md) | Channel-Kategorisierung + Lifecycle | 2026-04-10 | #60 |
|
||
| [DIS-153](DIS-153.md) | Model-Auswahl pro Agent | 2026-04-13 | #62 |
|
||
| [DIS-154](DIS-154.md) | Discord Rich Features (Reactions, Dateien, [ATTACH:]) | 2026-04-13 | #64 |
|
||
|
||
---
|
||
|
||
## Epics (Phase 1.5 Refinement + Phase 2–6+)
|
||
*Werden am Phasen-Anfang in granulare Issues verfeinert.*
|
||
|
||
| Epic | Titel | Phase | Status |
|
||
|------|-------|-------|--------|
|
||
| DIS-EP-150 | Phase-1.5 Refinement (QoL) | 1.5 | **planning** |
|
||
| [DIS-EP-201](EPICS.md#dis-ep-201) | DB-Migration + `SessionStore`-Methoden | 2 | locked |
|
||
| [DIS-EP-202](EPICS.md#dis-ep-202) | Runner-Integration `--resume` mit Fallback | 2 | locked |
|
||
| [DIS-EP-203](EPICS.md#dis-ep-203) | Usage-Metriken + `agent_runs`-Tabelle | 2 | locked |
|
||
| [DIS-EP-204](EPICS.md#dis-ep-204) | Integration-Tests Session-Resume + Fork-Case | 2 | locked |
|
||
| [DIS-EP-301](EPICS.md#dis-ep-301) | Typing-Refresh + `sendResponse`-Helper | 3 | locked |
|
||
| [DIS-EP-302](EPICS.md#dis-ep-302) | Attachment-Inbox für Discord-Bilder | 3 | locked |
|
||
| [DIS-EP-303](EPICS.md#dis-ep-303) | Input-Limit + User-Feedback-Reactions | 3 | locked |
|
||
| [DIS-EP-304](EPICS.md#dis-ep-304) | Tests send-response + Attachment-Inbox | 3 | locked |
|
||
| [DIS-EP-401](EPICS.md#dis-ep-401) | Profile-Registry-Grundgerüst | 4 | locked |
|
||
| [DIS-EP-402](EPICS.md#dis-ep-402) | Fünf Profile (developer/researcher/writer/ops/sandboxed) | 4 | locked |
|
||
| [DIS-EP-403](EPICS.md#dis-ep-403) | `/new-agent profile:<name>` Option | 4 | locked |
|
||
| [DIS-EP-404](EPICS.md#dis-ep-404) | PreToolUse-Hook `guard-tool.cjs` + Audit-Log | 4 | locked |
|
||
| [DIS-EP-405](EPICS.md#dis-ep-405) | Integration-Tests Hook-Guard + Profile-Permissions | 4 | locked |
|
||
| [DIS-EP-501](EPICS.md#dis-ep-501) | `runAgentStream()` mit `stream-json` | 5 | locked |
|
||
| [DIS-EP-502](EPICS.md#dis-ep-502) | Defensiver NDJSON-Event-Parser | 5 | locked |
|
||
| [DIS-EP-503](EPICS.md#dis-ep-503) | `stream-to-discord` — Edit-Debouncing | 5 | locked |
|
||
| [DIS-EP-504](EPICS.md#dis-ep-504) | Feature-Flag + Fallback + Integration-Tests | 5 | locked |
|