Files
DOSSIER/launcher
karim 95031ee2c0 Panels poliert: Ebenenkombi in Oberleiste, Satelliten-Dialoge, Caps weg, Perf
- Ebenenkombination raus aus Ebenen-Panel, in Oberleiste-Topbar +
  Editor-Satellite (AusschnittLayerDialog embedded). doc.Strings
  haelt active_comb_name, auto-clear bei manueller Eye/Lock-Aenderung.
- EbenenSettingsDialog jetzt Satellite mit Ebene-Picker-Dropdown
  (auto-save on switch via SAVE_KEEP).
- Per-Ausschnitt Einstellungen-Satellite (Massstab, Display, Overrides,
  Ebenenkombi). Alte 'Sichtbarkeit bearbeiten'-Option entfernt.
- Layouts/Ausschnitte: Top-Header weg, Sticky-Footer mit Anzahl +
  Aktionen. LayoutDialog ist jetzt Satellite mit Format-Live-Preview.
- Panel-Captions + Default-Ebenen-Namen auf Mixed-Case (Ausschnitte,
  Ebenen, Waende ...). Nur DOSSIER bleibt caps.
- DimensionenApp: Card-Optik raus, REF-Wuerfel mit Kreisen statt
  Quadraten + Hover-Scale.
- GeschossManager angeglichen an EbenenManager: Rechtsklick-Menue,
  Lock-Button, Delete-X, Duplizieren. layer_builder honoriert z.locked.
- Active Sublayer folgt jetzt dem Geschoss-Wechsel (gleicher Code
  unter neuem Parent).

Performance Geschoss-Wechsel:
- elemente._send_state() ersetzt durch _notify_active_geschoss()
  (Partial-Push statt 200+ Elements re-enumerieren).
- _apply_visibility dedupe via sticky last-applied-signature
  (STATE_SYNC-Echo loopt nicht mehr durch alle Layer).
- _update_clipping nur wenn alt oder neu hasClipping=True.
- Redundante doc.Views.Redraw() im CPlane-Pfad entfernt — die folgende
  apply_visibility-Roundtrip redrawt 30ms spaeter ohnehin.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 03:58:28 +02:00
..

Dossier Launcher

Standalone macOS-App, die als Projekt-Hub für Dossier-Projekte in Rhino 8 dient. Wählt eine .3dm aus, konfiguriert pro Projekt welche Module aktiv sind, startet Rhino mit der Datei. Das Python-Plugin in rhino/ liest beim Start die dossier.project.json (neben der .3dm) und lädt nur die aktivierten Module.

Setup (einmalig)

1. Dependencies installieren

cd launcher
npm install

Beim ersten npm run tauri dev zieht Cargo zusätzlich die Rust-Dependencies (dauert ein paar Minuten).

2. Rhino Auto-Run einrichten

Damit die Module bei jedem Rhino-Start automatisch laden:

  1. Rhino 8 starten
  2. Rhinoceros 8PreferencesGeneralStartup commands
  3. Folgende Zeile eintragen:
    _-RunPythonScript "/Users/karim/STUDIO/DOSSIER/rhino/startup.py"
    
  4. OK → Rhino neu starten

Ab jetzt lädt startup.py bei jedem Rhino-Start:

  • mit dossier.project.json neben der .3dm → nur konfigurierte Module
  • ohne Config → alle Module (Backwards-Compat zum bisherigen Verhalten)

Entwicklung

npm run tauri dev

Startet Vite (Port 5174) und öffnet die Tauri-Window. Hot-Reload für React, Rust-Änderungen brauchen einen Rebuild.

Build (.app + .dmg)

npm run tauri build

Output: src-tauri/target/release/bundle/macos/Dossier.app und src-tauri/target/release/bundle/dmg/Dossier_0.1.0_*.dmg

Vor dem ersten Build: Icons hinterlegen. Aktuell ist bundle.icon in src-tauri/tauri.conf.json leer. Mit

npm run tauri icon path/zur/icon.png

generiert Tauri das vollständige Icon-Set (1024×1024 PNG als Quelle reicht).

Architektur

launcher/
├── modules.json              # Modul-Manifest (statisch, in Binary einkompiliert)
├── src/                      # React-Frontend
│   ├── App.jsx              # Project Hub + Modul-Dialog
│   └── styles.css
└── src-tauri/                # Rust-Backend
    ├── src/lib.rs           # Tauri-Commands
    └── tauri.conf.json

Datenfluss:

  1. Launcher liest ~/Library/Application Support/Dossier/recent.json
  2. User klickt „Öffnen" → Launcher schreibt dossier.project.json neben die .3dm und ruft open -a "Rhinoceros 8" file.3dm
  3. Rhino startet, startup.py läuft, liest die Config, lädt nur die aktivierten Module
  4. Jedes Modul registriert sein eigenes Panel via panel_base.register_and_open

Module-Manifest erweitern

Wenn ein neues Modul dazukommt, drei Stellen synchron halten:

  1. launcher/modules.json — Eintrag mit id, name, description, pythonModule, dependsOn
  2. rhino/startup.py_MODULE_TO_PY Map ergänzen
  3. rhino/<pythonModule>.py — die Python-Implementierung

Launcher rebuilden (npm run tauri build), neue .app ersetzt die alte.