Fix download version 0.8.3 → 0.8.2
Korrigiert die fälschlich als 0.8.3 ausgewiesene Aktuell-Version auf 0.8.2 in Hero, Downloads, FAQ, Changelog und Auto-Updater-Endpoint. Changelog-Patch-Range entsprechend auf 0.8.0–0.8.1 angepasst. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+2
-2
@@ -6,7 +6,7 @@ toc: false
|
|||||||
|
|
||||||
{{< hextra/hero-badge >}}
|
{{< hextra/hero-badge >}}
|
||||||
<div class="hx:w-2 hx:h-2 hx:rounded-full" style="background: #b07848; box-shadow: 0 0 8px rgba(176,120,72,0.55);"></div>
|
<div class="hx:w-2 hx:h-2 hx:rounded-full" style="background: #b07848; box-shadow: 0 0 8px rgba(176,120,72,0.55);"></div>
|
||||||
<span>Pre-Release 0.8.3 · Aktiv in Entwicklung</span>
|
<span>Pre-Release 0.8.2 · Aktiv in Entwicklung</span>
|
||||||
{{< /hextra/hero-badge >}}
|
{{< /hextra/hero-badge >}}
|
||||||
|
|
||||||
<div class="hx:mt-8 hx:mb-6">
|
<div class="hx:mt-8 hx:mb-6">
|
||||||
@@ -23,7 +23,7 @@ toc: false
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="rapport-hero-actions">
|
<div class="rapport-hero-actions">
|
||||||
<a href="https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.3/RAPPORT%20PRE-RELEASE_0.8.3_aarch64.dmg" target="_blank" rel="noreferrer" class="rapport-btn rapport-btn-primary">Download · 0.8.3 (macOS)</a>
|
<a href="https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.2/RAPPORT%20PRE-RELEASE_0.8.2_aarch64.dmg" target="_blank" rel="noreferrer" class="rapport-btn rapport-btn-primary">Download · 0.8.2 (macOS)</a>
|
||||||
<a href="https://git.kgva.ch/karim/RAPPORT" class="rapport-btn rapport-btn-secondary">Quellcode ↗</a>
|
<a href="https://git.kgva.ch/karim/RAPPORT" class="rapport-btn rapport-btn-secondary">Quellcode ↗</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -7,20 +7,20 @@ toc: true
|
|||||||
|
|
||||||
Versionsgeschichte von RAPPORT. Aktuelle Releases: [Gitea](https://git.kgva.ch/karim/RAPPORT/releases).
|
Versionsgeschichte von RAPPORT. Aktuelle Releases: [Gitea](https://git.kgva.ch/karim/RAPPORT/releases).
|
||||||
|
|
||||||
## 0.8.3 — Aktuelle Version <span class="rapport-status new">Aktuell</span>
|
## 0.8.2 — Aktuelle Version <span class="rapport-status new">Aktuell</span>
|
||||||
|
|
||||||
Veröffentlicht am 2026-05-24.
|
Veröffentlicht am 2026-05-24.
|
||||||
|
|
||||||
**Neu / Verbessert**
|
**Neu / Verbessert**
|
||||||
|
|
||||||
- Diverse Verbesserungen und Bugfixes (Details werden im [Release auf Gitea](https://git.kgva.ch/karim/RAPPORT/releases/tag/0.8.3) gepflegt)
|
- Diverse Verbesserungen und Bugfixes (Details werden im [Release auf Gitea](https://git.kgva.ch/karim/RAPPORT/releases/tag/0.8.2) gepflegt)
|
||||||
|
|
||||||
**Bekannte Einschränkungen**
|
**Bekannte Einschränkungen**
|
||||||
|
|
||||||
- Builds sind Tauri-signiert, aber noch nicht Apple-notarisiert — siehe [Installation § Gatekeeper](../installation#3--erster-start-macos-gatekeeper)
|
- Builds sind Tauri-signiert, aber noch nicht Apple-notarisiert — siehe [Installation § Gatekeeper](../installation#3--erster-start-macos-gatekeeper)
|
||||||
- Linux- und Windows-Builds noch nicht verfügbar
|
- Linux- und Windows-Builds noch nicht verfügbar
|
||||||
|
|
||||||
## 0.8.0–0.8.2 — Patch-Releases
|
## 0.8.0–0.8.1 — Patch-Releases
|
||||||
|
|
||||||
Patch-Reihe mit kleineren Verbesserungen und Bugfixes. Details siehe [Releases auf Gitea](https://git.kgva.ch/karim/RAPPORT/releases).
|
Patch-Reihe mit kleineren Verbesserungen und Bugfixes. Details siehe [Releases auf Gitea](https://git.kgva.ch/karim/RAPPORT/releases).
|
||||||
|
|
||||||
|
|||||||
@@ -11,22 +11,22 @@ Rapport besteht aus zwei Komponenten:
|
|||||||
|
|
||||||
| Komponente | Für wen | Aktuelle Version |
|
| Komponente | Für wen | Aktuelle Version |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| **Desktop-App** | Solo-Büro, lokale Datenhaltung | 0.8.3 |
|
| **Desktop-App** | Solo-Büro, lokale Datenhaltung | 0.8.2 |
|
||||||
| **Rapport Server** | Team / Multi-User / Selfhost | 0.1.0 |
|
| **Rapport Server** | Team / Multi-User / Selfhost | 0.1.0 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Desktop-App — Pre-Release 0.8.3
|
## Desktop-App — Pre-Release 0.8.2
|
||||||
|
|
||||||
<span class="rapport-status new">Aktuelle Version</span>
|
<span class="rapport-status new">Aktuelle Version</span>
|
||||||
|
|
||||||
**Neuerungen** — siehe [Changelog](../docs/changelog#083) für Details.
|
**Neuerungen** — siehe [Changelog](../docs/changelog#082) für Details.
|
||||||
|
|
||||||
### macOS
|
### macOS
|
||||||
|
|
||||||
| Architektur | Download |
|
| Architektur | Download |
|
||||||
|---|---|
|
|---|---|
|
||||||
| **Apple Silicon (M1–M4)** | [RAPPORT_0.8.3_aarch64.dmg](https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.3/RAPPORT%20PRE-RELEASE_0.8.3_aarch64.dmg) |
|
| **Apple Silicon (M1–M4)** | [RAPPORT_0.8.2_aarch64.dmg](https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.2/RAPPORT%20PRE-RELEASE_0.8.2_aarch64.dmg) |
|
||||||
| **Intel (x86_64)** | [auf Anfrage](https://git.kgva.ch/karim/RAPPORT/issues/new) |
|
| **Intel (x86_64)** | [auf Anfrage](https://git.kgva.ch/karim/RAPPORT/issues/new) |
|
||||||
|
|
||||||
> **Erstinstallation:** *Systemeinstellungen → Datenschutz & Sicherheit* öffnen und Rapport zulassen. Die Builds sind über Tauri signiert, aber (noch) nicht Apple-notarisiert.
|
> **Erstinstallation:** *Systemeinstellungen → Datenschutz & Sicherheit* öffnen und Rapport zulassen. Die Builds sind über Tauri signiert, aber (noch) nicht Apple-notarisiert.
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ In beiden Fällen bleibt die Kontrolle über die Daten bei dir.
|
|||||||
|
|
||||||
## Ist die Software stabil genug für den Betrieb?
|
## Ist die Software stabil genug für den Betrieb?
|
||||||
|
|
||||||
**Noch nicht.** Aktuell befindet sich Rapport in aktiver Entwicklung (Pre-Release **0.8.3**). Funktionen können sich ändern, Bugs sind möglich. Regelmässige Backups sind empfohlen. Testen und Feedback geben ist erwünscht.
|
**Noch nicht.** Aktuell befindet sich Rapport in aktiver Entwicklung (Pre-Release **0.8.2**). Funktionen können sich ändern, Bugs sind möglich. Regelmässige Backups sind empfohlen. Testen und Feedback geben ist erwünscht.
|
||||||
|
|
||||||
## Was ist mit dem QR-Einzahlungsschein?
|
## Was ist mit dem QR-Einzahlungsschein?
|
||||||
|
|
||||||
|
|||||||
@@ -36,13 +36,13 @@ Updates können in den Einstellungen komplett deaktiviert werden.
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"version": "0.8.3",
|
"version": "0.8.2",
|
||||||
"notes": "Rapport 0.8.3",
|
"notes": "Rapport 0.8.2",
|
||||||
"pub_date": "2026-05-24T00:00:00Z",
|
"pub_date": "2026-05-24T00:00:00Z",
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"darwin-aarch64": {
|
"darwin-aarch64": {
|
||||||
"signature": "…",
|
"signature": "…",
|
||||||
"url": "https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.3/RAPPORT%20PRE-RELEASE.app.tar.gz"
|
"url": "https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.2/RAPPORT%20PRE-RELEASE.app.tar.gz"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,756 +0,0 @@
|
|||||||
/* ─────────────────────────────────────────────────────────────
|
|
||||||
RAPPORT — Theme-Overrides für Hextra
|
|
||||||
Warmes Sand/Tan auf hellem Grund (Architektur-Büro-Ästhetik)
|
|
||||||
───────────────────────────────────────────────────────────── */
|
|
||||||
|
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Archivo+Black&family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;1,400&display=swap');
|
|
||||||
|
|
||||||
/* Krungthep — RAPPORT-Display-Font (Mac-System-Font lokal gebundelt) */
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Krungthep';
|
|
||||||
src: url('/fonts/Krungthep.ttf') format('truetype');
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Primary-HSL: Tan #b07848 — */
|
|
||||||
:root {
|
|
||||||
--primary-hue: 26deg;
|
|
||||||
--primary-saturation: 42%;
|
|
||||||
--primary-lightness: 49%;
|
|
||||||
|
|
||||||
/* RAPPORT-Palette (Light) */
|
|
||||||
--rapport-bg: #f7f5f2;
|
|
||||||
--rapport-surface: #ffffff;
|
|
||||||
--rapport-surface2: #fbf9f5;
|
|
||||||
--rapport-dark: #1a1a18;
|
|
||||||
--rapport-dark2: #2d2d28;
|
|
||||||
--rapport-accent: #b07848;
|
|
||||||
--rapport-accent-2: #9a673b;
|
|
||||||
--rapport-accent-3: #7d5430;
|
|
||||||
--rapport-text: #1a1a18;
|
|
||||||
--rapport-text-2: #555550;
|
|
||||||
--rapport-text-3: #888880;
|
|
||||||
--rapport-text-4: #aaaaaa;
|
|
||||||
--rapport-border: #e8e3dc;
|
|
||||||
--rapport-border-2: #d8d2ca;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark {
|
|
||||||
--primary-hue: 26deg;
|
|
||||||
--primary-saturation: 42%;
|
|
||||||
--primary-lightness: 56%;
|
|
||||||
--color-dark: var(--rapport-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Body & Backgrounds — */
|
|
||||||
body {
|
|
||||||
background: var(--rapport-bg);
|
|
||||||
color: var(--rapport-text);
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark body {
|
|
||||||
background: #181614;
|
|
||||||
color: #ece9e3;
|
|
||||||
}
|
|
||||||
|
|
||||||
::selection {
|
|
||||||
background: rgba(176, 120, 72, 0.25);
|
|
||||||
color: var(--rapport-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark ::selection {
|
|
||||||
background: rgba(176, 120, 72, 0.35);
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Typografie — Headings serifig, Body monospaced — */
|
|
||||||
.hextra-toc,
|
|
||||||
.content,
|
|
||||||
.prose {
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1, h2, h3, h4,
|
|
||||||
.hextra-home h1, .hextra-home h2, .hextra-home h3,
|
|
||||||
.hx\:text-2xl, .hx\:text-3xl, .hx\:text-4xl, .hx\:text-5xl, .hx\:text-6xl {
|
|
||||||
font-family: 'Playfair Display', Georgia, serif !important;
|
|
||||||
font-weight: 700 !important;
|
|
||||||
letter-spacing: -0.01em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navbar-Logo: RAPPORT in Krungthep/Archivo Black — nur navbar! */
|
|
||||||
.hextra-navbar-title,
|
|
||||||
nav .hextra-navbar-title,
|
|
||||||
nav .hextra-max-navbar-width .hx\:font-bold {
|
|
||||||
font-family: Krungthep, 'Archivo Black', sans-serif !important;
|
|
||||||
letter-spacing: -0.02em !important;
|
|
||||||
font-weight: 900 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Navbar mit hellem Hintergrund & dezenter Border — */
|
|
||||||
.nav-container {
|
|
||||||
background: rgba(247, 245, 242, 0.85) !important;
|
|
||||||
backdrop-filter: blur(12px);
|
|
||||||
-webkit-backdrop-filter: blur(12px);
|
|
||||||
border-bottom: 1px solid var(--rapport-border) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .nav-container {
|
|
||||||
background: rgba(24, 22, 20, 0.85) !important;
|
|
||||||
border-bottom: 1px solid #2d2926 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-container-blur,
|
|
||||||
.dark .nav-container-blur {
|
|
||||||
background: transparent !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Sidebar — */
|
|
||||||
aside.sidebar-container,
|
|
||||||
.sidebar-container {
|
|
||||||
background: var(--rapport-bg) !important;
|
|
||||||
border-right: 1px solid var(--rapport-border);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-container a {
|
|
||||||
color: var(--rapport-text-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-container a:hover {
|
|
||||||
color: var(--rapport-accent);
|
|
||||||
background: var(--rapport-surface);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-active-item,
|
|
||||||
.sidebar-container .sidebar-active-item {
|
|
||||||
background: rgba(176, 120, 72, 0.10) !important;
|
|
||||||
color: var(--rapport-accent) !important;
|
|
||||||
border-color: rgba(176, 120, 72, 0.20) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark aside.sidebar-container,
|
|
||||||
.dark .sidebar-container {
|
|
||||||
background: #181614 !important;
|
|
||||||
border-right: 1px solid #2d2926;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* — Links — */
|
|
||||||
a {
|
|
||||||
transition: color 0.15s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content a,
|
|
||||||
.prose a {
|
|
||||||
color: var(--rapport-accent);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content a:hover,
|
|
||||||
.prose a:hover {
|
|
||||||
color: var(--rapport-accent-2);
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hextra-Card-Links (<cards>-Shortcode) sollen NIE unterstrichen werden */
|
|
||||||
.hextra-card,
|
|
||||||
.hextra-card:hover,
|
|
||||||
.hextra-card:focus,
|
|
||||||
.hextra-card:active,
|
|
||||||
.hextra-card *,
|
|
||||||
.hextra-card:hover * {
|
|
||||||
text-decoration: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card-Hover-Effekt sauber: nur Border + leichte Schatten, kein Underline */
|
|
||||||
a.hextra-card:hover,
|
|
||||||
a.hextra-card:focus {
|
|
||||||
outline: none;
|
|
||||||
text-decoration: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — RAPPORT Hero-Buttons — eigene Pills, nicht von Hextra abhängig — */
|
|
||||||
.rapport-hero-actions {
|
|
||||||
display: flex;
|
|
||||||
gap: 18px;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
margin-top: 8px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-btn {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 9px;
|
|
||||||
border-radius: 999px;
|
|
||||||
padding: 14px 30px;
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 500;
|
|
||||||
letter-spacing: 0.07em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
text-decoration: none !important;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, border-color 0.18s ease;
|
|
||||||
user-select: none;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Primary (Download) — Weiss mit Tiefe */
|
|
||||||
.rapport-btn-primary {
|
|
||||||
background: #ffffff;
|
|
||||||
color: var(--rapport-text) !important;
|
|
||||||
border: 1px solid var(--rapport-border);
|
|
||||||
box-shadow:
|
|
||||||
0 1px 0 rgba(255,255,255,0.9) inset,
|
|
||||||
0 2px 4px rgba(0,0,0,0.04),
|
|
||||||
0 8px 20px rgba(0,0,0,0.10),
|
|
||||||
0 16px 40px rgba(0,0,0,0.08);
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-btn-primary:hover {
|
|
||||||
background: #ffffff;
|
|
||||||
border-color: var(--rapport-border-2);
|
|
||||||
color: var(--rapport-accent-2) !important;
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow:
|
|
||||||
0 1px 0 rgba(255,255,255,0.9) inset,
|
|
||||||
0 4px 8px rgba(0,0,0,0.06),
|
|
||||||
0 14px 28px rgba(0,0,0,0.12),
|
|
||||||
0 24px 56px rgba(176,120,72,0.18);
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-btn-primary:active {
|
|
||||||
transform: translateY(0);
|
|
||||||
box-shadow:
|
|
||||||
0 1px 0 rgba(255,255,255,0.9) inset,
|
|
||||||
0 2px 4px rgba(0,0,0,0.06),
|
|
||||||
0 4px 12px rgba(0,0,0,0.08);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Secondary (Quellcode) — Outline */
|
|
||||||
.rapport-btn-secondary {
|
|
||||||
background: transparent;
|
|
||||||
color: var(--rapport-text-2) !important;
|
|
||||||
border: 1.5px solid var(--rapport-border-2);
|
|
||||||
box-shadow: 0 2px 6px rgba(0,0,0,0.03);
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-btn-secondary:hover {
|
|
||||||
background: rgba(255,255,255,0.5);
|
|
||||||
border-color: var(--rapport-text-3);
|
|
||||||
color: var(--rapport-text) !important;
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow:
|
|
||||||
0 6px 14px rgba(0,0,0,0.06),
|
|
||||||
0 12px 28px rgba(0,0,0,0.04);
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-btn-secondary:active {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Dark-Mode-Varianten */
|
|
||||||
.dark .rapport-btn-primary {
|
|
||||||
background: #2a2722;
|
|
||||||
color: #ece9e3 !important;
|
|
||||||
border-color: #3a3530;
|
|
||||||
box-shadow:
|
|
||||||
0 1px 0 rgba(255,255,255,0.04) inset,
|
|
||||||
0 2px 4px rgba(0,0,0,0.30),
|
|
||||||
0 10px 24px rgba(0,0,0,0.45);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .rapport-btn-primary:hover {
|
|
||||||
background: #322e28;
|
|
||||||
color: var(--rapport-accent) !important;
|
|
||||||
box-shadow:
|
|
||||||
0 1px 0 rgba(255,255,255,0.04) inset,
|
|
||||||
0 4px 8px rgba(0,0,0,0.40),
|
|
||||||
0 16px 32px rgba(0,0,0,0.50),
|
|
||||||
0 24px 56px rgba(176,120,72,0.22);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .rapport-btn-secondary {
|
|
||||||
border-color: #3a3530;
|
|
||||||
color: #b8b2a8 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .rapport-btn-secondary:hover {
|
|
||||||
background: rgba(255,255,255,0.04);
|
|
||||||
border-color: #6a6258;
|
|
||||||
color: #ece9e3 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Hero-Badge — */
|
|
||||||
.hextra-badge {
|
|
||||||
background: var(--rapport-surface) !important;
|
|
||||||
border: 1px solid var(--rapport-border) !important;
|
|
||||||
border-radius: 20px !important;
|
|
||||||
padding: 5px 14px !important;
|
|
||||||
font-size: 10px !important;
|
|
||||||
letter-spacing: 0.12em !important;
|
|
||||||
color: var(--rapport-text-4) !important;
|
|
||||||
text-transform: uppercase !important;
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif !important;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Feature-Cards — */
|
|
||||||
.hextra-feature-card {
|
|
||||||
background: var(--rapport-surface) !important;
|
|
||||||
border: 1px solid var(--rapport-border) !important;
|
|
||||||
border-radius: 14px !important;
|
|
||||||
transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-feature-card:hover {
|
|
||||||
border-color: var(--rapport-border-2) !important;
|
|
||||||
transform: translateY(-2px);
|
|
||||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.09), 0 2px 8px rgba(0, 0, 0, 0.05) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-feature-card h3 {
|
|
||||||
font-family: 'Playfair Display', serif !important;
|
|
||||||
color: var(--rapport-text) !important;
|
|
||||||
font-weight: 700 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-feature-card p {
|
|
||||||
color: var(--rapport-text-2) !important;
|
|
||||||
font-size: 12px !important;
|
|
||||||
line-height: 1.8 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .hextra-feature-card {
|
|
||||||
background: #211e1a !important;
|
|
||||||
border-color: #2d2926 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .hextra-feature-card h3 {
|
|
||||||
color: #ece9e3 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .hextra-feature-card p {
|
|
||||||
color: #b8b2a8 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Generic Cards (Hextra <cards> shortcode) — */
|
|
||||||
.hextra-card {
|
|
||||||
background: var(--rapport-surface);
|
|
||||||
border: 1px solid var(--rapport-border);
|
|
||||||
border-radius: 12px;
|
|
||||||
transition: border-color 0.2s, transform 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-card:hover {
|
|
||||||
border-color: var(--rapport-accent-2);
|
|
||||||
transform: translateY(-1px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Code-Blocks — */
|
|
||||||
.hextra-code-block {
|
|
||||||
background: #ffffff !important;
|
|
||||||
border: 1px solid var(--rapport-border) !important;
|
|
||||||
border-radius: 12px !important;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-code-block pre,
|
|
||||||
.hextra-code-block .highlight,
|
|
||||||
.hextra-code-block .chroma {
|
|
||||||
background: transparent !important;
|
|
||||||
border: none !important;
|
|
||||||
border-radius: 0 !important;
|
|
||||||
margin: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
background: var(--rapport-surface2);
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
code, pre, pre code, kbd, samp, tt {
|
|
||||||
font-family: ui-monospace, 'SF Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
color: var(--rapport-accent-3) !important;
|
|
||||||
background: rgba(176, 120, 72, 0.10) !important;
|
|
||||||
padding: 2px 6px;
|
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre code {
|
|
||||||
color: var(--rapport-text) !important;
|
|
||||||
background: transparent !important;
|
|
||||||
padding: 0;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .hextra-code-block {
|
|
||||||
background: #1f1c19 !important;
|
|
||||||
border-color: #2d2926 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .hextra-code-block pre,
|
|
||||||
.dark .hextra-code-block .highlight,
|
|
||||||
.dark .hextra-code-block .chroma {
|
|
||||||
background: transparent !important;
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark code {
|
|
||||||
color: var(--rapport-accent) !important;
|
|
||||||
background: rgba(176, 120, 72, 0.15) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark pre code {
|
|
||||||
color: #ece9e3 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Callouts — */
|
|
||||||
.hextra-callout {
|
|
||||||
background: var(--rapport-surface) !important;
|
|
||||||
border-color: var(--rapport-border-2) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Footer — */
|
|
||||||
.hextra-footer,
|
|
||||||
footer {
|
|
||||||
background: var(--rapport-surface2);
|
|
||||||
border-top: 1px solid var(--rapport-border);
|
|
||||||
color: var(--rapport-text-3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-footer a {
|
|
||||||
color: var(--rapport-text-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-footer a:hover {
|
|
||||||
color: var(--rapport-accent);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .hextra-footer,
|
|
||||||
.dark footer {
|
|
||||||
background: #15130f;
|
|
||||||
border-top: 1px solid #2d2926;
|
|
||||||
color: #888880;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — TOC — */
|
|
||||||
.hextra-toc a {
|
|
||||||
color: var(--rapport-text-3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-toc a:hover,
|
|
||||||
.hextra-toc .active {
|
|
||||||
color: var(--rapport-accent) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hextra-Sticky-Bottom-Fades (TOC "Nach oben" + Sidebar-Footer) — */
|
|
||||||
/* der hardcoded weisse Fade passt nicht zum cremefarbenen RAPPORT-Bg */
|
|
||||||
.hextra-toc div:has(> #backToTop),
|
|
||||||
[data-toggle-animation] {
|
|
||||||
background: var(--rapport-bg) !important;
|
|
||||||
box-shadow: none !important;
|
|
||||||
border-top-color: var(--rapport-border) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .hextra-toc div:has(> #backToTop),
|
|
||||||
.dark [data-toggle-animation] {
|
|
||||||
background: #181614 !important;
|
|
||||||
border-top-color: #2d2926 !important;
|
|
||||||
box-shadow: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Search — */
|
|
||||||
.hextra-search-wrapper input {
|
|
||||||
background: var(--rapport-surface) !important;
|
|
||||||
border: 1px solid var(--rapport-border) !important;
|
|
||||||
color: var(--rapport-text) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-search-wrapper input:focus {
|
|
||||||
border-color: var(--rapport-accent-2) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Tabellen — */
|
|
||||||
table {
|
|
||||||
border-color: var(--rapport-border) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead {
|
|
||||||
background: var(--rapport-surface) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
th, td {
|
|
||||||
border-color: var(--rapport-border) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ─────────────────────────────────────────────────────────────
|
|
||||||
RAPPORT-LOGO-KARTE (Hero) — Dark Card auf hellem Grund
|
|
||||||
───────────────────────────────────────────────────────────── */
|
|
||||||
.rapport-logo-card {
|
|
||||||
background: var(--rapport-dark);
|
|
||||||
border: 1px solid var(--rapport-dark2);
|
|
||||||
border-radius: 999px;
|
|
||||||
padding: 28px 64px 26px;
|
|
||||||
display: inline-block;
|
|
||||||
box-shadow: 6px 0 20px rgba(0, 0, 0, 0.18), 0 6px 16px rgba(0, 0, 0, 0.12);
|
|
||||||
text-align: center;
|
|
||||||
margin: 0 auto 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-logo-text {
|
|
||||||
font-family: 'Krungthep', 'Archivo Black', sans-serif !important;
|
|
||||||
font-size: 48px;
|
|
||||||
letter-spacing: -0.02em;
|
|
||||||
color: #f0ede8;
|
|
||||||
line-height: 0.95;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-logo-sub {
|
|
||||||
font-size: 9px;
|
|
||||||
letter-spacing: 0.15em;
|
|
||||||
color: #f0ede8;
|
|
||||||
text-transform: uppercase;
|
|
||||||
margin-top: 8px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Hero-Meta-Pillen — */
|
|
||||||
.rapport-meta {
|
|
||||||
display: flex;
|
|
||||||
gap: 6px;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
margin-top: 32px;
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-meta-item {
|
|
||||||
font-size: 10px;
|
|
||||||
letter-spacing: 0.08em;
|
|
||||||
color: var(--rapport-text-4);
|
|
||||||
text-transform: uppercase;
|
|
||||||
padding: 0 10px;
|
|
||||||
border-right: 1px solid var(--rapport-border);
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-meta-item:last-child {
|
|
||||||
border-right: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Status-Badges (in Arbeit / Geplant / Stabil / Neu) — */
|
|
||||||
/* Einheitlich: weisse Pill mit dunklem Text — wie Download-Button */
|
|
||||||
.rapport-status,
|
|
||||||
.rapport-status.active,
|
|
||||||
.rapport-status.planned,
|
|
||||||
.rapport-status.stable,
|
|
||||||
.rapport-status.new {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 10px;
|
|
||||||
letter-spacing: 0.12em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
padding: 5px 14px;
|
|
||||||
border-radius: 999px;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
font-weight: 600;
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
|
|
||||||
background: #ffffff;
|
|
||||||
color: var(--rapport-text);
|
|
||||||
border: 1px solid var(--rapport-border);
|
|
||||||
box-shadow:
|
|
||||||
0 1px 0 rgba(255,255,255,0.9) inset,
|
|
||||||
0 1px 2px rgba(0,0,0,0.04),
|
|
||||||
0 3px 8px rgba(0,0,0,0.06);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark .rapport-status,
|
|
||||||
.dark .rapport-status.active,
|
|
||||||
.dark .rapport-status.planned,
|
|
||||||
.dark .rapport-status.stable,
|
|
||||||
.dark .rapport-status.new {
|
|
||||||
background: #2a2722;
|
|
||||||
color: #ece9e3;
|
|
||||||
border-color: #3a3530;
|
|
||||||
box-shadow:
|
|
||||||
0 1px 0 rgba(255,255,255,0.04) inset,
|
|
||||||
0 1px 2px rgba(0,0,0,0.30),
|
|
||||||
0 4px 10px rgba(0,0,0,0.35);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Stack-Bar (am Footer) — */
|
|
||||||
.rapport-stack-bar {
|
|
||||||
padding: 20px 0;
|
|
||||||
border-top: 1px solid var(--rapport-border);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 20px;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
margin-top: 32px;
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-stack-label {
|
|
||||||
font-size: 10px;
|
|
||||||
letter-spacing: 0.12em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: var(--rapport-text-4);
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-stack-items {
|
|
||||||
display: flex;
|
|
||||||
gap: 8px;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-stack-item {
|
|
||||||
font-size: 10px;
|
|
||||||
letter-spacing: 0.06em;
|
|
||||||
color: var(--rapport-text-3);
|
|
||||||
background: var(--rapport-surface);
|
|
||||||
border: 1px solid var(--rapport-border);
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 4px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* — Reduce default content max-width slightly for monospace lines — */
|
|
||||||
.content article {
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ─────────────────────────────────────────────────────────────
|
|
||||||
HOME-HERO — zentriertes Layout wie auf der alten Website
|
|
||||||
───────────────────────────────────────────────────────────── */
|
|
||||||
|
|
||||||
/* Inhalt der home Page zentrieren */
|
|
||||||
.hextra-home {
|
|
||||||
align-items: center !important;
|
|
||||||
text-align: center;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Subtitle zentriert, schmaler max-width, Playfair Display */
|
|
||||||
.hextra-home > p,
|
|
||||||
.hextra-home .not-prose.hx\:text-xl {
|
|
||||||
font-family: 'Playfair Display', serif !important;
|
|
||||||
font-size: clamp(16px, 2.2vw, 24px) !important;
|
|
||||||
font-weight: 400 !important;
|
|
||||||
color: var(--rapport-text-3) !important;
|
|
||||||
max-width: 560px !important;
|
|
||||||
margin-left: auto !important;
|
|
||||||
margin-right: auto !important;
|
|
||||||
line-height: 1.55 !important;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Buttons immer in einer zentrierten Zeile */
|
|
||||||
.hextra-home > div.hx\:flex,
|
|
||||||
.hextra-home > .hx\:flex {
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero-Button matches RAPPORT design (dark on cream) */
|
|
||||||
.hextra-home .hextra-hero-button,
|
|
||||||
a.hextra-hero-button {
|
|
||||||
background: var(--rapport-dark);
|
|
||||||
color: #f0ede8 !important;
|
|
||||||
border-radius: 20px;
|
|
||||||
padding: 13px 28px;
|
|
||||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif !important;
|
|
||||||
font-size: 11px !important;
|
|
||||||
font-weight: 500 !important;
|
|
||||||
letter-spacing: 0.07em !important;
|
|
||||||
text-transform: uppercase !important;
|
|
||||||
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.20);
|
|
||||||
transition: all 0.18s;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Feature-Grid linksbündig (Text in Cards) */
|
|
||||||
.hextra-home .hextra-feature-grid,
|
|
||||||
.hextra-home .rapport-stack-bar {
|
|
||||||
text-align: left;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-home .hextra-feature-card * {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rapport-stack-bar {
|
|
||||||
justify-content: flex-start;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Section-Heading & Eyebrow vor dem Feature-Grid zentrieren */
|
|
||||||
.hextra-home h2,
|
|
||||||
.hextra-home > div > h2 {
|
|
||||||
text-align: center;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* RAPPORT-Logo bleibt zentriert */
|
|
||||||
.hextra-home .rapport-logo-card {
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero-Badge zentrieren */
|
|
||||||
.hextra-home .hextra-badge,
|
|
||||||
.hextra-home > p:has(.hextra-badge) {
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
display: inline-flex !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hero-Background-Glow — sanfter Tan-Halo */
|
|
||||||
body:has(.hextra-home)::before {
|
|
||||||
content: "";
|
|
||||||
position: fixed;
|
|
||||||
top: 5%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
width: 720px;
|
|
||||||
height: 720px;
|
|
||||||
background: radial-gradient(circle, rgba(176, 120, 72, 0.08) 0%, transparent 60%);
|
|
||||||
pointer-events: none;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark body:has(.hextra-home)::before {
|
|
||||||
background: radial-gradient(circle, rgba(176, 120, 72, 0.12) 0%, transparent 60%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navbar-Logo — RAPPORT-Schriftzug in Krungthep, etwas grösser */
|
|
||||||
.hextra-navbar-title,
|
|
||||||
nav a[href="/"] span,
|
|
||||||
nav [class*="font-bold"] {
|
|
||||||
font-family: 'Krungthep', 'Archivo Black', sans-serif !important;
|
|
||||||
letter-spacing: -0.02em !important;
|
|
||||||
font-weight: 400 !important;
|
|
||||||
font-size: 23px !important;
|
|
||||||
line-height: 1 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* RAPPORT-Meta-Pillen zentriert */
|
|
||||||
.rapport-meta {
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
/* Hugo template to derive CSS variables from site and page parameters */
|
|
||||||
|
|
||||||
/* Do not remove the following comment. It is used by Hugo to render CSS variables.*/
|
|
||||||
|
|
||||||
:root {
|
|
||||||
--hextra-max-page-width: 80rem;
|
|
||||||
--hextra-max-content-width: 72rem;
|
|
||||||
--hextra-max-navbar-width: 80rem;
|
|
||||||
--hextra-max-footer-width: 80rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-max-page-width {
|
|
||||||
max-width: var(--hextra-max-page-width);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-max-content-width {
|
|
||||||
max-width: var(--hextra-max-content-width);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-max-navbar-width {
|
|
||||||
max-width: var(--hextra-max-navbar-width);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hextra-max-footer-width {
|
|
||||||
max-width: var(--hextra-max-footer-width);
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,490 +0,0 @@
|
|||||||
// Search functionality using FlexSearch.
|
|
||||||
|
|
||||||
// Change shortcut key to cmd+k on Mac, iPad or iPhone.
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
|
||||||
if (/iPad|iPhone|Macintosh/.test(navigator.userAgent)) {
|
|
||||||
// select the kbd element under the .hextra-search-wrapper class
|
|
||||||
const keys = document.querySelectorAll(".hextra-search-wrapper kbd");
|
|
||||||
keys.forEach(key => {
|
|
||||||
key.innerHTML = '<span class="hx:text-xs">⌘</span>K';
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Render the search data as JSON.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
(function () {
|
|
||||||
const searchDataURL = '/de.search-data.json';
|
|
||||||
const resultsFoundTemplate = '%d Ergebnisse gefunden';
|
|
||||||
|
|
||||||
const inputElements = document.querySelectorAll('.hextra-search-input');
|
|
||||||
for (const el of inputElements) {
|
|
||||||
el.addEventListener('focus', init);
|
|
||||||
el.addEventListener('keyup', search);
|
|
||||||
el.addEventListener('keydown', handleKeyDown);
|
|
||||||
el.addEventListener('input', handleInputChange);
|
|
||||||
}
|
|
||||||
|
|
||||||
const shortcutElements = document.querySelectorAll('.hextra-search-wrapper kbd');
|
|
||||||
|
|
||||||
function setShortcutElementsOpacity(opacity) {
|
|
||||||
shortcutElements.forEach(el => {
|
|
||||||
el.style.opacity = opacity;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleInputChange(e) {
|
|
||||||
const opacity = e.target.value.length > 0 ? 0 : 100;
|
|
||||||
setShortcutElementsOpacity(opacity);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the search wrapper, input, and results elements.
|
|
||||||
function getActiveSearchElement() {
|
|
||||||
const inputs = Array.from(document.querySelectorAll('.hextra-search-wrapper')).filter(el => el.clientHeight > 0);
|
|
||||||
if (inputs.length === 1) {
|
|
||||||
return {
|
|
||||||
wrapper: inputs[0],
|
|
||||||
inputElement: inputs[0].querySelector('.hextra-search-input'),
|
|
||||||
resultsElement: inputs[0].querySelector('.hextra-search-results')
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
const INPUTS = ['input', 'select', 'button', 'textarea']
|
|
||||||
|
|
||||||
// Focus the search input when pressing ctrl+k/cmd+k or /.
|
|
||||||
document.addEventListener('keydown', function (e) {
|
|
||||||
const { inputElement } = getActiveSearchElement();
|
|
||||||
if (!inputElement) return;
|
|
||||||
|
|
||||||
const activeElement = document.activeElement;
|
|
||||||
const tagName = activeElement && activeElement.tagName;
|
|
||||||
if (
|
|
||||||
inputElement === activeElement ||
|
|
||||||
!tagName ||
|
|
||||||
INPUTS.includes(tagName) ||
|
|
||||||
(activeElement && activeElement.isContentEditable))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (
|
|
||||||
e.key === '/' ||
|
|
||||||
(e.key === 'k' &&
|
|
||||||
(e.metaKey /* for Mac */ || /* for non-Mac */ e.ctrlKey))
|
|
||||||
) {
|
|
||||||
e.preventDefault();
|
|
||||||
inputElement.focus();
|
|
||||||
} else if (e.key === 'Escape' && inputElement.value) {
|
|
||||||
inputElement.blur();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Dismiss the search results when clicking outside the search box.
|
|
||||||
document.addEventListener('mousedown', function (e) {
|
|
||||||
const { inputElement, resultsElement } = getActiveSearchElement();
|
|
||||||
if (!inputElement || !resultsElement) return;
|
|
||||||
if (
|
|
||||||
e.target !== inputElement &&
|
|
||||||
e.target !== resultsElement &&
|
|
||||||
!resultsElement.contains(e.target)
|
|
||||||
) {
|
|
||||||
setShortcutElementsOpacity(100);
|
|
||||||
hideSearchResults();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Get the currently active result and its index.
|
|
||||||
function getActiveResult() {
|
|
||||||
const { resultsElement } = getActiveSearchElement();
|
|
||||||
if (!resultsElement) return { result: undefined, index: -1 };
|
|
||||||
|
|
||||||
const result = resultsElement.querySelector('.hextra-search-active');
|
|
||||||
if (!result) return { result: undefined, index: -1 };
|
|
||||||
|
|
||||||
const index = parseInt(result.dataset.index, 10);
|
|
||||||
return { result, index };
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the active result by index.
|
|
||||||
function setActiveResult(index) {
|
|
||||||
const { resultsElement } = getActiveSearchElement();
|
|
||||||
if (!resultsElement) return;
|
|
||||||
|
|
||||||
const { result: activeResult } = getActiveResult();
|
|
||||||
activeResult && activeResult.classList.remove('hextra-search-active');
|
|
||||||
const result = resultsElement.querySelector(`[data-index="${index}"]`);
|
|
||||||
if (result) {
|
|
||||||
result.classList.add('hextra-search-active');
|
|
||||||
result.focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the number of search results from the DOM.
|
|
||||||
function getResultsLength() {
|
|
||||||
const { resultsElement } = getActiveSearchElement();
|
|
||||||
if (!resultsElement) return 0;
|
|
||||||
return resultsElement.dataset.count;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Finish the search by hiding the results and clearing the input.
|
|
||||||
function finishSearch() {
|
|
||||||
const { inputElement } = getActiveSearchElement();
|
|
||||||
if (!inputElement) return;
|
|
||||||
hideSearchResults();
|
|
||||||
inputElement.value = '';
|
|
||||||
inputElement.blur();
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideSearchResults() {
|
|
||||||
const { resultsElement } = getActiveSearchElement();
|
|
||||||
if (!resultsElement) return;
|
|
||||||
resultsElement.classList.add('hx:hidden');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle keyboard events.
|
|
||||||
function handleKeyDown(e) {
|
|
||||||
const { inputElement } = getActiveSearchElement();
|
|
||||||
if (!inputElement) return;
|
|
||||||
|
|
||||||
const resultsLength = getResultsLength();
|
|
||||||
const { result: activeResult, index: activeIndex } = getActiveResult();
|
|
||||||
|
|
||||||
switch (e.key) {
|
|
||||||
case 'ArrowUp':
|
|
||||||
e.preventDefault();
|
|
||||||
if (activeIndex > 0) setActiveResult(activeIndex - 1);
|
|
||||||
break;
|
|
||||||
case 'ArrowDown':
|
|
||||||
e.preventDefault();
|
|
||||||
if (activeIndex + 1 < resultsLength) setActiveResult(activeIndex + 1);
|
|
||||||
break;
|
|
||||||
case 'Enter':
|
|
||||||
e.preventDefault();
|
|
||||||
if (activeResult) {
|
|
||||||
activeResult.click();
|
|
||||||
}
|
|
||||||
finishSearch();
|
|
||||||
case 'Escape':
|
|
||||||
e.preventDefault();
|
|
||||||
hideSearchResults();
|
|
||||||
// Clear the input when pressing escape
|
|
||||||
inputElement.value = '';
|
|
||||||
inputElement.dispatchEvent(new Event('input'));
|
|
||||||
// Remove focus from the input
|
|
||||||
inputElement.blur();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initializes the search.
|
|
||||||
function init(e) {
|
|
||||||
e.target.removeEventListener('focus', init);
|
|
||||||
if (!(window.pageIndex && window.sectionIndex)) {
|
|
||||||
preloadIndex();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Preloads the search index by fetching data and adding it to the FlexSearch index.
|
|
||||||
* @returns {Promise<void>} A promise that resolves when the index is preloaded.
|
|
||||||
*/
|
|
||||||
async function preloadIndex() {
|
|
||||||
const tokenize = 'forward';
|
|
||||||
|
|
||||||
// https://github.com/TryGhost/Ghost/pull/21148
|
|
||||||
const regex = new RegExp(
|
|
||||||
`[\u{4E00}-\u{9FFF}\u{3040}-\u{309F}\u{30A0}-\u{30FF}\u{AC00}-\u{D7A3}\u{3400}-\u{4DBF}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B73F}\u{2B740}-\u{2B81F}\u{2B820}-\u{2CEAF}\u{2CEB0}-\u{2EBEF}\u{30000}-\u{3134F}\u{31350}-\u{323AF}\u{2EBF0}-\u{2EE5F}\u{F900}-\u{FAFF}\u{2F800}-\u{2FA1F}]|[0-9A-Za-zа-я\u00C0-\u017F\u0400-\u04FF\u0600-\u06FF\u0980-\u09FF\u1E00-\u1EFF\u0590-\u05FF]+`,
|
|
||||||
'mug'
|
|
||||||
);
|
|
||||||
const encode = (str) => { return ('' + str).toLowerCase().match(regex) ?? []; }
|
|
||||||
|
|
||||||
window.pageIndex = new FlexSearch.Document({
|
|
||||||
tokenize,
|
|
||||||
encode,
|
|
||||||
cache: 100,
|
|
||||||
document: {
|
|
||||||
id: 'id',
|
|
||||||
store: ['title', 'crumb'],
|
|
||||||
index: "content"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
window.sectionIndex = new FlexSearch.Document({
|
|
||||||
tokenize,
|
|
||||||
encode,
|
|
||||||
cache: 100,
|
|
||||||
document: {
|
|
||||||
id: 'id',
|
|
||||||
store: ['title', 'content', 'url', 'display', 'crumb'],
|
|
||||||
index: "content",
|
|
||||||
tag: [{
|
|
||||||
field: "pageId"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const resp = await fetch(searchDataURL);
|
|
||||||
const data = await resp.json();
|
|
||||||
let pageId = 0;
|
|
||||||
for (const route in data) {
|
|
||||||
let pageContent = '';
|
|
||||||
++pageId;
|
|
||||||
const urlParts = route.split('/').filter(x => x != "" && !x.startsWith('#'));
|
|
||||||
|
|
||||||
let crumb = '';
|
|
||||||
let searchUrl = '/';
|
|
||||||
for (let i = 0; i < urlParts.length; i++) {
|
|
||||||
const urlPart = urlParts[i];
|
|
||||||
searchUrl += urlPart + '/'
|
|
||||||
|
|
||||||
const crumbData = data[searchUrl];
|
|
||||||
if (!crumbData) {
|
|
||||||
console.debug('Excluded page', searchUrl, '- will not be included for search result breadcrumb for', route);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let title = data[searchUrl].title;
|
|
||||||
if (title == "_index") {
|
|
||||||
title = urlPart.split("-").map(x => x).join(" ");
|
|
||||||
}
|
|
||||||
crumb += title;
|
|
||||||
|
|
||||||
if (i < urlParts.length - 1) {
|
|
||||||
crumb += ' > ';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const heading in data[route].data) {
|
|
||||||
const [hash, text] = heading.split('#');
|
|
||||||
const url = route.trimEnd('/') + (hash ? '#' + hash : '');
|
|
||||||
const title = text || data[route].title;
|
|
||||||
|
|
||||||
const content = data[route].data[heading] || '';
|
|
||||||
const paragraphs = content.split('\n').filter(Boolean);
|
|
||||||
|
|
||||||
sectionIndex.add({
|
|
||||||
id: url,
|
|
||||||
url,
|
|
||||||
title,
|
|
||||||
crumb,
|
|
||||||
pageId: `page_${pageId}`,
|
|
||||||
content: title,
|
|
||||||
...(paragraphs[0] && { display: paragraphs[0] })
|
|
||||||
});
|
|
||||||
|
|
||||||
for (let i = 0; i < paragraphs.length; i++) {
|
|
||||||
sectionIndex.add({
|
|
||||||
id: `${url}_${i}`,
|
|
||||||
url,
|
|
||||||
title,
|
|
||||||
crumb,
|
|
||||||
pageId: `page_${pageId}`,
|
|
||||||
content: paragraphs[i]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
pageContent += ` ${title} ${content}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
window.pageIndex.add({
|
|
||||||
id: pageId,
|
|
||||||
title: data[route].title,
|
|
||||||
crumb,
|
|
||||||
content: pageContent
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Performs a search based on the provided query and displays the results.
|
|
||||||
* @param {Event} e - The event object.
|
|
||||||
*/
|
|
||||||
function search(e) {
|
|
||||||
const query = e.target.value;
|
|
||||||
if (!e.target.value) {
|
|
||||||
hideSearchResults();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { resultsElement } = getActiveSearchElement();
|
|
||||||
while (resultsElement.firstChild) {
|
|
||||||
resultsElement.removeChild(resultsElement.firstChild);
|
|
||||||
}
|
|
||||||
resultsElement.classList.remove('hx:hidden');
|
|
||||||
|
|
||||||
// Configurable search limits with sensible defaults
|
|
||||||
const maxPageResults = parseInt('20', 10);
|
|
||||||
const maxSectionResults = parseInt('10', 10);
|
|
||||||
const pageResults = window.pageIndex.search(query, maxPageResults, { enrich: true, suggest: true })[0]?.result || [];
|
|
||||||
|
|
||||||
const results = [];
|
|
||||||
const pageTitleMatches = {};
|
|
||||||
|
|
||||||
for (let i = 0; i < pageResults.length; i++) {
|
|
||||||
const result = pageResults[i];
|
|
||||||
pageTitleMatches[i] = 0;
|
|
||||||
|
|
||||||
const sectionResults = window.sectionIndex.search(query,
|
|
||||||
{ enrich: true, suggest: true, tag: { 'pageId': `page_${result.id}` } })[0]?.result || [];
|
|
||||||
let isFirstItemOfPage = true
|
|
||||||
const occurred = {}
|
|
||||||
|
|
||||||
const nResults = Math.min(sectionResults.length, maxSectionResults);
|
|
||||||
for (let j = 0; j < nResults; j++) {
|
|
||||||
const { doc } = sectionResults[j]
|
|
||||||
const isMatchingTitle = doc.display !== undefined
|
|
||||||
if (isMatchingTitle) {
|
|
||||||
pageTitleMatches[i]++
|
|
||||||
}
|
|
||||||
const { url, title } = doc
|
|
||||||
const content = doc.display || doc.content
|
|
||||||
|
|
||||||
if (occurred[url + '@' + content]) continue
|
|
||||||
occurred[url + '@' + content] = true
|
|
||||||
results.push({
|
|
||||||
_page_rk: i,
|
|
||||||
_section_rk: j,
|
|
||||||
route: url,
|
|
||||||
prefix: isFirstItemOfPage ? result.doc.crumb : undefined,
|
|
||||||
children: { title, content }
|
|
||||||
})
|
|
||||||
isFirstItemOfPage = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const sortedResults = results
|
|
||||||
.sort((a, b) => {
|
|
||||||
// Sort by number of matches in the title.
|
|
||||||
if (a._page_rk === b._page_rk) {
|
|
||||||
return a._section_rk - b._section_rk
|
|
||||||
}
|
|
||||||
if (pageTitleMatches[a._page_rk] !== pageTitleMatches[b._page_rk]) {
|
|
||||||
return pageTitleMatches[b._page_rk] - pageTitleMatches[a._page_rk]
|
|
||||||
}
|
|
||||||
return a._page_rk - b._page_rk
|
|
||||||
})
|
|
||||||
.map(res => ({
|
|
||||||
id: `${res._page_rk}_${res._section_rk}`,
|
|
||||||
route: res.route,
|
|
||||||
prefix: res.prefix,
|
|
||||||
children: res.children
|
|
||||||
}));
|
|
||||||
displayResults(sortedResults, query);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Displays the search results on the page.
|
|
||||||
*
|
|
||||||
* @param {Array} results - The array of search results.
|
|
||||||
* @param {string} query - The search query.
|
|
||||||
*/
|
|
||||||
function displayResults(results, query) {
|
|
||||||
const { resultsElement } = getActiveSearchElement();
|
|
||||||
if (!resultsElement) return;
|
|
||||||
|
|
||||||
if (!results.length) {
|
|
||||||
resultsElement.innerHTML = `<span class="hextra-search-no-result">Keine Ergebnisse gefunden.</span>`;
|
|
||||||
// Announce no results to screen readers
|
|
||||||
const wrapper = resultsElement.closest('.hextra-search-wrapper');
|
|
||||||
const statusEl = wrapper ? wrapper.querySelector('.hextra-search-status') : null;
|
|
||||||
if (statusEl) {
|
|
||||||
statusEl.textContent = 'Keine Ergebnisse gefunden.';
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Append text with highlighted matches using safe text nodes.
|
|
||||||
function appendHighlightedText(container, text, query) {
|
|
||||||
if (!text) return;
|
|
||||||
if (!query) {
|
|
||||||
container.textContent = text;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const escapedQuery = query.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
||||||
if (!escapedQuery) {
|
|
||||||
container.textContent = text;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const regex = new RegExp(escapedQuery, 'gi');
|
|
||||||
let lastIndex = 0;
|
|
||||||
let match;
|
|
||||||
while ((match = regex.exec(text)) !== null) {
|
|
||||||
if (match.index > lastIndex) {
|
|
||||||
container.appendChild(document.createTextNode(text.slice(lastIndex, match.index)));
|
|
||||||
}
|
|
||||||
const span = document.createElement('span');
|
|
||||||
span.className = 'hextra-search-match';
|
|
||||||
span.textContent = match[0];
|
|
||||||
container.appendChild(span);
|
|
||||||
lastIndex = match.index + match[0].length;
|
|
||||||
}
|
|
||||||
if (lastIndex < text.length) {
|
|
||||||
container.appendChild(document.createTextNode(text.slice(lastIndex)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleMouseMove(e) {
|
|
||||||
const target = e.target.closest('a');
|
|
||||||
if (target) {
|
|
||||||
const active = resultsElement.querySelector('a.hextra-search-active');
|
|
||||||
if (active) {
|
|
||||||
active.classList.remove('hextra-search-active');
|
|
||||||
}
|
|
||||||
target.classList.add('hextra-search-active');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const fragment = document.createDocumentFragment();
|
|
||||||
for (let i = 0; i < results.length; i++) {
|
|
||||||
const result = results[i];
|
|
||||||
if (result.prefix) {
|
|
||||||
const prefix = document.createElement('div');
|
|
||||||
prefix.className = 'hextra-search-prefix';
|
|
||||||
prefix.textContent = result.prefix;
|
|
||||||
fragment.appendChild(prefix);
|
|
||||||
}
|
|
||||||
const li = document.createElement('li');
|
|
||||||
const link = document.createElement('a');
|
|
||||||
link.dataset.index = i;
|
|
||||||
link.href = result.route;
|
|
||||||
if (i === 0) {
|
|
||||||
link.classList.add('hextra-search-active');
|
|
||||||
}
|
|
||||||
|
|
||||||
const title = document.createElement('div');
|
|
||||||
title.className = 'hextra-search-title';
|
|
||||||
appendHighlightedText(title, result.children.title, query);
|
|
||||||
link.appendChild(title);
|
|
||||||
|
|
||||||
if (result.children.content) {
|
|
||||||
const excerpt = document.createElement('div');
|
|
||||||
excerpt.className = 'hextra-search-excerpt';
|
|
||||||
appendHighlightedText(excerpt, result.children.content, query);
|
|
||||||
link.appendChild(excerpt);
|
|
||||||
}
|
|
||||||
|
|
||||||
li.appendChild(link);
|
|
||||||
li.addEventListener('mousemove', handleMouseMove);
|
|
||||||
li.addEventListener('keydown', handleKeyDown);
|
|
||||||
link.addEventListener('click', finishSearch);
|
|
||||||
fragment.appendChild(li);
|
|
||||||
}
|
|
||||||
resultsElement.appendChild(fragment);
|
|
||||||
resultsElement.dataset.count = results.length;
|
|
||||||
|
|
||||||
// Announce results count to screen readers
|
|
||||||
const wrapper = resultsElement.closest('.hextra-search-wrapper');
|
|
||||||
const statusEl = wrapper ? wrapper.querySelector('.hextra-search-status') : null;
|
|
||||||
if (statusEl) {
|
|
||||||
statusEl.textContent = results.length > 0
|
|
||||||
? resultsFoundTemplate.replace('%d', results.length.toString())
|
|
||||||
: 'Keine Ergebnisse gefunden.';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1365,11 +1365,11 @@ data-copied-label="Kopiert!"
|
|||||||
<p>Versionsgeschichte von RAPPORT. Aktuelle Releases: <a href="https://git.kgva.ch/karim/RAPPORT/releases"target="_blank" rel="noopener">Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
<p>Versionsgeschichte von RAPPORT. Aktuelle Releases: <a href="https://git.kgva.ch/karim/RAPPORT/releases"target="_blank" rel="noopener">Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
</svg></a>.</p>
|
</svg></a>.</p>
|
||||||
<h2>0.8.3 — Aktuelle Version <span class="rapport-status new">Aktuell</span><span class="hx:absolute hx:-mt-20" id="083--aktuelle-version-aktuell"></span>
|
<h2>0.8.2 — Aktuelle Version <span class="rapport-status new">Aktuell</span><span class="hx:absolute hx:-mt-20" id="082--aktuelle-version-aktuell"></span>
|
||||||
<a href="#083--aktuelle-version-aktuell" class="subheading-anchor" aria-label="Permalink für diesen Abschnitt"></a></h2><p>Veröffentlicht am 2026-05-24.</p>
|
<a href="#082--aktuelle-version-aktuell" class="subheading-anchor" aria-label="Permalink für diesen Abschnitt"></a></h2><p>Veröffentlicht am 2026-05-24.</p>
|
||||||
<p><strong>Neu / Verbessert</strong></p>
|
<p><strong>Neu / Verbessert</strong></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Diverse Verbesserungen und Bugfixes (Details werden im <a href="https://git.kgva.ch/karim/RAPPORT/releases/tag/0.8.3"target="_blank" rel="noopener">Release auf Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
<li>Diverse Verbesserungen und Bugfixes (Details werden im <a href="https://git.kgva.ch/karim/RAPPORT/releases/tag/0.8.2"target="_blank" rel="noopener">Release auf Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
</svg></a> gepflegt)</li>
|
</svg></a> gepflegt)</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -1378,8 +1378,8 @@ data-copied-label="Kopiert!"
|
|||||||
<li>Builds sind Tauri-signiert, aber noch nicht Apple-notarisiert — siehe <a href="../installation#3--erster-start-macos-gatekeeper">Installation § Gatekeeper</a></li>
|
<li>Builds sind Tauri-signiert, aber noch nicht Apple-notarisiert — siehe <a href="../installation#3--erster-start-macos-gatekeeper">Installation § Gatekeeper</a></li>
|
||||||
<li>Linux- und Windows-Builds noch nicht verfügbar</li>
|
<li>Linux- und Windows-Builds noch nicht verfügbar</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2>0.8.0–0.8.2 — Patch-Releases<span class="hx:absolute hx:-mt-20" id="080082--patch-releases"></span>
|
<h2>0.8.0–0.8.1 — Patch-Releases<span class="hx:absolute hx:-mt-20" id="080081--patch-releases"></span>
|
||||||
<a href="#080082--patch-releases" class="subheading-anchor" aria-label="Permalink für diesen Abschnitt"></a></h2><p>Patch-Reihe mit kleineren Verbesserungen und Bugfixes. Details siehe <a href="https://git.kgva.ch/karim/RAPPORT/releases"target="_blank" rel="noopener">Releases auf Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
<a href="#080081--patch-releases" class="subheading-anchor" aria-label="Permalink für diesen Abschnitt"></a></h2><p>Patch-Reihe mit kleineren Verbesserungen und Bugfixes. Details siehe <a href="https://git.kgva.ch/karim/RAPPORT/releases"target="_blank" rel="noopener">Releases auf Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
</svg></a>.</p>
|
</svg></a>.</p>
|
||||||
<h2>0.7.0 — Auto-Updater &amp; System-Tray<span class="hx:absolute hx:-mt-20" id="070--auto-updater--system-tray"></span>
|
<h2>0.7.0 — Auto-Updater &amp; System-Tray<span class="hx:absolute hx:-mt-20" id="070--auto-updater--system-tray"></span>
|
||||||
|
|||||||
+11
-11
File diff suppressed because one or more lines are too long
@@ -35,7 +35,7 @@ System
|
|||||||
<a href=#ist-rapport-kostenlos class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p><strong>Ja, vollständig.</strong> Quellcode unter GNU AGPL-3.0-or-later. Keine versteckten Kosten, keine Telemetrie. Die Daten bleiben lokal auf deinem Computer bzw. in deiner Instanz. Du hast die komplette Kontrolle über deine Daten.</p><h2>Welche Systeme werden unterstützt?<span class="hx:absolute hx:-mt-20" id=welche-systeme-werden-unterstützt></span>
|
<a href=#ist-rapport-kostenlos class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p><strong>Ja, vollständig.</strong> Quellcode unter GNU AGPL-3.0-or-later. Keine versteckten Kosten, keine Telemetrie. Die Daten bleiben lokal auf deinem Computer bzw. in deiner Instanz. Du hast die komplette Kontrolle über deine Daten.</p><h2>Welche Systeme werden unterstützt?<span class="hx:absolute hx:-mt-20" id=welche-systeme-werden-unterstützt></span>
|
||||||
<a href=#welche-systeme-werden-unterst%c3%bctzt class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Aktuell nur <strong>macOS</strong> (Intel & Apple Silicon). Rapport basiert auf Tauri — eine Portierung auf <strong>Linux</strong> und <strong>Windows</strong> ist möglich, sobald der Bedarf seitens Community besteht.</p><h2>Wo werden die Daten gespeichert?<span class="hx:absolute hx:-mt-20" id=wo-werden-die-daten-gespeichert></span>
|
<a href=#welche-systeme-werden-unterst%c3%bctzt class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Aktuell nur <strong>macOS</strong> (Intel & Apple Silicon). Rapport basiert auf Tauri — eine Portierung auf <strong>Linux</strong> und <strong>Windows</strong> ist möglich, sobald der Bedarf seitens Community besteht.</p><h2>Wo werden die Daten gespeichert?<span class="hx:absolute hx:-mt-20" id=wo-werden-die-daten-gespeichert></span>
|
||||||
<a href=#wo-werden-die-daten-gespeichert class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Rapport unterstützt <strong>zwei Modi</strong>, beide selbst-gehostet:</p><ul><li><strong>Desktop-App (Single-User)</strong> — alle Daten liegen lokal auf deinem Mac (<code>localStorage</code> im Applikationsordner). Kein Server nötig, kein Cloud-Account, keine Telemetrie.</li><li><strong>Server-Modus (Multi-User)</strong> — Daten in einer eigenen PostgreSQL-Datenbank über <a href=../server>Rapport Server</a>. Mehrere Personen, Realtime-Sync, eigene Domain. Wechsel direkt im Login-Bildschirm der App.</li></ul><p>In beiden Fällen bleibt die Kontrolle über die Daten bei dir.</p><h2>Ist die Software stabil genug für den Betrieb?<span class="hx:absolute hx:-mt-20" id=ist-die-software-stabil-genug-für-den-betrieb></span>
|
<a href=#wo-werden-die-daten-gespeichert class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Rapport unterstützt <strong>zwei Modi</strong>, beide selbst-gehostet:</p><ul><li><strong>Desktop-App (Single-User)</strong> — alle Daten liegen lokal auf deinem Mac (<code>localStorage</code> im Applikationsordner). Kein Server nötig, kein Cloud-Account, keine Telemetrie.</li><li><strong>Server-Modus (Multi-User)</strong> — Daten in einer eigenen PostgreSQL-Datenbank über <a href=../server>Rapport Server</a>. Mehrere Personen, Realtime-Sync, eigene Domain. Wechsel direkt im Login-Bildschirm der App.</li></ul><p>In beiden Fällen bleibt die Kontrolle über die Daten bei dir.</p><h2>Ist die Software stabil genug für den Betrieb?<span class="hx:absolute hx:-mt-20" id=ist-die-software-stabil-genug-für-den-betrieb></span>
|
||||||
<a href=#ist-die-software-stabil-genug-f%c3%bcr-den-betrieb class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p><strong>Noch nicht.</strong> Aktuell befindet sich Rapport in aktiver Entwicklung (Pre-Release <strong>0.8.3</strong>). Funktionen können sich ändern, Bugs sind möglich. Regelmässige Backups sind empfohlen. Testen und Feedback geben ist erwünscht.</p><h2>Was ist mit dem QR-Einzahlungsschein?<span class="hx:absolute hx:-mt-20" id=was-ist-mit-dem-qr-einzahlungsschein></span>
|
<a href=#ist-die-software-stabil-genug-f%c3%bcr-den-betrieb class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p><strong>Noch nicht.</strong> Aktuell befindet sich Rapport in aktiver Entwicklung (Pre-Release <strong>0.8.2</strong>). Funktionen können sich ändern, Bugs sind möglich. Regelmässige Backups sind empfohlen. Testen und Feedback geben ist erwünscht.</p><h2>Was ist mit dem QR-Einzahlungsschein?<span class="hx:absolute hx:-mt-20" id=was-ist-mit-dem-qr-einzahlungsschein></span>
|
||||||
<a href=#was-ist-mit-dem-qr-einzahlungsschein class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Rapport erzeugt <strong>Schweizer QR-Rechnungen</strong> nach Norm — direkt eingebettet in das PDF der Rechnung. IBAN, Bürodaten und Empfänger werden aus den Einstellungen bzw. den Kundendaten gezogen. Akonto-, Teil- und Schlussrechnungen werden unterstützt.</p><h2>Wie funktioniert die Zeiterfassung?<span class="hx:absolute hx:-mt-20" id=wie-funktioniert-die-zeiterfassung></span>
|
<a href=#was-ist-mit-dem-qr-einzahlungsschein class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Rapport erzeugt <strong>Schweizer QR-Rechnungen</strong> nach Norm — direkt eingebettet in das PDF der Rechnung. IBAN, Bürodaten und Empfänger werden aus den Einstellungen bzw. den Kundendaten gezogen. Akonto-, Teil- und Schlussrechnungen werden unterstützt.</p><h2>Wie funktioniert die Zeiterfassung?<span class="hx:absolute hx:-mt-20" id=wie-funktioniert-die-zeiterfassung></span>
|
||||||
<a href=#wie-funktioniert-die-zeiterfassung class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Tages- und Wochenraster mit <strong>Drag & Drop</strong>. Jeder Eintrag wird einem Projekt zugewiesen. Auswertungen pro Mitarbeiter und Projekt sind unter <em>Zeit</em> abrufbar. Ferienverwaltung mit Prorata und Jahresabschluss mit Überstundenausgleich.</p><h2>Kann ich zum Projekt beitragen?<span class="hx:absolute hx:-mt-20" id=kann-ich-zum-projekt-beitragen></span>
|
<a href=#wie-funktioniert-die-zeiterfassung class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p>Tages- und Wochenraster mit <strong>Drag & Drop</strong>. Jeder Eintrag wird einem Projekt zugewiesen. Auswertungen pro Mitarbeiter und Projekt sind unter <em>Zeit</em> abrufbar. Ferienverwaltung mit Prorata und Jahresabschluss mit Überstundenausgleich.</p><h2>Kann ich zum Projekt beitragen?<span class="hx:absolute hx:-mt-20" id=kann-ich-zum-projekt-beitragen></span>
|
||||||
<a href=#kann-ich-zum-projekt-beitragen class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p><strong>Ja.</strong> Issues und Pull Requests sind willkommen auf <a href=https://git.kgva.ch/karim/RAPPORT target=_blank rel=noopener>Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/></svg></a>. Rapport ist kein Framework — konkrete Verbesserungen für den <strong>Büroalltag</strong> sind am wertvollsten:</p><ul><li>Bug-Reports mit Reproduktionsschritten</li><li>Workflow-Verbesserungen aus dem realen Büroalltag</li><li>Vorlagen (Briefe, Protokolle, Lieferscheine) für andere Büros</li><li>Übersetzungen / Internationalisierung</li></ul><h2>Wie erhalte ich Hilfe bei einem Problem?<span class="hx:absolute hx:-mt-20" id=wie-erhalte-ich-hilfe-bei-einem-problem></span>
|
<a href=#kann-ich-zum-projekt-beitragen class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><p><strong>Ja.</strong> Issues und Pull Requests sind willkommen auf <a href=https://git.kgva.ch/karim/RAPPORT target=_blank rel=noopener>Gitea<svg class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="m9.1716 7.7574h7.0711m0 0v7.0711m0-7.0711-8.4853 8.4853" stroke-linecap="round" stroke-linejoin="round"/></svg></a>. Rapport ist kein Framework — konkrete Verbesserungen für den <strong>Büroalltag</strong> sind am wertvollsten:</p><ul><li>Bug-Reports mit Reproduktionsschritten</li><li>Workflow-Verbesserungen aus dem realen Büroalltag</li><li>Vorlagen (Briefe, Protokolle, Lieferscheine) für andere Büros</li><li>Übersetzungen / Internationalisierung</li></ul><h2>Wie erhalte ich Hilfe bei einem Problem?<span class="hx:absolute hx:-mt-20" id=wie-erhalte-ich-hilfe-bei-einem-problem></span>
|
||||||
|
|||||||
@@ -60,13 +60,13 @@ System
|
|||||||
<a href=#sicherheit class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><ul><li>Updates werden mit dem <strong>Tauri-Updater-Schlüssel</strong> signiert</li><li>Manipulierte Downloads werden abgelehnt</li><li>Quellcode und Build sind reproduzierbar (Gitea CI, geplant)</li></ul><h2>Optionen<span class="hx:absolute hx:-mt-20" id=optionen></span>
|
<a href=#sicherheit class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><ul><li>Updates werden mit dem <strong>Tauri-Updater-Schlüssel</strong> signiert</li><li>Manipulierte Downloads werden abgelehnt</li><li>Quellcode und Build sind reproduzierbar (Gitea CI, geplant)</li></ul><h2>Optionen<span class="hx:absolute hx:-mt-20" id=optionen></span>
|
||||||
<a href=#optionen class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><ul><li><strong>Update installieren</strong> — Download & Neustart</li><li><strong>Diese Version überspringen</strong> — überspringt nur diese eine Version</li><li><strong>Später erinnern</strong> — beim nächsten Start erneut fragen</li></ul><p>Updates können in den Einstellungen komplett deaktiviert werden.</p><h2>Latest-Endpoint<span class="hx:absolute hx:-mt-20" id=latest-endpoint></span>
|
<a href=#optionen class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><ul><li><strong>Update installieren</strong> — Download & Neustart</li><li><strong>Diese Version überspringen</strong> — überspringt nur diese eine Version</li><li><strong>Später erinnern</strong> — beim nächsten Start erneut fragen</li></ul><p>Updates können in den Einstellungen komplett deaktiviert werden.</p><h2>Latest-Endpoint<span class="hx:absolute hx:-mt-20" id=latest-endpoint></span>
|
||||||
<a href=#latest-endpoint class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"><div><div class=highlight><pre tabindex=0 class=chroma><code class=language-json data-lang=json><span class=line><span class=cl><span class=p>{</span>
|
<a href=#latest-endpoint class=subheading-anchor aria-label="Permalink für diesen Abschnitt"></a></h2><div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code"><div><div class=highlight><pre tabindex=0 class=chroma><code class=language-json data-lang=json><span class=line><span class=cl><span class=p>{</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=nt>"version"</span><span class=p>:</span> <span class=s2>"0.8.3"</span><span class=p>,</span>
|
</span></span><span class=line><span class=cl> <span class=nt>"version"</span><span class=p>:</span> <span class=s2>"0.8.2"</span><span class=p>,</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=nt>"notes"</span><span class=p>:</span> <span class=s2>"Rapport 0.8.3"</span><span class=p>,</span>
|
</span></span><span class=line><span class=cl> <span class=nt>"notes"</span><span class=p>:</span> <span class=s2>"Rapport 0.8.2"</span><span class=p>,</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=nt>"pub_date"</span><span class=p>:</span> <span class=s2>"2026-05-24T00:00:00Z"</span><span class=p>,</span>
|
</span></span><span class=line><span class=cl> <span class=nt>"pub_date"</span><span class=p>:</span> <span class=s2>"2026-05-24T00:00:00Z"</span><span class=p>,</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=nt>"platforms"</span><span class=p>:</span> <span class=p>{</span>
|
</span></span><span class=line><span class=cl> <span class=nt>"platforms"</span><span class=p>:</span> <span class=p>{</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=nt>"darwin-aarch64"</span><span class=p>:</span> <span class=p>{</span>
|
</span></span><span class=line><span class=cl> <span class=nt>"darwin-aarch64"</span><span class=p>:</span> <span class=p>{</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=nt>"signature"</span><span class=p>:</span> <span class=s2>"…"</span><span class=p>,</span>
|
</span></span><span class=line><span class=cl> <span class=nt>"signature"</span><span class=p>:</span> <span class=s2>"…"</span><span class=p>,</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=nt>"url"</span><span class=p>:</span> <span class=s2>"https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.3/RAPPORT%20PRE-RELEASE.app.tar.gz"</span>
|
</span></span><span class=line><span class=cl> <span class=nt>"url"</span><span class=p>:</span> <span class=s2>"https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.2/RAPPORT%20PRE-RELEASE.app.tar.gz"</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=p>}</span>
|
</span></span><span class=line><span class=cl> <span class=p>}</span>
|
||||||
</span></span><span class=line><span class=cl> <span class=p>}</span>
|
</span></span><span class=line><span class=cl> <span class=p>}</span>
|
||||||
</span></span><span class=line><span class=cl><span class=p>}</span></span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"><button class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50" title="Code kopieren" aria-label="Code kopieren" data-copied-label=Kopiert!><div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div><div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div></button></div></div></div><div class=hx:mt-16></div></main></article></div><footer class="hextra-footer hx:bg-gray-100 hx:pb-[env(safe-area-inset-bottom)] hx:dark:bg-neutral-900 hx:print:bg-transparent"><div class="hx:mx-auto hx:flex hx:gap-2 hx:py-2 hx:px-4 hextra-max-footer-width"><div class="hx:flex hx:justify-items-start hx:group" data-theme=light><button title="Darstellung ändern" data-state=closed data-location=bottom class="hextra-theme-toggle hx:cursor-pointer hx:rounded-md hx:text-left hx:font-medium hx:h-7 hx:px-2 hx:text-xs hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:font-medium hx:text-gray-600 hx:transition-colors hx:dark:text-gray-400 hx:grow" type=button aria-label="Darstellung ändern" aria-expanded=false aria-haspopup=menu><div class="hx:flex hx:items-center hx:gap-2 hx:capitalize"><svg height="12" class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=system]:hidden" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364-.707-.707M6.343 6.343l-.707-.707m12.728.0-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=system]:hidden">Hell</span><svg height="12" class="hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003.0 0012 21a9.003 9.003.0 008.354-5.646z"/></svg><span class="hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden">Dunkel</span><svg height="12" class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=light]:hidden" viewBox="0 0 24 24" fill="currentColor"><path d="M11.996094 2C6.4986225 2.0192368 2.03125 6.5024993 2.03125 12c0 5.497501 4.4673725 9.980763 9.964844 10H12 12.0039c5.497471-.01924 9.964844-4.502499 9.964844-10 0-5.4975007-4.467373-9.9807632-9.964844-10H12zM12 4c4.417218.017598 7.96875 3.5822356 7.96875 8 0 4.417764-3.551532 7.982402-7.96875 8z"/></svg>
|
</span></span><span class=line><span class=cl><span class=p>}</span></span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0"><button class="hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50" title="Code kopieren" aria-label="Code kopieren" data-copied-label=Kopiert!><div class="hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4"></div><div class="hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4"></div></button></div></div></div><div class=hx:mt-16></div></main></article></div><footer class="hextra-footer hx:bg-gray-100 hx:pb-[env(safe-area-inset-bottom)] hx:dark:bg-neutral-900 hx:print:bg-transparent"><div class="hx:mx-auto hx:flex hx:gap-2 hx:py-2 hx:px-4 hextra-max-footer-width"><div class="hx:flex hx:justify-items-start hx:group" data-theme=light><button title="Darstellung ändern" data-state=closed data-location=bottom class="hextra-theme-toggle hx:cursor-pointer hx:rounded-md hx:text-left hx:font-medium hx:h-7 hx:px-2 hx:text-xs hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-primary-100/5 hx:dark:hover:text-gray-50 hx:font-medium hx:text-gray-600 hx:transition-colors hx:dark:text-gray-400 hx:grow" type=button aria-label="Darstellung ändern" aria-expanded=false aria-haspopup=menu><div class="hx:flex hx:items-center hx:gap-2 hx:capitalize"><svg height="12" class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=system]:hidden" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364-.707-.707M6.343 6.343l-.707-.707m12.728.0-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=system]:hidden">Hell</span><svg height="12" class="hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003.0 0012 21a9.003 9.003.0 008.354-5.646z"/></svg><span class="hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden">Dunkel</span><svg height="12" class="hx:group-data-[theme=dark]:hidden hx:group-data-[theme=light]:hidden" viewBox="0 0 24 24" fill="currentColor"><path d="M11.996094 2C6.4986225 2.0192368 2.03125 6.5024993 2.03125 12c0 5.497501 4.4673725 9.980763 9.964844 10H12 12.0039c5.497471-.01924 9.964844-4.502499 9.964844-10 0-5.4975007-4.467373-9.9807632-9.964844-10H12zM12 4c4.417218.017598 7.96875 3.5822356 7.96875 8 0 4.417764-3.551532 7.982402-7.96875 8z"/></svg>
|
||||||
|
|||||||
@@ -277,13 +277,13 @@
|
|||||||
<h2>Latest-Endpoint<span class="hx:absolute hx:-mt-20" id="latest-endpoint"></span>
|
<h2>Latest-Endpoint<span class="hx:absolute hx:-mt-20" id="latest-endpoint"></span>
|
||||||
<a href="#latest-endpoint" class="subheading-anchor" aria-label="Permalink für diesen Abschnitt"></a></h2><div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">
|
<a href="#latest-endpoint" class="subheading-anchor" aria-label="Permalink für diesen Abschnitt"></a></h2><div class="hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code">
|
||||||
<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
|
<div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;version&#34;</span><span class="p">:</span> <span class="s2">&#34;0.8.3&#34;</span><span class="p">,</span>
|
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;version&#34;</span><span class="p">:</span> <span class="s2">&#34;0.8.2&#34;</span><span class="p">,</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;notes&#34;</span><span class="p">:</span> <span class="s2">&#34;Rapport 0.8.3&#34;</span><span class="p">,</span>
|
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;notes&#34;</span><span class="p">:</span> <span class="s2">&#34;Rapport 0.8.2&#34;</span><span class="p">,</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;pub_date&#34;</span><span class="p">:</span> <span class="s2">&#34;2026-05-24T00:00:00Z&#34;</span><span class="p">,</span>
|
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;pub_date&#34;</span><span class="p">:</span> <span class="s2">&#34;2026-05-24T00:00:00Z&#34;</span><span class="p">,</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;platforms&#34;</span><span class="p">:</span> <span class="p">{</span>
|
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;platforms&#34;</span><span class="p">:</span> <span class="p">{</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;darwin-aarch64&#34;</span><span class="p">:</span> <span class="p">{</span>
|
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;darwin-aarch64&#34;</span><span class="p">:</span> <span class="p">{</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;signature&#34;</span><span class="p">:</span> <span class="s2">&#34;…&#34;</span><span class="p">,</span>
|
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;signature&#34;</span><span class="p">:</span> <span class="s2">&#34;…&#34;</span><span class="p">,</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;url&#34;</span><span class="p">:</span> <span class="s2">&#34;https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.3/RAPPORT%20PRE-RELEASE.app.tar.gz&#34;</span>
|
</span></span><span class="line"><span class="cl"> <span class="nt">&#34;url&#34;</span><span class="p">:</span> <span class="s2">&#34;https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.2/RAPPORT%20PRE-RELEASE.app.tar.gz&#34;</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||||
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
|
</span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div><div class="hextra-code-copy-btn-container hx:opacity-0 hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0">
|
||||||
|
|||||||
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
"><meta property="og:type" content="
|
"><meta property="og:type" content="
|
||||||
website
|
website
|
||||||
"><meta property="og:url" content="https://rapport.gabrielevarano.ch/"><meta itemprop=name content="RAPPORT"><meta itemprop=description content="Pre-Release 0.8.3 · Aktiv in Entwicklung RAPPORT Studio Administration Die Studio Management Software für Architekturbüros mit offenem Quellcode — Zeiterfassung, Rechnungen, Offerten, Projekte, Mitarbeiter und QR-Einzahlungsscheine in einer App. Download · 0.8.3 (macOS) Quellcode ↗ AGPL-3.0 Tauri + React macOS (später Linux & Windows) Lokal / Selfhosting ZIEL"><meta itemprop=wordCount content="252"><meta name=twitter:card content="summary"><meta name=twitter:title content="RAPPORT"><meta name=twitter:description content="Pre-Release 0.8.3 · Aktiv in Entwicklung RAPPORT Studio Administration Die Studio Management Software für Architekturbüros mit offenem Quellcode — Zeiterfassung, Rechnungen, Offerten, Projekte, Mitarbeiter und QR-Einzahlungsscheine in einer App. Download · 0.8.3 (macOS) Quellcode ↗ AGPL-3.0 Tauri + React macOS (später Linux & Windows) Lokal / Selfhosting ZIEL"><link rel=preload href=/css/compiled/main.min.3f70c37b0f2ce37d160ca0a36b7edfe7d6718ac312bc985e36fe9fb736850a27.css as=style integrity="sha256-P3DDew8s430WDKCja37f59ZxisMSvJheNv6ftzaFCic="><link href=/css/compiled/main.min.3f70c37b0f2ce37d160ca0a36b7edfe7d6718ac312bc985e36fe9fb736850a27.css rel=stylesheet integrity="sha256-P3DDew8s430WDKCja37f59ZxisMSvJheNv6ftzaFCic="><script src=/js/main-head.min.2375b7265ea066ecb314226ce5ff17478453df5f350d34d830b3fc96fba21672.js integrity="sha256-I3W3Jl6gZuyzFCJs5f8XR4RT3181DTTYMLP8lvuiFnI="></script></head><body><a href=#content class="hx:sr-only hx:focus-visible:not-sr-only hx:focus-visible:fixed hx:focus-visible:z-50 hx:focus-visible:top-2 hx:focus-visible:left-2 hx:focus-visible:bg-primary-500 hx:focus-visible:text-white hx:focus-visible:px-4 hx:focus-visible:py-2 hx:focus-visible:rounded-md hx:focus-visible:text-sm hx:focus-visible:font-medium">Zum Inhalt springen</a><div class="hextra-nav-container hx:sticky hx:top-0 hx:z-20 hx:w-full hx:bg-transparent hx:print:hidden"><div class="hextra-nav-container-blur hx:pointer-events-none hx:absolute hx:z-[-1] hx:h-full hx:w-full hx:bg-white hx:dark:bg-dark hx:shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] hx:contrast-more:shadow-[0_0_0_1px_#000] hx:dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] hx:contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div><nav class="hextra-max-navbar-width hx:mx-auto hx:flex hx:items-center hx:justify-end hx:gap-2 hx:h-16 hx:px-6"><a class="hx:flex hx:items-center hx:hover:opacity-75 hx:ltr:mr-auto hx:rtl:ml-auto" href=/><span class="hx:mr-2 hx:font-extrabold hx:inline hx:select-none">RAPPORT</span>
|
"><meta property="og:url" content="https://rapport.gabrielevarano.ch/"><meta itemprop=name content="RAPPORT"><meta itemprop=description content="Pre-Release 0.8.2 · Aktiv in Entwicklung RAPPORT Studio Administration Die Studio Management Software für Architekturbüros mit offenem Quellcode — Zeiterfassung, Rechnungen, Offerten, Projekte, Mitarbeiter und QR-Einzahlungsscheine in einer App. Download · 0.8.2 (macOS) Quellcode ↗ AGPL-3.0 Tauri + React macOS (später Linux & Windows) Lokal / Selfhosting ZIEL"><meta itemprop=wordCount content="252"><meta name=twitter:card content="summary"><meta name=twitter:title content="RAPPORT"><meta name=twitter:description content="Pre-Release 0.8.2 · Aktiv in Entwicklung RAPPORT Studio Administration Die Studio Management Software für Architekturbüros mit offenem Quellcode — Zeiterfassung, Rechnungen, Offerten, Projekte, Mitarbeiter und QR-Einzahlungsscheine in einer App. Download · 0.8.2 (macOS) Quellcode ↗ AGPL-3.0 Tauri + React macOS (später Linux & Windows) Lokal / Selfhosting ZIEL"><link rel=preload href=/css/compiled/main.min.3f70c37b0f2ce37d160ca0a36b7edfe7d6718ac312bc985e36fe9fb736850a27.css as=style integrity="sha256-P3DDew8s430WDKCja37f59ZxisMSvJheNv6ftzaFCic="><link href=/css/compiled/main.min.3f70c37b0f2ce37d160ca0a36b7edfe7d6718ac312bc985e36fe9fb736850a27.css rel=stylesheet integrity="sha256-P3DDew8s430WDKCja37f59ZxisMSvJheNv6ftzaFCic="><script src=/js/main-head.min.2375b7265ea066ecb314226ce5ff17478453df5f350d34d830b3fc96fba21672.js integrity="sha256-I3W3Jl6gZuyzFCJs5f8XR4RT3181DTTYMLP8lvuiFnI="></script></head><body><a href=#content class="hx:sr-only hx:focus-visible:not-sr-only hx:focus-visible:fixed hx:focus-visible:z-50 hx:focus-visible:top-2 hx:focus-visible:left-2 hx:focus-visible:bg-primary-500 hx:focus-visible:text-white hx:focus-visible:px-4 hx:focus-visible:py-2 hx:focus-visible:rounded-md hx:focus-visible:text-sm hx:focus-visible:font-medium">Zum Inhalt springen</a><div class="hextra-nav-container hx:sticky hx:top-0 hx:z-20 hx:w-full hx:bg-transparent hx:print:hidden"><div class="hextra-nav-container-blur hx:pointer-events-none hx:absolute hx:z-[-1] hx:h-full hx:w-full hx:bg-white hx:dark:bg-dark hx:shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] hx:contrast-more:shadow-[0_0_0_1px_#000] hx:dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] hx:contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div><nav class="hextra-max-navbar-width hx:mx-auto hx:flex hx:items-center hx:justify-end hx:gap-2 hx:h-16 hx:px-6"><a class="hx:flex hx:items-center hx:hover:opacity-75 hx:ltr:mr-auto hx:rtl:ml-auto" href=/><span class="hx:mr-2 hx:font-extrabold hx:inline hx:select-none">RAPPORT</span>
|
||||||
</a><a title href=/docs class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"><span class=hx:text-center>Dokumentation</span>
|
</a><a title href=/docs class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"><span class=hx:text-center>Dokumentation</span>
|
||||||
</a><a title href=/features class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"><span class=hx:text-center>Features</span>
|
</a><a title href=/features class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"><span class=hx:text-center>Features</span>
|
||||||
</a><a title href=/downloads class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"><span class=hx:text-center>Downloads</span>
|
</a><a title href=/downloads class="hx:text-sm hx:contrast-more:text-gray-700 hx:contrast-more:dark:text-gray-100 hx:relative hx:-ml-2 hx:hidden hx:whitespace-nowrap hx:p-2 hx:md:inline-flex hx:items-center hx:gap-1 hx:text-gray-600 hx:hover:text-gray-800 hx:dark:text-gray-400 hx:dark:hover:text-gray-200"><span class=hx:text-center>Downloads</span>
|
||||||
@@ -22,7 +22,7 @@ Hell
|
|||||||
Dunkel
|
Dunkel
|
||||||
<span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3 hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden"><svg height="1em" width="1em" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></span></button></li><li role=none class="hx:flex hx:flex-col"><button type=button role=menuitemradio aria-checked=false tabindex=-1 data-item=system class="hx:text-gray-700 hx:dark:text-gray-300 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-neutral-800 hx:dark:hover:text-gray-100 hx:relative hx:cursor-pointer hx:whitespace-nowrap hx:rounded-sm hx:py-1.5 hx:transition-colors hx:ltr:pl-3 hx:ltr:pr-9 hx:rtl:pr-3 hx:rtl:pl-9 hx:text-left hx:w-full hx:bg-transparent hx:border-0">
|
<span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3 hx:group-data-[theme=light]:hidden hx:group-data-[theme=system]:hidden"><svg height="1em" width="1em" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></span></button></li><li role=none class="hx:flex hx:flex-col"><button type=button role=menuitemradio aria-checked=false tabindex=-1 data-item=system class="hx:text-gray-700 hx:dark:text-gray-300 hx:hover:bg-gray-100 hx:hover:text-gray-900 hx:dark:hover:bg-neutral-800 hx:dark:hover:text-gray-100 hx:relative hx:cursor-pointer hx:whitespace-nowrap hx:rounded-sm hx:py-1.5 hx:transition-colors hx:ltr:pl-3 hx:ltr:pr-9 hx:rtl:pr-3 hx:rtl:pl-9 hx:text-left hx:w-full hx:bg-transparent hx:border-0">
|
||||||
System
|
System
|
||||||
<span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3 hx:group-data-[theme=dark]:hidden hx:group-data-[theme=light]:hidden"><svg height="1em" width="1em" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></span></button></li></ul></div></div></div></aside><main id=content class="hx:w-full hx:break-words hx:min-h-[calc(100vh-var(--navbar-height))] hx:min-w-0 hx:pb-8 hx:pt-8 hx:md:pt-12 hx:pl-[max(env(safe-area-inset-left),1.5rem)] hx:pr-[max(env(safe-area-inset-left),1.5rem)]"><div class="hx:flex hx:flex-col hx:items-center hx:text-center hextra-home"><a class="not-prose hx:inline-flex hx:items-center hx:rounded-full hx:gap-2 hx:px-3 hx:py-1 hx:text-xs hx:text-gray-600 hx:dark:text-gray-400 hx:bg-gray-100 hx:dark:bg-neutral-800 hx:border-gray-200 hx:dark:border-neutral-800 hx:border hx:hover:border-gray-400 hx:dark:hover:text-gray-50 hx:dark:hover:border-gray-600 hx:transition-all hx:ease-in hx:duration-200"><div class="hx:w-2 hx:h-2 hx:rounded-full" style="background:#b07848;box-shadow:0 0 8px rgba(176,120,72,.55)"></div><span>Pre-Release 0.8.3 · Aktiv in Entwicklung</span></a><div class="hx:mt-8 hx:mb-6"><div class=rapport-logo-card><div class=rapport-logo-text>RAPPORT</div><div class=rapport-logo-sub>Studio Administration</div></div></div><div class=hx:mb-12><p class="not-prose hx:text-xl hx:text-gray-600 hx:dark:text-gray-400 hx:sm:text-xl">Die Studio Management Software für Architekturbüros mit offenem Quellcode — Zeiterfassung, Rechnungen, Offerten, Projekte, Mitarbeiter und QR-Einzahlungsscheine in einer App.</p></div><div class=rapport-hero-actions><a href=https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.3/RAPPORT%20PRE-RELEASE_0.8.3_aarch64.dmg target=_blank rel=noreferrer class="rapport-btn rapport-btn-primary">Download · 0.8.3 (macOS)</a>
|
<span class="hx:absolute hx:inset-y-0 hx:flex hx:items-center hx:ltr:right-3 hx:rtl:left-3 hx:group-data-[theme=dark]:hidden hx:group-data-[theme=light]:hidden"><svg height="1em" width="1em" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></span></button></li></ul></div></div></div></aside><main id=content class="hx:w-full hx:break-words hx:min-h-[calc(100vh-var(--navbar-height))] hx:min-w-0 hx:pb-8 hx:pt-8 hx:md:pt-12 hx:pl-[max(env(safe-area-inset-left),1.5rem)] hx:pr-[max(env(safe-area-inset-left),1.5rem)]"><div class="hx:flex hx:flex-col hx:items-center hx:text-center hextra-home"><a class="not-prose hx:inline-flex hx:items-center hx:rounded-full hx:gap-2 hx:px-3 hx:py-1 hx:text-xs hx:text-gray-600 hx:dark:text-gray-400 hx:bg-gray-100 hx:dark:bg-neutral-800 hx:border-gray-200 hx:dark:border-neutral-800 hx:border hx:hover:border-gray-400 hx:dark:hover:text-gray-50 hx:dark:hover:border-gray-600 hx:transition-all hx:ease-in hx:duration-200"><div class="hx:w-2 hx:h-2 hx:rounded-full" style="background:#b07848;box-shadow:0 0 8px rgba(176,120,72,.55)"></div><span>Pre-Release 0.8.2 · Aktiv in Entwicklung</span></a><div class="hx:mt-8 hx:mb-6"><div class=rapport-logo-card><div class=rapport-logo-text>RAPPORT</div><div class=rapport-logo-sub>Studio Administration</div></div></div><div class=hx:mb-12><p class="not-prose hx:text-xl hx:text-gray-600 hx:dark:text-gray-400 hx:sm:text-xl">Die Studio Management Software für Architekturbüros mit offenem Quellcode — Zeiterfassung, Rechnungen, Offerten, Projekte, Mitarbeiter und QR-Einzahlungsscheine in einer App.</p></div><div class=rapport-hero-actions><a href=https://git.kgva.ch/karim/RAPPORT/releases/download/0.8.2/RAPPORT%20PRE-RELEASE_0.8.2_aarch64.dmg target=_blank rel=noreferrer class="rapport-btn rapport-btn-primary">Download · 0.8.2 (macOS)</a>
|
||||||
<a href=https://git.kgva.ch/karim/RAPPORT class="rapport-btn rapport-btn-secondary">Quellcode ↗</a></div><div class="rapport-meta hx:mb-12"><span class=rapport-meta-item>AGPL-3.0</span>
|
<a href=https://git.kgva.ch/karim/RAPPORT class="rapport-btn rapport-btn-secondary">Quellcode ↗</a></div><div class="rapport-meta hx:mb-12"><span class=rapport-meta-item>AGPL-3.0</span>
|
||||||
<span class=rapport-meta-item>Tauri + React</span>
|
<span class=rapport-meta-item>Tauri + React</span>
|
||||||
<span class=rapport-meta-item>macOS (später Linux & Windows)</span>
|
<span class=rapport-meta-item>macOS (später Linux & Windows)</span>
|
||||||
|
|||||||
-2525
File diff suppressed because it is too large
Load Diff
@@ -1,22 +0,0 @@
|
|||||||
// The section must not be in the banner.js (body) file because it can create a quick flash.
|
|
||||||
|
|
||||||
if (localStorage.getItem('banner-closed')) {
|
|
||||||
document.documentElement.style.setProperty("--hextra-banner-height", "0px");
|
|
||||||
document.documentElement.classList.add("hextra-banner-hidden");
|
|
||||||
}
|
|
||||||
|
|
||||||
;
|
|
||||||
// The section must not be in the theme.js (body) file because it can create a quick flash (switch between light and dark).
|
|
||||||
|
|
||||||
function setTheme(theme) {
|
|
||||||
document.documentElement.classList.remove("light", "dark");
|
|
||||||
|
|
||||||
if (theme !== "light" && theme !== "dark") {
|
|
||||||
theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
||||||
}
|
|
||||||
|
|
||||||
document.documentElement.classList.add(theme);
|
|
||||||
document.documentElement.style.colorScheme = theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
setTheme("color-theme" in localStorage ? localStorage.getItem("color-theme") : 'light')
|
|
||||||
-1082
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user