14 KiB
Changelog
Letzte Aktualisierung: 2026-06-21
-
2026-06-21: Permanenter Owner-Passwort-Persistenz-Fix (SeedAudit + Single Source of Truth).
- Root Cause: Dual-Source-Architektur (Gitea-Secret vs Host-.env) verursachte Passwort-Drift nach DB-Reseed.
- Code-Fix:
SeedAudit-Entity + Migration (20260621081500_AddSeedAudit) eingebaut.EnsureDatabaseAsyncprueft jetztSeedAuditVOR dem Seeden. Keyowner_createdblockiert erneutes Seeden permanent. - Workflow-Fix: Deploy- und Rollback-Workflows lesen
OWNER_PASSWORDaus dem Host-.env(Single Source of Truth), nicht mehr aus Gitea-Secret. compose.yaml: Kommentar hinzugefuegt dass OWNER_PASSWORD nur beim initialen Seed verwendet wird.- Verifikation: Login funktioniert nach
docker compose down && up,--force-recreate, undrestart. - Git: Commit
f95463e, manuell ausgerollt. - Betroffene Dateien:
ApplicationBuilderExtensions.cs,Identity.cs,NexusDbContext.cs,20260621081500_AddSeedAudit.cs,NexusDbContextModelSnapshot.cs,deploy.yaml,rollback.yaml,compose.yaml,nexus.md,phases/deployment.md.
-
2026-06-20: Agent-Progress-Visibility live ausgerollt; normaler Gitea-Deploy-Trigger weiter defekt.
- Feature-Stand auf
main:adae7ba(feat: ship agent progress visibility); nach CI-Blocker-Fix2d21885(Fix activity repository test double) war CI fuer Backend, Frontend und Security gruen. - Da
POST /actions/workflows/deploy.yaml/dispatchesserverseitigHTTP 500lieferte und fuer2d21885kein erfolgreicher Deploy-Run belegbar war, wurde der produktive Rollout manuell aus einem sauberen Snapshot von Commit2d21885durchgefuehrt statt aus dem schmutzigen lokalen Worktree. - Deploy-Pfad: Snapshot-Sync nach
/home/projekte_bao/openclaw/data/openclaw/workspace/nexusund danachdocker compose --env-file .env up -d --build --force-recreate --wait. - Verifikation: Host-Deploy-Pfad auf Git-HEAD
2d218853a5d198fa8521dadbb4c6ea9be19e191c;nexus-postgres-1,nexus-api-1,nexus-web-1healthy;https://nexus.noveria.net/health/live=200;/dashboard=200;/api/v1/operations/snapshot=401ohne Auth;GET /api/dashboard/tasks/caab972a-c46c-4af5-b2c4-9d31be824da3liefert livelastActivityMessageundlastActivityAt. - Offener Betriebsblocker: Gitea-Deploy-Trigger /
workflow_dispatchfuerdeploy.yamlliefert weiterHTTP 500und muss separat repariert werden.
- Feature-Stand auf
-
2026-06-20: Live-Nexus nach Deploy-Stoerung verifiziert, Bao-Folgetasks angelegt und Agent-Workflow live gegengeprueft.
https://nexus.noveria.net/lieferte wieder200 OKmit SPA-TitelNexus | Noveria Operations./health/livelieferte200 Healthy.GET /api/dashboard/tasks/board,GET /api/dashboard/tasks/agent-overviewundGET /api/dashboard/agentslieferten mitX-Nexus-Api-Keywieder200 OK.- Neuer Task angelegt:
Restore agent progress visibility in Nexus(assignedTo=bao,priority=High, StateBacklog). - Neuer Task angelegt:
Review: Agenten-Progress mit letztem Status + Timestamp sichtbar machen(assignedTo=bao, StateBacklog). - Live-Artefakt-Pruefung bestaetigt Frontend-Strings fuer
nur Iris und Bao,researcher,executor,Worauf warte ich?,expectedFromundisAgentTask. - Reversible Live-Verifikation erfolgreich: temp. Agent-Task mit
expectedFrom=researchererschien korrekt inwaitingForOthers, erzeugte Activity und wurde direkt wieder geloescht (DELETE ... -> 204). - Reversible Notification-Verifikation erfolgreich: simulierte Bao-Aenderung (
X-Agent-Id: bao) erzeugte livetask_content_changedundtask_status_changedfuer Iris; simulierte Iris-Statusaenderung erzeugte livetask_reviewfuer Bao. - Live-Regel fuer Delete bestaetigt: Tasks lassen sich nur in
BacklogoderDoneloeschen; ein temp. Review-Task lieferte erwartungsgemaess403bis zum Ruecksetzen aufBacklog. - Geaenderte Dateien:
nexus.md,phases/changelog.md.
-
2026-06-20: Researcher und Executor in den Agent-Task-Workflow aufgenommen.
ValidAssigneesin TaskService.cs um"researcher"und"executor"erweitert.- Frontend
expectedFromLabel-Mapping, Create-Task- und Detail-Dropdowns um Researcher (🔬) und Executor (⚡) ergänzt. - Researcher/Executor bleiben als Sub-Agenten vom Status-Change ausgeschlossen (nur Bao/Iris dürfen).
- Geänderte Dateien:
backend/Services/TaskService.cs,frontend/src/views/TaskBoardView.vue,phases/changelog.md.
-
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-systembleibt 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.
- Wenn Bao eine Task inhaltlich ändert (Titel, Detail, Priorität, AssignedTo, DueDate), erhält Iris eine
- 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 jetztauthStore.isIris || authStore.isBao. Permission-Banner, State-Dropdown-Readonly-Tag und Tooltips aktualisiert. NeuerisBao-Getter im Auth-Store. - Tests:
CanChangeState_Bao_CannotChangeAnyTask→CanChangeState_Bao_CanChangeAnyTask. Neue Tests fürCanEditContent. - Geänderte Dateien: Backend
Entities.cs,TaskService.cs,DashboardController.cs,TasksController.cs; FrontendTaskBoardView.vue,auth.ts; TestsTaskBoardTests.cs; Docschangelog.md.
- Neue Autorisierungsregel (TaskStateHelper.CanChangeState):
-
2026-06-20: Agent-Task-Workflow implementiert.
- Neue Felder in WorkTask-Entity:
IsAgentTask(bool, Index) undExpectedFrom(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
irisdarf Status ändern oder Karten verschieben. - Sub-Agents (
programmer,reviewer,architekt) dürfen niemals Status ändern. baodarf Tasks inhaltlich bearbeiten, aber keinen Status ändern.- Der technische Fallback
nexus-systemdarf Status nur für interne Systempfade wie automatische Reset-/Cron-Operationen ändern. Caller wird viaX-Agent-Id-Header oder JWT-Claim aufgelöst; HTTP-Fallback ist nicht mehrbao, sondern leer und wird für Statusänderungen abgewiesen.
- Nur
- Neue API-Endpunkte:
POST /api/dashboard/tasks/agent– Agent-Task anlegen (mitexpectedFrom).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:
UpdateTaskStatusundMoveTaskprüfen jetzt viaResolveCallerAgent()+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; Frontendtasks.ts,TaskBoardView.vue.
- Neue Felder in WorkTask-Entity:
-
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,apiundwebperdocker:cli compose up -d --force-recreateneu erstellt, ohne das DB-Volume zu löschen. Ergebnis:/health/liveblieb healthy, der Passwort-Hash fürvmbao62@hotmail.deblieb 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.vueundfrontend/src/stores/tasks.tsangepasst. Verifiziert mitCOREPACK_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:
ImportFromIrisTodoAsyncin 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 inExtensions/ApplicationBuilderExtensions.cs, Helpers inHelpers/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
.envgesetzt; Backend synchronisiert das konfigurierte Passwort nun auch fuer bestehende Owner-Konten. -
2026-06-08:
nexus.mdin 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.templateerstellt (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