Compare commits
2 Commits
0257f98524
...
2bd516a9ab
| Author | SHA1 | Date | |
|---|---|---|---|
| 2bd516a9ab | |||
| 40a28d5ff5 |
+5
-5
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"version": "0.8.0",
|
||||
"notes": "Rapport 0.8.0",
|
||||
"pub_date": "2026-05-23T17:12:56Z",
|
||||
"version": "0.8.1",
|
||||
"notes": "Rapport 0.8.1",
|
||||
"pub_date": "2026-05-23T17:32:24Z",
|
||||
"platforms": {
|
||||
"darwin-aarch64": {
|
||||
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSUjV0czVoWDR4NGs2aHVOMzc4NUhtN092d1ZLa2Jobk1CY2prUkt6WlVFclRLQzF4Y3pDZk13djFiWkVUTm1QZU1LSTE4MmJoQjhtZ0ZBT2tQalBUaDdCMnRIM2ZzNmdnPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzc5NTU2Mzc2CWZpbGU6UkFQUE9SVCBQUkUtUkVMRUFTRS5hcHAudGFyLmd6CkNFaEtaQTF5SUJFMG84MVBNeEdaRXBleEtRZ1oyeUNjaU9ydWtzUkIxU21BU1RRY0I2QjREcEhEZlBEQitCRUQrNFowbFJ3V01aYjFhL2dwRGZDVkNBPT0K",
|
||||
"url": "https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.0/RAPPORT%20PRE-RELEASE.app.tar.gz"
|
||||
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSUjV0czVoWDR4NGlsbU1CSGpuY1pPR01sUWZDYVBBVEZjY0RuVTVJSFlKSXM5N2k1SUVCVTFldlYvOFp2U3NLV1ZYYmhoMldMZG1NWjdqMnRpbVlhWTFZeHlKQ1BOUlFFPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzc5NTU3NTQ0CWZpbGU6UkFQUE9SVCBQUkUtUkVMRUFTRS5hcHAudGFyLmd6ClNwbkwxaEN5THlPTlJFQXd6TmQ4cWRjUG52NG1adDRUN1FXekgySGRGN3ZGci96dnZYdlNWTkdzaUtYSjlhajlZNUxQK2tnaytQZ1h2dG0zRDRtSkNnPT0K",
|
||||
"url": "https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.1/RAPPORT%20PRE-RELEASE.app.tar.gz"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "rapport",
|
||||
"private": true,
|
||||
"version": "0.8.0",
|
||||
"version": "0.8.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
Generated
+1
-1
@@ -2880,7 +2880,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rapport"
|
||||
version = "0.7.0"
|
||||
version = "0.8.0"
|
||||
dependencies = [
|
||||
"log",
|
||||
"serde",
|
||||
|
||||
@@ -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 <karim@gabrielevarano.ch>"]
|
||||
license = "AGPL-3.0-or-later"
|
||||
|
||||
@@ -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",
|
||||
|
||||
+13
-8
@@ -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 <CloudSetup cloudInit={cloudInit} cloudUrl={cloudUrl} />;
|
||||
}
|
||||
return <Login verifyLogin={verifyLogin} settings={data.settings} version="0.8" />;
|
||||
return <Login verifyLogin={verifyLogin} settings={data.settings} version="0.8.1" />;
|
||||
}
|
||||
|
||||
if (printContent) {
|
||||
@@ -771,8 +771,8 @@ export default function App() {
|
||||
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
|
||||
<button onClick={() => setShowAbout(true)} style={{ background: "none", border: "none", padding: 0, color: "#555", fontSize: 10, letterSpacing: "0.08em", cursor: "pointer", fontFamily: "inherit", textAlign: "left" }}
|
||||
onMouseEnter={e => e.currentTarget.style.color = "#aaa"} onMouseLeave={e => e.currentTarget.style.color = "#555"}>ÜBER RAPPORT</button>
|
||||
<button onClick={() => { setChangelogVersion("0.8"); setShowChangelog(true); }} style={{ background: "none", border: "none", padding: 0, color: "#aaa", fontSize: 10, letterSpacing: "0.08em", cursor: "pointer", fontFamily: "inherit" }}
|
||||
onMouseEnter={e => e.currentTarget.style.color = "#f0ede8"} onMouseLeave={e => e.currentTarget.style.color = "#aaa"}>0.8</button>
|
||||
<button onClick={() => { setChangelogVersion("0.8.1"); setShowChangelog(true); }} style={{ background: "none", border: "none", padding: 0, color: "#aaa", fontSize: 10, letterSpacing: "0.08em", cursor: "pointer", fontFamily: "inherit" }}
|
||||
onMouseEnter={e => e.currentTarget.style.color = "#f0ede8"} onMouseLeave={e => e.currentTarget.style.color = "#aaa"}>0.8.1</button>
|
||||
</div>
|
||||
</div>}
|
||||
|
||||
@@ -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 (
|
||||
<div style={{ position: "fixed", inset: 0, background: "rgba(0,0,0,0.55)", zIndex: 200, display: "flex", alignItems: "center", justifyContent: "center", padding: 24 }}>
|
||||
<div style={{ background: "#fff", borderRadius: 10, width: "100%", maxWidth: 480, boxShadow: "0 8px 40px rgba(0,0,0,0.18)", overflow: "hidden" }}>
|
||||
@@ -943,7 +948,7 @@ export default function App() {
|
||||
))}
|
||||
</div>
|
||||
<div style={{ padding: "12px 32px 24px" }}>
|
||||
<button className="btn btn-primary" style={{ width: "100%", fontSize: 13 }} onClick={() => { setShowChangelog(false); localStorage.setItem("rapport_changelog_seen", "0.8"); }}>
|
||||
<button className="btn btn-primary" style={{ width: "100%", fontSize: 13 }} onClick={() => { setShowChangelog(false); localStorage.setItem("rapport_changelog_seen", "0.8.1"); }}>
|
||||
Schliessen
|
||||
</button>
|
||||
</div>
|
||||
@@ -958,7 +963,7 @@ export default function App() {
|
||||
<div style={{ background: "#1a1a18", padding: "28px 32px 24px" }}>
|
||||
<div style={{ fontSize: 10, letterSpacing: "0.18em", color: "#b07848", marginBottom: 8, fontWeight: 600 }}>ÜBER RAPPORT</div>
|
||||
<div style={{ fontFamily: "'Playfair Display', serif", fontSize: 28, color: "#f0ede8", fontWeight: 400, lineHeight: 1.1 }}>Rapport</div>
|
||||
<div style={{ fontSize: 11, color: "#888", marginTop: 6, letterSpacing: "0.04em" }}>Alpha 0.8 · Studio-Management für Architekturbüros</div>
|
||||
<div style={{ fontSize: 11, color: "#888", marginTop: 6, letterSpacing: "0.04em" }}>Alpha 0.8.1 · Studio-Management für Architekturbüros</div>
|
||||
</div>
|
||||
<div style={{ padding: "20px 32px 8px" }}>
|
||||
<div style={{ fontSize: 11, fontWeight: 600, color: "#888", letterSpacing: "0.1em", marginBottom: 12 }}>LIZENZ</div>
|
||||
|
||||
+10
-3
@@ -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")) {
|
||||
|
||||
Reference in New Issue
Block a user