Files
HMS MediaEngine Agent 362e089be0 AUFGERAUMT: Root auf 10 sichtbare Elemente reduziert
Der Nutzer hat recht: Der Ordner war voller Entwicklungs-Muell.
Jetzt ist sauber getrennt:

ROOT (was der Nutzer sieht und braucht):
- run.py                     = das Programm
- hms_app/                   = der Anwendungscode
- HMS MediaEngine.app        = macOS Doppelklick-Starter
- HMS-Start.vbs              = Windows Doppelklick-Starter
- HMS-Install.vbs             = Windows Erst-Installation
- HMS-Mac-Install.command     = macOS Homebrew-Installation
- HMS-Portable-Install.command = macOS Portable-Installation (16GB-Fix)
- installer_gui.py           = grafischer Installer
- launcher.pyw + launcher_core.py = interne Start-Logik
- LIESMICH.txt               = 10-Zeilen-Kurzanleitung
- .gitignore

_entwicklung/ (alles andere, NICHT benoetigt):
- packages/ apps/ native/ plugins/ tools/ schemas/ tests/ docs/
  build/ fixture_profiles/
- PLAN.md STATUS.md ERRORS.md TEST_REPORT.md CHANGELOG.md README.md
- pyproject.toml uv.lock setup_*.sh/ps1 make_mac_app.py

Diese Trennung gilt ab sofort fuer alle Commits. Der Nutzer kann
_entwicklung/ loeschen wenn er Platz braucht - die App laeuft ohne.

Verifiziert: App startet nach Aufraeumen unveraendert (Health 200).
2026-09-11 23:44:06 +02:00

96 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HMS MediaEngine
**Arbeitstitel** der Produktname kann später ohne technische Auswirkung geändert werden.
Modularer Medienserver, VJ-System und generativer Licht-/Pixeleffekt-Server.
- **Primärplattform:** Windows 11 x64, portabel ohne Installation
- **Weitere Zielplattformen:** Linux x64, Raspberry Pi 5 / Linux ARM64
- **Steuerung:** lokale Webanwendung (Browser), Art-Net/DMX, spätere Timeline/Audio/KI
## Leitsatz
> **Python steuert. Native Bibliotheken decodieren. Die GPU rendert. Der Browser bedient.**
## Projektstatus
Das Projekt befindet sich in **Phase 0 technischer Spike und Go/No-Go**.
Aktueller Stand, Gates und nächste Aufgaben: [`STATUS.md`](STATUS.md)
Fehlerverfolgung: [`ERRORS.md`](ERRORS.md)
Messergebnisse: [`TEST_REPORT.md`](TEST_REPORT.md)
Bauplan (normativ): [`PLAN.md`](PLAN.md)
## Repository-Struktur (Eigentumsgrenzen)
```text
/
├─ apps/ launcher, control_server, renderer, web
├─ native/ render_bridge (Rust oder C++, Entscheidung per ADR)
├─ packages/ domain, protocol, parameter_engine, render_backend,
│ capabilities, adaptive_quality, plugin_sdk, artnet,
│ cluster, content_sync, timeline, audio_analysis,
│ persistence
├─ plugins/ builtin (generators, filters, transitions, outputs), examples
├─ schemas/ project, plugin, ipc, cluster, api
├─ fixture_profiles/ master32, layer64
├─ tests/ unit, integration, rendering, cluster, visual,
│ performance, portability, e2e
├─ tools/ media_probe, shader_validate, artnet_emulator,
│ capability_probe, cluster_test_node, fixture_generator
├─ build/ windows, linux, raspberry_pi
└─ docs/ architecture, adr, plugin-sdk, api, fixture,
performance, operator
```
Code darf nicht beliebig zwischen Paketen quer importiert werden.
## Entwicklung
```bash
# Python-Umgebung
uv sync
# Tests
uv run pytest
# Lint + Typprüfung
uv run ruff check .
```
Frontend (ab Phase 5): `pnpm` mit Lockfile, Vite-Build, siehe `apps/web`.
## Phasenmodell
Die Entwicklung folgt strikt dem Phasenmodell aus `PLAN.md` Abschnitt 31.
Jede Phase endet mit einem Gate; **keine neue Phase ohne grünes Gate.**
| Phase | Inhalt | Gate
| --- | --- | --- |
| 0 | Technischer Spike, Machbarkeitsnachweis, ADRs | Gate 0: D3D11-HW-Decode, GPU-Compositing, Adaptive Quality, Art-Net-Latenz, portable Auslieferung reproduzierbar grün
| 1 | Fundament: Supervisor, Control Core, Renderer, IPC, Node-Identität, Discovery, Paarung | Gate 1
| 2 | Medien-, Layer-, Basissync-Engine | Gate 2
| 3 | Plugin-SDK, Starterpaket Generatoren + Filter | Gate 3
| 4 | Art-Net-Fixtures Master32/Layer64 | Gate 4
| 5 | Vollständige Browser-Liveoberfläche | Gate 5 / V1.0-Kernrelease
| 6+ | Cue/Timeline, Audio, Mapping, Pixel-Ausgabe, KI, Pi 5, Härtung | eigene Gates
## Verbindliche Regeln (Auszug)
- Keine Pixelverarbeitung in Python-Schleifen.
- Kein CPU-Readback im normalen HDMI-Renderpfad (Windows: D3D11Memory durchgängig).
- Kein Mock als fertige Funktion gemeldet; Hardwaretests nur auf echter Hardware.
- Jede Architekturabweichung braucht ein ADR und Freigabe.
- Projektschema versioniert, Migrationen getestet.
## Dokumentation
- Architektur: `docs/architecture/`
- ADRs: `docs/adr/` (Vorlage: `docs/adr/_template.md`)
- Plugin-SDK: `docs/plugin-sdk/` (ab Phase 3)
- Fixture-Handbücher: `docs/fixture/` (ab Phase 4)
## Lizenz
TBD wird mit dem ersten Release entschieden (SBOM und Lizenzverzeichnis sind Teil der Release-Anforderungen, PLAN.md Abschnitt 30).