108 lines
4.6 KiB
Markdown
108 lines
4.6 KiB
Markdown
# pageta-native
|
|
|
|
Native SwiftUI Universal-App (iOS + iPadOS + macOS) für **Pageta**,
|
|
die Reader-App des Vereins mana
|
|
|
|
Bundle: `ev.mana.pageta` · Team: `QP3GLU8PH3` · Backend:
|
|
`api.pageta.com` · Auth: `auth.mana.how`.
|
|
|
|
- Lizenz: [AGPL-3.0-or-later](LICENSE) — siehe [`COPYRIGHT`](COPYRIGHT)
|
|
- Web-App und Server: [git.mana.how/offen/pageta](https://git.mana.how/offen/pageta)
|
|
- Android: [git.mana.how/offen/pageta-android](https://git.mana.how/offen/pageta-android)
|
|
|
|
Bauen braucht die vier mana-Swift-Bibliotheken — offen unter
|
|
[git.mana.how/offen](https://git.mana.how/offen), Apache-2.0 — so abgelegt,
|
|
wie `project.yml` sie erwartet (`../../../libs/mana-swift-*` relativ zu diesem
|
|
Ordner), dazu XcodeGen und für Geräte ein Apple-Developer-Konto:
|
|
|
|
```bash
|
|
mkdir -p libs && for r in mana-swift-core mana-swift-llm mana-swift-event-sync mana-swift-ui; do
|
|
git clone https://git.mana.how/offen/$r.git libs/$r
|
|
done
|
|
mkdir -p apps/pageta && git clone https://git.mana.how/offen/pageta-native.git apps/pageta/ios
|
|
```
|
|
|
|
Zur Laufzeit braucht die App die mana-Plattform (Anmeldung, Sync).
|
|
|
|
## Status
|
|
|
|
**Feature-komplett (π-0..π-9 + π-11), TestFlight offen.** Voll
|
|
ausgebaute Universal-App: Feed, Lese-Liste, nativer Reader mit
|
|
Highlights/Notizen, Markierungen-Tab, Recherche, Konto (inkl. In-App-
|
|
Account-Löschung), ShareExtension + Widget. Local-first über
|
|
Event-Sourcing (`sync2.mana.how`), Feed/Extract-Preview HTTP-only.
|
|
|
|
**Build-Stand (2026-05-29, Xcode 26.3):** macOS ✅, iOS Device/Archive
|
|
✅ — **TestFlight nicht blockiert**. Nur der iOS-**Simulator**-Build ist
|
|
gebrochen (simulator-spezifische MLX-Macro-Arch-Kollision auf Apple
|
|
Silicon → auf Device/„My Mac" entwickeln). Details in
|
|
[`STATUS.md`](STATUS.md). Offen bleibt π-10 (ASC + TestFlight-Upload).
|
|
|
|
Vollständiger Plan + Phasen-Historie: [`STATUS.md`](STATUS.md) ·
|
|
[`mana/docs/playbooks/PAGETA_NATIVE_GREENFIELD.md`](../mana/docs/playbooks/PAGETA_NATIVE_GREENFIELD.md).
|
|
|
|
## Lokal entwickeln
|
|
|
|
Voraussetzungen:
|
|
- Xcode 16+
|
|
- `mana-swift-core` + `mana-swift-ui` als Schwester-Repos
|
|
ausgecheckt unter `../mana-swift-core` und `../mana-swift-ui`
|
|
- Apple-Developer-Account mit Team `QP3GLU8PH3`-Mitgliedschaft
|
|
- XcodeGen (`brew install xcodegen`)
|
|
|
|
```bash
|
|
./scripts/xcodegen # → PagetaNative.xcodeproj (mit macOS-Share-Patch)
|
|
./scripts/build-icon.sh # → AppIcon-PNGs (1024+512) aus SVG
|
|
open PagetaNative.xcodeproj
|
|
# Cmd+R im Simulator (iOS oder macOS)
|
|
```
|
|
|
|
Der `scripts/xcodegen`-Wrapper umgeht einen XcodeGen-Bug, durch den
|
|
`platformFilter: macOS` fälschlich als `maccatalyst` in die pbxproj
|
|
geschrieben wird. Ohne den Patch wird die macOS-Share-Extension nicht
|
|
ins App-Bundle embeddet.
|
|
|
|
Icon-Regeneration ist nur nötig wenn sich das SVG in
|
|
`../pageta/apps/web/static/icon-512.svg` ändert. Das Script nimmt
|
|
`rsvg-convert` (Homebrew librsvg) wenn vorhanden, sonst `qlmanage`
|
|
(macOS built-in Fallback).
|
|
|
|
## Apple-Dev-Portal-Pre-Conditions
|
|
|
|
Vor erstem TestFlight-Build registrieren:
|
|
|
|
- Bundle-IDs:
|
|
- `ev.mana.pageta` (Main App)
|
|
- `ev.mana.pageta.widget` (kommt mit π-7)
|
|
- `ev.mana.pageta.share` (kommt mit π-6)
|
|
- App-Group `group.ev.mana.pageta`
|
|
- Capabilities: Associated Domains, App Groups, Keychain Sharing
|
|
|
|
## Cross-Repo-Doks
|
|
|
|
- [`../mana/docs/playbooks/PAGETA_NATIVE_GREENFIELD.md`](../mana/docs/playbooks/PAGETA_NATIVE_GREENFIELD.md) — Plan + Phasen π-0…π-10
|
|
- [`../mana/docs/MANA_SWIFT.md`](../mana/docs/MANA_SWIFT.md) — Native-Koordination
|
|
- [`../mana-swift-core/CLAUDE.md`](../mana-swift-core/CLAUDE.md) — ManaCore + ManaTokens
|
|
- [`../mana-swift-ui/CLAUDE.md`](../mana-swift-ui/CLAUDE.md) — ManaAuthUI
|
|
- [`../pageta/CLAUDE.md`](../pageta/CLAUDE.md) — Web-App + API
|
|
- [`../pageta/STATUS.md`](../pageta/STATUS.md) — Web-Stand
|
|
|
|
## Für Mitlesende
|
|
|
|
Dieses Repo gehört zum Ökosystem von [mana](https://mana.how) und liegt
|
|
offen, damit andere es lesen, einordnen und als Grundlage nutzen können —
|
|
das spart Arbeit, egal ob ein Mensch oder ein Modell davorsitzt.
|
|
|
|
**Was du erwarten darfst:** den Code so, wie er tatsächlich in Gebrauch ist,
|
|
unter AGPL-3.0-or-later. Keine Attrappe, kein zurechtgeschnittener Auszug —
|
|
samt seiner Geschichte. Die Querverweise auf `../mana/…` zeigen
|
|
auf das Plattform-Repo, das geschlossen bleibt.
|
|
|
|
**Was du nicht erwarten darfst:** Support, Antwortzeiten, Zusagen zur
|
|
Abwärtskompatibilität oder die Übernahme von Änderungswünschen. Fehlermeldungen
|
|
sind willkommen (am schnellsten über den Feedback-Knopf auf pageta.com), eine
|
|
Antwort ist nicht zugesagt.
|
|
|
|
**Fork ist ausdrücklich erlaubt** und oft der schnellere Weg als zu warten.
|
|
Wer die App verändert und als Dienst anbietet, legt seine Änderungen offen —
|
|
das verlangt die AGPL (§13).
|