Files
pyramid/docs/feature-checklist.md
T
Bernd Steckmeister cdf48c4d45 feat: in-app update downloader with progress, Gitea auto-push hook
- update_checker: Gitea at git.steggi-matrix.work, Windows + Android support, asset URL detection
- update_download_dialog: animated Pyramid logo, progress bar, platform install (exe/apk)
- update_banner: Herunterladen button triggers dialog, dismiss option
- Android: REQUEST_INSTALL_PACKAGES permission + FileProvider for APK install
- post-commit hook: auto-push to Gitea on every commit
- chat_input: larger send button (60px desktop), more padding, bigger icon
- rooms_panel: space menu visible on mobile (leave space fix)
- docs: feature-checklist.md added

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 15:35:59 +02:00

355 lines
11 KiB
Markdown

# Matrix / Element Feature Checklist für Pyramid
*Stand: April 2026 — Pyramid v0.1.x (Early Development)*
---
## Nachrichten (Messaging)
### Kern-Funktionen
- [x] Textnachrichten senden
- [x] Nachrichten empfangen & anzeigen
- [x] Zeitstempel (formatiert, relativ)
- [x] Nachrichtengruppierung (gleicher Sender, <5 Min.)
- [x] Datumstrennlinien zwischen Gruppen
- [x] Verschlüsselte Nachrichten anzeigen (Entschlüsselungsstatus)
- [x] Nachrichtenverlauf paginieren (ältere Nachrichten beim Scrollen laden)
- [x] Ungelesene-Nachrichten-Tracking
### Nachrichtenaktionen
- [x] Nachrichtentext kopieren
- [x] Eigene Nachrichten löschen (redact)
- [x] Nachrichten anpinnen / Pinboard anzeigen
- [~] Auf Nachrichten antworten (in-reply-to vorhanden, kein visuelles Zitatfeld)
- [~] Nachrichten bearbeiten (m.edit im SDK erkannt, kein vollständiges UI)
- [ ] Nachrichten weiterleiten
- [ ] Zitat-Styling (visuelle Blockquote-Anzeige)
### Textformatierung
- [ ] Fett (**text**)
- [ ] Kursiv (*text*)
- [ ] Durchgestrichen (~~text~~)
- [ ] Inline-Code (`code`)
- [ ] Code-Block (```code```)
- [ ] Aufzählungslisten
- [ ] Klickbare Links
- [ ] @Erwähnungen (User)
- [ ] #Kanal-Erwähnungen
- [ ] Spoiler-Tags (||text||)
### Medien & Anhänge
- [x] Dateianhänge senden (mit MIME-Erkennung)
- [x] Bilder senden & inline anzeigen
- [x] Videos senden & inline abspielen
- [x] Audio senden & inline abspielen
- [x] Sticker anzeigen (m.sticker)
- [x] Dateianhang mit Untertitel
- [x] Dateigröße berechnen & anzeigen
- [x] Verschlüsselte Medien entschlüsseln & herunterladen
- [x] Thumbnail-Generierung für Bilder/Videos
- [~] Sprachnachrichten (Struktur vorhanden, Wiedergabe-UI fehlt)
- [ ] Animierte GIFs
- [ ] Link-Vorschau (URL-Unfurling)
- [ ] Dokument-Vorschau (PDF, Office)
### Reaktionen
- [x] Emoji-Reaktionen senden
- [x] Reaktionszähler anzeigen
- [x] 6 häufigste Reaktionen als Schnellauswahl
- [x] Vollständiger Emoji-Picker mit Suche
- [x] Eigene Reaktion entfernen
- [x] Anzeigen wer reagiert hat
- [x] Mehrere Reaktionen pro Nachricht
- [x] Kategoriebasierte Emoji-Organisation
### Threads
- [ ] Thread-Antworten (m.in_reply_to vorhanden, kein Thread-View)
- [ ] Thread aufklappen / eigene Ansicht
- [ ] Thread-Benachrichtigungen
- [ ] Thread als gelöst markieren
---
## Raumverwaltung
### Grundfunktionen
- [x] Raumliste anzeigen (sortiert nach letzter Aktivität)
- [x] Räume beitreten
- [x] Räume verlassen
- [x] Raumname & Avatar anzeigen
- [x] Verschlüsselungsstatus (Schloss-Icon)
- [x] Einladungen annehmen / ablehnen
- [ ] Neuen Raum erstellen
- [ ] Raumname bearbeiten
- [ ] Raumthema/Beschreibung bearbeiten
- [ ] Raum-Avatar ändern
- [ ] Raumvisibilität (öffentlich / privat)
- [ ] Zugriffsregeln (invite/knock/public)
- [ ] Verlaufsvisibilität konfigurieren
- [ ] Raum-Aliases verwalten
### Direktnachrichten (DMs)
- [x] 1:1 DM-Räume anzeigen & öffnen
- [x] Presence-Status des Gegenübers anzeigen
- [x] Echtzeit-Presence-Updates
- [x] Sprachanruf aus DM starten
- [x] Videoanruf aus DM starten
- [ ] DM starten (neuen Chat beginnen, nur über Suchfeld)
### Mitglieder & Rollen
- [x] Mitgliederliste anzeigen
- [x] Mitgliederanzahl anzeigen
- [x] Avatar & Anzeigename der Mitglieder
- [x] Nutzer in Raum einladen (Raum-Kontextmenü)
- [ ] Nutzer aus Raum entfernen (Kick)
- [ ] Nutzer sperren (Ban)
- [ ] Power Levels bearbeiten
- [ ] Nutzer zum Moderator / Admin befördern
- [ ] Bans aufheben
### Raumeinstellungen
- [x] Raumeinstellungen-Dialog (Name, Thema, Moderationsregeln)
- [ ] Raumverschlüsselung aktivieren/deaktivieren
- [ ] Erweiterte Raumeinstellungen (Fluffychat-Level)
- [ ] Widget-/App-Integration in Räume
---
## Spaces & Gemeinschaften
### Spaces
- [x] Spaces in der Seitenleiste anzeigen
- [x] Zwischen Spaces navigieren
- [x] Space-Avatar anzeigen
- [x] Space-Banner hochladen & anzeigen (Discord-Style)
- [x] Räume nach Space filtern
- [x] Virtuelle "Rooms"- und "DMs"-Spaces
- [x] Unterkategorien (Sub-Spaces) als Kategorien in der Kanalleiste
- [x] Drag-and-drop Kanalreihenfolge für Admins
- [x] Space-Verwaltungsdialog (Name, Avatar, Banner, Einladungen, Mitglieder, Power Levels)
- [ ] Neuen Space erstellen
- [ ] Räume zum Space hinzufügen / entfernen
- [ ] Space-Regeln / Beschreibung
- [ ] Space-Entdeckung (öffentliche Spaces durchsuchen)
### Kanalorganisation
- [x] Kanäle nach letzter Aktivität sortieren
- [x] Ungelesene-Badge auf Kanälen
- [x] Sprachkanal-Teilnehmerliste (Discord-Style, mit Echtzeit-Updates)
- [x] Kollabierbare Kategorien
- [ ] Favoriten / angeheftete Räume
- [ ] Räume stummschalten
- [ ] Räume ausblenden / archivieren
- [ ] Kanalreihenfolge für reguläre Nutzer
---
## Sprach- & Videoanrufe
### Sprachanrufe (LiveKit)
- [x] Sprachkanal betreten / verlassen (Toggle)
- [x] Teilnehmerliste im Sprachkanal
- [x] Mikrofon stummschalten
- [x] Audio-Ausgabe deaktivieren (Deafen)
- [x] Anruf-UI im Profil-Panel (aktiver Anruf)
- [x] Anruf-Ansicht öffnen (Vollansicht)
- [x] Mini-Call-Widget bei VOIP-Anrufen
- [ ] Klingelton bei eingehenden Anrufen
- [ ] Anruf annehmen / ablehnen (UI)
- [ ] Anrufdauer-Timer
- [ ] Anrufverlauf
### Videoanrufe
- [x] Videoanruf starten (aus DM)
- [x] Kamera-Toggle
- [x] Videoteilnehmer-Anzeige
- [ ] Bildschirmfreigabe (Toggle-UI vorhanden, Implementierung unklar)
- [ ] Picture-in-Picture-Modus
- [ ] Virtueller Hintergrund
### Gruppenanrufe
- [x] Mehrere Teilnehmer im Sprachkanal (LiveKit)
- [ ] Gruppen-Videogitter
- [ ] Spotlight-/Galerie-Ansicht
---
## Benachrichtigungen & Presence
### Push-Benachrichtigungen
- [ ] Desktop-Benachrichtigungen (Windows/macOS/Linux)
- [ ] Mobile Push-Benachrichtigungen (Android/iOS)
- [ ] Benachrichtigungseinstellungen pro Raum
- [ ] Nicht-Stören-Modus
- [ ] Benachrichtigungssound konfigurieren
### Presence & Status
- [x] Nutzer-Presence abrufen (online/offline/abwesend)
- [x] Presence-Indikator anzeigen
- [x] Letzte-Aktivität-Zeitstempel
- [x] Echtzeit-Presence-Updates
- [ ] Eigenen Status setzen (online/abwesend/unsichtbar)
- [ ] Benutzerdefinierte Statusmeldung
- [ ] Aktivitätsbasierte Status-Änderung
### Tipp-Indikatoren
- [ ] "X tippt gerade"-Anzeige empfangen
- [ ] Eigene Tipp-Benachrichtigung senden
- [ ] Timeout nach Tipp-Ende
---
## Nutzereinstellungen & Profil
### Profilverwaltung
- [x] Eigene User-ID anzeigen
- [x] Eigenen Avatar anzeigen (Initialen-Fallback)
- [x] Anzeigenamen anzeigen
- [ ] Anzeigenamen bearbeiten
- [ ] Eigenen Avatar hochladen / entfernen
- [ ] Status-Nachricht setzen
### Kontosicherheit
- [ ] Passwort ändern
- [ ] E-Mail-Adresse verwalten
- [ ] Sitzungsverwaltung (alle Sitzungen anzeigen)
- [ ] Andere Sitzungen abmelden
- [ ] Konto deaktivieren / löschen
- [ ] Zwei-Faktor-Authentifizierung (2FA)
### App-Einstellungen
- [x] Hell / Dunkel-Theme
- [x] Akzentfarbe (6 Voreinstellungen)
- [x] Eckradius anpassen
- [x] UI-Dichte / Kompaktheit
- [x] Animationssteuerung
- [ ] Schriftgröße anpassen
- [ ] Sprachauswahl (i18n)
- [ ] Kompaktansicht (kein Avatar in Nachrichten)
---
## Datenschutz & Sicherheit
### Ende-zu-Ende-Verschlüsselung (E2EE)
- [x] E2EE-Unterstützung (Olm/Megolm via vodozemac)
- [x] E2EE-Schlüssel beim ersten Login einrichten (Bootstrap)
- [x] Verschlüsselte Nachrichten-Indikatoren
- [x] Entschlüsselungsstatus anzeigen
- [x] SSSS (Symmetric Secret Storage)
- [x] Recovery-Key erzeugen & anzeigen
- [x] Recovery-Key aus bestehender Einrichtung importieren
- [x] Schlüssel-Caching (lokal speichern)
- [x] Session-Keys von anderen Geräten anfordern
- [ ] Schlüssel-Backup (Server-seitig)
- [ ] Schlüssel-Backup verifizieren
### Geräte-Verifizierung
- [x] Cross-Signing (Master/Self-Signing/User-Signing Keys)
- [x] Gerät per Emoji verifizieren
- [x] Gerät per Zahlencodes verifizieren
- [x] Geräte als vertrauenswürdig markieren
- [ ] Gerätename / Modell anzeigen
- [ ] Sitzungsverwaltung (alle Geräte dieses Accounts)
- [ ] Fremde Geräte abmelden
### Vertrauen & Sicherheit
- [ ] Geräte-Vertrauensstatus-Indikator in Nachrichten
- [ ] Nutzer blockieren / entsperren
- [ ] Blockierte Nutzer-Liste
- [ ] Verifizierter-Nutzer-Badge
---
## Suche
### Nachrichtensuche
- [x] Suchdialog öffnen (UI vorhanden)
- [ ] Volltextsuche in Nachrichteninhalten
- [ ] Filter nach Absender
- [ ] Filter nach Datum
- [ ] Filter nach Raum
- [ ] Filter nach Medientyp
- [ ] Suchergebnisse hervorheben
- [ ] Suchverlauf
### Nutzer- / Raumsuche
- [ ] Nutzer nach Anzeigenamen suchen
- [ ] Nutzer nach User-ID suchen
- [ ] Öffentliche Räume entdecken (Directory)
- [ ] Eigene Räume filtern
- [ ] Räume nach Name / Thema suchen
---
## Auto-Update
- [x] GitHub-Releases als Update-Quelle
- [x] Versions-Vergleich (SemVer)
- [x] Rate-Limiting (max. alle 4 Stunden prüfen)
- [x] Update-Banner im App-Header (Windows)
- [x] "Diese Version überspringen"-Option
- [x] Manueller Update-Check in den Einstellungen
- [ ] Automatischer Download & Installation (Squirrel/NSIS)
- [ ] Delta-Updates (nur geänderte Dateien)
- [ ] Update-Kanal wählen (Stable/Beta/Nightly)
---
## Plattform-spezifisch
### Desktop (Windows / macOS / Linux)
- [x] Native Desktop-App (Flutter Desktop)
- [x] Tastenkürzel (Enter = Senden, Shift+Enter = Zeile)
- [x] Drag-and-Drop für Dateianhänge
- [ ] System-Tray-Integration
- [ ] Desktop-Benachrichtigungen
- [ ] Minimieren in System-Tray
- [ ] Fenster-State speichern (Größe, Position)
- [ ] MSIX / Installer-Paketierung
### Mobile (Android / iOS)
- [x] Mobile App (Flutter)
- [x] Drawer-Navigation (Hamburger-Menü)
- [ ] Touch-optimiertes UI (derzeit Desktop-first)
- [ ] Mobile Push-Benachrichtigungen
- [ ] Zurück-Geste Navigation
- [ ] Bottom-Sheet-Modals
- [ ] Share-Sheet-Integration
- [ ] Haptisches Feedback
---
## Statistik
| Bereich | Implementiert | Teilweise | Fehlend |
|---|---|---|---|
| Messaging | 14 | 2 | 14 |
| Raumverwaltung | 8 | 0 | 14 |
| Spaces | 10 | 0 | 6 |
| Anrufe | 8 | 1 | 10 |
| Benachrichtigungen | 4 | 0 | 8 |
| Einstellungen/Profil | 5 | 0 | 11 |
| Sicherheit/E2EE | 9 | 0 | 7 |
| Suche | 1 | 0 | 10 |
| Auto-Update | 6 | 0 | 3 |
| Plattform | 5 | 0 | 10 |
| **Gesamt** | **~70** | **~3** | **~93** |
**Implementierungsgrad: ~42 %** (inkl. Teilimplementierungen)
---
## Empfohlene Feature-Prioritäten
1. **Textformatierung** — häufig genutzt, von Nutzern erwartet
2. **Push-Benachrichtigungen** — Desktop-Benachrichtigungen für Windows
3. **Tipp-Indikatoren** — verbessert Gesprächsgefühl deutlich
4. **Nachrichtenbearbeitung** — SDK-Grundlage vorhanden, nur UI fehlt
5. **Profilbearbeitung** — Avatar & Anzeigename ändern
6. **Raum erstellen** — Basis-Workflow, derzeit nicht möglich
7. **Sprachnachricht abspielen** — Struktur vorhanden
8. **Suche** — Dialog vorhanden, Backend-Abfrage fehlt
9. **Nutzer blockieren** — Sicherheits-Grundfunktion
10. **System-Tray** — Desktop-Erlebnis verbessern