omnius 1.0.866 → 1.0.868

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/assets/fonts/DepartureMono-LICENSE.txt +93 -0
  2. package/assets/licenses/Prism-1.29.0-LICENSE.txt +21 -0
  3. package/dist/api/py-embed.js +32 -4
  4. package/dist/index.js +2 -2
  5. package/dist/library.js +1212 -1084
  6. package/dist/tui/native/worker.js +863 -159
  7. package/dist/update-worker.js +147 -81
  8. package/docs/DISCOVERY.json +10535 -8877
  9. package/docs/DISCOVERY.md +37 -7
  10. package/docs/design/dashboard-TODO.md +86 -0
  11. package/docs/design/dashboard-reconstruction-plan.md +58 -0
  12. package/docs/design/dashboard-styleguide.md +86 -0
  13. package/docs/design/media-unification-TODO.md +78 -0
  14. package/docs/design/media-unification-design.md +89 -0
  15. package/docs/design/update-operation-cancellation.md +40 -0
  16. package/docs/design/update-session-restoration-TODO.md +30 -0
  17. package/docs/work-orders/evidence/dashboard-browser-reconstruction-20261016.json +75 -0
  18. package/docs/work-orders/evidence/dashboard-media-management-20261016.json +145 -0
  19. package/docs/work-orders/evidence/instrument-media-live-20261016/media-audio-playing.png +0 -0
  20. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-100x30.png +0 -0
  21. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-120x36.png +0 -0
  22. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-160x48.png +0 -0
  23. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-60x20.png +0 -0
  24. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-80x24.png +0 -0
  25. package/docs/work-orders/evidence/instrument-media-live-20261016/media-progress-collapsed.png +0 -0
  26. package/docs/work-orders/evidence/instrument-media-live-20261016/media-video-frame-a.png +0 -0
  27. package/docs/work-orders/evidence/instrument-media-live-20261016/media-video-frame-b.png +0 -0
  28. package/docs/work-orders/evidence/instrument-media-live-20261016/media-voice-autocomplete-junction.png +0 -0
  29. package/docs/work-orders/evidence/instrument-media-live-20261016/report.json +813 -0
  30. package/docs/work-orders/evidence/instrument-media-verification-20261016.json +59 -0
  31. package/docs/work-orders/evidence/native-interface-state-verification-20261016.json +59 -0
  32. package/docs/work-orders/evidence/native-straight-boundaries-verification-20261016.json +36 -0
  33. package/docs/work-orders/evidence/project-media-unification-20261016.json +108 -0
  34. package/docs/work-orders/instrument-tui.md +17 -7
  35. package/npm-shrinkwrap.json +2 -2
  36. package/package.json +1 -1
package/docs/DISCOVERY.md CHANGED
@@ -161,18 +161,24 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
161
161
  | `api.v1-mcps` | /v1/mcps | List MCP servers (PT-03) |
162
162
  | `api.v1-mcps-name` | /v1/mcps/{name} | Get MCP server details (PT-03) |
163
163
  | `api.v1-mcps-name-call` | /v1/mcps/{name}/call | Invoke a tool on an MCP server (PT-03) |
164
- | `api.v1-media-audio` | /v1/media/audio | Generate a sound effect — body {prompt, model?, backend?, duration?, seed?} |
164
+ | `api.v1-media-audio` | /v1/media/audio | Generate sound — body {projectRoot,prompt,request_id?,session_id?,model?,backend?,duration?,seed?} |
165
165
  | `api.v1-media-av-analyze` | /v1/media/av/analyze | Analyze a media file into a grounded entity/event/evidence answer (AV entity-comprehension) — body {path\|mediaUri, question?}; reports per-role live-vs-mock adapter status |
166
- | `api.v1-media-file` | /v1/media/file | Stream one generated media file — query {kind, name} |
167
- | `api.v1-media-gallery` | /v1/media/gallery | List previously generated media from the global store, newest first |
168
- | `api.v1-media-image` | /v1/media/image | Generate an image — body {prompt, model?, backend?, width?, height?, steps?, guidance?, seed?, aspect_ratio?} |
166
+ | `api.v1-media-file` | /v1/media/file | Stream an exact artifact — query {projectRoot,kind,name} or {scope:'legacy-global',kind,name}; Validate exact project/archive identity, MIME and ETag before acquisition; Delete a selected project artifact or explicit legacy copy and matching metadata |
167
+ | `api.v1-media-gallery` | /v1/media/gallery | Discover existing artifacts in a registered project, or the explicit legacy global archive |
168
+ | `api.v1-media-generations-cancel` | /v1/media/generations/cancel | Request daemon-owned Stop — JSON {projectRoot,request_id\|generation_id,session_id?} |
169
+ | `api.v1-media-generations-status` | /v1/media/generations/status | Read actual daemon-owned generation settlement for captured project and request identity |
170
+ | `api.v1-media-image` | /v1/media/image | Generate an image in a registered project — body {projectRoot,prompt,request_id?,session_id?,model?,backend?,width?,height?,steps?,guidance?,seed?,aspect_ratio?} |
169
171
  | `api.v1-media-migrate` | /v1/media/migrate | Dedup + migrate legacy per-group media caches into the unified store — body {dryRun?, roots?, maxDepth?} |
170
172
  | `api.v1-media-models` | /v1/media/models | List available generative media models per kind (image/video/audio/music) |
171
- | `api.v1-media-music` | /v1/media/music | Generate music — body {prompt, model?, backend?, duration?, seed?} |
173
+ | `api.v1-media-music` | /v1/media/music | Generate music — body {projectRoot,prompt,request_id?,session_id?,model?,backend?,duration?,seed?} |
172
174
  | `api.v1-media-relocate` | /v1/media/relocate | Relocate the whole media store (weights/venvs/gallery) to a chosen folder — body {newRoot, dryRun?}; streams media.relocate_progress and returns 202 + job_id |
173
175
  | `api.v1-media-relocate-status` | /v1/media/relocate/status | Status of the in-flight (or last) media-store relocation job |
174
- | `api.v1-media-store` | /v1/media/store | Media-store root + disk usage plus any legacy per-group caches still reclaimable |
175
- | `api.v1-media-video` | /v1/media/video | Generate a video — body {prompt, model?, backend?, num_frames?, fps?, width?, height?, steps?, guidance?, seed?} |
176
+ | `api.v1-media-store` | /v1/media/store | Resolved media/model/gallery roots and disk information |
177
+ | `api.v1-media-video` | /v1/media/video | Generate video — body {projectRoot,prompt,request_id?,session_id?,model?,backend?,num_frames?,fps?,width?,height?,steps?,guidance?,seed?} |
178
+ | `api.v1-media-weights` | /v1/media/weights | Inspect an exact media model's actual cache paths, physical bytes, known dependencies, sharing and supported actions; Delete an exact cached dependency while retaining its catalog entry |
179
+ | `api.v1-media-weights-download` | /v1/media/weights/download | Start or reattach a durable network/disk-only weight download |
180
+ | `api.v1-media-weights-jobs-id` | /v1/media/weights/jobs/{id} | Read durable download state and restart interruption status |
181
+ | `api.v1-media-weights-jobs-id-cancel` | /v1/media/weights/jobs/{id}/cancel | Cancel a local daemon-owned weight download |
176
182
  | `api.v1-memory` | /v1/memory | Memory backends summary (PT-04) |
177
183
  | `api.v1-memory-entities` | /v1/memory/entities | List extracted memory entities |
178
184
  | `api.v1-memory-episodes` | /v1/memory/episodes | List episodes |
@@ -424,6 +430,13 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
424
430
  | `guide.context-management-medium-models-proposal` | Context Management for Medium Models (30-40B) — Implementation Proposal | Date: 2026-04-25 Problem: Medium-tier models (~35B params) exhibit excessive repetition at ~35% context fill despite 256K context windows Root Cause: Monolithic context structure + attention degradation + tool schema bloat |
425
431
  | `guide.corpus-ocr` | Explicit scanned-PDF corpus OCR | The public sourcecorpus tool can process an acquired PDF population with begin using filters: {channel: "ocrtext"} and optional ocrlanguage (default eng). Repeated process calls resume a durable per-source page cursor. Installed CPU Poppler and Tesseract are required. The default channel remains nativetext; completing native extraction of an empty scanned pa |
426
432
  | `guide.dedup-false-positive-meta-analysis` | Meta-Analysis: False Positive Duplicate Tool Call Detection | Date: 2026-05-14 Scope: packages/orchestrator/src/agenticRunner.ts — proactivePrune() + buildResourceKey() |
433
+ | `guide.design-dashboard-reconstruction-plan` | Dashboard reconstruction plan | 2026-10-16 · source implementation only; publishing remains with the user. |
434
+ | `guide.design-dashboard-styleguide` | Omnius browser instrument design system | Version 1 · 2026-10-16 · implementation contract |
435
+ | `guide.design-dashboard-todo-uppercase` | Dashboard reconstruction — durable TODO | Updated: 2026-10-16. Contract: styleguide. Scope and sequence: plan. |
436
+ | `guide.design-media-unification-design` | Unified media: project artifacts, shared models, deliberate presentation | Status: implementation contract, 2026-10-16. Follows the delivered dashboard reconstruction (6cfaebbd). Track verification in media-unification-TODO.md. |
437
+ | `guide.design-media-unification-todo-uppercase` | Next phase: media storage and generation interface unification | Requested 2026-10-16. Active after dashboard reconstruction delivery 6cfaebbd. Contract: media unification design. The preceding dashboard receipt does not count as verification of this phase. |
438
+ | `guide.design-update-operation-cancellation` | Owned update cancellation and restart | The native update dialog stays present while an operation is running. Escape, Ctrl+C and outside clicks do not dismiss it. Its top-right Cancel control sends an explicit request; it shows cancellation pending until the owned work settles. An error remains in the same dialog with a Close action. Ordinary menu dismissal and native frame animation remain unchan |
439
+ | `guide.design-update-session-restoration-todo-uppercase` | Queued next: update lifecycle and exact session restoration | Requested 2026-10-16. Implement after the active media-unification phase; keep this requirement durable without diverting the current work. |
427
440
  | `guide.discovery-agent-map` | Agent Map | Bundled Omnius documentation artifact: docs/discovery/agent-map.json. |
428
441
  | `guide.discovery-catalog-overrides` | Discovery Catalog Curated Source | Curated aliases, relationships, invocation modes, and conceptual entries merged into the generated catalog. |
429
442
  | `guide.discovery-json` | Omnius Machine Discovery Catalog | Generated JSON catalog consumed by the CLI, REST discovery API, JavaScript API, and offline agents. |
@@ -538,6 +551,8 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
538
551
  | `guide.work-orders-evidence-browser-controls-package-verification-20261016` | Browser Controls Package Verification 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/browser-controls-package-verification-20261016.json. |
539
552
  | `guide.work-orders-evidence-builtin-provider-authorized-access-audit-20261014` | Builtin Provider Authorized Access Audit 20261014 | Bundled Omnius documentation artifact: docs/work-orders/evidence/builtin-provider-authorized-access-audit-20261014.json. |
540
553
  | `guide.work-orders-evidence-computer-use-runtime-readiness-20261014` | Computer Use Runtime Readiness 20261014 | Bundled Omnius documentation artifact: docs/work-orders/evidence/computer-use-runtime-readiness-20261014.json. |
554
+ | `guide.work-orders-evidence-dashboard-browser-reconstruction-20261016` | Dashboard Browser Reconstruction 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/dashboard-browser-reconstruction-20261016.json. |
555
+ | `guide.work-orders-evidence-dashboard-media-management-20261016` | Dashboard Media Management 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/dashboard-media-management-20261016.json. |
541
556
  | `guide.work-orders-evidence-desktop-indicator-registration-20261016` | Desktop Indicator Registration 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/desktop-indicator-registration-20261016.json. |
542
557
  | `guide.work-orders-evidence-fallback-contract-cooldown-before-20261013` | Fallback Contract Cooldown Before 20261013 | Bundled Omnius documentation artifact: docs/work-orders/evidence/fallback-contract-cooldown-before-20261013.json. |
543
558
  | `guide.work-orders-evidence-fallback-model-benchmarks-20261012` | Fallback Model Benchmarks 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/fallback-model-benchmarks-20261012.json. |
@@ -557,6 +572,18 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
557
572
  | `guide.work-orders-evidence-instrument-divider-collapsed-160x48` | Instrument Divider Collapsed 160x48 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-divider-collapsed-160x48.png. |
558
573
  | `guide.work-orders-evidence-instrument-divider-resized-160x48` | Instrument Divider Resized 160x48 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-divider-resized-160x48.png. |
559
574
  | `guide.work-orders-evidence-instrument-help-scroll-120x36` | Instrument Help Scroll 120x36 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-help-scroll-120x36.png. |
575
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-audio-playing` | Media Audio Playing | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-audio-playing.png. |
576
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-image-100x30` | Media Image 100x30 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-image-100x30.png. |
577
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-image-120x36` | Media Image 120x36 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-image-120x36.png. |
578
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-image-160x48` | Media Image 160x48 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-image-160x48.png. |
579
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-image-60x20` | Media Image 60x20 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-image-60x20.png. |
580
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-image-80x24` | Media Image 80x24 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-image-80x24.png. |
581
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-progress-collapsed` | Media Progress Collapsed | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-progress-collapsed.png. |
582
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-video-frame-a` | Media Video Frame A | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-video-frame-a.png. |
583
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-video-frame-b` | Media Video Frame B | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-video-frame-b.png. |
584
+ | `guide.work-orders-evidence-instrument-media-live-20261016-media-voice-autocomplete-junction` | Media Voice Autocomplete Junction | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/media-voice-autocomplete-junction.png. |
585
+ | `guide.work-orders-evidence-instrument-media-live-20261016-report` | Report | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-live-20261016/report.json. |
586
+ | `guide.work-orders-evidence-instrument-media-verification-20261016` | Instrument Media Verification 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-media-verification-20261016.json. |
560
587
  | `guide.work-orders-evidence-instrument-package-artifact-20261016` | Instrument Package Artifact 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-package-artifact-20261016.json. |
561
588
  | `guide.work-orders-evidence-instrument-package-install-20261016` | Instrument Package Install 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-package-install-20261016.json. |
562
589
  | `guide.work-orders-evidence-instrument-package-install-20261016-updated` | Instrument Package Install 20261016 Updated | Bundled Omnius documentation artifact: docs/work-orders/evidence/instrument-package-install-20261016-updated.json. |
@@ -592,6 +619,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
592
619
  | `guide.work-orders-evidence-local-recovery-production-routes-20261014` | Local Recovery Production Routes 20261014 | Bundled Omnius documentation artifact: docs/work-orders/evidence/local-recovery-production-routes-20261014.json. |
593
620
  | `guide.work-orders-evidence-native-conversation-prompt-audit-20261012` | Native Conversation Prompt Audit 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-conversation-prompt-audit-20261012.json. |
594
621
  | `guide.work-orders-evidence-native-goal-contract-probe-20261012` | Native Goal Contract Probe 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-goal-contract-probe-20261012.json. |
622
+ | `guide.work-orders-evidence-native-interface-state-verification-20261016` | Native Interface State Verification 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-interface-state-verification-20261016.json. |
595
623
  | `guide.work-orders-evidence-native-reconciliation-readonly-live-20261014` | Native Reconciliation Readonly Live 20261014 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-reconciliation-readonly-live-20261014.json. |
596
624
  | `guide.work-orders-evidence-native-session-lifecycle-verification-20261016` | Native Session Lifecycle Verification 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-session-lifecycle-verification-20261016.json. |
597
625
  | `guide.work-orders-evidence-native-session-regression-verification-20261016` | Native Session Regression Verification 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-session-regression-verification-20261016.json. |
@@ -599,6 +627,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
599
627
  | `guide.work-orders-evidence-native-sessions-installed-pty-20261016` | Native Sessions Installed Pty 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-sessions-installed-pty-20261016.json. |
600
628
  | `guide.work-orders-evidence-native-sessions-production-pty-20261016` | Native Sessions Production Pty 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-sessions-production-pty-20261016.json. |
601
629
  | `guide.work-orders-evidence-native-sessions-production-vte-20261016` | Native Sessions Production Vte 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-sessions-production-vte-20261016.json. |
630
+ | `guide.work-orders-evidence-native-straight-boundaries-verification-20261016` | Native Straight Boundaries Verification 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-straight-boundaries-verification-20261016.json. |
602
631
  | `guide.work-orders-evidence-native-tui-committed-scope-20261015` | Native Tui Committed Scope 20261015 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-tui-committed-scope-20261015.json. |
603
632
  | `guide.work-orders-evidence-native-tui-gpu-preflight-20261015` | Native Tui Gpu Preflight 20261015 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-tui-gpu-preflight-20261015.json. |
604
633
  | `guide.work-orders-evidence-native-tui-history-benchmark-20261015` | Native Tui History Benchmark 20261015 | Bundled Omnius documentation artifact: docs/work-orders/evidence/native-tui-history-benchmark-20261015.json. |
@@ -620,6 +649,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
620
649
  | `guide.work-orders-evidence-opencode-step-rate-limited-diagnostic-20261012` | Opencode Step Rate Limited Diagnostic 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/opencode-step-rate-limited-diagnostic-20261012.json. |
621
650
  | `guide.work-orders-evidence-ovh-production-compatibility-20261012` | Ovh Production Compatibility 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/ovh-production-compatibility-20261012.json. |
622
651
  | `guide.work-orders-evidence-ovh-structured-context-compatibility-20261012` | Ovh Structured Context Compatibility 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/ovh-structured-context-compatibility-20261012.json. |
652
+ | `guide.work-orders-evidence-project-media-unification-20261016` | Project Media Unification 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/project-media-unification-20261016.json. |
623
653
  | `guide.work-orders-evidence-public-review-after-20261012` | Public Review After 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/public-review-after-20261012.json. |
624
654
  | `guide.work-orders-evidence-public-review-before-20261012` | Public Review Before 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/public-review-before-20261012.json. |
625
655
  | `guide.work-orders-evidence-session-tabs-installation-20261016` | Session Tabs Installation 20261016 | Bundled Omnius documentation artifact: docs/work-orders/evidence/session-tabs-installation-20261016.json. |
@@ -0,0 +1,86 @@
1
+ # Dashboard reconstruction — durable TODO
2
+
3
+ Updated: 2026-10-16. Contract: [styleguide](dashboard-styleguide.md). Scope and sequence: [plan](dashboard-reconstruction-plan.md).
4
+
5
+ Use `[x]` only after implementation and relevant verification. Record evidence below; retain incomplete items across handoffs.
6
+
7
+ ## Design and discovery
8
+ - [x] Inventory all nine routes, shared/static/dynamic modules and existing browser tests.
9
+ - [x] Trace weight caches, download/load differences, output ownership and missing deletion APIs.
10
+ - [x] Write grayscale hierarchy, broad negative-space composition and reusable component contract.
11
+ - [x] Specify Departure Mono, local bundling and license.
12
+ - [x] Specify nested model-module explorer in a modal instead of raw model dropdown.
13
+ - [x] Write page-by-page implementation and validation plan before production edits.
14
+
15
+ ## Shared system and pages
16
+ - [x] Bundle Departure Mono and license; verify actual browser font loading.
17
+ - [x] Replace pure black/white tokens with readable muted grayscale surface hierarchy.
18
+ - [x] Reconstruct shared shell, headings, sections, fields, actions, lists and dialogs.
19
+ - [x] Chat and nested workspace/session/voice controls.
20
+ - [x] Agent and nested run/approval/detail controls.
21
+ - [x] Voice and nested ASR/TTS/clone/model controls.
22
+ - [x] Generate composer, all generation/analysis modes and optional parameter groups.
23
+ - [x] Projects and nested management.
24
+ - [x] Dashboard and nested telemetry/jobs.
25
+ - [x] Activity and nested event detail.
26
+ - [x] Discover and nested capability exploration.
27
+ - [x] Settings and nested configuration forms.
28
+
29
+ ## Model modules and saved media
30
+ - [x] Accurate model/dependency/cache inventory and explicit unsupported-provider states.
31
+ - [x] Durable download-only jobs, deduplication, status and restart recovery.
32
+ - [x] Scoped guarded weight deletion, shared dependency and busy-operation handling.
33
+ - [x] Guard generation/download/store mutation interactions.
34
+ - [x] Reusable model browser dialog, search, module detail/back and selected-model trigger.
35
+ - [x] Download/status/delete actions plus exact storage paths and first-use explanation.
36
+ - [x] Safe saved-gallery DELETE with explicit artifact/metadata scope.
37
+ - [x] Result/library/detail Delete action with confirmation and failure recovery.
38
+ - [x] Preserve authenticated preview/download receipts and blob cleanup.
39
+
40
+ ## Verification and delivery
41
+ - [x] Backend isolated mutation/lifecycle/security tests.
42
+ - [x] Media runtime/modal/mode identity tests.
43
+ - [x] Mandatory chat transport/runtime/script gate.
44
+ - [x] Route/style/contrast checks.
45
+ - [x] Real Chromium: nine routes, mobile/tablet/desktop, light/dark.
46
+ - [x] Real Chromium: nested model/weights/output deletion, media/analysis/voice flows.
47
+ - [x] Sidebar pointer/keyboard, mobile navigation and Send regression harness.
48
+ - [x] Screenshot review; fix negative space, nested hierarchy, overflow and font issues.
49
+ - [x] Scoped verified commits fetched/pushed to current tracked branch.
50
+ - [x] Record precise evidence and remaining limitations; publishing left to user.
51
+
52
+ ## Evidence / handoff log
53
+
54
+ - Discovery: three read-only delegated searches, no user-data or runtime mutations. Existing prepare/pull tools may allocate CUDA; dedicated download-only implementation required.
55
+ - Baseline source: `cd22526b` on `main` / `origin/main`. Existing unrelated work and concurrent `publish/` changes are outside this task.
56
+ - Initial design documents written before production changes. User's later dot-grid reference and nested model explorer / Departure Mono instructions incorporated.
57
+
58
+ ### Implementation in progress
59
+
60
+ - Model explorer controller implemented with nested catalog/detail views, per-kind selection, explicit cache paths/dependencies, asynchronous download status and scoped deletion confirmation. Shared markup/style integration is underway.
61
+ - Generated-media deletion controller captures exact item identity, requires a matching daemon deletion receipt, retains media on failure, and revokes previews after success.
62
+ - Gallery pagination now retains existing acquired previews instead of downloading every visible image again. Store inspection is deferred to the model dialog.
63
+ - Verification so far: 21 media runtime tests pass; mandatory chat transport/runtime/script gate passes (34 tests). Full backend and Chromium integration remain pending; no live deployment claim.
64
+
65
+ ### Shared interface verification
66
+
67
+ - All nine page compositions and dynamic Voice/settings controls reconstructed; dialogs and media/voice model selection share module primitives. Local unmodified Departure Mono WOFF2 (22,496 bytes) loads in Chromium; license is embedded and shipped under CLI assets.
68
+ - Media runtime now 23 passing tests, including cancel, voice draft preservation and acquired-preview reuse. The seven-suite frontend gate passed 74 tests before adding two extra runtime cases; the route registry also passed its two tests.
69
+ - Browser iteration passed 162 fixture checks including four nested voice engines; screenshot review then found and corrected detail centering, irrelevant Chat controls on media pages, and inverse-action hover contrast. Final rerun pending those fixes.
70
+ - Navigation/Send browser harness passed all18 checks against source, including short viewport,1106sessions, pointer/keyboard resize/collapse/reopen and light/dark contrast.
71
+
72
+ ### Final source verification
73
+
74
+ - All planned browser pages, nested model modules, weight inventory/download/cancel/delete and saved-media deletion are implemented. Earlier progress entries above are historical.
75
+ - Frontend: 85 passing tests across nine suites, including all three mandatory chat transport/runtime/script suites. Backend/execution: 134 passing tests across twelve suites, overlapping those same 34 transport tests. Combined unique total: **185 tests across eighteen suites**.
76
+ - Final isolated Chromium: **168 checks** (nine routes, 1440/768/360 widths, dark/light, generated media playback/download, nested Voice/model modules, shared-weight confirmation, cancellation, gallery deletion and analysis). Sidebar/Send: **18 checks**, including 1,106 fixture sessions. Both use identical production HTML SHA256 `20bd243e434d83bf99d758584796ff1102b58b48868910bbd9dd07db45ae617b`.
77
+ - Zero browser page errors, console errors or external requests. Departure Mono and pinned syntax highlighting are bundled locally; provider marks make no favicon requests. Reviewed final desktop Generate and mobile model-dialog screenshots, in addition to the previous page/theme reviews.
78
+ - CLI and execution typechecks pass; scoped whitespace checks pass. Existing managed-stop test fixtures emit SIGINT/SIGTERM listener-count warnings; their assertions pass.
79
+ - Durable receipts: `docs/work-orders/evidence/dashboard-media-management-20261016.json` and `docs/work-orders/evidence/dashboard-browser-reconstruction-20261016.json`. Reproducible browser scripts build isolated source bundles, without touching shared dist/publish output.
80
+ - No live inference, real model downloads/deletions, installed-package changes, daemon restart, or npm publishing. The running 11435 daemon has **not** been updated by this source delivery. Publishing remains with the user.
81
+ - Participating media operations serialize per shared store because generation can download or evict weights. External programs and older running versions do not participate. Download-only jobs fetch full pinned repository snapshots; provider-specific TTS/ASR remains separate. Saved-media deletion currently removes the gallery copy and sidecar only, retaining source/work copies.
82
+ - **Next phase, explicitly deferred by the user until this delivery:** [media unification TODO](media-unification-TODO.md). It covers shared weights with project-scoped artifacts across browser/TUI sessions, compact generation progress, responsive previews, and audio/video playback. This delivery does not claim that storage/interface unification is complete.
83
+
84
+ ### Git delivery
85
+
86
+ - Fetched `origin/main` and pushed verified implementation commits `48eef78f` (media management) and `be16ac1b` (dashboard reconstruction) to `origin/main`. Initial design contract was pushed first as `1cc8b037`. Unrelated working-tree and publishing changes were preserved.
@@ -0,0 +1,58 @@
1
+ # Dashboard reconstruction plan
2
+
3
+ 2026-10-16 · source implementation only; publishing remains with the user.
4
+
5
+ Contract: [styleguide](dashboard-styleguide.md). Execution ledger: [TODO](dashboard-TODO.md).
6
+
7
+ ## Discovery and constraints
8
+
9
+ The daemon renders one HTML application in `packages/cli/src/api/web-ui.ts`, one stylesheet in `web-instrument-style.ts`, and a separate media controller in `web-media-runtime.ts`. Nine canonical routes share shell, dialogs and operational components. Rebuild these shared components and each route's composition rather than layering a second stylesheet over the old UI.
10
+
11
+ Existing media APIs provide generation, catalog, store inspection/relocation, gallery and authenticated files. They do not provide browser weight management or saved-media deletion. Tool prepare/pull operations often load CUDA and therefore cannot serve a Download weights action. Shared caches and generated gallery copies have different ownership. The plan includes real backend operations and isolated lifecycle tests.
12
+
13
+ Preserve unrelated work, publish artifacts, package versions, running daemon and user data. No real model downloads, GPU loads, inference or user-media deletions are needed to implement or validate this change. Keep service-specific voice management truthful.
14
+
15
+ ## Sequence and ownership
16
+
17
+ 1. Establish and commit design contract, this plan and durable checklist before implementation.
18
+ 2. Reconstruct shared tokens, typography, shell, headings, section/field/module/dialog primitives. Bundle Departure Mono with license. Restyle static and dynamic page compositions together.
19
+ 3. Add guarded media management service and routes: weight inventory, network-only download jobs/status, guarded deletion, exact saved-gallery deletion. Persist download state and interrupted recovery. Use injectable adapters and temporary fixtures for tests.
20
+ 4. Reconstruct the generative composer: selected-model trigger; reusable model-module modal with nested detail, download/status/delete actions; clear storage and automatic-download information; optional generation parameters; separate analysis workspace; result/library deletion controls.
21
+ 5. Apply the design to all nine routes and nested Voice/settings components. Preserve IDs/controllers where needed to keep transport and workflow behavior intact. Remove obsolete inline presentational overrides in changed surfaces.
22
+ 6. Run scoped backend/runtime/style/route suites and mandatory transport tests. Extend real Chromium fixture coverage for models, deletion, all media modes, nested forms, navigation, themes, responsiveness and keyboard behavior. Inspect screenshots and correct composition issues.
23
+ 7. Commit verified coherent changes, fetch/push `origin/main`, and update the ledger with test receipts and any honest limitations. User publishes; do not replace or restart their installed daemon.
24
+
25
+ Work areas can proceed in parallel after the design contract: shared UI/style; backend media management; independent browser verification; media composer controller/integration. Avoid concurrent edits to the same file through explicit ownership.
26
+
27
+ ## Page-by-page reconstruction
28
+
29
+ | Page | Primary composition | Auxiliary / nested work |
30
+ | --- | --- | --- |
31
+ | Chat | Open transcript reading area; deliberate composer and styled Send; clear session context | Workspace inspector, resizable navigation, recents, model dialog, mini voice controls, action/confirmation dialogs; preserve streaming/Stop. |
32
+ | Agent | Run objective and primary action above open run state; related facts grouped | Plan, approvals, tool results and evidence grouped under their parent run; restrained logs and telemetry. |
33
+ | Voice | Live session, transcription and synthesis as distinct operational sections | Labeled ASR upload/context, engine/model setup, clone/model forms, preview/error states; actual per-service storage semantics. |
34
+ | Generate | Mode navigation, selected model module, prompt, expandable parameters, local progress and output | Model explorer/detail; weights/store management; audio/video/live analysis; gallery filters/detail/download/delete; shared state across modes without stale operation crossover. |
35
+ | Projects | Searchable project rows with useful path/context and local actions | Project detail, session association and bounded path display; avoid box-per-field nesting. |
36
+ | Dashboard | Readable run/system sections, substantial space between distinct groups | Compact metric rows, activity/jobs and resource detail, meaningful empty states; no fake telemetry. |
37
+ | Activity | Chronological operational list with grouped filters | Event detail/evidence/error surfaces and bounded log views. |
38
+ | Discover | Search/exploration first, results as inspectable modules | Nested capability details and actual links/actions; avoid dense decorative card walls. |
39
+ | Settings | Grouped preference sections with a clear primary control per task | Connection/auth, theme, voice/clones and nested fields; no placeholder-only labels, gray hierarchy across dialog/auxiliary levels. |
40
+
41
+ ## Backend operation contracts
42
+
43
+ Keep existing `/v1/media/models` compatible. Introduce a separate management API for expensive cache inventory and operations. Model identity is `{kind, modelId}` resolved from the catalog; clients never supply an arbitrary deletion path or executable downloader. Return dependency records with repository, actual paths, measured bytes, cache state, sharing and explicit supported actions. Do not equate `_meta.json` with a completed installation.
44
+
45
+ Download is asynchronous and disk/network-only, with job ID and durable status; queued/running/ready/failed/interrupted states and known/unknown totals. Deduplicate concurrent requests. Use the same unified cache/env resolution as generation. Block destructive operations while generation, download or relocation can use that cache. Validate kind, model and repository membership; enforce run/admin scope locally. Known external providers/custom paths get an explicit unavailable action with reason.
46
+
47
+ Saved-media deletion validates a strict media kind and exact basename beneath its canonical gallery directory, rejects symlinks/traversal, and removes only the selected owned artifact and matching metadata. It must not follow arbitrary source paths from sidecars. Return the deletion scope honestly, including retained working copies where relevant. Do not remove catalog entries when deleting weights.
48
+
49
+ Coordinate migration/relocation and generation with the management guard; reject unsafe concurrent mutations. Tests prove busy states and shared dependencies, not merely successful deletion.
50
+
51
+ ## Validation and delivery
52
+
53
+ - Route/service tests: isolated `OMNIUS_HOME`, `OMNIUS_MEDIA_HOME` and catalog, dummy files, injected downloader. Auth scopes, traversal/symlinks, dependency membership, duplicate/active jobs, restart recovery, deletion bytes, retained catalog, gallery scope and failure behavior.
54
+ - Runtime tests: immutable selected/output identity across refresh and mode changes, confirm cancellation sends no mutation, pending dedup, errors retain items, job progress truthfulness, blob cleanup, modal focus/back/keyboard behavior.
55
+ - Mandatory daemon frontend tests: `web-chat-transport-lifecycle.test.ts`, `web-ui-client-runtime.test.ts`, `web-ui-script.test.ts`. Also media runtime/routes, route/basepath, observability/style suites.
56
+ - Chromium: production HTML against an isolated authenticated prefixed API fixture. Nine routes × three widths × two themes; all four generation modes; three analysis modes; models/download/delete and output delete; Voice/nested settings; actual preview decode/audio playback/download bytes; pointer sidebar and Send; dialog keyboard/outside dismiss; no page errors or horizontal overflow. Disable browser GPU and block all nonfixture network traffic.
57
+ - Visual review: screenshots of primary and nested surfaces at desktop/mobile; inspect negative space, implied boundaries, font loading and grayscale hierarchy. Check text contrast numerically.
58
+ - Build source in isolated temporary output for browser verification, leaving concurrent publish output untouched. Report source/fixture verification separately from the user's running deployment.
@@ -0,0 +1,86 @@
1
+ # Omnius browser instrument design system
2
+
3
+ Version 1 · 2026-10-16 · implementation contract
4
+
5
+ Companion documents: [reconstruction plan](dashboard-reconstruction-plan.md) and [durable implementation checklist](dashboard-TODO.md).
6
+
7
+ ## Intent and references
8
+
9
+ Reconstruct the existing daemon dashboard around deliberate negative space, implied boundaries, muted monochrome readings and explorable operational modules. The user's flight-instrument and sparse dot-grid references establish composition, not decorative text or fictional telemetry. References supplied locally: `c86dda8010aea451db238b027854c6a6.jpg`, `82182e9d241909503a2daa9ef735de8d.jpg`, and `/home/roko/Desktop/OPENTUI_INSTRUMENT_STYLEGUIDE.md`. This browser contract adapts their geometry to accessible HTML; native OpenTUI remains a separate renderer.
10
+
11
+ Broad open space belongs between groups. Related readings remain compact. Do not fill blank areas with ornamental grids, empty cards, duplicated descriptions, status badges, invented counters or redundant headings. Every visible module must support an actual task. Most sections have no enclosing box. Thin rules and alignment imply boundaries; complete borders belong primarily to controls, selected modules and dialogs. No diagonals, rounded corners, gradients, glows or shadows.
12
+
13
+ ## Grayscale hierarchy
14
+
15
+ Surface levels express ownership, rather than arbitrary alternating strips. Use one stylesheet and semantic tokens, including all dynamically rendered content.
16
+
17
+ | Token / purpose | Dark | Light |
18
+ | --- | --- | --- |
19
+ | Canvas | `#141414` | `#f1f1f1` |
20
+ | Navigation / persistent left panel | `#101010` | `#e7e7e7` |
21
+ | Main working surface | `#171717` | `#f5f5f5` |
22
+ | Auxiliary settings / subordinate region | `#1c1c1c` | `#eeeeee` |
23
+ | Hover / selected module | `#292929` | `#dddddd` |
24
+ | Modal / elevated inspection | `#242424` | `#fafafa` |
25
+ | Primary text | `#d6d6d6` | `#353535` |
26
+ | Secondary text | `#b0b0b0` | `#595959` |
27
+ | Muted readable text | `#999999` | `#606060` |
28
+ | Decorative hairline | `#414141` | `#c5c5c5` |
29
+ | Control boundary / focus | `#898989` | `#777777` |
30
+ | Selected action fill / text | `#cccccc` / `#171717` | `#454545` / `#fafafa` |
31
+
32
+ Normal text must retain at least 4.5:1 contrast on its actual surface. Focus and essential control outlines need 3:1 contrast. Decorative lines may be subtler. Never use low-contrast decorative gray for required labels. State is conveyed in words plus geometry, not color alone. Light, dark and system modes share the same hierarchy. Media itself keeps its original colors.
33
+
34
+ ## Typography and spacing
35
+
36
+ Use locally bundled **Departure Mono**, from the user's `DepartureMono-1.500` distribution, with its SIL Open Font License. Prefer its WOFF2 web artifact; no external font request. `font-display: swap`; native monospace fallback. Avoid synthetic heavy weights. The supplied font recommends multiples of 11px for pixel-perfect rendering; use 22px titles and prioritize readable 14px body text over shrinking controls to 11px. Base text 14px with approximately 1.6 line height; compact labels 11–12px with modest tracking; page titles 20–22px. Preserve mixed-case prose, filenames, paths and prompts. Uppercase is reserved for short navigation/section labels. Tabular numbers align readings. Do not shrink text to fit a crowded layout.
37
+
38
+ Spacing scale: 4, 8, 12, 16, 24, 32, 48, 64px. Related field label/control gap 8px; field group gap 16–24px; section gap 32–48px; desktop page gutters 32–48px. Narrow screens use 16px gutters and 24–32px group gaps. Reading width approximately 72ch; workbench preview may use the remaining width. Surplus width creates breathing room, not oversize inputs or a wall of boxed cells.
39
+
40
+ ## Shared component grammar
41
+
42
+ | Component | Contract |
43
+ | --- | --- |
44
+ | Shell | Quiet navigation surface; resizable/reopenable left boundary; main canvas; compact mobile drawer with real close control. |
45
+ | Route heading | Small identity label, concise title, one useful sentence at most. Leave open space before the working area. Actions aligned beside heading on wide screens and below on narrow screens. |
46
+ | Section | Unboxed semantic section with heading and optional action; dotted or solid rule only when separating distinct responsibilities. |
47
+ | Auxiliary region | Subordinate grayscale surface and padding; avoid repeated border-in-border cards. |
48
+ | Field | Visible label, control, concise help/error. No placeholder-only labels. Seed/steps/duration group under expandable parameters when secondary. |
49
+ | Button | Sharp small rectangle; primary action muted inverse; secondary quiet outline; text action for navigation; clear focus. Minimum 36px desktop / 44px coarse-pointer or narrow viewport targets. |
50
+ | Module browser | A dialog containing selectable model modules and a nested detail view, not a raw model select. Search/filter, meaningful state, exact ownership and back navigation. |
51
+ | Selected model | One compact composer trigger with name and state; opens reusable module browser. No duplicate model dropdown. |
52
+ | Detail list | Label/value pairs with natural wrap; optional dotted leaders on wide screens. Paths wrap and remain selectable. Unknown differs from zero. |
53
+ | Status | Local to the affected operation. Idle, queued, downloading, ready, failed and interrupted have literal text. Real byte progress only; indeterminate progress when total is unknown. |
54
+ | Media result | Actual validated preview, concise metadata, Download and Delete saved media actions. No giant empty preview placeholder. |
55
+ | Library | Bounded pages and lazy previews; filters grouped separately from results; responsive tiles with readable caption/actions; stable item identity. |
56
+ | Modal | Distinct gray surface, dim backdrop, restrained corner/rule framing, bounded viewport scroll. Escape/outside close, focus trap and restoration; destructive confirmation names item and deletion scope. |
57
+ | Empty / error | One explanation and an applicable next action. Do not pretend failed requests are empty successful collections. |
58
+ | Tables / telemetry | Compact rows within spacious sections; right-aligned numbers with units; scroll only inside an explicitly bounded data region when unavoidable. |
59
+
60
+ ## Generative composer and nested model exploration
61
+
62
+ Image, video, sound and music share one composer anatomy: task mode → selected model module → prompt → optional parameters → operation status → output. Audio/video/live analysis retain separate inputs appropriate to analysis; do not expose generation parameters there.
63
+
64
+ Model exploration opens a modal from the composer. It contains searchable modules for the current media kind. Opening a module reveals capabilities, backend, known dependencies, installation state, cache locations, measured bytes and supported actions. Selecting it returns to the composer without starting inference or a download. Returning to the module list preserves the current media kind. Automatic model selection is a deliberate module with an explanation of its first-run behavior.
65
+
66
+ Weights and generated outputs are separate resources:
67
+
68
+ - **Download weights:** an explicit network/disk-only job. It must not reuse prepare/prewarm operations that load CUDA. Show pending/running/complete/failed/interrupted state; do not label partial cache presence as installed. Make unsupported/custom provider management explicit.
69
+ - **Delete cached weights:** confirmation identifies repository and measured cache location. Shared dependencies are identified. Busy generation/download/relocation blocks deletion. Catalog entries remain available for later downloads. Never present removal of a catalog adapter as deletion of its weights.
70
+ - **Automatic downloads:** state before generation that first use can fetch weights and runtime dependencies. Show the resolved model store root, not a hardcoded home path. Explain existing disk-management behavior accurately.
71
+ - **Delete saved media:** confirmation names the saved gallery item and metadata. Deleting a gallery copy must not claim to delete unrelated source/work files or model weights. Download and delete operate on authenticated, validated immutable item identity.
72
+ - **Store management:** an auxiliary inspection area in the model browser shows current root, gallery root and explicit relocation/migration controls. It should not dominate the prompt workspace.
73
+
74
+ Voice shares the field/module/inspection grammar while preserving its actual ASR, live microphone, clone and TTS service contracts. Do not imply that every voice engine uses the same storage or download API.
75
+
76
+ ## Interaction, responsiveness and performance
77
+
78
+ All actions keyboard accessible. Modal focus remains contained; close restores invoking control. Tabs implement tab semantics and arrow/home/end behavior, or use ordinary buttons without misleading ARIA. Native disclosures keep advanced settings accessible. No hover-only actions. Errors are announced through local live regions. Reduced motion disables transitions; ordinary transitions should be subtle and short.
79
+
80
+ Test 360, 768 and 1440px widths, both themes, short windows and zoom. Main document must not overflow horizontally. Long paths and Unicode names wrap. Forms stack in source order. Mobile navigation remains reopenable and controls do not cover composer or dialog actions. Dialogs scroll within available height.
81
+
82
+ No new UI framework, GPU visualization dependency, remote fonts or per-item polling. Bound gallery preview concurrency and pagination. Poll only visible active jobs, stop on terminal state/close, and preserve meaningful failure states. Reuse authenticated media receipts and blob lifecycle. Preserve all same-origin base-path, streaming, session, authentication and daemon Stop behavior.
83
+
84
+ ## Acceptance
85
+
86
+ Every route and nested module uses these primitives, including error/empty/loading states and dynamic Voice/settings forms. Screenshots come from the actual production HTML in an isolated Chromium fixture; no generated mockups. Verify actual pointer/keyboard behavior, measured contrast and overflow, not only class names. Keep implementation and evidence status in `dashboard-TODO.md`.
@@ -0,0 +1,78 @@
1
+ # Next phase: media storage and generation interface unification
2
+
3
+ Requested 2026-10-16. Active after dashboard reconstruction delivery `6cfaebbd`.
4
+ Contract: [media unification design](media-unification-design.md). The preceding
5
+ dashboard receipt does not count as verification of this phase.
6
+
7
+ ## Storage contract
8
+
9
+ - [x] Trace browser, TUI, tool and session generation/output paths for image,
10
+ video, audio and music before choosing a migration strategy.
11
+ - [ ] Share model weights across Omnius sessions and project locations through
12
+ one configured model store; expose its actual path consistently.
13
+ - [ ] Scope generated outputs to the directory/project where generation was
14
+ invoked. Browser and TUI sessions in that same location must discover the same
15
+ artifacts, without copying them into divergent galleries.
16
+ - [ ] Carry explicit project identity through browser generation, jobs, gallery,
17
+ preview, download and deletion. Preserve authenticated validation receipts.
18
+ - [ ] Define compatibility/discovery for existing project outputs and global
19
+ gallery copies; never silently move or delete existing user artifacts.
20
+ - [ ] Show the output directory and exact artifact location in both interfaces.
21
+ - [ ] Test two sessions sharing one project and two separate projects sharing
22
+ weights but keeping generated artifacts scoped.
23
+
24
+ ## Uniform generation modules
25
+
26
+ - [ ] Use one deliberate interaction pattern for LLM and media model selection,
27
+ download, readiness/deployment, generation, stop, failure and output actions.
28
+ - [ ] Replace transcript floods with a single updating generation module tied to
29
+ its parent turn. Keep raw diagnostics and warnings in an explicit expansion.
30
+ - [ ] Parse progress semantically: download bytes, model loading, inference
31
+ steps, saving and completion. Do not label deprecation warnings or inference
32
+ progress bars as model downloads.
33
+ - [ ] Keep download-only and GPU deployment separate, with truthful status and
34
+ existing broker coordination and live inference hardware gates.
35
+ - [ ] Provide responsive media previews sized from available content width,
36
+ including after terminal resize and sidebar dragging; retain aspect ratio.
37
+ - [ ] Support click/Open actions and a subtle hover Open affordance, plus
38
+ keyboard access and clear local file handling.
39
+ - [x] Investigate OpenTUI audio streaming APIs for generated audio playback and
40
+ visualization: https://opentui.com/docs/application-apis/audio-streaming/.
41
+ - [ ] Implement video playback via updating frames using the same media module,
42
+ with bounded work, explicit play/pause and cleanup when hidden or closed.
43
+ - [ ] Match browser preview sizing and media controls to these same artifact and
44
+ lifecycle semantics; avoid tiny fixed-size centered output previews.
45
+
46
+ ## Verification and delivery
47
+
48
+ - [x] Update the design contract before edits, recording ownership, migration,
49
+ progress, preview and playback semantics.
50
+ - [ ] Test storage identity, legacy discovery, concurrency, cancellation,
51
+ authorization, deletion scope and failure recovery with isolated fixtures.
52
+ - [ ] Exercise TUI progress and resize/playback live without allocating models.
53
+ - [ ] Exercise browser project switching, responsive output, playback and file
54
+ actions using isolated media fixtures and the mandatory transport tests.
55
+ - [ ] Run actual inference only after the existing exact endpoint/model/GPU
56
+ preflight gate; report fixture tests separately from real inference.
57
+ - [ ] Make scoped verified commits and push the tracked branch. Leave publishing
58
+ to the user unless subsequently instructed otherwise.
59
+
60
+ ## Progress log
61
+
62
+ - Dashboard source delivery completed first through `6cfaebbd` on `origin/main`.
63
+ - `0a6e9ada`: shared incremental media progress framing and owned image-worker
64
+ cancellation pushed. 67 tests across eight execution suites passed, including
65
+ real disposable Node subprocess Stop/timeout checks. No inference ran.
66
+ - Current backend work replaces browser global work/copy behavior with explicit
67
+ registered-project identity and a labeled legacy gallery scope. Shared weights
68
+ stay in their configured store. Alias canonicalization is being repaired so
69
+ configured symlink roots share one lease.
70
+ - Current terminal work retains one invocation module with bounded diagnostics,
71
+ responsive previews and local playback. Native model modules separate selection,
72
+ file-only download and preparation; their six isolated control tests pass.
73
+ - Media artifact persistence round-trip: five disk-state tests pass. This is
74
+ media-block compatibility, not a claim that the queued full session-restoration
75
+ overhaul is complete.
76
+ - Include the newly reported disconnected sidebar rule through suggestions,
77
+ scrolling and enabled Voice rows in this phase's terminal validation.
78
+ - Queued after this phase: [update and session restoration](update-session-restoration-TODO.md).
@@ -0,0 +1,89 @@
1
+ # Unified media: project artifacts, shared models, deliberate presentation
2
+
3
+ Status: implementation contract, 2026-10-16. Follows the delivered dashboard
4
+ reconstruction (`6cfaebbd`). Track verification in `media-unification-TODO.md`.
5
+
6
+ ## Ownership and discovery
7
+
8
+ Model weights and runtimes remain in the existing configured shared media store.
9
+ Changing projects or opening another session must not create a second model cache.
10
+ Generated images belong to `<project>/.omnius/images`, video to `.omnius/videos`,
11
+ and sound/music to `.omnius/audio`, matching the existing execution tools.
12
+
13
+ Browser requests capture the selected project when the operation starts. The
14
+ daemon resolves that identity through the project registry; a request cannot
15
+ substitute an arbitrary filesystem root. Generation, gallery, preview, download
16
+ and deletion carry the same captured identity. Switching projects while a job or
17
+ preview is pending must not attach its result to the new project's gallery.
18
+
19
+ Existing project artifacts are discoverable without import or duplication.
20
+ Metadata sidecars enrich records but cannot redirect file access outside the
21
+ project. File operations validate actual containment, supported extensions and
22
+ regular files, rejecting symlinks/traversal. Existing global gallery copies stay
23
+ available through an explicitly labeled legacy scope; they are not moved or
24
+ deleted automatically. Deletion confirmations state the actual selected artifact
25
+ and scope. Shared weight deletion remains a separate control.
26
+
27
+ The REST project registry is an access boundary: admin scope is required to
28
+ register, rename or unregister roots, and to write project preferences that
29
+ create discovery sentinels. Switching an existing registered project and listing
30
+ or scanning projects remain read operations; scanning does not register its
31
+ results. `registerIfMissing` on project switching requires admin scope. Local
32
+ trusted project discovery remains separate from these REST operations.
33
+
34
+ Media APIs require the captured `projectRoot`; they never fall back to the
35
+ daemon's current project. Project-root aliases resolve to the same physical
36
+ artifact identity. Optional known `session_id` values must belong to that
37
+ project. New requests carry a bounded `request_id` alongside the server's
38
+ `generation_id`, and all terminal receipts retain that identity. Preview and
39
+ deletion accept `If-Match` against the inspected artifact revision; video
40
+ deletion also removes its exact derived regular thumbnail, never a path supplied
41
+ by a sidecar. Legacy global gallery access requires `scope=legacy-global` and
42
+ does not accept a project attribution.
43
+
44
+ Configured shared-store root aliases resolve to one physical lease. Nested cache
45
+ and lease-file symlinks are rejected. The existing conservative store lease
46
+ serializes generation with weight/cache mutation because generation can download
47
+ or evict weights; it does not add a per-project model cache. Stop receipts remain
48
+ `stopping` until the owned invocation actually settles. Generation status records
49
+ are bounded in daemon memory and do not survive a daemon restart.
50
+
51
+ ## Generation lifecycle
52
+
53
+ One invocation has one updating module in its parent turn. The module shows kind,
54
+ model, a single current phase and measured progress, then output controls. It
55
+ does not append every subprocess line to the transcript. Raw warnings and bounded
56
+ diagnostics live in an explicit disclosure. Download, runtime setup, loading,
57
+ inference steps and saving are distinct phases. Unknown progress stays unknown.
58
+ Heartbeat updates preserve the latest meaningful phase; they do not regress from
59
+ inference to a stale “downloading/loading” label. Subprocess records must survive
60
+ split lines and UTF-8 chunks.
61
+
62
+ Model browsing uses the existing nested module pattern. Selecting weights,
63
+ downloading files, deploying a runner and generating output are distinct actions;
64
+ their state labels must describe actual behavior. Existing broker and live
65
+ inference hardware gates still apply. No visual test should load a model.
66
+
67
+ ## Media presentation
68
+
69
+ Image/video previews derive dimensions from the available content width and
70
+ aspect ratio. Sidebar dragging and terminal/browser resizing update that fit.
71
+ Opening media is an explicit clickable preview or Open action, with keyboard
72
+ access and a quiet hover treatment. File location is available in the module,
73
+ not repeatedly injected as log lines. The browser uses the same artifact identity
74
+ and exposes preview, download and scoped delete actions together.
75
+
76
+ Generated audio uses OpenTUI's native audio stream API with bounded PCM decoding
77
+ when the file format requires it, and measured waveform/progress visualization.
78
+ OpenTUI streaming has no pause/resume API; file transport must implement any such
79
+ control explicitly by disposing and restarting at a captured position. Decoder,
80
+ stream, timer and device cleanup belongs to the module lifecycle.
81
+
82
+ Video updates the native image frame while playing, at a bounded cadence. Only
83
+ active visible playback does decoding work; pause, navigation, removal and exit
84
+ must stop owned decoder processes/timers. Playback failures stay inside the media
85
+ module with a usable Open fallback. Tests exercise real fixture decoding and
86
+ native rendering without claiming audible output or actual model inference.
87
+
88
+ Reference: https://opentui.com/docs/application-apis/audio-streaming/ (checked
89
+ against the installed `@opentui/core` 0.6.6 audio declarations).
@@ -0,0 +1,40 @@
1
+ # Owned update cancellation and restart
2
+
3
+ The native update dialog stays present while an operation is running. Escape,
4
+ Ctrl+C and outside clicks do not dismiss it. Its top-right Cancel control sends
5
+ an explicit request; it shows cancellation pending until the owned work settles.
6
+ An error remains in the same dialog with a Close action. Ordinary menu dismissal
7
+ and native frame animation remain unchanged for other dialogs.
8
+
9
+ The initiating client creates a private cancellation capability. Durable update
10
+ state contains only its hash. Cancellation requests carry the exact operation
11
+ identity and require the capability; clients adopting an existing shared update
12
+ receive progress without cancellation authority. The worker observes a private,
13
+ operation-specific request file, aborts its own installer process group, waits for
14
+ process close, and attempts recovery of a daemon it quiesced. Status remains
15
+ `running` during `cancelling` and `recovering`, then becomes `cancelled`. No UI
16
+ client signals an arbitrary recorded PID. Interrupted package changes are
17
+ retained; cancellation never claims package rollback. A recovery failure remains
18
+ explicit in the terminal receipt.
19
+
20
+ Quick Update waits for durable terminal settlement rather than treating a polling
21
+ timeout as proof of termination. A cancelled transaction does not restart the
22
+ client. Safe task admission, checkpointing, failure resume and the acknowledged
23
+ verified launcher handoff stay in the shared restart flow. The replacement keeps
24
+ the current configuration, environment, arguments, working directory and session
25
+ identity; native interface and transcript persistence are separate checkpoints.
26
+
27
+ `/update full` is now an alias for the coordinated package, daemon and indicator
28
+ transaction. It no longer automatically updates Ollama, Python, Cloudflared or
29
+ subordinate packages, or deletes global package directories and daemon artifacts.
30
+ Explicit `/update deps`, `/update rebuild`, `/update python`, individual dependency
31
+ menu actions and `/update ollama` remain available. Owned npm/pip maintenance
32
+ commands use the same process-group cancellation mechanism. Interactive privilege
33
+ and system-runtime setup prompts temporarily borrow the terminal through the
34
+ existing explicit handoff; these prompts keep their own terminal controls.
35
+
36
+ Verification uses scratch state directories, injected installers/service receipts,
37
+ actual native renderer input and harmless Node process groups. It does not install
38
+ an Omnius release, change services, load models or exercise CUDA. POSIX process
39
+ group escalation is tested locally; Windows uses its owned PID's task tree via
40
+ `taskkill`, with a direct-child fallback if that command is unavailable.
@@ -0,0 +1,30 @@
1
+ # Queued next: update lifecycle and exact session restoration
2
+
3
+ Requested 2026-10-16. Implement after the active media-unification phase; keep
4
+ this requirement durable without diverting the current work.
5
+
6
+ - [ ] Make the update modal non-dismissible by outside click while an update is
7
+ running. Ordinary modal dismissal must not hide or retire the operation.
8
+ - [ ] Provide an explicit top-right Cancel button. Cancellation must stop the
9
+ owned update operation safely and reflect its actual outcome; do not equate
10
+ hiding the modal with cancelling the update.
11
+ - [ ] Define behavior for Escape and other close shortcuts consistently with
12
+ the non-dismissible running-update state.
13
+ - [ ] Capture the exact interface/session state before update and restore it
14
+ after reload/restart: active project, session/tabs and selected agent,
15
+ transcript content and scroll position, draft/cursor, sidebar/layout,
16
+ expanded sections and other meaningful view state.
17
+ - [ ] Resume old sessions from their complete persisted message/tool/media
18
+ history and saved interface state. Do not substitute a summary for the
19
+ visible conversation. Model-context compaction and visible history are
20
+ separate concerns.
21
+ - [ ] Identify legacy sessions with incomplete saved history and report actual
22
+ availability honestly; never invent missing turns.
23
+ - [ ] Verify running-update outside-click rejection, explicit cancellation,
24
+ restart restoration and old-session full-history reconstruction with
25
+ isolated fixtures plus live terminal interaction tests.
26
+ - [ ] Commit and push verified changes, preserving the user's publishing work.
27
+
28
+ Additional reproduction: the browser dashboard loads the session transcript, but
29
+ resuming that same saved session in the TUI does not restore it. Trace both
30
+ loaders against the same saved session and verify full-history parity.