• 0.8.2 bb69cc0657

    karim released this 2026-05-23 19:55:23 +02:00 | 8 commits to main since this release

    Patch-Release: behebt drei Probleme rund um den 0.7→0.8-Update-Fehler und macht künftige Updates robuster.

    Was 0.8.2 fixt

    Selbstheilung für hängende 0.8.0-Installationen. Wer von 0.7 auf 0.8 geupdated hat und in den Cloud-Setup-Wizard geschoben wurde (obwohl er Lokal-Modus nutzt), kommt mit 0.8.2 automatisch zurück in seinen Lokal-Modus. Der Auto-Recovery-Code erkennt: Cloud-Modus gesetzt + lokale Daten vorhanden + keine Cloud-Anmeldung → Cloud-Konfiguration wird zurückgenommen, alle Daten bleiben erhalten.

    Auto-Update auch ohne Login. Bisher prüfte Rapport erst nach dem Login auf neue Versionen — wer in einem fehlerhaften Setup-Bildschirm hing (ohne Devtools in der Production-App), kam nicht an den Bugfix. Mit 0.8.2 läuft der Update-Check auch im «Lokal oder Cloud»-Wizard, im Login-Screen und im Cloud-Setup. Künftige Bugs in Pre-Login-Flows können also via Updater selbst geheilt werden.

    Tauri ohne fest eingebaute Server-IP. Die Desktop-App enthält keine vorkonfigurierte Cloud-Adresse mehr. Wer Cloud nutzen will, gibt die Server-Adresse beim Login aktiv ein — kein automatisches Vorausfüllen mit irrelevanten IPs aus dem Build.

    Installation

    • Bestehende 0.7/0.8-Installationen (auch hängende): DMG herunterladen, über die installierte App ziehen. Beim ersten Start läuft Auto-Recovery, die Daten bleiben unverändert.
    • Neuinstallation: RAPPORT PRE-RELEASE_0.8.2_aarch64.dmg.

    Lizenz

    GNU AGPL-3.0-or-later

    Downloads
  • 0.8.1 2bd516a9ab

    karim released this 2026-05-23 19:33:43 +02:00 | 10 commits to main since this release

    Patch-Release: behebt einen Fehler beim Upgrade von 0.7 auf 0.8.

    Was passiert ist

    Bestehende Lokal-Installationen wurden beim Update auf 0.8 in den Cloud-Modus geschoben — der Cloud-Setup-Wizard erschien, obwohl bereits lokale Daten in der App vorhanden waren. Grund: das 0.8-Production-Build hatte VITE_SUPABASE_URL mit eingebrannt, und der Storage-Adapter setzte daraus automatisch Cloud als Default-Modus.

    Was 0.8.1 ändert

    Der Auto-Cloud-Switch wird jetzt nur noch ausgelöst, wenn alle Bedingungen erfüllt sind:

    • Production-Build mit VITE_SUPABASE_URL (wie bisher)
    • Kein bereits gewählter Backend-Modus (wie bisher)
    • Keine lokalen Rapport-Daten im localStorage vorhanden (neu)
    • Nicht in der Tauri-Desktop-App (neu — Desktop-User wählen immer aktiv)

    Damit bleibt das Verhalten für den Web-Deploy unverändert (Browser-Aufruf auf app.rapport.kgva.ch landet automatisch im Cloud-Login), aber Tauri-Updates und Browser-User mit bestehenden Lokal-Daten werden nicht mehr ungewollt umgeschaltet.

    Sofort-Fix für betroffene 0.8.0-Installationen

    Wer schon 0.8.0 installiert hat und in den Cloud-Setup-Wizard geschoben wurde, kann die App-Console öffnen und einmalig ausführen:

    localStorage.removeItem('rapport_backend');
    localStorage.removeItem('rapport_backend_chosen');
    localStorage.removeItem('rapport_cloud_url');
    location.reload();
    

    Mit dem Update auf 0.8.1 ist der Fall in Zukunft automatisch abgedeckt.

    Lizenz

    GNU AGPL-3.0-or-later

    Downloads
  • 0.8.0 0257f98524

    karim released this 2026-05-23 19:15:47 +02:00 | 12 commits to main since this release

    Mit 0.8 wird Rapport dual: lokal oder in der Cloud auf einer eigenen Supabase-Instanz. Beide Modi haben dieselben Funktionen, Cloud zusätzlich Multi-User und Live-Sync zwischen Geräten.

    Cloud-Variante

    • Lokal oder Cloud beim ersten Start: Frische Installationen zeigen einen Auswahl-Screen. Lokal bleibt wie bisher (Daten im Browser), Cloud verbindet sich mit einem eigenen Server (z.B. Mac Mini im Büro mit Supabase).
    • Mehrseitiger Setup-Wizard für Cloud: Drei Schritte — Studio-Stammdaten, Admin-Account, optionale Buchhaltung (IBAN, MwSt-Nummer, Stundenansatz). Adressen und Bankverbindung sind optional und in den Einstellungen jederzeit nachtragbar.
    • Login-Dropdown bei mehreren Studios: Auf einer Cloud-Instanz mit mehreren Firmen wählt man vor Email + Passwort das gewünschte Studio aus.
    • Passwort vergessen: Direkt auf dem Login-Screen. Reset-Link kommt per Email, neues Passwort wird nach Klick gesetzt.

    Multi-Studio & Personen-Sharing

    • Mehrere Studios pro Account: Admins können in den Einstellungen weitere Studios anlegen — derselbe User bleibt Admin in allen, der Wechsel passiert über ein Dropdown.
    • Personen-Sharing: Beim Anlegen eines weiteren Studios lässt sich auswählen, ob Personen (Kunden & Partner) aus bestehenden Studios übernommen werden. Geteilte Personen sind in allen verlinkten Studios sichtbar, Änderungen synchronisieren in beide Richtungen.

    Live-Sync zwischen Browsern

    • Postgres-Realtime: Änderungen in einem Browser (neue Pinnwand-Notiz, neues Projekt, neue Rechnung) erscheinen in anderen offenen Rapport-Tabs ohne Reload — typisch innerhalb einer Sekunde.
    • Reload-Resume: Nach Browser-Reload bleibt man eingeloggt und sieht den letzten Stand sofort, ohne erneut anzumelden.

    Team-Verwaltung

    • Mitarbeiter einladen (Admin-Aktion in Einstellungen → Team): Email + Anzeigename + App-Rolle + temporäres Passwort. Eingeladene können sich sofort anmelden und ihr Passwort später ändern. Kein Self-Signup für Mitarbeiter — die Firma kontrolliert, wer Zugriff bekommt.

    Web-Variante

    • Wer keine Tauri-Desktop-App installieren will, kann Rapport jetzt im Browser unter der Studio-Adresse nutzen (z.B. app.rapport.kgva.ch). Identische UI, gleiches Backend, kein Tauri nötig — ideal für Mitarbeiter mit Laptop/iPad.
    • Deploy-Setup: deploy/docker-compose.yml + nginx.conf im Repo. Hosting hinter Nginx Proxy Manager mit Let's-Encrypt-SSL.

    Sicherheit auf DB-Ebene

    • Row-Level-Security pro Studio: Jede Datentabelle hat eine Policy, die nur Studio-Mitgliedern Zugriff erlaubt. Selbst direkter SQL-Zugriff anderer Studios bleibt versperrt.
    • Audit-Spalten: created_by / updated_by auf allen Datentabellen — wer was geändert hat, ist nachvollziehbar.
    • Supabase Auth (bcrypt + JWT) parallel zum lokalen PBKDF2-Login. Sessions werden sicher in localStorage persistiert.

    Unter der Haube

    • Storage-Adapter: Beide Modi teilen sich eine Promise-API (load / save / clear). Frontend ist backend-agnostisch — der Adapter entscheidet, ob Browser-localStorage oder Postgres dahintersteht.
    • 29 Tabellen, 10 Migrations: Multi-tenant von Tag 1, vollständige Mapper für alle Entities (Projekte, Rechnungen, Spesen, Mitarbeiter, Protokolle, …).
    • Sub-Tables sauber: Mahnungs-Historie (invoice_reminders), Lieferschein-Items, Project-Quote-Links — alles per Foreign-Key statt JSON-Blob.

    Installation

    • Bestehende 0.7-Installationen auf macOS: Update über den eingebauten Updater (klappt automatisch oder via «Einstellungen → Updates & Support → Nach Updates suchen»).
    • Neuinstallation: RAPPORT PRE-RELEASE_0.8.0_aarch64.dmg herunterladen.

    Lizenz

    GNU AGPL-3.0-or-later

    Downloads
  • 0.7.0 7d6abfc7b3

    RAPPORT 0.7 Pre-Release

    karim released this 2026-05-16 02:09:14 +02:00 | 16 commits to main since this release

    Auto-Updater & Auslieferung

    • Tauri-Updater-Plugin: Rapport prüft beim Start, ob unter git.kgva.ch/karim/RAPPORT eine neue Version verfügbar ist. Bei Treffer öffnet sich ein Modal mit Release-Notes — Update-Bundle wird heruntergeladen, per minisign verifiziert und nach Neustart installiert. Kein manuelles DMG-Download mehr nötig.
    • Skippable & verschiebbar: Updates lassen sich pro Version überspringen (in localStorage gemerkt) oder einfach „Später" wegklicken — beim nächsten Start erscheint das Modal wieder.
    • Signaturprüfung: Jedes Update-Bundle wird vor Installation gegen den eingebauten Public Key validiert. Manipulierte Bundles werden verworfen.

    System-Tray

    • Tray-Icon in der macOS-Menüleiste: Linksklick holt Rapport in den Vordergrund (auch nach unminimize), Rechtsklick öffnet ein Quick-Access-Menü mit Dashboard, Zeiterfassung, Projekte, Buchhaltung und Einstellungen.
    • Hide-on-Close: Der rote Schliessen-Button versteckt das Fenster nur — Rapport läuft im Hintergrund weiter und bleibt jederzeit über das Tray-Icon erreichbar.
    • Cmd+Q beendet vollständig: Sowohl das Tastenkürzel als auch der „Beenden"-Menüeintrag im Tray räumen die App sauber ab.

    Einstellungen: Updates & Support

    • Neuer Tab „Updates & Support": Aktuelle Version, Zeitstempel der letzten Prüfung und ein „Nach Updates suchen"-Button — nützlich für Geräte, die kaum neu gestartet werden.
    • Manueller Check ignoriert Skip-Flag: Im Settings-Tab erscheint auch eine zuvor übersprungene Version wieder.
    • Support-Karte: Direktlink auf rapport.kgva.ch mit Hinweis auf Dokumentation, Changelog und Kontakt.

    Unter der Haube

    • Update-Helper zentralisiert: Auto-Check (Modal) und manueller Check (Settings) teilen sich src/utils/updater.js.
    • Release-Workflow: Neues scripts/release.sh baut, signiert und erzeugt eine latest.json mit Plattform-Routing — manuell hochzuladen sind nur noch das .app.tar.gz (Updater) und optional das DMG (Erstinstallation).
    • Capabilities erweitert: updater:default + process:allow-restart für die Update-/Restart-Flows.

    Installation

    Lade das passende Bundle für deine Plattform herunter:

    • macOS: Rapport_0.7.0_*.dmg

    Bestehende 0.6-Installationen müssen einmalig manuell auf 0.7 aktualisiert werden (der Auto-Updater lebt ja erst ab dieser Version in der App). Danach laufen alle weiteren Updates automatisch.

    Lizenz

    GNU AGPL-3.0-or-later

    Downloads
  • 0.6.0 38591ecc92

    karim released this 2026-05-13 01:24:30 +02:00 | 23 commits to main since this release

    Erstes öffentliches Release von Rapport

    Sicherheits-Hardening

    • Passwort-Hashing: PBKDF2-SHA-256 mit 100 000 Iterationen und zufälligem Salt; Verifikation in konstanter Zeit. Bestehende Klartext-Passwörter werden beim ersten erfolgreichen Login transparent migriert.
    • Brute-Force-Schutz: Nach 5 Fehlversuchen wird der Login für 60 Sekunden gesperrt. Mindestpasswortlänge beim Setup auf 8 Zeichen erhöht.
    • HTML-Sanitizer für Briefe: Allowlist-basierter Filter entfernt javascript:/data:-URLs, Event-Handler und Script-Tags. Externe Links bekommen automatisch rel="noopener noreferrer".
    • Datenexport: Legacy-Klartext-Passwörter werden beim Backup entfernt — nur die nicht umkehrbaren Hashes bleiben.
    • Kryptografische IDs: Neue Datensätze nutzen crypto.randomUUID statt Math.random.
    • Tauri-CSP: default-src 'self' mit minimaler Allowlist; Capabilities reduziert auf das Notwendigste.

    GUI & Performance

    • Code-Splitting: Jeder View wird per React.lazy + Suspense separat geladen. Initial-Bundle nur 86 KB gzipped.
    • swissqrbill offline: QR-Einzahlungsscheine werden lokal generiert — kein CDN-Aufruf mehr nötig.
    • Spesenbelege in der Zeiterfassung: Bilder und PDFs direkt aus der Tagesansicht hochladbar, mit automatischer Bildkomprimierung.
    • Avatar-Upload schlanker: Skalierung auf 256 px + JPEG-Kompression, Typprüfung.
    • UI-Feinschliff: Neues „Über Rapport"-Modal mit Lizenzinfo, einheitliche Bearbeiten-Icons, Pinnwand-Kategorien als Pills.

    Bug-Fixes

    • Auto-Überfällig-Prüfung läuft nur noch einmal pro Tag (verhindert Re-Render-Loop).

    Installation

    Lade das passende Bundle für deine Plattform herunter:

    • macOS: Rapport_0.6.0_*.dmg

    Lizenz

    GNU AGPL-3.0-or-later

    Downloads