You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
5.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Mawari
**Wer war wann dran? Auf einen Blick.**
Mawari (回り, japanisch: „reihum, die Runde“) ist eine macOS-App von Zielke Studio für die Planung der Leben-und-Dienst-Zusammenkunft. Die offizielle Einteilung läuft weiter über die bestehende App (NW Scheduler). Mawari ergänzt sie um die eine Frage, die dort untergeht: **Wann hatte wer zuletzt welche Aufgabe?**
- Übersicht in zwei Bereichen: Aufgaben für Diener (Ernannte) und Schulungsaufgaben
- je Person und Aufgabe das letzte Datum, „nie“ oder „–“ (nicht freigegeben)
- Spaltenkopf klicken = sortieren (wer am längsten nicht dran war, steht oben)
- Zelle klicken = Eintrag mit Person und Aufgabe vorbelegt
- Export für Numbers (.xlsx, öffnet sich direkt in Numbers)
- bewusst **keine** Vorschläge, keine Abwesenheiten, keine Verknüpfung mit der App
## Dokumente
| Datei | Inhalt |
|---|---|
| [CLAUDE.md](CLAUDE.md) | Arbeitsanweisungen für Claude Code |
| [CHANGELOG.md](CHANGELOG.md) | Versionen |
| [docs/datenformat.md](docs/datenformat.md) | Aufbau von `daten.json`, Sicherungen, Kompatibilität zum HTML-Tool |
| [design/README.md](design/README.md) | Farben, Symbol, Texte |
## Daten
`~/Library/Application Support/Mawari/daten.json`, jede Änderung wird sofort gespeichert. Einmal täglich landet eine Kopie in `Sicherungen/` (die letzten 60 bleiben). Das Format ist identisch mit dem früheren HTML-Tool (`leben-und-dienst.json`), dessen Dateien lassen sich über *Ablage › Sicherung / HTML-Daten laden …* übernehmen.
Zum Testen ohne echte Daten: `MAWARI_DATA_DIR=/irgendein/ordner …/Mawari.app/Contents/MacOS/Mawari`.
## Bauen
```bash
brew install xcodegen # einmalig
xcodegen # erzeugt Mawari.xcodeproj aus project.yml
open Mawari.xcodeproj
```
macOS 14+, Universal (arm64 + x86_64), Swift 6, SwiftUI. Einzige Abhängigkeit: Sparkle 2.10.0.
Symbol neu zeichnen: `swift Tools/make-icon.swift`.
Das `.xcodeproj` und `App/Info.plist` sind generiert und nicht im Repo. Nach Änderungen an `project.yml` erneut `xcodegen` ausführen.
Signiert wird mit **Developer ID Application** (Team `XY4C2RG3L5`), Hardened Runtime an. Ohne dieses Zertifikat `CODE_SIGN_IDENTITY`/`DEVELOPMENT_TEAM` in `project.yml` anpassen.
## Struktur
| Pfad | Inhalt |
|---|---|
| `App/Sources/MawariApp.swift` | Einstieg, Fenster, Menüs, Oberflächenzustand |
| `App/Sources/Model.swift` | Datenmodell (Aufgaben, Personen, Einträge), Datumshilfen |
| `App/Sources/Store.swift` | Laden, Speichern, tägliche Sicherung, Abfragen |
| `App/Sources/OverviewView.swift` | Übersicht „wer war wann dran“ mit Sortierung |
| `App/Sources/HistoryView.swift`, `EntrySheet.swift` | Verlauf und Eintrag bearbeiten |
| `App/Sources/PersonsView.swift`, `TasksView.swift` | Personen (mit Freigaben) und Aufgaben pflegen |
| `App/Sources/Exporter.swift` | .xlsx-Export (eigener Writer, ohne Abhängigkeit), Sicherung speichern/laden |
| `App/Sources/Theme.swift` | Farben |
| `App/Sources/UpdateController.swift` | Sparkle |
| `Tools/` | Symbol erzeugen, DMG bauen, Appcast, Veröffentlichen |
| `design/` | Symbolvorlage und Designnotizen |
| `project.yml` | XcodeGen-Projektdefinition |
## Neue Version veröffentlichen
1. In `project.yml` `MARKETING_VERSION` erhöhen und `CURRENT_PROJECT_VERSION` um 1 hochzählen.
2. `bash Tools/build-dmg.sh` – Release-Build, Signatur (Developer ID), Notarisierung von App und DMG.
3. `bash Tools/make-appcast.sh "Was ist neu – ein Satz"` – signiert das DMG mit dem Sparkle-Schlüssel, schreibt `build/appcast.xml`.
4. `bash Tools/publish.sh` – lädt DMG und Appcast nach `update.zielke.studio/mawari/`.
Installierte Kopien suchen einmal am Tag nach Updates und bieten sie an. Von Hand: *Mawari › Nach Updates suchen …*
**Einmalig vor dem ersten Veröffentlichen:** Ordner auf dem Server anlegen (siehe `zielke-apps/README.md`):
```bash
ssh -t samuelzielke@10.0.5.223 'sudo install -d -o samuelzielke -g www-data -m 2775 /var/www/updates/mawari'
```
**Schlüssel sichern:** Der private Sparkle-Schlüssel liegt im Schlüsselbund dieses Macs (Dienst `https://sparkle-project.org`, Konto `mawari`). Geht er verloren, kann keine installierte Kopie mehr aktualisiert werden. Export: `generate_keys --account mawari -x mawari-sparkle.key` (liegt nach dem ersten Build unter `build/dd/SourcePackages/artifacts/sparkle/Sparkle/bin/`), Datei in die Passwörter-App, dann löschen.
Notarisierung nutzt das Profil `patchcord-notary` (gleiches Team). Anderes Profil: `NOTARY_PROFILE=… bash Tools/build-dmg.sh`.
## Ausblick: Anbindung an NW Scheduler
Geprüft, noch nicht umgesetzt. Eine Live-Schnittstelle (API) bietet NW Scheduler nicht. Möglich ist ein **Import aus Dateien**:
- NW Scheduler kann die Einteilungen der Leben-und-Dienst-Zusammenkunft als CSV ausgeben (Spalten `Date, Person, PartType, Assignment, School`, PartType z. B. `Chairman`, `OpeningPrayer`, `TreasuresTalk`, `Gems`, `BibleReading`, `Apply1–4`, `Living1–3`, `CBS`, `CBSReader`). Andere Tools lesen genau dieses Format ein.
- Außerdem gibt es Sicherungspakete, die z. B. CongPlan inklusive Zuteilungsverlauf übernimmt.
Ein Upgrade wäre also: *Ablage › Aus NW Scheduler importieren …* liest die CSV, ordnet `PartType` den Mawari-Aufgaben zu, gleicht Namen mit den Personen ab und ergänzt nur neue Einträge. Vorher an einer echten Exportdatei prüfen, wie Namen und Partner darin stehen.
© Zielke Studio

Powered by TurnKey Linux.