Hinzufügen von Security.md, license, Disclaimer und beheben von möglichen Copyright Problemen, bilder ausgetauscht und in readme behoben
This commit is contained in:
@@ -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
|
||||||
@@ -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
|
||||||
@@ -3,12 +3,12 @@
|
|||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
**Kein Account. Kein Abo. Keine Cloud. Alle Daten bleiben 100% lokal.**
|
**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.
|
Boards, Drag & Drop, 8 Themes, Suchleiste, Sticky Notes — alles im Browser, alles offline.
|
||||||
Keine externe Datenübertragung, keine Tracker, keine Analytics, keine Werbung.
|
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
|
- Kein Cloud-Sync und kein Account-System
|
||||||
- Keine Datenerfassung oder Telemetrie
|
- Keine Datenerfassung oder Telemetrie
|
||||||
- Keine Drittanbieter-Abhängigkeiten oder Build-Tools
|
- 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
|
## 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.
|
Bookmarks werden in `chrome.storage.local` gespeichert — nichts verlässt den Browser.
|
||||||
Was angezeigt wird, ist was gespeichert ist. Keine Magie.
|
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 & 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
|
- Bookmarks mit Favicon, Titel, optionaler Beschreibung
|
||||||
- Boards per Blur-Button verstecken (Privat-Modus)
|
- Boards per Blur-Button verstecken (Privat-Modus)
|
||||||
- HTML-Import von Browser-Lesezeichen (Chrome, Edge, Firefox)
|
- HTML-Import von Browser-Lesezeichen (Chrome, Edge, Firefox)
|
||||||
@@ -55,20 +55,33 @@ Was angezeigt wird, ist was gespeichert ist. Keine Magie.
|
|||||||
|
|
||||||
| Theme | Akzent | Stil |
|
| Theme | Akzent | Stil |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| Astronaut | Orange | Dark / Space |
|
| Nebula | Magenta | Cosmic Nebula |
|
||||||
| Cosmic Clock | Gold | Warm / Mystisch |
|
| Crescent | Gold | Minimalist Night |
|
||||||
| Void Mage | Lila | Arkan |
|
| Event Horizon | Orange | Deep Space |
|
||||||
| Merchantman | Teal | Industrial Sci-Fi |
|
| Merchantman | Teal | Industrial Sci-Fi |
|
||||||
| Julia & Jin | Blau | FFXIV Night |
|
| Julia & Jin | Blau | FFXIV Night |
|
||||||
| SC Sunset | Amber | Planet-Side |
|
| SC Sunset | Amber | Planet-Side |
|
||||||
| Hellion HUD | Gruen | Circuit Board |
|
| Hellion HUD | Grün | Circuit Board |
|
||||||
| Hellion Energy | Matrix-Gruen | Tactical |
|
| 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
|
### 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
|
- 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
|
- Show Descriptions — Beschreibungen unter Bookmarks anzeigen
|
||||||
- Hide Extra Bookmarks — Boards ab 5/10/20 Bookmarks einklappen
|
- Hide Extra Bookmarks — Boards ab 5/10/20 Bookmarks einklappen
|
||||||
- Hintergrundbild — URL oder lokaler Upload
|
- 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 | Kompatibel | V2 (`manifest.firefox.json`) |
|
||||||
|
|
||||||
> **Firefox-Hinweis:** Firefox verwendet aktuell Manifest V2. Mozilla arbeitet an MV3-Support —
|
> **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
|
```text
|
||||||
1. Repository als ZIP herunterladen oder git clone
|
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
|
3. Entwicklermodus aktivieren
|
||||||
4. "Entpackte Erweiterung laden" → Ordner auswählen in dem manifest.json liegt
|
4. "Entpackte Erweiterung laden" → Ordner auswählen in dem manifest.json liegt
|
||||||
5. Neuen Tab oeffnen
|
5. Neuen Tab öffnen
|
||||||
```
|
```
|
||||||
|
|
||||||
### Firefox
|
### Firefox
|
||||||
|
|
||||||
Firefox benoetigt `manifest.json` im Format V2.
|
Firefox benötigt `manifest.json` im Format V2.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# manifest.json durch Firefox-Version ersetzen:
|
# manifest.json durch Firefox-Version ersetzen:
|
||||||
@@ -118,13 +131,13 @@ cp manifest.firefox.json manifest.json # Linux/Mac
|
|||||||
```
|
```
|
||||||
|
|
||||||
```text
|
```text
|
||||||
1. about:debugging#/runtime/this-firefox oeffnen
|
1. about:debugging#/runtime/this-firefox öffnen
|
||||||
2. "Temporaeres Add-on laden"
|
2. "Temporäres Add-on laden"
|
||||||
3. Die manifest.json aus dem Projektordner auswählen
|
3. Die manifest.json aus dem Projektordner auswählen
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Hinweis:** Temporaere Add-ons werden beim Browser-Neustart entfernt.
|
> **Hinweis:** Temporäre Add-ons werden beim Browser-Neustart entfernt.
|
||||||
> Fuer dauerhafte Installation ist eine signierte `.xpi`-Datei noetig.
|
> 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 |
|
| Chrome / Edge | Einstellungen → Lesezeichen → Exportieren |
|
||||||
| Firefox | Lesezeichen → Alle Lesezeichen → Importieren und Sichern → Als HTML 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
|
## 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)
|
- Speicherung in `chrome.storage.local` (Chromium) bzw. `browser.storage.local` (Firefox)
|
||||||
- Keine Tracker, keine Analytics, keine Werbung
|
- Keine Tracker, keine Analytics, keine Werbung
|
||||||
- Keine Cookies, keine Session-Daten
|
- 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`
|
- Permissions: `storage`, `bookmarks`
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -172,10 +185,13 @@ hellion-newtab/
|
|||||||
├── manifest.json # Chrome, Edge, Brave, Opera, Vivaldi (MV3)
|
├── manifest.json # Chrome, Edge, Brave, Opera, Vivaldi (MV3)
|
||||||
├── manifest.firefox.json # Firefox (MV2)
|
├── manifest.firefox.json # Firefox (MV2)
|
||||||
├── newtab.html # Haupt-HTML (UI-Struktur, Modals, Settings Panel)
|
├── 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/
|
├── src/
|
||||||
│ ├── js/
|
│ ├── js/
|
||||||
│ │ ├── storage.js # Storage Abstraction + Quota-Pruefung
|
│ │ ├── storage.js # Storage Abstraction + Quota-Prüfung
|
||||||
│ │ ├── state.js # Globaler State, Defaults, Hilfsfunktionen
|
│ │ ├── state.js # Globaler State, Defaults, Hilfsfunktionen
|
||||||
│ │ ├── themes.js # Theme-Definitionen & Anwendungslogik
|
│ │ ├── themes.js # Theme-Definitionen & Anwendungslogik
|
||||||
│ │ ├── boards.js # Board/Bookmark Rendering, Event Delegation, Modals
|
│ │ ├── boards.js # Board/Bookmark Rendering, Event Delegation, Modals
|
||||||
@@ -190,9 +206,9 @@ hellion-newtab/
|
|||||||
│
|
│
|
||||||
├── assets/
|
├── assets/
|
||||||
│ ├── themes/ # 8 Theme-Hintergrundbilder
|
│ ├── themes/ # 8 Theme-Hintergrundbilder
|
||||||
│ │ ├── bg-astronaut.jpg
|
│ │ ├── bg-nebula.jpg
|
||||||
│ │ ├── bg-cosmic-clock.jpg
|
│ │ ├── bg-crescent.jpg
|
||||||
│ │ ├── bg-void-mage.jpg
|
│ │ ├── bg-event-horizon.jpg
|
||||||
│ │ ├── bg-merchantman.webp
|
│ │ ├── bg-merchantman.webp
|
||||||
│ │ ├── bg-julia-jin.png
|
│ │ ├── bg-julia-jin.png
|
||||||
│ │ ├── bg-sc-sunset.jpg
|
│ │ ├── bg-sc-sunset.jpg
|
||||||
@@ -226,23 +242,23 @@ hellion-newtab/
|
|||||||
|
|
||||||
### Security Scan (`security.yml`)
|
### Security Scan (`security.yml`)
|
||||||
|
|
||||||
- **CodeQL-Analyse** — Statische Sicherheitsanalyse fuer JavaScript
|
- **CodeQL-Analyse** — Statische Sicherheitsanalyse für JavaScript
|
||||||
- **Dependency Review** — Prueft Pull Requests auf bekannte Schwachstellen
|
- **Dependency Review** — Prüft Pull Requests auf bekannte Schwachstellen
|
||||||
- **Zeitplan** — Automatisch wöchentlich (Montag 06:00 UTC) + bei Push/PR
|
- **Zeitplan** — Automatisch wöchentlich (Montag 06:00 UTC) + bei Push/PR
|
||||||
|
|
||||||
### Code Quality (`quality.yml`)
|
### Code Quality (`quality.yml`)
|
||||||
|
|
||||||
- **Projektstruktur** — Alle Pflichtdateien und -ordner vorhanden
|
- **Projektstruktur** — Alle Pflichtdateien und -ordner vorhanden
|
||||||
- **Manifest-Validierung** — JSON-Syntax, Version, Permissions
|
- **Manifest-Validierung** — JSON-Syntax, Version, Permissions
|
||||||
- **JavaScript Syntax-Check** — `node --check` fuer alle JS-Dateien
|
- **JavaScript Syntax-Check** — `node --check` für alle JS-Dateien
|
||||||
- **Versions-Konsistenz** — manifest.json, manifest.firefox.json und newtab.html muessen übereinstimmen
|
- **Versions-Konsistenz** — manifest.json, manifest.firefox.json und newtab.html müssen übereinstimmen
|
||||||
- **Icon-Pruefung** — Alle Extension-Icons vorhanden
|
- **Icon-Prüfung** — Alle Extension-Icons vorhanden
|
||||||
|
|
||||||
### Release (`release.yml`)
|
### Release (`release.yml`)
|
||||||
|
|
||||||
- **Trigger** — Bei Git-Tag (`v*`)
|
- **Trigger** — Bei Git-Tag (`v*`)
|
||||||
- **Pakete** — Chrome-ZIP (MV3) + Firefox-ZIP (MV2)
|
- **Pakete** — Chrome-ZIP (MV3) + Firefox-ZIP (MV2)
|
||||||
- **Checksummen** — SHA256 fuer alle Artefakte
|
- **Checksummen** — SHA256 für alle Artefakte
|
||||||
- **GitHub Release** — Automatisch mit Installationsanleitung
|
- **GitHub Release** — Automatisch mit Installationsanleitung
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -262,17 +278,30 @@ git clone https://github.com/JonKazama-Hellion/Hellion-NewTab.git
|
|||||||
|
|
||||||
# Extension im Browser laden (siehe Installation)
|
# Extension im Browser laden (siehe Installation)
|
||||||
|
|
||||||
# Nach Aenderungen: Extension neu laden
|
# Nach Änderungen: Extension neu laden
|
||||||
chrome://extensions → Hellion NewTab → 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
|
## 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) |
|
| **Web** | [hellion-media.de](https://hellion-media.de) |
|
||||||
| **Impressum** | [hellion-media.de/impressum](https://hellion-media.de/impressum) |
|
| **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) |
|
| **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
|
- Projektstruktur in `src/js/`, `src/css/`, `assets/` aufgeteilt
|
||||||
- JS in 10 Module aufgeteilt (storage, state, themes, boards, drag, settings, search, sticky, data, app)
|
- JS in 10 Module aufgeteilt (storage, state, themes, boards, drag, settings, search, sticky, data, app)
|
||||||
- Firefox-Kompatibilitaet (`manifest.firefox.json`, Manifest V2)
|
- Firefox-Kompatibilität (`manifest.firefox.json`, Manifest V2)
|
||||||
- Vivaldi bestaetigt kompatibel
|
- Vivaldi bestätigt kompatibel
|
||||||
- Theme-Bildpfade korrigiert (Settings Preview)
|
- Theme-Bildpfade korrigiert (Settings Preview)
|
||||||
- URL-Validierung bei Bookmark-Erstellung
|
- URL-Validierung bei Bookmark-Erstellung
|
||||||
- JSON-Import mit Board- und Bookmark-Struktur-Validierung
|
- JSON-Import mit Board- und Bookmark-Struktur-Validierung
|
||||||
- XSS-Schutz: createElement statt innerHTML fuer Bookmarks
|
- XSS-Schutz: createElement statt innerHTML für Bookmarks
|
||||||
- Storage-Quota-Pruefung mit Warnung bei 8 MB+
|
- Storage-Quota-Prüfung mit Warnung bei 8 MB+
|
||||||
- Event Delegation fuer Bookmark-Klicks (Performance)
|
- Event Delegation für Bookmark-Klicks (Performance)
|
||||||
- Responsive Design (Tablet 768px, Smartphone 480px)
|
- Responsive Design (Tablet 768px, Smartphone 480px)
|
||||||
- Sticky Note Header-Kollision behoben
|
- Sticky Note Header-Kollision behoben
|
||||||
- FileReader-Fehlerbehandlung fuer Hintergrundbild-Upload
|
- FileReader-Fehlerbehandlung für Hintergrundbild-Upload
|
||||||
- GitHub Actions: Security Scan, Code Quality, Release Automation
|
- 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
|
### v1.1.0 — 20.03.2026
|
||||||
|
|
||||||
@@ -313,13 +346,13 @@ Kein Build-Schritt noetig. Dateien aendern, Extension neu laden, fertig.
|
|||||||
- About / Impressum in Settings
|
- About / Impressum in Settings
|
||||||
- Board Blur-Funktion (Privat-Modus)
|
- Board Blur-Funktion (Privat-Modus)
|
||||||
- Drag & Drop auf Pointer Events umgestellt
|
- Drag & Drop auf Pointer Events umgestellt
|
||||||
- Opera / Opera GX Kompatibilitaet
|
- Opera / Opera GX Kompatibilität
|
||||||
|
|
||||||
### v1.0.0 — 20.03.2026
|
### v1.0.0 — 20.03.2026
|
||||||
|
|
||||||
- Initiales Release
|
- Initiales Release
|
||||||
- Boards & Bookmarks mit Drag & Drop
|
- Boards & Bookmarks mit Drag & Drop
|
||||||
- 3 Themes (Astronaut, Cosmic Clock, Void Mage)
|
- 3 Themes (Nebula, Crescent, Event Horizon)
|
||||||
- HTML-Import (Browser-Lesezeichen)
|
- HTML-Import (Browser-Lesezeichen)
|
||||||
- Settings Panel
|
- Settings Panel
|
||||||
|
|
||||||
@@ -327,7 +360,7 @@ Kein Build-Schritt noetig. Dateien aendern, Extension neu laden, fertig.
|
|||||||
|
|
||||||
### Einsatz von AI
|
### 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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+76
@@ -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
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 119 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 137 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 102 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 157 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 211 KiB |
+12
-10
@@ -92,19 +92,19 @@
|
|||||||
<!-- THEME PICKER -->
|
<!-- THEME PICKER -->
|
||||||
<h3 class="settings-section-title">THEME</h3>
|
<h3 class="settings-section-title">THEME</h3>
|
||||||
<div class="theme-grid">
|
<div class="theme-grid">
|
||||||
<div class="theme-card active" data-value="astronaut">
|
<div class="theme-card active" data-value="nebula">
|
||||||
<img class="theme-card-img" src="assets/themes/bg-astronaut.jpg" alt="Astronaut" />
|
<img class="theme-card-img" src="assets/themes/bg-nebula.jpg" alt="Nebula" />
|
||||||
<span class="theme-card-label">Astronaut</span>
|
<span class="theme-card-label">Nebula</span>
|
||||||
<span class="theme-card-check">✓</span>
|
<span class="theme-card-check">✓</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="theme-card" data-value="cosmic-clock">
|
<div class="theme-card" data-value="crescent">
|
||||||
<img class="theme-card-img" src="assets/themes/bg-cosmic-clock.jpg" alt="Cosmic Clock" />
|
<img class="theme-card-img" src="assets/themes/bg-crescent.jpg" alt="Crescent" />
|
||||||
<span class="theme-card-label">Cosmic</span>
|
<span class="theme-card-label">Crescent</span>
|
||||||
<span class="theme-card-check">✓</span>
|
<span class="theme-card-check">✓</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="theme-card" data-value="void-mage">
|
<div class="theme-card" data-value="event-horizon">
|
||||||
<img class="theme-card-img" src="assets/themes/bg-void-mage.jpg" alt="Void Mage" />
|
<img class="theme-card-img" src="assets/themes/bg-event-horizon.jpg" alt="Event Horizon" />
|
||||||
<span class="theme-card-label">Void Mage</span>
|
<span class="theme-card-label">Event Horizon</span>
|
||||||
<span class="theme-card-check">✓</span>
|
<span class="theme-card-check">✓</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="theme-card" data-value="merchantman">
|
<div class="theme-card" data-value="merchantman">
|
||||||
@@ -257,7 +257,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="about-info-row">
|
<div class="about-info-row">
|
||||||
<span class="about-info-label">Lizenz</span>
|
<span class="about-info-label">Lizenz</span>
|
||||||
<span class="about-info-value">Proprietär · Nicht open source</span>
|
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" class="about-info-value" style="color:var(--text-secondary);text-decoration:none">CC BY-NC-SA 4.0</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="about-info-row">
|
<div class="about-info-row">
|
||||||
<span class="about-info-label">Datenspeicherung</span>
|
<span class="about-info-label">Datenspeicherung</span>
|
||||||
@@ -279,9 +279,11 @@
|
|||||||
<div class="about-browser-tags">
|
<div class="about-browser-tags">
|
||||||
<span class="browser-tag">Chrome</span>
|
<span class="browser-tag">Chrome</span>
|
||||||
<span class="browser-tag">Edge</span>
|
<span class="browser-tag">Edge</span>
|
||||||
|
<span class="browser-tag">Firefox</span>
|
||||||
<span class="browser-tag">Opera</span>
|
<span class="browser-tag">Opera</span>
|
||||||
<span class="browser-tag">Opera GX</span>
|
<span class="browser-tag">Opera GX</span>
|
||||||
<span class="browser-tag">Brave</span>
|
<span class="browser-tag">Brave</span>
|
||||||
|
<span class="browser-tag">Vivaldi</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+79
-81
@@ -1,22 +1,22 @@
|
|||||||
/* =============================================
|
/* =============================================
|
||||||
HELLION NEWTAB — Theme System
|
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');
|
@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 {
|
:root {
|
||||||
--accent: #ffa032;
|
--accent: #d65cff;
|
||||||
--accent-dim: rgba(255, 160, 50, 0.15);
|
--accent-dim: rgba(214, 92, 255, 0.15);
|
||||||
--accent-glow: rgba(255, 160, 50, 0.08);
|
--accent-glow: rgba(214, 92, 255, 0.08);
|
||||||
--border-accent: rgba(255, 160, 50, 0.35);
|
--border-accent: rgba(214, 92, 255, 0.35);
|
||||||
--bg-primary: #08090d;
|
--bg-primary: #0a060e;
|
||||||
--bg-board: rgba(10, 12, 18, 0.48);
|
--bg-board: rgba(12, 8, 18, 0.48);
|
||||||
--border: rgba(255, 255, 255, 0.06);
|
--border: rgba(255, 255, 255, 0.06);
|
||||||
--text-primary: #dde0ee;
|
--text-primary: #e0d8f0;
|
||||||
--text-secondary: #7a7d8e;
|
--text-secondary: #8a7a9e;
|
||||||
--text-muted: #44475a;
|
--text-muted: #4a3860;
|
||||||
--danger: #e05555;
|
--danger: #e05555;
|
||||||
--font-display: 'Rajdhani', sans-serif;
|
--font-display: 'Rajdhani', sans-serif;
|
||||||
--font-body: 'Inter', sans-serif;
|
--font-body: 'Inter', sans-serif;
|
||||||
@@ -25,93 +25,91 @@
|
|||||||
--board-width: 240px;
|
--board-width: 240px;
|
||||||
--spacing: 10px;
|
--spacing: 10px;
|
||||||
--spacing-compact: 5px;
|
--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%);
|
--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(8,9,13,0.90);
|
--header-bg: rgba(10,6,14,0.90);
|
||||||
--board-hover-border: rgba(255,160,50,0.22);
|
--board-hover-border: rgba(214,92,255,0.22);
|
||||||
--toggle-on-bg: rgba(255,160,50,0.22);
|
--toggle-on-bg: rgba(214,92,255,0.22);
|
||||||
--logo-shadow: rgba(255,160,50,0.45);
|
--logo-shadow: rgba(214,92,255,0.45);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ============================================
|
/* ============================================
|
||||||
THEME: ASTRONAUT
|
THEME: NEBULA (magenta / cosmic nebula)
|
||||||
============================================ */
|
============================================ */
|
||||||
[data-theme="astronaut"] {
|
[data-theme="nebula"] {
|
||||||
--accent: #ffa032;
|
--accent: #d65cff;
|
||||||
--accent-dim: rgba(255, 160, 50, 0.14);
|
--accent-dim: rgba(214, 92, 255, 0.14);
|
||||||
--accent-glow: rgba(255, 160, 50, 0.06);
|
--accent-glow: rgba(214, 92, 255, 0.06);
|
||||||
--border-accent: rgba(255, 160, 50, 0.32);
|
--border-accent: rgba(214, 92, 255, 0.32);
|
||||||
--bg-primary: #07080c;
|
--bg-primary: #0a060e;
|
||||||
--bg-board: rgba(9, 10, 16, 0.46);
|
--bg-board: rgba(12, 8, 18, 0.48);
|
||||||
--border: rgba(255, 255, 255, 0.055);
|
--border: rgba(255, 255, 255, 0.055);
|
||||||
--text-primary: #d8dbe8;
|
--text-primary: #e0d8f0;
|
||||||
--text-secondary: #72758a;
|
--text-secondary: #8a7a9e;
|
||||||
--text-muted: #404358;
|
--text-muted: #4a3860;
|
||||||
--font-display: 'Rajdhani', sans-serif;
|
--font-display: 'Rajdhani', sans-serif;
|
||||||
--font-body: 'Inter', 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%);
|
--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(7,8,12,0.92);
|
--header-bg: rgba(10,6,14,0.92);
|
||||||
--board-hover-border: rgba(255,160,50,0.22);
|
--board-hover-border: rgba(214,92,255,0.22);
|
||||||
--toggle-on-bg: rgba(255,160,50,0.22);
|
--toggle-on-bg: rgba(214,92,255,0.22);
|
||||||
--logo-shadow: rgba(255,160,50,0.50);
|
--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"] {
|
[data-theme="crescent"] {
|
||||||
--accent: #d4a843;
|
--accent: #c8a84a;
|
||||||
--accent-dim: rgba(212, 168, 67, 0.16);
|
--accent-dim: rgba(200, 168, 74, 0.16);
|
||||||
--accent-glow: rgba(212, 168, 67, 0.07);
|
--accent-glow: rgba(200, 168, 74, 0.07);
|
||||||
--border-accent: rgba(212, 168, 67, 0.38);
|
--border-accent: rgba(200, 168, 74, 0.35);
|
||||||
--bg-primary: #0d090c;
|
--bg-primary: #080a12;
|
||||||
--bg-board: rgba(18, 10, 14, 0.50);
|
--bg-board: rgba(10, 14, 26, 0.50);
|
||||||
--border: rgba(212, 168, 67, 0.09);
|
--border: rgba(200, 168, 74, 0.09);
|
||||||
--text-primary: #ecdccc;
|
--text-primary: #d8dce8;
|
||||||
--text-secondary: #8a6e5e;
|
--text-secondary: #6a7090;
|
||||||
--text-muted: #523930;
|
--text-muted: #363c55;
|
||||||
--font-display: 'Cinzel', serif;
|
--font-display: 'Cinzel', serif;
|
||||||
--font-body: 'Inter', sans-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%);
|
--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(13,9,12,0.93);
|
--header-bg: rgba(8,10,18,0.93);
|
||||||
--board-hover-border: rgba(212,168,67,0.28);
|
--board-hover-border: rgba(200,168,74,0.26);
|
||||||
--toggle-on-bg: rgba(212,168,67,0.22);
|
--toggle-on-bg: rgba(200,168,74,0.22);
|
||||||
--logo-shadow: rgba(212,168,67,0.55);
|
--logo-shadow: rgba(200,168,74,0.55);
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-theme="cosmic-clock"] .logo { font-family: 'Cinzel', serif; letter-spacing: 4px; }
|
[data-theme="crescent"] .logo { font-family: 'Cinzel', serif; letter-spacing: 4px; }
|
||||||
[data-theme="cosmic-clock"] .clock { font-family: 'Cinzel', serif; }
|
[data-theme="crescent"] .clock { font-family: 'Cinzel', serif; }
|
||||||
[data-theme="cosmic-clock"] .board-title { letter-spacing: 2px; }
|
[data-theme="crescent"] .board-title { letter-spacing: 2px; }
|
||||||
[data-theme="cosmic-clock"] .bm-item:hover { background: rgba(212,168,67,0.05); }
|
[data-theme="crescent"] .bm-item:hover { background: rgba(200,168,74,0.05); }
|
||||||
[data-theme="cosmic-clock"] .board { border-color: rgba(212,168,67,0.10); }
|
[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"] {
|
[data-theme="event-horizon"] {
|
||||||
--accent: #9b6fff;
|
--accent: #e08030;
|
||||||
--accent-dim: rgba(155, 111, 255, 0.15);
|
--accent-dim: rgba(224, 128, 48, 0.15);
|
||||||
--accent-glow: rgba(155, 111, 255, 0.07);
|
--accent-glow: rgba(224, 128, 48, 0.07);
|
||||||
--border-accent: rgba(155, 111, 255, 0.35);
|
--border-accent: rgba(224, 128, 48, 0.35);
|
||||||
--bg-primary: #07060f;
|
--bg-primary: #06050c;
|
||||||
--bg-board: rgba(10, 8, 20, 0.50);
|
--bg-board: rgba(8, 6, 16, 0.52);
|
||||||
--border: rgba(155, 111, 255, 0.09);
|
--border: rgba(224, 128, 48, 0.08);
|
||||||
--text-primary: #d4cef5;
|
--text-primary: #d8d0e8;
|
||||||
--text-secondary: #7068a0;
|
--text-secondary: #7a6898;
|
||||||
--text-muted: #3e3860;
|
--text-muted: #3c3058;
|
||||||
--font-display: 'Cinzel', serif;
|
--font-display: 'Rajdhani', sans-serif;
|
||||||
--font-body: 'Inter', 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%);
|
--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(7,6,15,0.93);
|
--header-bg: rgba(6,5,12,0.93);
|
||||||
--board-hover-border: rgba(155,111,255,0.28);
|
--board-hover-border: rgba(224,128,48,0.26);
|
||||||
--toggle-on-bg: rgba(155,111,255,0.22);
|
--toggle-on-bg: rgba(224,128,48,0.22);
|
||||||
--logo-shadow: rgba(155,111,255,0.60);
|
--logo-shadow: rgba(224,128,48,0.55);
|
||||||
}
|
}
|
||||||
|
[data-theme="event-horizon"] .board { border-color: rgba(224,128,48,0.10); }
|
||||||
[data-theme="void-mage"] .logo { font-family: 'Cinzel', serif; letter-spacing: 5px; }
|
[data-theme="event-horizon"] .bm-item:hover { background: rgba(224,128,48,0.05); }
|
||||||
[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); }
|
|
||||||
|
|
||||||
|
|
||||||
/* ============================================
|
/* ============================================
|
||||||
@@ -539,9 +537,9 @@ body.show-desc .bm-desc { display: block; }
|
|||||||
text-align: center; text-transform: uppercase;
|
text-align: center; text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
.theme-card[data-value="astronaut"] .theme-card-label { color: #ffa032; }
|
.theme-card[data-value="nebula"] .theme-card-label { color: #d65cff; }
|
||||||
.theme-card[data-value="cosmic-clock"] .theme-card-label { color: #d4a843; }
|
.theme-card[data-value="crescent"] .theme-card-label { color: #c8a84a; }
|
||||||
.theme-card[data-value="void-mage"] .theme-card-label { color: #9b6fff; }
|
.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="merchantman"] .theme-card-label { color: #4ecfcf; }
|
||||||
.theme-card[data-value="julia-jin"] .theme-card-label { color: #5b9fff; }
|
.theme-card[data-value="julia-jin"] .theme-card-label { color: #5b9fff; }
|
||||||
.theme-card[data-value="sc-sunset"] .theme-card-label { color: #f07c30; }
|
.theme-card[data-value="sc-sunset"] .theme-card-label { color: #f07c30; }
|
||||||
|
|||||||
+2
-2
@@ -33,7 +33,7 @@ function applySettings() {
|
|||||||
const showSearchEl = document.getElementById('settingShowSearch');
|
const showSearchEl = document.getElementById('settingShowSearch');
|
||||||
if (showSearchEl) showSearchEl.checked = settings.showSearch;
|
if (showSearchEl) showSearchEl.checked = settings.showSearch;
|
||||||
|
|
||||||
applyTheme(settings.theme || 'astronaut', !!settings.bgUrl);
|
applyTheme(settings.theme || 'nebula', !!settings.bgUrl);
|
||||||
|
|
||||||
if (settings.bgUrl) {
|
if (settings.bgUrl) {
|
||||||
document.getElementById('bgLayer').style.backgroundImage = `url('${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;
|
if (!confirm('Wirklich alle Boards und Einstellungen löschen? Nicht rückgängig machbar.')) return;
|
||||||
boards = [];
|
boards = [];
|
||||||
settings = { compact: false, shortenTitles: false, newTab: true, showDesc: false,
|
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' };
|
showSearch: true, searchEngine: 'google' };
|
||||||
await saveBoards();
|
await saveBoards();
|
||||||
await saveSettings();
|
await saveSettings();
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ let settings = {
|
|||||||
hideExtra: false,
|
hideExtra: false,
|
||||||
visibleCount: 10,
|
visibleCount: 10,
|
||||||
bgUrl: '',
|
bgUrl: '',
|
||||||
theme: 'astronaut',
|
theme: 'nebula',
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
searchEngine: 'google'
|
searchEngine: 'google'
|
||||||
};
|
};
|
||||||
|
|||||||
+3
-3
@@ -4,9 +4,9 @@
|
|||||||
============================================= */
|
============================================= */
|
||||||
|
|
||||||
const THEMES = {
|
const THEMES = {
|
||||||
'astronaut': { bg: 'assets/themes/bg-astronaut.jpg' },
|
'nebula': { bg: 'assets/themes/bg-nebula.jpg' },
|
||||||
'cosmic-clock': { bg: 'assets/themes/bg-cosmic-clock.jpg' },
|
'crescent': { bg: 'assets/themes/bg-crescent.jpg' },
|
||||||
'void-mage': { bg: 'assets/themes/bg-void-mage.jpg' },
|
'event-horizon': { bg: 'assets/themes/bg-event-horizon.jpg' },
|
||||||
'merchantman': { bg: 'assets/themes/bg-merchantman.webp' },
|
'merchantman': { bg: 'assets/themes/bg-merchantman.webp' },
|
||||||
'julia-jin': { bg: 'assets/themes/bg-julia-jin.png' },
|
'julia-jin': { bg: 'assets/themes/bg-julia-jin.png' },
|
||||||
'sc-sunset': { bg: 'assets/themes/bg-sc-sunset.jpg' },
|
'sc-sunset': { bg: 'assets/themes/bg-sc-sunset.jpg' },
|
||||||
|
|||||||
Reference in New Issue
Block a user