From 40a28d5ff5ec763d7ef6bcf15a6e422e34994e55 Mon Sep 17 00:00:00 2001 From: karim Date: Sat, 23 May 2026 19:31:42 +0200 Subject: [PATCH] 0.8.1: Fix Auto-Cloud-Switch beim Update von 0.7 auf 0.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beim Upgrade von 0.7 auf 0.8 wurden Lokal-Installationen ungewollt in den Cloud-Modus geschoben, weil das Production-Build VITE_SUPABASE_URL enthielt und adapter.js dies als Default-Cloud-URL gesetzt hat — auch wenn bereits lokale Daten in localStorage vorhanden waren. Fix in adapter.js: Auto-Cloud-Switch nur noch wenn - kein rapport_backend_chosen gesetzt - UND keine lokalen Daten (studio_data_v1) vorhanden - UND nicht in Tauri (Desktop-User wählen immer aktiv) Damit klaut der Web-Deploy weiter automatisch Cloud-Konfig (kein BackendChoice für Browser-User mit Server-URL), aber Tauri-Updates und Browser-User mit bestehenden Lokal-Daten bleiben unangetastet. Co-Authored-By: Claude Opus 4.7 --- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- src/App.jsx | 21 +++++++++++++-------- src/storage/adapter.js | 13 ++++++++++--- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 443e920..13530b0 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "rapport", "private": true, - "version": "0.8.0", + "version": "0.8.1", "type": "module", "scripts": { "dev": "vite", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index df7a671..77034a1 100755 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2880,7 +2880,7 @@ dependencies = [ [[package]] name = "rapport" -version = "0.7.0" +version = "0.8.0" dependencies = [ "log", "serde", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index f15234c..e16c8f6 100755 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rapport" -version = "0.8.0" +version = "0.8.1" description = "Rapport — Studio-Management für Architekturbüros" authors = ["Karim Gabriele Varano "] license = "AGPL-3.0-or-later" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 1d26184..8e66689 100755 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "RAPPORT PRE-RELEASE", - "version": "0.8.0", + "version": "0.8.1", "identifier": "com.karimgabrielevarano.rapport", "build": { "frontendDist": "../dist", diff --git a/src/App.jsx b/src/App.jsx index 9d3193e..42a5984 100755 --- a/src/App.jsx +++ b/src/App.jsx @@ -297,8 +297,8 @@ export default function App() { const [modal, setModal] = useState(null); const [printContent, setPrintContent] = useState(null); const [darkMode, setDarkMode] = useState(() => localStorage.getItem("rapport_dark") === "1"); - const [showChangelog, setShowChangelog] = useState(() => localStorage.getItem("rapport_changelog_seen") !== "0.8"); - const [changelogVersion, setChangelogVersion] = useState("0.8"); + const [showChangelog, setShowChangelog] = useState(() => localStorage.getItem("rapport_changelog_seen") !== "0.8.1"); + const [changelogVersion, setChangelogVersion] = useState("0.8.1"); const [showAbout, setShowAbout] = useState(false); const [navOpen, setNavOpen] = useState(false); const [expandedNav, setExpandedNav] = useState(new Set(["buchhaltung"])); @@ -498,7 +498,7 @@ export default function App() { const cloudUrl = localStorage.getItem("rapport_cloud_url") || ""; return ; } - return ; + return ; } if (printContent) { @@ -771,8 +771,8 @@ export default function App() {
- +
} @@ -837,6 +837,11 @@ export default function App() { {showChangelog && (() => { const CHANGELOGS = { + "0.8.1": { + items: [ + ["Update-Fix", "Behebt einen Fehler beim Upgrade von 0.7 auf 0.8: Lokal-Installationen wurden ungewollt in den Cloud-Modus geschoben und der Cloud-Setup-Wizard angezeigt, obwohl bereits lokale Daten vorhanden waren. Die App prüft jetzt vor einem automatischen Modus-Wechsel, ob lokale Daten existieren — und in Tauri-Installationen wird der Modus nie implizit gesetzt."], + ], + }, "0.8": { items: [ ["Cloud-Variante", "Rapport kann jetzt nicht nur lokal, sondern auch auf einem eigenen Server (Supabase) laufen. Beim ersten Öffnen wählt man «Lokal» oder «Cloud»; beide Modi haben dieselben Funktionen, Cloud zusätzlich Multi-User und Live-Sync zwischen Geräten."], @@ -914,7 +919,7 @@ export default function App() { }, }; const versions = Object.keys(CHANGELOGS); - const current = CHANGELOGS[changelogVersion] || CHANGELOGS["0.8"]; + const current = CHANGELOGS[changelogVersion] || CHANGELOGS["0.8.1"]; return (
@@ -943,7 +948,7 @@ export default function App() { ))}
-
@@ -958,7 +963,7 @@ export default function App() {
ÜBER RAPPORT
Rapport
-
Alpha 0.8 · Studio-Management für Architekturbüros
+
Alpha 0.8.1 · Studio-Management für Architekturbüros
LIZENZ
diff --git a/src/storage/adapter.js b/src/storage/adapter.js index 793d969..ff3b1dd 100644 --- a/src/storage/adapter.js +++ b/src/storage/adapter.js @@ -50,11 +50,18 @@ function createAdapter() { // gesetzt hat (z.B. via .env.production) und der User noch nichts gewählt hat, // wird Cloud automatisch der Modus. Damit landet ein Browser, der app.rapport.kgva.ch // öffnet, direkt im Cloud-Login (bzw. Init-Dialog wenn Server leer). - // Dev (`npm run dev`) ist ausgenommen — dort sieht der User weiterhin den - // BackendChoice-Screen, weil .env.local oft auf localhost zeigt. + // + // Bewusst NICHT auto-cloud wenn: + // - Dev-Build (`npm run dev`) — User sieht weiterhin BackendChoice + // - lokale Daten existieren (würde bestehenden Lokal-User auf Cloud zwingen + // und seine Daten unsichtbar machen) — Bug bei 0.7→0.8-Upgrade + // - Tauri-Desktop-App (Tauri-User sollen immer aktiv wählen, nicht implizit + // aufgrund von .env.production eines Builds umgehauen werden) if (typeof localStorage !== "undefined" && import.meta.env.PROD) { const envUrl = import.meta.env.VITE_SUPABASE_URL; - if (envUrl && !localStorage.getItem("rapport_backend_chosen")) { + const hasLocalData = !!localStorage.getItem(STORAGE_KEY); + const isTauri = typeof window !== "undefined" && !!window.__TAURI_INTERNALS__; + if (envUrl && !localStorage.getItem("rapport_backend_chosen") && !hasLocalData && !isTauri) { localStorage.setItem("rapport_backend_chosen", "1"); localStorage.setItem("rapport_backend", "cloud"); if (!localStorage.getItem("rapport_cloud_url")) {