2beaaf6179
Deep audit 2026-03-26 (10 findings, 4 fixes): - FINDING-1 P0: saveComposition async + atomic write (tmp+rename) — prevents partial JSON on concurrent saves - FINDING-2 P0: MAX_COMPOSITIONS (500), MAX_COMPOSITION_BYTES (512KB), MAX_TRACKS_PER_COMPOSITION (100) env-configurable - FINDING-3 P1: ttsQueues self-cleans via .finally() after chain drains - FINDING-4 P1: personaMemoryLocks reset to Promise.resolve() in .finally() — prevents unbounded chain growth - lot-204: docs/LOT204_TRAINING_SPIKE.md (OpenCharacter + PCL, GO verdict, 4 sub-lots, RTX 4090 sufficient) - lot-30: docs/LOT030_TTS_EVALUATION.md (Pocket TTS: watch — EN-only blocker, FR planned, no date) - docs/DEEP_AUDIT_2026-03-26.md: 10 findings P0-P2 catalogued Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
26 KiB
26 KiB
TODO
Session 2026-03-26 — TTS Evaluation lot-30 [done]
- lot-30-pocket-tts: evaluation complete — Pocket TTS v1.1.1 (Kyutai, MIT, 100M params, CPU 6x realtime, ~200ms first chunk, voice cloning 5s ref). VERDICT: SURVEILLER. Bloquant: EN only, FR planifie sans date (issue #118). Stack actuel optimal: Qwen3-TTS :9300 + Chatterbox :9200 + Piper fallback. Action: Watch GitHub release + issue #118. Spike immediat quand FR annonce. Voir docs/LOT030_TTS_EVALUATION.md.
Session 2026-03-26 — RAG audit + Journald monitoring [done]
- lot-28-rag-config: audit confirmé — 4 env vars impl. in rag.ts (lines 13-16), startup model check in init(), lot marked [done] in PLAN.md
- lot-29 journald: scripts/journald-monitor.sh created (TUI colored dots, --watch, --lines, --service flags)
- lot-29 journald: ops/v2/journald-alerts.conf created (INI config, restart policies, alert conditions per service)
Session 2026-03-26 — Timeline UI + Composition Tests [done]
- lot-547: Timeline model v1 (already in composition-store.ts: Track, TimelineClip, TimelineMarker, TimelineModelV1)
- lot-548: Waveform timeline UI v1 (TimelineView.tsx + CSS, routed at #timeline/:id)
- lot-549: Composition tests renfort (20 tests, 0 fail — added setActiveComposition, BPM clamping, markers sort, multi-track clips)
- lot-201: Schema memory persona v2 (done in prior session via feat(personas): migrate runtime memory to v2-local store)
- lot-202: Policy engine extraction/summarization/pruning (done via feat(personas): add configurable memory policy engine)
- lot-205: Retirer fallback legacy personas.json / persona-*.json (aucun fichier legacy sur disque)
- lot-206: Supprimer aliases createInMemory*Repo (déjà absent — migration convergée)
- P11 routes extraction: routes/personas.ts, routes/node-engine.ts, routes/chat-history.ts, app-middleware.ts
Session 2026-03-25 — Personas runtime V2
- Migrer le store local runtime personas vers
data/v2-local/*en fichier par persona - Conserver fallback de lecture legacy (
personas.json,persona-*.json) pour migration douce - Corriger les fuites de références mutables dans repos in-memory personas/sources/feedback/proposals
- Ajouter tests de non-régression migration + immutabilité (
create-repos.test.ts) - Aligner scripts
smoke.jsetbuild.jssurKXKM_LOCAL_DATA_DIR=data/v2-local - Mettre les artefacts legacy build derrière flag explicite
BUILD_INCLUDE_LEGACY_PERSONA_V1=1 - Exposer le mode fallback API comme
localau lieu dememory - Recaler les factories canoniques sur
createLocal*Repoavec alias de compat - Push distant des commits locaux (bloqué dans cette session: transport git/gh indisponible)
- lot-201: Implémenter schema memory persona v2 (working + archival blocks)
- lot-202: Ajouter policy engine extraction/summarization/pruning configurable
- lot-203: Benchmark runtime memory local vs approche Mem0 — verdict: garder le store local (latence <5ms, 0 deps externes, Mem0 trop lourd pour l'échelle actuelle) — voir docs/LOT203_MEMORY_BENCHMARK.md
- lot-204: Spike training OpenCharacter + PCL sur 5 personas — GO conditionnel. RTX 4090 suffisant. Pipeline: dialogues synthétiques Ollama → SFT QLoRA Qwen2.5-7B Unsloth → DPO PCL-style → GGUF Ollama. 7-12h total. Voir docs/LOT204_TRAINING_SPIKE.md. Suite: lot-204a (enrichir profils + script génération), lot-204b (SFT), lot-204c (export + eval).
- lot-205: Retirer le fallback legacy
personas.json/persona-*.jsonaprès fermeture de fenêtre de migration - lot-206: Supprimer les alias
createInMemory*Repoaprès convergence complète des imports/tests
P0 Critical (sécurité & stabilité)
- Fix bash injection dans
node-engine-runtimes.js— validation runtimeId/nodeType + timeout 30min - Ajouter timeout sur les appels Ollama — 15s metadata, 5min chat streaming
- Validation des entrées sur les messages WebSocket — 64KB max frame, 8192 chars text, type checks
- Rate limiting par user/IP sur chat —
rate-limit.js+ 30 msg/min par IP dans WebSocket escapeHtmldédupliqué →utils.jsnormalizeAuthconsolidé dansadmin-api.jsensureSeedGraphsguard flag ajoutéfinishRuncomptage d'artifacts sans JSON parserecoverRunnableRunsdouble-read corrigé
P1 V1 Quality
- Migrer vers le SDK officiel
ollama-js— fait en P7 (ollama.jsréécrit) - Ajouter un audit logging pour les actions admin —
audit-log.js+ intégré danshttp-api.jsetserver.js - Implémenter l'analyse image/audio dans
attachment-pipeline.js— stubs factory avec adapter slot - Corriger la validation d'origine
postMessage— déjà en place (personas.js:1476) - Ajouter la déduplication de requêtes dans
admin-api.js— fait en P7 (deduplicatedFetch) - Node Engine : validation de tri topologique — déjà en place (cycle detection dans runner)
- Node Engine : timeout d'exécution par nœud — 10min default via
NODE_ENGINE_STEP_TIMEOUT_MS
P2 V2 Domaines
- Schéma Postgres + migrations + repos typés (
packages/storage) — session, persona, graph, run repos - Module auth réel (
packages/auth) — crypto.scrypt, token gen, extractSessionId, validateLoginInput - Logique domaine chat (
packages/chat-domain) — ChatMessage, ChatSession, compactHistory, channel validation - Logique domaine persona (
packages/persona-domain) — validatePersonaUpdate, aggregateFeedback, computePersonaDiff - Brancher les repos Postgres dans
apps/api— asynccreateApp(), fallback in-memory si pas de DATABASE_URL
P3 Node Engine V2
- Porter registry →
packages/node-engine(15 node types, 7 familles) - Porter graph ops (topologicalSort, validateEdgeContracts, collectNodeInputs)
- Porter run state machine (createRun, RunStep, resolveFinalStatus)
- Porter queue logic (createQueueState, enqueue, dequeue, canDequeue)
- Runtime definitions (5 runtimes)
- Isoler les runtimes avec sandboxing approprié — fait en P8 (
sandbox.ts) - Adaptateurs d'entraînement réels (LoRA, QLoRA, SFT) — fait en P8 (
training.ts) - Brancher le runner V2 dans
apps/worker— poll loop, stub executors, graceful shutdown
P4 Frontend V2
- API client centralisé (
api.ts) - 9 composants React (Header, Login, Nav, PersonaList, PersonaDetail, NodeEngineOverview, GraphDetail, RunStatus, ChannelList)
- Routing hash-based + responsive CSS
- Interface chat React (WebSocket live) — fait en P7 (
Chat.tsx+useWebSocket.ts) - Éditeur visuel Node Engine (React Flow) — fait en P7 (
NodeEditor.tsx+EngineNode.tsx)
P5 TUI & Ops
- TUI health-check (V1+V2+Ollama+disk+memory)
- TUI queue-viewer (runs, statuses)
- TUI persona-manager (overview)
- Log rotation (--dry-run, --max-age-days)
- Packages/tui: ansi, statusDot, formatTable, drawBox
P6 Migration
- Matrice de parité V1 → V2 —
scripts/parity-check.js(persona, graph, channel, API shape checks) - Scripts de migration de données —
scripts/migrate-v1-to-v2.js(personas, graphs, runs → Postgres, --dry-run support) - Smoke tests pour V2 —
scripts/smoke-v2.js(22 tests, 5 catégories,npm run smoke:v2) - Procédure de rollback —
scripts/rollback-v2.js(drop/truncate tables with confirmation, --yes, --tables filter)
P0+ Sécurité V1 (deep analyse 2026-03-16)
- Path traversal dans
storage.js— sanitisation session IDs + boundary check memory paths - Path traversal dans
persona-registry.js/persona-store.js—safeFsId()helper - Path traversal dans
attachment-store.js— sanitisation IDs + boundary check - SSRF dans
web-tools.js— blocage localhost, IPs privées, .local/.internal - Response body limit dans
web-tools.js— truncation 2 MB - Log injection dans
storage.js— sanitisation paramètrerole - Crash JSONL corrompu dans
storage.js— try/catch par ligne - Map mutation during iteration dans
sessions.js— collect then process - Session leak
/msgdanscommands.js— clé stable au lieu de Date.now() - Unbounded userRateLimits dans
chat-routing.js— pruning > 200 entries - Session pruning O(n) dans
admin-session.js— throttle 60s
P7 Intégration avancée
- Migrer vers ollama-js SDK officiel —
ollama.jsréécrit avecOllamaclass, même interface - Chat WebSocket React live — hook
useWebSocket+ composant Chat IRC, auto-reconnect - Éditeur visuel Node Engine avec React Flow —
NodeEditor.tsx+EngineNode.tsx, 7 familles colorées - Déduplication requêtes GET dans
admin-api.js—deduplicatedFetchtransparent - Repos Postgres pour persona sources/feedback/proposals — 3 tables + repos + fallback in-memory
- CI/CD GitHub Actions —
.github/workflows/ci.yml(check V1+V2) - Deep analyse finale V1+V2 — 14 modules V1 vérifiés, 3 fixes TS V2, intégrité confirmée
P8 Production Readiness
- Adaptateurs training réels (TRL + Unsloth pour LoRA/DPO) —
packages/node-engine/src/training.ts+ worker intégré - Sandboxing runtimes Node Engine (containers/VM) —
packages/node-engine/src/sandbox.ts(none/subprocess/container) - Turborepo pour build orchestration monorepo —
turbo.json+ scripts alignés + CI mis à jour - Tests unitaires V2 avec node:test + supertest — 102 tests, 46 suites, 6 packages + API integration
- Tests React avec Vitest + RTL — 33 tests, 6 composants (Header, Login, Nav, PersonaList, RunStatus, ChannelList)
- Créer le repo GitHub privé — https://github.com/electron-rare/kxkm_clown
P9 Code Quality (simplify review)
- Triple filter → single-pass loop dans
node-engine.js:deriveAsyncMeta - Duplicate sanitization extraite dans
attachment-store.js:sanitizeId - Double
loadModelIndex()éliminé dansnode-engine-store.js:registerDeployment
P10 Lot 11 — Consolidation & Feature Parity
Phase A — Analyse & Recherche
- Deep analyse code V1+V2 (agent en cours)
- Veille OSS mise à jour (agent en cours)
- Recherche HuggingFace (agent en cours)
Phase B — Correctifs sécurité (deep analyse)
- P0 SEC-01 Path traversal
node-engine-runner.js— reject absolute paths + rootDir boundary check - P0 SEC-04 V2 login role self-assignment — viewer par défaut, admin via ADMIN_TOKEN
- P1 BUG-06 Health endpoint leaking DATABASE_URL — remplacé par storageMode string
- P1 BUG-02 Timeout promise leak
node-engine-runner.js— AbortSignal cancel - P1 SEC-03 Attachments sans auth — ajout requireAdminNetwork middleware
- Compilation + 119 tests OK après correctifs
Phase C — Feature Parity V2
- Recovery on crash worker —
recoverStaleRuns()+ worker startup recovery - Cancel support —
requestCancel()repo +shouldCancelcallback worker + API endpoint - Tab completion chat V2 — fuzzy matching 108+ commands + @mentions
- Commandes slash V2 —
parseSlashCommand,resolveCommand,generateHelpText+ 11 commandes + 17 tests - Mémoire conversationnelle V2 —
ConversationMemory,addToMemory,buildLlmContext,clearMemory - Status strip admin V2 — GET
/api/v2/status(personas, graphs, runs, queue) - Subnet gate V2 — CIDR middleware
/api/v2/admin/*avec ADMIN_SUBNET env - Retention sweep V2 —
deleteOlderThan()repo + POST/api/v2/admin/retention-sweep - Export HTML V2 — GET
/api/v2/export/htmlavec download attachment - Upload fichiers V2 — bouton upload base64 dans Chat.tsx, accept image/audio/text/pdf/json/csv
- Tab completion chat V2 — nicks + commandes slash, cycling Tab, reset auto
Phase D — Déploiement & Docs
- Docker —
Dockerfile(multi-stage Node 22 alpine) +docker-compose.yml(5 services) +.dockerignore - Documentation utilisateur — UserGuide.tsx (8 sections accordion, lot 472)
- Performance profiling — deep analysis API (21 findings) + frontend (15 findings), 9 fixes applied
P11 Lot 17 — Deep Audit & Refactoring
Phase A — Analyse & documentation
- Script TUI deep-audit.js (security, perf, complexity, deps) —
ops/v2/deep-audit.js - Veille OSS enrichie 2026-03-17 (10 nouvelles catégories) —
docs/OSS_WATCH_2026-03-16.md - Diagrammes Mermaid (Context Store, Docker, Inter-persona) —
docs/ARCHITECTURE.md - AGENTS.md refondu (matrice 10 agents, Mermaid routing, pipeline) —
docs/AGENTS.md - PLAN.md consolidé avec lots 17-19
- TODO.md consolidé avec backlog Phase 6+
- Deep analyse — API 21 findings + frontend 15 findings, 9 fixes applied
Phase B — Refactoring code
- P1 ws-chat.ts: extraction modules (523 LOC core + 5 modules extracted)
ws-upload-handler.ts(241 LOC)ws-conversation-router.ts(583 LOC)ws-commands-chat.ts(885 LOC)ws-commands-generate.ts(1841 LOC)ws-commands-info.ts(876 LOC)
- P1 app.ts: extraction — server.ts 300 LOC + app.ts 131 LOC (already modular)
- Extraire
routes/personas.ts - Extraire
routes/node-engine.ts - Extraire
routes/chat.ts(→ routes/chat-history.ts) - Extraire
middleware/auth.ts(→ app-middleware.ts)
- Extraire
- P2 writeFileSync — composition-store async (lot 461)
- P2 console.log — all migrated to pino structured logging
- P2 React.memo sur Chat, ChatHistory, VoiceChat, NodeEditor — ChatMessage already memo'd
- P2 Lazy load: React.lazy + Suspense pour routes lourdes — 17 lazy routes + WaveformPlayer
Phase C — Infrastructure
- SearXNG dans docker-compose — kxkm_clown-searxng-1 :8080 (healthy)
- MinerU/Docling dans docker-compose — kxkm_clown-docling-1 :9400 (healthy)
- Spike BGE-M3 embeddings — default changed to bge-m3 (lot 471)
- Déployer deep-audit.js sur kxkm-ai — cron 3am daily (lot 469)
- Créer utilisateur Discord Pharmacius — kxkm_clown-discord-bot-1 (up 4 days)
Phase D — Nouveaux node types
music_generationnode (ACE-Step 1.5 + AI Bridge 17 backends)voice_clone— XTTS-v2 via AI Bridge /generate/voice-clone (lot 504)document_extractionnode (Docling :9400)
P12 Lot 18 — Voice & MCP (futur)
- XTTS-v2 voice cloning par persona
- LLMRTC WebRTC streaming (TypeScript, VAD, barge-in)
- MCP SDK integration — 6 MCP tools (chat, personas, search, status, music_generate, ai_bridge_health)
- PCL + OpenCharacter pipeline fine-tune
- Chatterbox TTS evaluation — deployed as fallback TTS, remote backend on :9100
P13 Lot 19 — Music & Creative (futur)
- ACE-Step 1.5 production — AI Bridge /generate/music-ai + openDIAW.be AceStep instrument
/composecommand (prompt → musique) — lots 320+, full composition pipeline- Flux 2 dans ComfyUI (blocked — needs 12GB checkpoint download)
- A2A Protocol — Agent Card + JSON-RPC /a2a endpoint (lot 502)
Lot 20 - Deep Analyse Continue & Execution Chainee [en cours]
A faire maintenant:
- Poursuivre extraction modulaire — ws-chat 523 LOC + 5 modules
- Decouper app.ts — already 300+131 LOC modular
- Instrumentation perf — Prometheus /metrics + ws_message latency (lot 501)
- SearXNG :8080 + Docling :9400 (Docker compose, healthy)
Fait sur ce lot:
- Extraction modulaire du bloc upload/analyse de
ws-chat.ts(ws-upload-handler.ts). - Refonte UI Minitel depuis la racine du site (
public/index.html,public/styles.css,public/app.js). - Deep audit execute et relance apres correctifs.
- Corrections context-store appliquees et validees.
- check:v2 et test:v2 au vert.
- Correctif anti-decrement TTS negatif (
ttsActive). - Cleanup opportuniste des sessions expirees (mode memory).
- Purge des logs vides/obsoletes
ops/v2/logs. - Script
ops/v2/run-deep-cycle.shajoute et execute. - Tests
apps/api/src/context-store.test.tsajoutes et valides. - Scoring de dette technique integre dans
ops/v2/deep-audit.js. - Verification JSON dette: score 78/100 (niveau high).
Phase Session 2026-03-19/20 — Lots 24-94
Summary
71 lots completed (lot-24 through lot-94). Major achievements:
- Structured logging: pino JSON logs, 43 console.log replaced, 0 remaining
- WS protocol hardening: Promise chain per-connection, seq numbers, FIFO ordering, 6 integration tests
- Frontend perf: 17 lazy routes (-53% initial JS), React.memo + useCallback stabilization
- CRT effect: CSS-only (scanlines, vignette, phosphor glow, boot animation 0.8s)
- Systemd services: kxkm-tts + kxkm-lightrag, auto-restart, deploy.sh migrated from tmux
- Tool-calling: llama3.1:8b-instruct for Sherlock, benchmark 3 models
- Qwen3-TTS: 0.6B deployed :9300, 9 speakers, on-demand VRAM
- Docling + Reranker: PDF parsing :9400, BGE reranker :9500
- 19 chat commands: /help /nick /who /personas /web /clear /status /model /persona /reload /export /compose /imagine /voice /memory /context /rag /stats /uptime
- Markdown rendering: marked + DOMPurify in chat
- Smart routing: 5 topic domains (music, philosophy, tech, arts, science)
- Dynamic context: 4k-32k adaptive window
- Perf instrumentation: 6 labels, p50/p95/p99 endpoint
- Error telemetry: 16 error labels, structured error logging
- Zod validation: 19 schemas on all API routes
- MIME magic bytes: file-type validation, SAFE_MIMES allowlist
- WS reconnect: exponential backoff 1s-30s, seq gap detection
- CRT boot animation: modem dial, phosphor warmup, scanline reveal
- Chat virtualization: react-window, variable row heights
- 425 tests, 0 failures across all packages
- 12 services in production docker-compose
- MCP server: 4 tools, stdio transport
- Discord bridge: text + voice bot
- Timing-safe token: crypto.timingSafeEqual for admin auth
- Audio size limit: 50MB enforced
- Architecture docs: 4 Mermaid diagrams
- Health check: bash TUI, 19 service checks
Future work (lots 95-100)
- P1 E2E Playwright — 14 tests instruments + commands + DAW (lot 401)
- P2 Persona DPO — scripts/dpo-pipeline.js (lot 510)
- P2 lot-97: Multi-channel support (/join, /channels, channel selector UI)
- P3 lot-98: File sharing — POST/GET/DELETE /api/v2/media/shared (lot 536)
- P2 Mobile responsive — safe-area-inset, 44px tap targets, 380px/landscape
- P3 lot-100: Public demo mode — guest_N auto-nick, read-only until /nick
P14 Lot 24 — Deep Analyse 3 + Reactivity [done]
Phase A — Fixes live session 2026-03-19
- Cookie Secure retire (COOKIE_SECURE env, HTTP fonctionne)
- ADMIN_TOKEN=kxkm dans docker-compose + AdminPage champ password
- MediaExplorer fix reponse API ({ok,data} wrapper)
- Historique 20 derniers messages a la connexion WS [HH:MM]
- Streaming chunks temps reel (type "chunk", curseur clignotant)
- Personas paralleles (Promise.all)
- SearXNG JSON active + auto web_search (Sherlock)
- pickResponders detecte mots-cles web → Sherlock
- Timestamps HH:MM sur tous messages
- TTS retire du chat
- Delai inter-persona 2s → 500ms, timeout Ollama 5min → 2min
- /compose progress ticker (feedback 5s, elapsed time, timeout handler)
- /imagine progress ticker (feedback 5s)
- Admin endpoints verifies OK (overview 5ms, personas 33, analytics 326 msgs)
- /compose duration parsing (5-120s, plus hardcode 30s)
- tts-server.py JSON parsing securise (try-catch)
- Audio size limit 50MB (Python + Node)
Phase B — Analyse approfondie
- Analyse code complete: 33 personas, 8 services, 15+ node types, 135+ tests
- 10 findings prioritaires identifies (P0 securite → P3 docs)
- Veille OSS — reference_oss_audio_2026.md + reference_mcp_agents_2026.md
- Audit docs — TODO.md 244 done, FEATURE_MAP + ARCHITECTURE updated
- Fix tests — 265 pass, 0 fail (lot 506)
Phase C — Livrables
- PLAN.md mis a jour (lots 21-29, statuts corriges)
- TODO.md mis a jour (P14)
- Memoire projet mise a jour
- ARCHITECTURE.md — DAW/AI Bridge subgraph added (lot 507)
- README.md — 17+ services, 112+ cmds, openDIAW.be, MCP, A2A (lot 507)
- Script diagnostic TUI — scripts/health-check.sh (19 checks)
- docs/OSS — 25+ projets documentes (Chatterbox, Stable Audio, RAVE, etc.)
Phase D — Prochaines priorites
- P1 Structured logging — pino, all console.log migrated
- P2 Tests integration — integration.test.ts (7 tests, perf/a2a/mcp/rag)
- P2 lot-28: RAG configurable — 4 env vars (CHUNK_SIZE, MIN_SIMILARITY, MAX_RESULTS, EMBEDDING_MODEL)
- P2 lot-29: Systemd units — 12 user units on kxkm-ai
- P2 lot-29 (journald): journald-monitor.sh TUI (colored dots, --watch, --lines, --service) + ops/v2/journald-alerts.conf (INI restart policy, alert conditions, Discord)
- P3 lot-27: CRT effects — CSS barrel distortion + vignette + phosphor glow (lot 538)
Phase Session 2026-03-20 (lots 128-143)
- /changelog, /version commands
- /dice, /roll, /flip fun commands
- /ban, /unban moderation
- /mute, /unmute per-client persona filter
- @mention notification + @persona tab-complete
- Idle auto-disconnect (30min warn, 35min kick)
- Streaming think:false fix
- /whisper private persona, /w alias
- Code block rendering (triple backtick)
- /history, /search, /react commands
- /invite persona, /time, /session commands
- Connection quality indicator (reconnect status)
- IP connection limit (max 5/IP)
- Ollama model fallback (qwen3:4b)
- Persona cooldown (3s inter-persona)
- qwen3.5:9b migration (256K ctx, adaptive thinking)
- ComfyUI local :8189
- Auto-detect image/music generation in natural language
Lot 424-427 — Deep Analysis Fixes (session 2026-03-21)
- Persona memory cache (30s TTL, LRU 50 entries) — ws-conversation-router.ts
- RAG reranker circuit breaker (2s timeout, skip after 2 consecutive fails for 60s)
- Silent catch → logger.warn on channel state save
- Upload binary detection (null bytes in first 512 bytes)
- JSON streaming chunk size guard (100KB max)
- Mention regex depth limit (10 max per message)
- Mascarade circuit breaker exponential backoff (5s/15s/60s)
- Accessibility: aria-labels on vote/reaction/copy/pin buttons
- Accessibility: role="listbox" + role="option" on autocomplete dropdowns
- VoiceChat audio queue cap (10 max, prevents memory leak)
- Reconnect countdown UX ("dans Xs, tentative N/20")
- Wavesurfer.js waveform player in chat audio messages
- Tab completion V2 (fuzzy match 108+ commands + @mentions)
- Mobile responsive deep pass (touch targets 44px, 360px breakpoint)
- E2E Playwright tests (commands + DAW)
- Feature map + Architecture Mermaid updated with DAW/AI Bridge
- TTS sentence-boundary chunking + cleanForTTS
- /translate /tr /collab /persona-create /radio /summarize /mood commands
- openDIAW.be: 9 instruments (Drone/Grain/Glitch/Circus/Honk/Magenta/AceStep/KokoroTTS/Piper)
- AI Bridge: 5 new ffmpeg instrument endpoints
- DawAIPanel: Kokoro TTS + Instruments AI sections
Backlog (from analysis)
- Chat virtualization — 500-msg cap + React.memo (adequate)
- Route prefetch — requestIdleCallback for Compose/Imagine/DAW/Gallery
- WS batching — React built-in batching + processingChain serialization
- Form labels htmlFor — PersonaList (lot 465)
- Admin health — error details + AI Bridge card (lot 463)
- AI suggestion ranking — startsWith priority in command completion
- Media search — text filter on title/source/type in MediaGallery (lot 539)
- Maps LRU — userStats 1000->500, channelSeq 30min cleanup
- Context store — parallel Promise.all for summary + entries
- ws-chat.ts extraction — 523 LOC + 5 modules (4980 LOC total)
- Chatterbox TTS — already primary backend (chatterbox-remote)
- Transformers.js — BrowserSTT whisper-tiny ONNX (lot 432)
- Sound design endpoint — /generate/sound-design (lot 433)
- Claude Agent SDK — scripts/claude-agent.js (5 tools, interactive mode, lot 533)
- IndexTTS-2 emotion control (theater-grade expressiveness)
- RAVE real-time audio style transfer (IRCAM)
Session 2026-03-24 — Lots 534-540+
Fait
-
Lot 531 — Context parallel load, command ranking, mobile CSS, route prefetch
-
Lot 532 — mascarade SSE streaming + thinking field extraction
-
Lot 533 — Grafana + Prometheus monitoring stack, enriched metrics
-
Lot 534 — /deepresearch multi-step search agent (OpenSeeker-inspired)
-
Lot 535 — mascarade thinking field fix (Python + Node.js double safety net)
-
Lot 536 — Grafana dashboard 16 panels + Prometheus multi-machine
-
Lot 537 — Cloudflare Tunnel kxkm-ai (remplace lots 538-540)
URLs live
https://kxkm.saillant.cc— 3615 J'ai pété (kxkm-ai GPU)https://kxkm-api.saillant.cc— API directehttps://kxkm-mascarade.saillant.cc— mascarade LLM orchestratorhttps://kxkm-comfy.saillant.cc— ComfyUI (image gen)https://kxkm-tower.saillant.cc— instance tower (hub)https://kxkm-grafana.saillant.cc— Grafana dashboardshttps://mascarade.saillant.cc— mascarade tower (Authentik SSO)
Execution Queue 2026-03-24 (P0/P1) [done]
- lot-541: Regex intent extraction fix + 13 tests non-regression
- lot-542: Async ffmpeg (~35 calls unblocked from event loop)
- lot-543: Worker index.ts unified on worker-runtime.ts (583→155 LOC)
- lot-544: Chat render memoization (wordCount + searchMatches useMemo)
Execution Queue 2026-03-24 (P1/P2) [in-progress]
- lot-545: Sync statuts PLAN/TODO/docs/AGENTS (lots 95-100, 178-200)
- lot-546: lot-178 ACE-Step direct API pour /compose duration fiable
- lot-547: lot-180 timeline model v1 (tracks/clips/markers + schema)
- lot-548: lot-194 waveform timeline UI v1 (desktop + mobile)
- lot-549: composition tests renfort (store/remix/export/timeline)