362e089be0
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).
96 lines
3.6 KiB
Markdown
96 lines
3.6 KiB
Markdown
# 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).
|