Files
nexus/phases/changelog.md
T
devops 83e072bc27
CI - Build & Test / Backend (.NET) (push) Successful in 29s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 19s
CI - Build & Test / Security Check (push) Successful in 4s
feat: Bao/Iris-Statusrechte + Bao→Iris-Notifications + Agent-Workflow-Übersicht
- Bao darf jetzt Status ändern (neben Iris), Sub-Agents weiterhin nicht
- CanEditContent für Inhaltsbearbeitung durch alle bekannten Caller
- Bao-Content-Änderungen triggern task_content_changed-Notification an Iris
- Bao-Status-Änderungen triggern task_status_changed-Notification an Iris
- Iris-Status-Änderungen triggern task_status_changed-Notification an Bao
- Neue WorkTask-Felder: IsAgentTask (bool), ExpectedFrom (string)
- Agent-Workflow-API: CreateAgentTask, WaitingTasks, AgentOverview
- Frontend: Agent-Task-Badge, Iris-Overview-Panel, isBao-Getter
- Login-Rate-Limiter mit strukturiertem JSON-Fehlermeldungs-Body
- Volume-Name: nexus-postgres → postgres-data (Standardisierung)
2026-06-20 18:43:05 +02:00

92 lines
9.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.
# Changelog
> Letzte Aktualisierung: 2026-06-20
- 2026-06-20: **Bao-Status-Change + Content-Change-Benachrichtigung aktiviert.**
- **Neue Autorisierungsregel (TaskStateHelper.CanChangeState):**
- **Iris + Bao** dürfen jetzt Status ändern / verschieben.
- Sub-Agents (`programmer`, `reviewer`, `architekt`) dürfen weiterhin NIEMALS Status ändern.
- `nexus-system` bleibt als technischer Fallback erlaubt.
- **Neue Methode `CanEditContent`:** Bestätigt, dass alle bekannten Caller (bao, iris, sub-agents, nexus-system) Inhalt bearbeiten dürfen.
- **Benachrichtigungen bei Bao-Änderungen:**
- Wenn Bao eine Task inhaltlich ändert (Titel, Detail, Priorität, AssignedTo, DueDate), erhält **Iris** eine `task_content_changed`-Notification mit Detailangabe, WAS geändert wurde.
- Wenn Bao den Status ändert, erhält **Iris** eine `task_status_changed`-Notification.
- Wenn Iris den Status ändert, erhält **Bao** eine `task_status_changed`-Notification.
- **Verbesserte Activity-Einträge:** Zeigen jetzt detailliert, was sich geändert hat (statt nur "Task updated").
- **Geänderte Fehlermeldungen:** DashboardController und TasksController zeigen jetzt "nur Iris und Bao" statt "nur Iris".
- **Frontend:** `canChangeState`-Computed prüft jetzt `authStore.isIris || authStore.isBao`. Permission-Banner, State-Dropdown-Readonly-Tag und Tooltips aktualisiert. Neuer `isBao`-Getter im Auth-Store.
- **Tests:** `CanChangeState_Bao_CannotChangeAnyTask``CanChangeState_Bao_CanChangeAnyTask`. Neue Tests für `CanEditContent`.
- Geänderte Dateien: Backend `Entities.cs`, `TaskService.cs`, `DashboardController.cs`, `TasksController.cs`;
Frontend `TaskBoardView.vue`, `auth.ts`; Tests `TaskBoardTests.cs`; Docs `changelog.md`.
- 2026-06-20: **Agent-Task-Workflow implementiert.**
- **Neue Felder in WorkTask-Entity:** `IsAgentTask` (bool, Index) und `ExpectedFrom` (string? MaxLength 60, Index).
Agent-Tasks sind als solche im Board erkennbar (🤖 Badge) und unterliegen einem strikt von Iris geführten Statusfluss.
- **Status-Change-Autorisierung:** `TaskStateHelper.CanChangeState()` prüft jetzt strikt:
- **Nur `iris`** darf Status ändern oder Karten verschieben.
- Sub-Agents (`programmer`, `reviewer`, `architekt`) dürfen **niemals** Status ändern.
- `bao` darf Tasks inhaltlich bearbeiten, aber **keinen** Status ändern.
- Der technische Fallback `nexus-system` darf Status nur für interne Systempfade wie automatische Reset-/Cron-Operationen ändern.
Caller wird via `X-Agent-Id`-Header oder JWT-Claim aufgelöst; HTTP-Fallback ist **nicht** mehr `bao`, sondern leer und wird für Statusänderungen abgewiesen.
- **Neue API-Endpunkte:**
- `POST /api/dashboard/tasks/agent` Agent-Task anlegen (mit `expectedFrom`).
- `GET /api/dashboard/tasks/agent-waiting` Offene Agent-Tasks nach Erwartung.
- `GET /api/dashboard/tasks/agent-overview?staleHours=2` Komplette Iris-Übersicht:
`waitingForBao`, `waitingForIris`, `waitingForOthers`, `staleTasks`.
- **Neue Service-Methoden:** `CreateAgentTaskAsync`, `GetWaitingTasksAsync`, `GetAgentWorkflowOverviewAsync`.
- **DashboardController-Sicherheit:** `UpdateTaskStatus` und `MoveTask` prüfen jetzt via
`ResolveCallerAgent()` + `TaskStateHelper.CanChangeState()`. Bei Verstoß: **403** mit klarer Iris-only-Fehlermeldung.
- **Frontend:**
- TaskBoardView: Agent-Task-Badge (🤖), ExpectedFrom-Label (⏳), Stale-Banner,
kollabierbares Iris-Overview-Panel („Iris Worauf warte ich?“) mit 4 Sektionen:
Warte auf Iris / Bao / Andere / Stale Tasks.
- Für Nicht-Iris: Permission-Banner, kein wirksames Drag&Drop, Status-Dropdown deaktiviert.
- tasks.ts-Store: `fetchAgentOverview()`, `createAgentTask()`, Getter für Iris-Ansicht.
- Detail-Panel: zeigt Agent-Task-Status und ExpectedFrom im Snapshot.
- **Tests:** TaskStateHelper-Coverage erweitert um `CanChangeState`.
- **Dokumentation:** Changelog aktualisiert.
- Geänderte Dateien: siehe Backend `Entities.cs`, `TaskService.cs`, `ITaskService.cs`, `DashboardController.cs`,
`Dashboard.cs` (Models), `NexusDbContext.cs`; Frontend `tasks.ts`, `TaskBoardView.vue`.
- 2026-06-20: Nexus-Auth-Persistenz live verifiziert.
- 2026-06-20: Nexus-Auth-Persistenz live verifiziert. Owner-Passwort in der produktiven Postgres-DB geprüft, Stack vollständig neu gestartet und anschließend `postgres`, `api` und `web` per `docker:cli compose up -d --force-recreate` neu erstellt, ohne das DB-Volume zu löschen. Ergebnis: `/health/live` blieb healthy, der Passwort-Hash für `vmbao62@hotmail.de` blieb vor und nach Restart/Recreate identisch. Wichtiges Learning: temporäre Passwörter oder Auth-Fixes niemals an Bao weitergeben, bevor der echte Live-Login oder mindestens der persistierte DB-Hash auf dem Zielstack verifiziert ist.
- 2026-06-20: Task Board um klickbare Linear-inspirierte Detailansicht erweitert: Board-Karten öffnen jetzt ein strukturiertes Side/Overlay-Detailpanel mit editierbarem Titel, Beschreibung, Status, Priorität, Zuständigkeit und Fälligkeitsdatum sowie geladener Aktivität und Unteraufgaben. `frontend/src/views/TaskBoardView.vue` und `frontend/src/stores/tasks.ts` angepasst. Verifiziert mit `COREPACK_HOME=$PWD/.corepack-home PNPM_HOME=$PWD/.pnpm-home pnpm build`.
- 2026-06-19: Task-Board-Doku-Drift behoben: Header-Kommentar in TaskBoardView.vue von "4 columns" auf "6 columns" (Offen, InBearbeitung, Delegiert, Review, Blockiert, Erledigt) korrigiert. tasks.ts-Store-Kopfkommentar um delegated ergänzt.
- 2026-06-19: Veralteter TODO.md-Import entfernt: `ImportFromIrisTodoAsync` in TaskService.cs, ITaskService.cs und der import-from-iris-todo-API-Endpoint in DashboardController.cs gelöscht. ImportResultDto aus Models/Dashboard.cs entfernt. TODO.md ist abgeschafft, Task Board alleinige Quelle.
- 2026-06-19: Backend-Tests erweitert: TaskBoardTests.cs (69 Tests total, +13 neue) decken TaskStateHelper-BoardGroupKey/ToState/BoardGroupToState/DisplayString/AllStates/IsValidState/IsInProgressOrBlocked/IsDoneOrBacklog ab. Backend-Build 0 Errors, Frontend vue-tsc 0 Errors.
- 2026-06-16: Program.cs refactored: DI extrahiert in `Extensions/ServiceCollectionExtensions.cs`, Middleware in `Extensions/ApplicationBuilderExtensions.cs`, Helpers in `Helpers/PasswordHelper.cs`. Program.cs von ~200 auf 26 Zeilen reduziert.
- 2026-06-16: Nexus auf Netcup (mission-control) redeployed. Neuer Stack unter `/home/projekte_bao/nexus/`. Traefik reverse-proxy mit Let's Encrypt TLS. Volume und Netzwerk-Namen bereinigt (postgres-data, internal). Compose-Pfade von Ionos auf Netcup migriert.
- 2026-06-16: Ollama-Modelle (2.4 GB) und alle ungenutzten Runtime-Dateien entfernt. Codex-Logs bereinigt (~342 MB). Workspace-Aufräumung (~3.1 GB gesamt).
- 2026-06-16: Modell-Healthcheck nach Migration: Alle 7 aktiven Modelle laufen (DeepSeek Flash/Pro, GPT-5.4/5.5, Claude Sonnet/Opus via CLI-Backend). Ollama und NVIDIA endgültig deaktiviert.
- 2026-06-14: Server-Migration von Ionos (85.214.180.137) nach Netcup (178.105.105.106). Hostname: mission-control. Migration: OpenClaw, Gitea, Nexus-Volume.
- 2026-06-12: Agent-Workspaces finalisiert. Iris als Chief of Staff mit Approval-Autonomie. Bidirektionale Kommunikation etabliert.
- 2026-06-11: Gitea CI/CD-Pipeline aktiv. Agent-Repo-Permissions mit API-Tokens (statt Passwort-Auth). DevOps-Token für Deploy-Trigger.
- 2026-06-09: Phase 2 Backend + Frontend implementiert: Memory-Browser (Liste, Detail, Volltextsuche), Docs-Browser (Kategorien, Filter), Team-Org-Map (Karten + Kommunikationsmatrix), Security-Center (Auth, Tokens, Rate-Limit, Cookies). Backend-Build 0 Errors, Frontend-Build (vue-tsc + vite) 0 Errors.
- 2026-06-09: Researcher-Agent zum Team hinzugefügt (DeepSeek V4 Pro, Nur-Lese-Rechte, YouTube-Vision-Skill). Kommunikationsmatrix erweitert (Researcher↔Iris only).
- 2026-06-09: Phase 1 komplettiert: Live-Agentinventar, Dashboard-Metriken, Approval-Workflow, Healthchecks (PostgreSQL + Runtime), Tests (Backend 3/3 + Frontend 2/2).
- 2026-06-09: Nexus produktiv auf VPS deployed: Docker-Stack laeuft, Nginx mit Let's Encrypt SSL fuer nexus.noveria.net konfiguriert.
- 2026-06-09: Nexus-Owner-Passwort lokal in `.env` gesetzt; Backend synchronisiert das konfigurierte Passwort nun auch fuer bestehende Owner-Konten.
- 2026-06-08: `nexus.md` in schlanke Indexdatei und Phase-Dateien aufgeteilt.
- 2026-06-08: Review-Workflows werden auf kurze, tokenarme Ausgabe ausgerichtet.
- 2026-06-08: Programmer hat Phase-1-Reste implementiert:
- ProjectDetailView (CRUD, Archiv, Tasks)
- SettingsView (Profil-Edit, Passwort-Änderung)
- Task-Edit (Inline-Titel, Priorität, Projekt-Zuweisung)
- Activity-Feed (Filter, Sort, Paginierung)
- Router auf echte Komponenten umgestellt
- Backend: Ollama/NVIDIA entfernt, nur OpenClaw aktiv
- Compose bereinigt
- 2026-06-08: Iris zum Chief of Staff mit Approval-Matrix aufgewertet
- 2026-06-08: Programmer hat volle Dateirechte (workspaceOnly: false, ask: off)
- 2026-06-08: Phase-1-Reste abgeschlossen:
- shadcn-vue bewusst aus dem Zielstack entfernt (reines CSS) und im Roadmap markiert
- `.env.template` erstellt (PostgreSQL, JWT, Owner, OpenClaw)
- `DELETE /api/v1/tasks/{id}` implementiert (nur Done/Backlog erlaubt, 403 bei anderen States)
- Task-Delete-Button mit Trash2-Icon und Confirmation-Dialog in ModuleView.vue (Teleport-Modal)
- `deleteTask`-Action im Operations-Store (mit Metrik-Neuberechnung)
- Phase-1-MVP-Status aktualisiert (Tasklöschung, Produktionswerte, Deployment-Entry)
- Deployment-Dokumentation überarbeitet (Build-Anleitung, Deployment-Plan, Offene-Arbeit-Liste)
- Changelog aktualisiert