diff --git a/DISCLAIMER.md b/DISCLAIMER.md new file mode 100644 index 0000000..ca11a25 --- /dev/null +++ b/DISCLAIMER.md @@ -0,0 +1,47 @@ +# Haftungsausschluss — Hellion NewTab + +## Nutzung auf eigenes Risiko + +Diese Browser-Extension wird "wie besehen" (as-is) zur Verfügung gestellt, ohne jegliche ausdrückliche oder stillschweigende Gewährleistung, einschließlich, aber nicht beschränkt auf die Gewährleistung der Marktgängigkeit, der Eignung für einen bestimmten Zweck und der Nichtverletzung von Rechten Dritter. + +## Keine Garantie + +Der Entwickler übernimmt keine Haftung für: + +- Datenverlust durch fehlerhafte Speicherung, Browser-Updates oder Extension-Deinstallation +- Inkompatibilitäten mit bestimmten Browser-Versionen oder Betriebssystemen +- Schäden, die durch die Nutzung oder Nichtnutzung dieser Extension entstehen +- Verfügbarkeit oder Korrektheit von Drittanbieter-Diensten (Google Favicons API) + +## Datenspeicherung + +Alle Daten werden ausschließlich lokal im Browser gespeichert (`chrome.storage.local`). Es erfolgt keine Übertragung an externe Server. Der Entwickler hat keinen Zugriff auf gespeicherte Bookmarks, Einstellungen oder Notizen. + +**Empfehlung:** Regelmäßig JSON-Backups über die Export-Funktion erstellen. + +## Drittanbieter-Dienste + +Diese Extension nutzt folgende externe Dienste: + +| Dienst | Zweck | Datenschutz | +| --- | --- | --- | +| Google Favicons API | Bookmark-Icons laden | Es wird nur die Domain übermittelt, keine vollständige URL | +| Google Fonts | Schriftarten (Rajdhani, Inter, Cinzel) | Standardmäßige Google-Fonts-Nutzungsbedingungen | + +## Änderungen + +Der Entwickler behält sich das Recht vor, diese Extension jederzeit zu ändern, zu aktualisieren oder einzustellen, ohne vorherige Ankündigung. + +## Kontakt + +| | | +| --- | --- | +| **Entwickler** | Florian Wathling | +| **Unternehmen** | Hellion Online Media | +| **Web** | [hellion-media.de](https://hellion-media.de) | +| **E-Mail** | [kontakt@hellion-media.de](mailto:kontakt@hellion-media.de) | +| **Impressum** | [hellion-media.de/impressum](https://hellion-media.de/impressum) | + +--- + +**Hellion NewTab** — [Hellion Online Media](https://hellion-media.de) — JonKazama-Hellion diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0e034c8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,17 @@ +Hellion NewTab +Copyright (c) 2026 Florian Wathling / Hellion Online Media + +Dieses Werk ist lizenziert unter der +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + +Kurzfassung: +- Namensnennung erforderlich +- Keine kommerzielle Nutzung ohne Erlaubnis +- Weitergabe unter gleichen Bedingungen + +Vollstaendiger Lizenztext: +https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode + +Kontakt für kommerzielle Lizenzierung: +kontakt@hellion-media.de +https://hellion-media.de diff --git a/README.md b/README.md index 516301e..f633dd1 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,12 @@ ![Version](https://img.shields.io/badge/Version-1.2.0-blue) ![JavaScript](https://img.shields.io/badge/JavaScript-Vanilla%20ES2020-F7DF1E?logo=javascript&logoColor=black) ![Manifest](https://img.shields.io/badge/Manifest-V3%20%7C%20V2-green) -![License](https://img.shields.io/badge/License-Propriet%C3%A4r-red) +![License](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-orange) ![Privacy](https://img.shields.io/badge/Privacy-100%25%20Lokal-448f45) **Kein Account. Kein Abo. Keine Cloud. Alle Daten bleiben 100% lokal.** -Ein persoenlicher Bookmark-Dashboard als Browser-Extension. +Ein persönlicher Bookmark-Dashboard als Browser-Extension. Boards, Drag & Drop, 8 Themes, Suchleiste, Sticky Notes — alles im Browser, alles offline. Keine externe Datenübertragung, keine Tracker, keine Analytics, keine Werbung. @@ -21,11 +21,11 @@ Entwickelt von **[Hellion Online Media](https://hellion-media.de)** — JonKazam - Kein Cloud-Sync und kein Account-System - Keine Datenerfassung oder Telemetrie - Keine Drittanbieter-Abhängigkeiten oder Build-Tools -- Kein Netzwerkverkehr ausser Favicon-Abruf (Google Favicons API) +- Kein Netzwerkverkehr außer Favicon-Abruf (Google Favicons API) ## Was diese Extension IST -Ein lokaler, privater NewTab-Ersatz für alle gaengigen Browser. +Ein lokaler, privater NewTab-Ersatz für alle gängigen Browser. Bookmarks werden in `chrome.storage.local` gespeichert — nichts verlässt den Browser. Was angezeigt wird, ist was gespeichert ist. Keine Magie. @@ -35,7 +35,7 @@ Was angezeigt wird, ist was gespeichert ist. Keine Magie. ### Boards & Bookmarks -- Boards als Gruppen fuer Links — per Drag & Drop umsortierbar +- Boards als Gruppen für Links — per Drag & Drop umsortierbar - Bookmarks mit Favicon, Titel, optionaler Beschreibung - Boards per Blur-Button verstecken (Privat-Modus) - HTML-Import von Browser-Lesezeichen (Chrome, Edge, Firefox) @@ -55,20 +55,33 @@ Was angezeigt wird, ist was gespeichert ist. Keine Magie. | Theme | Akzent | Stil | | --- | --- | --- | -| Astronaut | Orange | Dark / Space | -| Cosmic Clock | Gold | Warm / Mystisch | -| Void Mage | Lila | Arkan | +| Nebula | Magenta | Cosmic Nebula | +| Crescent | Gold | Minimalist Night | +| Event Horizon | Orange | Deep Space | | Merchantman | Teal | Industrial Sci-Fi | | Julia & Jin | Blau | FFXIV Night | | SC Sunset | Amber | Planet-Side | -| Hellion HUD | Gruen | Circuit Board | -| Hellion Energy | Matrix-Gruen | Tactical | +| Hellion HUD | Grün | Circuit Board | +| Hellion Energy | Matrix-Grün | Tactical | + +### Bild-Credits + +| Theme | Quelle | Lizenz | +| --- | --- | --- | +| Nebula | [Temel / mrwashingt0n](https://pixabay.com/de/users/mrwashingt0n-15745216/) auf Pixabay | Pixabay License (frei) | +| Crescent | [Daniil Silantev](https://unsplash.com) auf Unsplash | Unsplash License (frei) | +| Event Horizon | Eigenes Werk — Stillframe von [hellion-initiative.online](https://hellion-initiative.online) | Hellion Online Media | +| Merchantman | [Roberts Space Industries](https://robertsspaceindustries.com) — Made by the community | RSI Community Content | +| SC Sunset | Screenshot aus Star Citizen von Cloud Imperium Games | Fan Content | +| Julia & Jin | Eigenes Werk — Final Fantasy XIV Screenshot, bearbeitet in Photoshop | Hellion Online Media | +| Hellion HUD | Eigenes Werk — AI-generiert und nachbearbeitet für hellion-media.de | Hellion Online Media | +| Hellion Energy | Eigenes Werk — AI-generiert für hellion-media.de | Hellion Online Media | ### Settings -- Compact Mode — reduziert Abstände fuer mehr Bookmarks +- Compact Mode — reduziert Abstände für mehr Bookmarks - Shorten Titles — kürzt lange Titel auf eine Zeile -- Open in New Tab — Bookmarks in neuem Tab oeffnen +- Open in New Tab — Bookmarks in neuem Tab öffnen - Show Descriptions — Beschreibungen unter Bookmarks anzeigen - Hide Extra Bookmarks — Boards ab 5/10/20 Bookmarks einklappen - Hintergrundbild — URL oder lokaler Upload @@ -91,7 +104,7 @@ Was angezeigt wird, ist was gespeichert ist. Keine Magie. | Firefox | Kompatibel | V2 (`manifest.firefox.json`) | > **Firefox-Hinweis:** Firefox verwendet aktuell Manifest V2. Mozilla arbeitet an MV3-Support — -> sobald stabil, wird die Extension migriert. MV2 wird von Mozilla weiterhin unterstuetzt. +> sobald stabil, wird die Extension migriert. MV2 wird von Mozilla weiterhin unterstützt. --- @@ -101,15 +114,15 @@ Was angezeigt wird, ist was gespeichert ist. Keine Magie. ```text 1. Repository als ZIP herunterladen oder git clone -2. chrome://extensions oeffnen (oder edge:// / brave:// / opera://) +2. chrome://extensions öffnen (oder edge:// / brave:// / opera://) 3. Entwicklermodus aktivieren 4. "Entpackte Erweiterung laden" → Ordner auswählen in dem manifest.json liegt -5. Neuen Tab oeffnen +5. Neuen Tab öffnen ``` ### Firefox -Firefox benoetigt `manifest.json` im Format V2. +Firefox benötigt `manifest.json` im Format V2. ```bash # manifest.json durch Firefox-Version ersetzen: @@ -118,13 +131,13 @@ cp manifest.firefox.json manifest.json # Linux/Mac ``` ```text -1. about:debugging#/runtime/this-firefox oeffnen -2. "Temporaeres Add-on laden" +1. about:debugging#/runtime/this-firefox öffnen +2. "Temporäres Add-on laden" 3. Die manifest.json aus dem Projektordner auswählen ``` -> **Hinweis:** Temporaere Add-ons werden beim Browser-Neustart entfernt. -> Fuer dauerhafte Installation ist eine signierte `.xpi`-Datei noetig. +> **Hinweis:** Temporäre Add-ons werden beim Browser-Neustart entfernt. +> Für dauerhafte Installation ist eine signierte `.xpi`-Datei nötig. --- @@ -135,17 +148,17 @@ cp manifest.firefox.json manifest.json # Linux/Mac | Chrome / Edge | Einstellungen → Lesezeichen → Exportieren | | Firefox | Lesezeichen → Alle Lesezeichen → Importieren und Sichern → Als HTML exportieren | -Die exportierte `.html`-Datei ueber den **Import**-Button in der Extension laden. +Die exportierte `.html`-Datei über den **Import**-Button in der Extension laden. --- ## Datenschutz -- Keine externe Datenübertragung (ausser Google Favicons API fuer Icons) +- Keine externe Datenübertragung (außer Google Favicons API für Icons) - Speicherung in `chrome.storage.local` (Chromium) bzw. `browser.storage.local` (Firefox) - Keine Tracker, keine Analytics, keine Werbung - Keine Cookies, keine Session-Daten -- Storage-Quota-Pruefung warnt bei 8 MB+ (Limit: 10 MB) +- Storage-Quota-Prüfung warnt bei 8 MB+ (Limit: 10 MB) - Permissions: `storage`, `bookmarks` --- @@ -172,10 +185,13 @@ hellion-newtab/ ├── manifest.json # Chrome, Edge, Brave, Opera, Vivaldi (MV3) ├── manifest.firefox.json # Firefox (MV2) ├── newtab.html # Haupt-HTML (UI-Struktur, Modals, Settings Panel) +├── LICENSE # CC BY-NC-SA 4.0 +├── SECURITY.md # Sicherheitsrichtlinie und Meldeprozess +├── DISCLAIMER.md # Haftungsausschluss │ ├── src/ │ ├── js/ -│ │ ├── storage.js # Storage Abstraction + Quota-Pruefung +│ │ ├── storage.js # Storage Abstraction + Quota-Prüfung │ │ ├── state.js # Globaler State, Defaults, Hilfsfunktionen │ │ ├── themes.js # Theme-Definitionen & Anwendungslogik │ │ ├── boards.js # Board/Bookmark Rendering, Event Delegation, Modals @@ -190,9 +206,9 @@ hellion-newtab/ │ ├── assets/ │ ├── themes/ # 8 Theme-Hintergrundbilder -│ │ ├── bg-astronaut.jpg -│ │ ├── bg-cosmic-clock.jpg -│ │ ├── bg-void-mage.jpg +│ │ ├── bg-nebula.jpg +│ │ ├── bg-crescent.jpg +│ │ ├── bg-event-horizon.jpg │ │ ├── bg-merchantman.webp │ │ ├── bg-julia-jin.png │ │ ├── bg-sc-sunset.jpg @@ -226,23 +242,23 @@ hellion-newtab/ ### Security Scan (`security.yml`) -- **CodeQL-Analyse** — Statische Sicherheitsanalyse fuer JavaScript -- **Dependency Review** — Prueft Pull Requests auf bekannte Schwachstellen +- **CodeQL-Analyse** — Statische Sicherheitsanalyse für JavaScript +- **Dependency Review** — Prüft Pull Requests auf bekannte Schwachstellen - **Zeitplan** — Automatisch wöchentlich (Montag 06:00 UTC) + bei Push/PR ### Code Quality (`quality.yml`) - **Projektstruktur** — Alle Pflichtdateien und -ordner vorhanden - **Manifest-Validierung** — JSON-Syntax, Version, Permissions -- **JavaScript Syntax-Check** — `node --check` fuer alle JS-Dateien -- **Versions-Konsistenz** — manifest.json, manifest.firefox.json und newtab.html muessen übereinstimmen -- **Icon-Pruefung** — Alle Extension-Icons vorhanden +- **JavaScript Syntax-Check** — `node --check` für alle JS-Dateien +- **Versions-Konsistenz** — manifest.json, manifest.firefox.json und newtab.html müssen übereinstimmen +- **Icon-Prüfung** — Alle Extension-Icons vorhanden ### Release (`release.yml`) - **Trigger** — Bei Git-Tag (`v*`) - **Pakete** — Chrome-ZIP (MV3) + Firefox-ZIP (MV2) -- **Checksummen** — SHA256 fuer alle Artefakte +- **Checksummen** — SHA256 für alle Artefakte - **GitHub Release** — Automatisch mit Installationsanleitung ```bash @@ -262,17 +278,30 @@ git clone https://github.com/JonKazama-Hellion/Hellion-NewTab.git # Extension im Browser laden (siehe Installation) -# Nach Aenderungen: Extension neu laden +# Nach Änderungen: Extension neu laden chrome://extensions → Hellion NewTab → Neu laden ``` -Kein Build-Schritt noetig. Dateien aendern, Extension neu laden, fertig. +Kein Build-Schritt nötig. Dateien ändern, Extension neu laden, fertig. + +--- + +## Sicherheit + +Sicherheitslücken bitte **nicht** über öffentliche Issues melden. +Details zur Meldung, Reaktionszeiten und Sicherheitsarchitektur: [SECURITY.md](SECURITY.md) --- ## Lizenz & Impressum -**Proprietaeres Projekt — alle Rechte vorbehalten.** +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International + +- Kostenlos für private Nutzung +- Teilen und Modifikation erlaubt mit Namensnennung +- Kommerzielle Nutzung ohne Erlaubnis verboten + +Vollständige Lizenz: [LICENSE](LICENSE) | [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) | | | | --- | --- | @@ -281,6 +310,7 @@ Kein Build-Schritt noetig. Dateien aendern, Extension neu laden, fertig. | **Web** | [hellion-media.de](https://hellion-media.de) | | **Impressum** | [hellion-media.de/impressum](https://hellion-media.de/impressum) | | **Bug Reports** | [kontakt@hellion-media.de](mailto:kontakt@hellion-media.de?subject=Hellion%20NewTab%20%E2%80%93%20Bug%20Report) | +| **Security** | [SECURITY.md](SECURITY.md) | --- @@ -290,18 +320,21 @@ Kein Build-Schritt noetig. Dateien aendern, Extension neu laden, fertig. - Projektstruktur in `src/js/`, `src/css/`, `assets/` aufgeteilt - JS in 10 Module aufgeteilt (storage, state, themes, boards, drag, settings, search, sticky, data, app) -- Firefox-Kompatibilitaet (`manifest.firefox.json`, Manifest V2) -- Vivaldi bestaetigt kompatibel +- Firefox-Kompatibilität (`manifest.firefox.json`, Manifest V2) +- Vivaldi bestätigt kompatibel - Theme-Bildpfade korrigiert (Settings Preview) - URL-Validierung bei Bookmark-Erstellung - JSON-Import mit Board- und Bookmark-Struktur-Validierung -- XSS-Schutz: createElement statt innerHTML fuer Bookmarks -- Storage-Quota-Pruefung mit Warnung bei 8 MB+ -- Event Delegation fuer Bookmark-Klicks (Performance) +- XSS-Schutz: createElement statt innerHTML für Bookmarks +- Storage-Quota-Prüfung mit Warnung bei 8 MB+ +- Event Delegation für Bookmark-Klicks (Performance) - Responsive Design (Tablet 768px, Smartphone 480px) - Sticky Note Header-Kollision behoben -- FileReader-Fehlerbehandlung fuer Hintergrundbild-Upload +- FileReader-Fehlerbehandlung für Hintergrundbild-Upload - GitHub Actions: Security Scan, Code Quality, Release Automation +- 3 Themes ersetzt: Astronaut → Nebula, Cosmic Clock → Crescent, Void Mage → Event Horizon +- Alle Theme-Bilder lizenzrechtlich geprüft und dokumentiert +- LICENSE (CC BY-NC-SA 4.0), SECURITY.md und DISCLAIMER.md hinzugefügt ### v1.1.0 — 20.03.2026 @@ -313,13 +346,13 @@ Kein Build-Schritt noetig. Dateien aendern, Extension neu laden, fertig. - About / Impressum in Settings - Board Blur-Funktion (Privat-Modus) - Drag & Drop auf Pointer Events umgestellt -- Opera / Opera GX Kompatibilitaet +- Opera / Opera GX Kompatibilität ### v1.0.0 — 20.03.2026 - Initiales Release - Boards & Bookmarks mit Drag & Drop -- 3 Themes (Astronaut, Cosmic Clock, Void Mage) +- 3 Themes (Nebula, Crescent, Event Horizon) - HTML-Import (Browser-Lesezeichen) - Settings Panel @@ -327,7 +360,7 @@ Kein Build-Schritt noetig. Dateien aendern, Extension neu laden, fertig. ### Einsatz von AI -AI (Claude Code, Opus 4.6 von Anthropic) wurde als Hilfsmittel eingesetzt — fuer Fehleridentifikation, Code-Review und Qualitaetssicherung. Architektur, Features und alle Entscheidungen sind Eigenleistung. +AI (Claude Code, Opus 4.6 von Anthropic) wurde als Hilfsmittel eingesetzt — für Fehleridentifikation, Code-Review und Qualitätssicherung. Architektur, Features und alle Entscheidungen sind Eigenleistung. --- diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..4f9e917 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,76 @@ +# Sicherheitsrichtlinie — Hellion NewTab + +## Unterstützte Versionen + +| Version | Status | +| --- | --- | +| 1.2.x | Aktiv unterstützt | +| < 1.2.0 | Nicht unterstützt | + +## Sicherheitslücke melden + +Wenn du eine Sicherheitslücke in Hellion NewTab findest, melde sie bitte **nicht** über ein öffentliches GitHub Issue. + +### Kontakt + +**E-Mail:** [kontakt@hellion-media.de](mailto:kontakt@hellion-media.de?subject=Hellion%20NewTab%20%E2%80%93%20Security%20Report) + +Bitte folgende Informationen angeben: + +- Beschreibung der Schwachstelle +- Schritte zur Reproduktion +- Betroffene Version(en) +- Mögliche Auswirkungen (Datenverlust, XSS, etc.) + +### Reaktionszeit + +- **Bestätigung:** Innerhalb von 48 Stunden +- **Ersteinschätzung:** Innerhalb von 7 Tagen +- **Fix:** Abhängig von Schweregrad, Ziel innerhalb von 14 Tagen + +### Schweregrad-Einstufung + +| Stufe | Beschreibung | Beispiel | +| --- | --- | --- | +| Kritisch | Datenverlust oder Remote Code Execution | Storage-Manipulation durch Dritte | +| Hoch | XSS oder ungewollte Datenübertragung | Script-Injection via Bookmark-Import | +| Mittel | Umgehung von UI-Schutzmechanismen | Blur-Bypass, Settings-Manipulation | +| Niedrig | Kosmetisch oder theoretisch | Edge-Cases ohne praktische Auswirkung | + +## Sicherheitsarchitektur + +### Datenverarbeitung + +- **Keine externe Datenübertragung** — Alle Daten bleiben in `chrome.storage.local` +- **Kein Server-Kontakt** — Außer Google Favicons API für Bookmark-Icons +- **Keine Cookies, Sessions oder Tokens** +- **Kein Netzwerkzugriff** außer Favicon-Abruf + +### Eingabe-Validierung + +- URL-Validierung bei Bookmark-Erstellung (`new URL()`) +- JSON-Import: Board- und Bookmark-Struktur wird validiert +- HTML-Sanitierung via `escHtml()` und `createElement` (kein `innerHTML` für User-Daten) +- Storage-Quota-Prüfung mit Warnung bei 8 MB+ + +### Permissions + +Diese Extension benötigt nur zwei Browser-Permissions: + +| Permission | Grund | +| --- | --- | +| `storage` | Boards, Settings und Sticky Note lokal speichern | +| `bookmarks` | Browser-Lesezeichen für HTML-Import lesen | + +Keine Permissions für: Tabs, History, Web Requests, Downloads, Clipboard oder Host-Zugriff. + +### CI/CD-Sicherheit + +- **CodeQL** — Automatische statische Analyse bei Push und PR +- **Dependency Review** — Prüft auf bekannte Schwachstellen in PRs +- **Wöchentlicher Scan** — Automatischer CodeQL-Lauf jeden Montag +- **SHA256-Checksummen** — Alle Release-Artefakte werden signiert + +--- + +**Hellion NewTab** — [Hellion Online Media](https://hellion-media.de) — JonKazama-Hellion diff --git a/assets/themes/bg-astronaut.jpg b/assets/themes/bg-astronaut.jpg deleted file mode 100644 index 5a80247..0000000 Binary files a/assets/themes/bg-astronaut.jpg and /dev/null differ diff --git a/assets/themes/bg-cosmic-clock.jpg b/assets/themes/bg-cosmic-clock.jpg deleted file mode 100644 index b8b0f30..0000000 Binary files a/assets/themes/bg-cosmic-clock.jpg and /dev/null differ diff --git a/assets/themes/bg-crescent.jpg b/assets/themes/bg-crescent.jpg new file mode 100644 index 0000000..8efdc51 Binary files /dev/null and b/assets/themes/bg-crescent.jpg differ diff --git a/assets/themes/bg-event-horizon.jpg b/assets/themes/bg-event-horizon.jpg new file mode 100644 index 0000000..1666460 Binary files /dev/null and b/assets/themes/bg-event-horizon.jpg differ diff --git a/assets/themes/bg-nebula.jpg b/assets/themes/bg-nebula.jpg new file mode 100644 index 0000000..33cb9cb Binary files /dev/null and b/assets/themes/bg-nebula.jpg differ diff --git a/assets/themes/bg-void-mage.jpg b/assets/themes/bg-void-mage.jpg deleted file mode 100644 index d480645..0000000 Binary files a/assets/themes/bg-void-mage.jpg and /dev/null differ diff --git a/newtab.html b/newtab.html index 2f95089..7facb38 100644 --- a/newtab.html +++ b/newtab.html @@ -92,19 +92,19 @@

THEME

-
- Astronaut - Astronaut +
+ Nebula + Nebula
-
- Cosmic Clock - Cosmic +
+ Crescent + Crescent
-
- Void Mage - Void Mage +
+ Event Horizon + Event Horizon
@@ -257,7 +257,7 @@
Lizenz - Proprietär · Nicht open source + CC BY-NC-SA 4.0
Datenspeicherung @@ -279,9 +279,11 @@
Chrome Edge + Firefox Opera Opera GX Brave + Vivaldi
diff --git a/src/css/main.css b/src/css/main.css index bdba434..dc66a86 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -1,22 +1,22 @@ /* ============================================= HELLION NEWTAB — Theme System - Themes: astronaut | cosmic-clock | void-mage + Themes: nebula | crescent | event-horizon ============================================= */ @import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@400;500;600;700&family=Inter:wght@300;400;500&family=Cinzel:wght@400;600&display=swap'); -/* ---- BASE VARIABLES (Astronaut = Default) ---- */ +/* ---- BASE VARIABLES (Nebula = Default) ---- */ :root { - --accent: #ffa032; - --accent-dim: rgba(255, 160, 50, 0.15); - --accent-glow: rgba(255, 160, 50, 0.08); - --border-accent: rgba(255, 160, 50, 0.35); - --bg-primary: #08090d; - --bg-board: rgba(10, 12, 18, 0.48); + --accent: #d65cff; + --accent-dim: rgba(214, 92, 255, 0.15); + --accent-glow: rgba(214, 92, 255, 0.08); + --border-accent: rgba(214, 92, 255, 0.35); + --bg-primary: #0a060e; + --bg-board: rgba(12, 8, 18, 0.48); --border: rgba(255, 255, 255, 0.06); - --text-primary: #dde0ee; - --text-secondary: #7a7d8e; - --text-muted: #44475a; + --text-primary: #e0d8f0; + --text-secondary: #8a7a9e; + --text-muted: #4a3860; --danger: #e05555; --font-display: 'Rajdhani', sans-serif; --font-body: 'Inter', sans-serif; @@ -25,93 +25,91 @@ --board-width: 240px; --spacing: 10px; --spacing-compact: 5px; - --overlay-bg: linear-gradient(180deg, rgba(8,9,13,0.85) 0%, rgba(8,9,13,0.42) 45%, rgba(8,9,13,0.90) 100%); - --header-bg: rgba(8,9,13,0.90); - --board-hover-border: rgba(255,160,50,0.22); - --toggle-on-bg: rgba(255,160,50,0.22); - --logo-shadow: rgba(255,160,50,0.45); + --overlay-bg: linear-gradient(180deg, rgba(10,6,14,0.85) 0%, rgba(10,6,14,0.42) 45%, rgba(10,6,14,0.90) 100%); + --header-bg: rgba(10,6,14,0.90); + --board-hover-border: rgba(214,92,255,0.22); + --toggle-on-bg: rgba(214,92,255,0.22); + --logo-shadow: rgba(214,92,255,0.45); } /* ============================================ - THEME: ASTRONAUT + THEME: NEBULA (magenta / cosmic nebula) ============================================ */ -[data-theme="astronaut"] { - --accent: #ffa032; - --accent-dim: rgba(255, 160, 50, 0.14); - --accent-glow: rgba(255, 160, 50, 0.06); - --border-accent: rgba(255, 160, 50, 0.32); - --bg-primary: #07080c; - --bg-board: rgba(9, 10, 16, 0.46); +[data-theme="nebula"] { + --accent: #d65cff; + --accent-dim: rgba(214, 92, 255, 0.14); + --accent-glow: rgba(214, 92, 255, 0.06); + --border-accent: rgba(214, 92, 255, 0.32); + --bg-primary: #0a060e; + --bg-board: rgba(12, 8, 18, 0.48); --border: rgba(255, 255, 255, 0.055); - --text-primary: #d8dbe8; - --text-secondary: #72758a; - --text-muted: #404358; + --text-primary: #e0d8f0; + --text-secondary: #8a7a9e; + --text-muted: #4a3860; --font-display: 'Rajdhani', sans-serif; --font-body: 'Inter', sans-serif; - --overlay-bg: linear-gradient(180deg, rgba(7,8,12,0.88) 0%, rgba(7,8,12,0.38) 45%, rgba(7,8,12,0.94) 100%); - --header-bg: rgba(7,8,12,0.92); - --board-hover-border: rgba(255,160,50,0.22); - --toggle-on-bg: rgba(255,160,50,0.22); - --logo-shadow: rgba(255,160,50,0.50); + --overlay-bg: linear-gradient(180deg, rgba(10,6,14,0.88) 0%, rgba(10,6,14,0.35) 45%, rgba(10,6,14,0.92) 100%); + --header-bg: rgba(10,6,14,0.92); + --board-hover-border: rgba(214,92,255,0.22); + --toggle-on-bg: rgba(214,92,255,0.22); + --logo-shadow: rgba(214,92,255,0.50); } +[data-theme="nebula"] .board { border-color: rgba(214,92,255,0.10); } +[data-theme="nebula"] .bm-item:hover { background: rgba(214,92,255,0.05); } /* ============================================ - THEME: COSMIC CLOCK + THEME: CRESCENT (gold / minimalist night) ============================================ */ -[data-theme="cosmic-clock"] { - --accent: #d4a843; - --accent-dim: rgba(212, 168, 67, 0.16); - --accent-glow: rgba(212, 168, 67, 0.07); - --border-accent: rgba(212, 168, 67, 0.38); - --bg-primary: #0d090c; - --bg-board: rgba(18, 10, 14, 0.50); - --border: rgba(212, 168, 67, 0.09); - --text-primary: #ecdccc; - --text-secondary: #8a6e5e; - --text-muted: #523930; +[data-theme="crescent"] { + --accent: #c8a84a; + --accent-dim: rgba(200, 168, 74, 0.16); + --accent-glow: rgba(200, 168, 74, 0.07); + --border-accent: rgba(200, 168, 74, 0.35); + --bg-primary: #080a12; + --bg-board: rgba(10, 14, 26, 0.50); + --border: rgba(200, 168, 74, 0.09); + --text-primary: #d8dce8; + --text-secondary: #6a7090; + --text-muted: #363c55; --font-display: 'Cinzel', serif; --font-body: 'Inter', sans-serif; - --overlay-bg: linear-gradient(160deg, rgba(13,9,12,0.90) 0%, rgba(13,9,12,0.42) 50%, rgba(13,9,12,0.94) 100%); - --header-bg: rgba(13,9,12,0.93); - --board-hover-border: rgba(212,168,67,0.28); - --toggle-on-bg: rgba(212,168,67,0.22); - --logo-shadow: rgba(212,168,67,0.55); + --overlay-bg: linear-gradient(180deg, rgba(8,10,18,0.88) 0%, rgba(8,10,18,0.30) 50%, rgba(8,10,18,0.92) 100%); + --header-bg: rgba(8,10,18,0.93); + --board-hover-border: rgba(200,168,74,0.26); + --toggle-on-bg: rgba(200,168,74,0.22); + --logo-shadow: rgba(200,168,74,0.55); } -[data-theme="cosmic-clock"] .logo { font-family: 'Cinzel', serif; letter-spacing: 4px; } -[data-theme="cosmic-clock"] .clock { font-family: 'Cinzel', serif; } -[data-theme="cosmic-clock"] .board-title { letter-spacing: 2px; } -[data-theme="cosmic-clock"] .bm-item:hover { background: rgba(212,168,67,0.05); } -[data-theme="cosmic-clock"] .board { border-color: rgba(212,168,67,0.10); } +[data-theme="crescent"] .logo { font-family: 'Cinzel', serif; letter-spacing: 4px; } +[data-theme="crescent"] .clock { font-family: 'Cinzel', serif; } +[data-theme="crescent"] .board-title { letter-spacing: 2px; } +[data-theme="crescent"] .bm-item:hover { background: rgba(200,168,74,0.05); } +[data-theme="crescent"] .board { border-color: rgba(200,168,74,0.10); } /* ============================================ - THEME: VOID MAGE + THEME: EVENT HORIZON (orange-violet / deep space) ============================================ */ -[data-theme="void-mage"] { - --accent: #9b6fff; - --accent-dim: rgba(155, 111, 255, 0.15); - --accent-glow: rgba(155, 111, 255, 0.07); - --border-accent: rgba(155, 111, 255, 0.35); - --bg-primary: #07060f; - --bg-board: rgba(10, 8, 20, 0.50); - --border: rgba(155, 111, 255, 0.09); - --text-primary: #d4cef5; - --text-secondary: #7068a0; - --text-muted: #3e3860; - --font-display: 'Cinzel', serif; +[data-theme="event-horizon"] { + --accent: #e08030; + --accent-dim: rgba(224, 128, 48, 0.15); + --accent-glow: rgba(224, 128, 48, 0.07); + --border-accent: rgba(224, 128, 48, 0.35); + --bg-primary: #06050c; + --bg-board: rgba(8, 6, 16, 0.52); + --border: rgba(224, 128, 48, 0.08); + --text-primary: #d8d0e8; + --text-secondary: #7a6898; + --text-muted: #3c3058; + --font-display: 'Rajdhani', sans-serif; --font-body: 'Inter', sans-serif; - --overlay-bg: linear-gradient(160deg, rgba(7,6,15,0.92) 0%, rgba(7,6,15,0.40) 50%, rgba(7,6,15,0.95) 100%); - --header-bg: rgba(7,6,15,0.93); - --board-hover-border: rgba(155,111,255,0.28); - --toggle-on-bg: rgba(155,111,255,0.22); - --logo-shadow: rgba(155,111,255,0.60); + --overlay-bg: linear-gradient(180deg, rgba(6,5,12,0.90) 0%, rgba(6,5,12,0.38) 50%, rgba(6,5,12,0.94) 100%); + --header-bg: rgba(6,5,12,0.93); + --board-hover-border: rgba(224,128,48,0.26); + --toggle-on-bg: rgba(224,128,48,0.22); + --logo-shadow: rgba(224,128,48,0.55); } - -[data-theme="void-mage"] .logo { font-family: 'Cinzel', serif; letter-spacing: 5px; } -[data-theme="void-mage"] .clock { font-family: 'Cinzel', serif; } -[data-theme="void-mage"] .board-title { letter-spacing: 2px; } -[data-theme="void-mage"] .bm-item:hover { background: rgba(155,111,255,0.06); } -[data-theme="void-mage"] .board { border-color: rgba(155,111,255,0.11); } +[data-theme="event-horizon"] .board { border-color: rgba(224,128,48,0.10); } +[data-theme="event-horizon"] .bm-item:hover { background: rgba(224,128,48,0.05); } /* ============================================ @@ -539,9 +537,9 @@ body.show-desc .bm-desc { display: block; } text-align: center; text-transform: uppercase; } -.theme-card[data-value="astronaut"] .theme-card-label { color: #ffa032; } -.theme-card[data-value="cosmic-clock"] .theme-card-label { color: #d4a843; } -.theme-card[data-value="void-mage"] .theme-card-label { color: #9b6fff; } +.theme-card[data-value="nebula"] .theme-card-label { color: #d65cff; } +.theme-card[data-value="crescent"] .theme-card-label { color: #c8a84a; } +.theme-card[data-value="event-horizon"] .theme-card-label { color: #e08030; } .theme-card[data-value="merchantman"] .theme-card-label { color: #4ecfcf; } .theme-card[data-value="julia-jin"] .theme-card-label { color: #5b9fff; } .theme-card[data-value="sc-sunset"] .theme-card-label { color: #f07c30; } diff --git a/src/js/settings.js b/src/js/settings.js index 11229ca..4e48f1b 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -33,7 +33,7 @@ function applySettings() { const showSearchEl = document.getElementById('settingShowSearch'); if (showSearchEl) showSearchEl.checked = settings.showSearch; - applyTheme(settings.theme || 'astronaut', !!settings.bgUrl); + applyTheme(settings.theme || 'nebula', !!settings.bgUrl); if (settings.bgUrl) { document.getElementById('bgLayer').style.backgroundImage = `url('${settings.bgUrl}')`; @@ -129,7 +129,7 @@ function bindSettingsEvents() { if (!confirm('Wirklich alle Boards und Einstellungen löschen? Nicht rückgängig machbar.')) return; boards = []; settings = { compact: false, shortenTitles: false, newTab: true, showDesc: false, - hideExtra: false, visibleCount: 10, bgUrl: '', theme: 'astronaut', + hideExtra: false, visibleCount: 10, bgUrl: '', theme: 'nebula', showSearch: true, searchEngine: 'google' }; await saveBoards(); await saveSettings(); diff --git a/src/js/state.js b/src/js/state.js index 6989a33..5ba982f 100644 --- a/src/js/state.js +++ b/src/js/state.js @@ -13,7 +13,7 @@ let settings = { hideExtra: false, visibleCount: 10, bgUrl: '', - theme: 'astronaut', + theme: 'nebula', showSearch: true, searchEngine: 'google' }; diff --git a/src/js/themes.js b/src/js/themes.js index 822e478..dc23570 100644 --- a/src/js/themes.js +++ b/src/js/themes.js @@ -4,9 +4,9 @@ ============================================= */ const THEMES = { - 'astronaut': { bg: 'assets/themes/bg-astronaut.jpg' }, - 'cosmic-clock': { bg: 'assets/themes/bg-cosmic-clock.jpg' }, - 'void-mage': { bg: 'assets/themes/bg-void-mage.jpg' }, + 'nebula': { bg: 'assets/themes/bg-nebula.jpg' }, + 'crescent': { bg: 'assets/themes/bg-crescent.jpg' }, + 'event-horizon': { bg: 'assets/themes/bg-event-horizon.jpg' }, 'merchantman': { bg: 'assets/themes/bg-merchantman.webp' }, 'julia-jin': { bg: 'assets/themes/bg-julia-jin.png' }, 'sc-sunset': { bg: 'assets/themes/bg-sc-sunset.jpg' },