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:
2026-03-20 23:43:16 +01:00
parent 0ff9f1e252
commit 65e956c57d
15 changed files with 315 additions and 142 deletions
+47
View File
@@ -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
+17
View File
@@ -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
+78 -45
View File
@@ -3,12 +3,12 @@
![Version](https://img.shields.io/badge/Version-1.2.0-blue) ![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) ![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) ![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) ![Privacy](https://img.shields.io/badge/Privacy-100%25%20Lokal-448f45)
**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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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' },