docs(release): CHANGELOG, README und GitHub Actions aktualisieren

- CHANGELOG.md mit v1.5.2 Eintrag erstellt
- README.md Architektur-Baum aktualisiert (dialog.js, onboarding.js, opera/)
- release.yml erstellt 3 ZIP-Pakete (Chrome, Firefox, Opera)
- quality.yml prueft alle 3 Manifests auf V3 und Versions-Konsistenz
This commit is contained in:
2026-03-21 19:08:45 +01:00
parent 74e3eaefcf
commit 6172332be7
4 changed files with 228 additions and 122 deletions
+31 -12
View File
@@ -18,43 +18,56 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: HTML-Validierung (newtab.html existiert)
- name: Projektstruktur prüfen
run: |
echo "Prüfe Projektstruktur..."
test -f manifest.json || (echo "FEHLER: manifest.json fehlt!" && exit 1)
test -f manifest.firefox.json || (echo "FEHLER: manifest.firefox.json fehlt!" && exit 1)
test -f manifest.opera.json || (echo "FEHLER: manifest.opera.json fehlt!" && exit 1)
test -f newtab.html || (echo "FEHLER: newtab.html fehlt!" && exit 1)
test -d src/js || (echo "FEHLER: src/js/ fehlt!" && exit 1)
test -d src/js/opera || (echo "FEHLER: src/js/opera/ fehlt!" && exit 1)
test -d src/css || (echo "FEHLER: src/css/ fehlt!" && exit 1)
test -d assets/icons || (echo "FEHLER: assets/icons/ fehlt!" && exit 1)
test -d assets/themes || (echo "FEHLER: assets/themes/ fehlt!" && exit 1)
test -d assets/fonts || (echo "FEHLER: assets/fonts/ fehlt!" && exit 1)
echo "Projektstruktur OK"
- name: Manifest-Validierung
- name: Manifest-Validierung (alle 3)
run: |
echo "Prüfe manifest.json..."
echo "Prüfe Manifests..."
python3 -c "
import json, sys
with open('manifest.json') as f:
m = json.load(f)
assert m.get('manifest_version') == 3, 'Manifest V3 erwartet'
assert m.get('name'), 'Name fehlt'
assert m.get('version'), 'Version fehlt'
assert 'storage' in m.get('permissions', []), 'Storage Permission fehlt'
assert m.get('manifest_version') == 3, 'Chrome: Manifest V3 erwartet'
assert m.get('name'), 'Chrome: Name fehlt'
assert m.get('version'), 'Chrome: Version fehlt'
assert 'storage' in m.get('permissions', []), 'Chrome: Storage Permission fehlt'
print('manifest.json (V3) OK — Version:', m['version'])
with open('manifest.firefox.json') as f:
mf = json.load(f)
assert mf.get('manifest_version') == 2, 'Firefox Manifest V2 erwartet'
assert mf['version'] == m['version'], 'Versionen stimmen nicht überein!'
print('manifest.firefox.json (V2) OK — Version:', mf['version'])
assert mf.get('manifest_version') == 3, 'Firefox: Manifest V3 erwartet'
assert mf['version'] == m['version'], 'Firefox: Version stimmt nicht mit Chrome überein!'
assert 'browser_specific_settings' in mf, 'Firefox: browser_specific_settings fehlt'
print('manifest.firefox.json (V3) OK — Version:', mf['version'])
with open('manifest.opera.json') as f:
mo = json.load(f)
assert mo.get('manifest_version') == 3, 'Opera: Manifest V3 erwartet'
assert mo['version'] == m['version'], 'Opera: Version stimmt nicht mit Chrome überein!'
assert 'tabs' in mo.get('permissions', []), 'Opera: Tabs Permission fehlt'
assert 'background' in mo, 'Opera: Background Service Worker fehlt'
print('manifest.opera.json (V3) OK — Version:', mo['version'])
"
- name: JavaScript Syntax-Check
run: |
echo "Prüfe JavaScript-Syntax..."
ERRORS=0
for f in src/js/*.js; do
for f in src/js/*.js src/js/opera/*.js; do
if ! node --check "$f" 2>&1; then
echo "SYNTAX-FEHLER in $f"
ERRORS=$((ERRORS + 1))
@@ -77,12 +90,18 @@ jobs:
run: |
MANIFEST_VER=$(python3 -c "import json; print(json.load(open('manifest.json'))['version'])")
FIREFOX_VER=$(python3 -c "import json; print(json.load(open('manifest.firefox.json'))['version'])")
OPERA_VER=$(python3 -c "import json; print(json.load(open('manifest.opera.json'))['version'])")
HTML_VER=$(grep -oP 'Version \K[0-9]+\.[0-9]+\.[0-9]+' newtab.html || echo 'NICHT GEFUNDEN')
echo "manifest.json: $MANIFEST_VER"
echo "manifest.firefox.json: $FIREFOX_VER"
echo "manifest.opera.json: $OPERA_VER"
echo "newtab.html: $HTML_VER"
if [ "$MANIFEST_VER" != "$FIREFOX_VER" ]; then
echo "FEHLER: Versionen in Manifests stimmen nicht überein!"
echo "FEHLER: Chrome/Firefox Versionen stimmen nicht überein!"
exit 1
fi
if [ "$MANIFEST_VER" != "$OPERA_VER" ]; then
echo "FEHLER: Chrome/Opera Versionen stimmen nicht überein!"
exit 1
fi
if [ "$MANIFEST_VER" != "$HTML_VER" ]; then
+19 -10
View File
@@ -1,4 +1,4 @@
# Release — erstellt ZIP-Pakete für Chrome und Firefox bei neuem Tag
# Release — erstellt ZIP-Pakete für Chrome, Firefox und Opera bei neuem Tag
name: Release
on:
@@ -25,18 +25,25 @@ jobs:
run: |
mkdir -p dist
zip -r "dist/hellion-newtab-${{ steps.version.outputs.tag }}-chrome.zip" \
manifest.json newtab.html src/ assets/ \
-x "*.git*" "dist/*" ".github/*"
manifest.json newtab.html src/js/*.js src/css/ assets/ \
-x "*.git*" "dist/*" ".github/*" "src/js/opera/*"
- name: Firefox ZIP erstellen (Manifest V2)
- name: Firefox ZIP erstellen (Manifest V3)
run: |
# manifest.firefox.json wird zu manifest.json für Firefox
cp manifest.json manifest.chrome-backup.json
cp manifest.firefox.json manifest.json
zip -r "dist/hellion-newtab-${{ steps.version.outputs.tag }}-firefox.zip" \
manifest.json newtab.html src/ assets/ \
-x "*.git*" "dist/*" ".github/*" "manifest.chrome-backup.json" "manifest.firefox.json"
# Wiederherstellen
manifest.json newtab.html src/js/*.js src/css/ assets/ \
-x "*.git*" "dist/*" ".github/*" "manifest.chrome-backup.json" "manifest.firefox.json" "src/js/opera/*"
mv manifest.chrome-backup.json manifest.json
- name: Opera/Opera GX ZIP erstellen (Manifest V3 + Workaround)
run: |
cp manifest.json manifest.chrome-backup.json
cp manifest.opera.json manifest.json
zip -r "dist/hellion-newtab-${{ steps.version.outputs.tag }}-opera.zip" \
manifest.json newtab.html src/js/*.js src/js/opera/ src/css/ assets/ \
-x "*.git*" "dist/*" ".github/*" "manifest.chrome-backup.json" "manifest.opera.json"
mv manifest.chrome-backup.json manifest.json
- name: SHA256 Checksummen erstellen
@@ -53,8 +60,9 @@ jobs:
## Hellion NewTab ${{ steps.version.outputs.tag }}
### Installation
- **Chrome / Edge / Brave / Opera / Vivaldi:** `hellion-newtab-${{ steps.version.outputs.tag }}-chrome.zip` herunterladen und entpacken
- **Firefox:** `hellion-newtab-${{ steps.version.outputs.tag }}-firefox.zip` herunterladen und entpacken
- **Chrome / Edge / Brave / Vivaldi:** `hellion-newtab-${{ steps.version.outputs.tag }}-chrome.zip`
- **Firefox:** `hellion-newtab-${{ steps.version.outputs.tag }}-firefox.zip`
- **Opera / Opera GX:** `hellion-newtab-${{ steps.version.outputs.tag }}-opera.zip`
Siehe [README](README.md) für die vollständige Installationsanleitung.
@@ -63,5 +71,6 @@ jobs:
files: |
dist/hellion-newtab-${{ steps.version.outputs.tag }}-chrome.zip
dist/hellion-newtab-${{ steps.version.outputs.tag }}-firefox.zip
dist/hellion-newtab-${{ steps.version.outputs.tag }}-opera.zip
dist/checksums-sha256.txt
generate_release_notes: true
+92
View File
@@ -0,0 +1,92 @@
# ⬡ Hellion Dashboard — Changelog
Alle relevanten Änderungen pro Version. Format basiert auf [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
---
### v1.5.2 — 21.03.2026
#### Neue Features
- **Custom Dialog-System** — Native `confirm()` und `alert()` durch Frosted-Glass-Dialoge ersetzt (`dialog.js`)
- **Onboarding** — 6-stufiger Willkommens-Flow beim ersten Start mit Boards, Themes, Features und Backup-Hinweis
- **Backup-Reminder** — Erinnert alle 7 Tage an JSON-Export, warnt vor Datenverlust bei Browser-Reset
- **Theme-Modal** — Theme-Picker als eigenes Modal aus Settings ausgelagert, eigener Header-Button
- **Accordion-Settings** — Alle Settings-Sektionen einklappbar mit Chevron (About/Danger Zone standardmäßig zu)
#### Verbesserungen
- Fonts von Google Fonts API auf lokale WOFF2-Dateien umgestellt (DSGVO)
- Ungenutzte Font-Dateien entfernt (~388 KB gespart)
- `innerHTML` komplett durch `createElement`/`createElementNS` ersetzt (XSS-Schutz)
- SVG-Icons via `createElementNS` statt Inline-HTML
- Drag & Drop: Inline-Styles durch CSS-Klassen ersetzt (`.drag-ghost`, `.drag-over`, `.dragging-source`)
- Suchleisten-Toggle von DATA nach BEHAVIOR verschoben
- Nicht implementiertes "Quick Save" UI-Element entfernt
- Onboarding wiederholbar über Settings → Help
#### Opera / Opera GX
- `manifest.opera.json` hinzugefügt (MV3 mit Workaround-Skripten)
- `src/js/opera/background.js` — Tab-Management gegen Opera Speed Dial
- `src/js/opera/redirect.js` — Content Script Redirect bei `document_start`
#### Firefox
- `manifest.firefox.json` auf Manifest V3 migriert
- `browser_specific_settings` mit Gecko-ID und `data_collection_permissions`
#### Build & CI
- GitHub Actions: Release erstellt jetzt 3 ZIP-Pakete (Chrome, Firefox, Opera)
- Quality-Check prüft alle 3 Manifests und Opera-Ordner
---
### v1.2.0 — 20.03.2026
- Projektstruktur in `src/js/`, `src/css/`, `assets/` aufgeteilt
- JS in 10 Module aufgeteilt (storage, state, themes, boards, drag, settings, search, sticky, data, app)
- Firefox-Kompatibilität (`manifest.firefox.json`, Manifest V3)
- 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` 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 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
- 5 neue Themes (Merchantman, Julia & Jin, SC Sunset, Hellion HUD, Hellion Energy)
- Suchleiste (Google / DuckDuckGo / Bing)
- Sticky Note Widget
- JSON Export & Import
- Datum neben der Uhr
- About / Impressum in Settings
- Board Blur-Funktion (Privat-Modus)
- Drag & Drop auf Pointer Events umgestellt
- Opera / Opera GX Kompatibilität
---
### v1.0.0 — 20.03.2026
- Initiales Release
- Boards & Bookmarks mit Drag & Drop
- 3 Themes (Nebula, Crescent, Event Horizon)
- HTML-Import (Browser-Lesezeichen)
- Settings Panel
---
**Hellion NewTab** — [Hellion Online Media](https://hellion-media.de) — JonKazama-Hellion
+85 -99
View File
@@ -1,8 +1,8 @@
# ⬡ Hellion NewTab v1.2.0
# ⬡ Hellion Dashboard v1.5.2
![Version](https://img.shields.io/badge/Version-1.2.0-blue)
![Version](https://img.shields.io/badge/Version-1.5.2-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)
![Manifest](https://img.shields.io/badge/Manifest-V3-green)
![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)
@@ -12,7 +12,7 @@ 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.
Entwickelt von **[Hellion Online Media](https://hellion-media.de)** — JonKazama-Hellion.
Entwickelt von **[Hellion Online Media — Florian Wathling](https://hellion-media.de)** — JonKazama-Hellion.
---
@@ -54,20 +54,20 @@ Was angezeigt wird, ist was gespeichert ist. Keine Magie.
### 8 Themes
| Theme | Akzent | Stil |
| --- | --- | --- |
| 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 | Grün | Circuit Board |
| Hellion Energy | Matrix-Grün | Tactical |
|---|---|---|
| Nebula | `#b359ff` Magenta | Cosmic Nebula |
| Crescent | `#d4bd8a` Gold | Minimalist Night |
| Event Horizon | `#9d5cff` Purple | Deep Space |
| Merchantman | `#2eb8b8` Emerald | Industrial Sci-Fi |
| Julia & Jin | `#7db3ff` Aetherial Blue | FFXIV Night |
| SC Sunset | `#ff8c3d` Amber | Planet-Side |
| Hellion HUD | `#32ff6a` Neon Green | Circuit Board |
| Hellion Energy | `#1eff8e` Acid Green | 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 |
@@ -77,55 +77,83 @@ Was angezeigt wird, ist was gespeichert ist. Keine Magie.
| 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
### Onboarding & Dialoge
- 6-stufiger Willkommens-Flow beim ersten Start
- Custom Frosted-Glass-Dialoge statt nativer Browser-Popups
- Backup-Reminder alle 7 Tage (warnt vor Datenverlust bei Browser-Reset)
### Settings (Accordion)
- Einklappbare Sektionen mit Chevron — About/Danger Zone standardmäßig geschlossen
- 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 öffnen
- Show Descriptions — Beschreibungen unter Bookmarks anzeigen
- Hide Extra Bookmarks — Boards ab 5/10/20 Bookmarks einklappen
- Hintergrundbild — URL oder lokaler Upload
- Suchleiste ein/ausblenden
- JSON Export / Import
- Onboarding wiederholbar
- Danger Zone — Reset aller Daten
### Theme-Picker (eigener Header-Button)
- 8 Themes als zentriertes Modal
- Hintergrundbild per URL oder lokaler Upload
---
## Browser-Kompatibilität
| Browser | Status | Manifest |
| --- | --- | --- |
| Chrome | Kompatibel | V3 (`manifest.json`) |
| Edge | Kompatibel | V3 (`manifest.json`) |
| Brave | Kompatibel | V3 (`manifest.json`) |
| Opera | Kompatibel | V3 (`manifest.json`) |
| Opera GX | Kompatibel | V3 (`manifest.json`) |
| Vivaldi | Kompatibel | V3 (`manifest.json`) |
| Firefox | Kompatibel | V2 (`manifest.firefox.json`) |
|---|---|---|
| Chrome | Kompatibel | V3 (`manifest.json`) |
| Edge | Kompatibel | V3 (`manifest.json`) |
| Brave | Kompatibel | V3 (`manifest.json`) |
| Opera | Kompatibel | V3 (`manifest.opera.json`) |
| Opera GX | Kompatibel | V3 (`manifest.opera.json`) |
| Vivaldi | Kompatibel | V3 (`manifest.json`) |
| Firefox | Kompatibel | V3 (`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 unterstützt.
> **Firefox-Hinweis:** Ab v1.2.0 läuft die Extension auf Manifest V3 — identisch zu Chrome/Edge.
> `manifest.firefox.json` bleibt als separate Datei erhalten für Firefox-spezifische Anpassungen.
---
## Installation
### Chrome / Edge / Brave / Opera / Opera GX / Vivaldi
### Chrome / Edge / Brave / Vivaldi
```text
1. Repository als ZIP herunterladen oder git clone
2. chrome://extensions öffnen (oder edge:// / brave:// / opera://)
2. chrome://extensions öffnen (bzw. edge:// / brave://)
3. Entwicklermodus aktivieren
4. "Entpackte Erweiterung laden" → Ordner auswählen in dem manifest.json liegt
5. Neuen Tab öffnen
```
### Firefox
Firefox benötigt `manifest.json` im Format V2.
### Opera / Opera GX
```bash
# manifest.json durch Firefox-Version ersetzen:
# manifest.opera.json als manifest.json verwenden:
copy manifest.opera.json manifest.json # Windows
cp manifest.opera.json manifest.json # Linux/Mac
```
```text
1. opera://extensions öffnen
2. Entwicklermodus aktivieren
3. "Entpackte Erweiterung laden" → Ordner auswählen
4. Neuen Tab öffnen
```
> **Opera-Hinweis:** Opera GX priorisiert Speed Dial — der enthaltene Workaround
> übernimmt die New-Tab-Seite zuverlässig. Details: [src/js/opera/README.md](src/js/opera/README.md)
### Firefox
```bash
# manifest.firefox.json als manifest.json verwenden:
copy manifest.firefox.json manifest.json # Windows
cp manifest.firefox.json manifest.json # Linux/Mac
```
@@ -144,7 +172,7 @@ cp manifest.firefox.json manifest.json # Linux/Mac
## Browser-Bookmarks exportieren & importieren
| Browser | Export-Pfad |
| --- | --- |
|---|---|
| Chrome / Edge | Einstellungen → Lesezeichen → Exportieren |
| Firefox | Lesezeichen → Alle Lesezeichen → Importieren und Sichern → Als HTML exportieren |
@@ -166,11 +194,11 @@ Die exportierte `.html`-Datei über den **Import**-Button in der Extension laden
## Tech-Stack
| Komponente | Details |
| --- | --- |
|---|---|
| Sprache | JavaScript (Vanilla ES2020, keine Frameworks) |
| Styling | CSS Custom Properties (Theme-System) |
| Fonts | Google Fonts (Rajdhani, Inter, Cinzel) |
| Storage | chrome.storage.local / localStorage Fallback |
| Fonts | Lokale Fonts (Rajdhani, Inter, Cinzel) |
| Storage | `chrome.storage.local` / `localStorage` Fallback |
| Favicons | Google Favicons API (`/s2/favicons`) |
| Drag & Drop | Pointer Events API (nativ) |
| Build | Kein Build-Schritt — direkt lauffähig |
@@ -182,10 +210,12 @@ Die exportierte `.html`-Datei über den **Import**-Button in der Extension laden
```text
hellion-newtab/
├── manifest.json # Chrome, Edge, Brave, Opera, Vivaldi (MV3)
├── manifest.firefox.json # Firefox (MV2)
├── manifest.json # Chrome, Edge, Brave, Vivaldi (MV3)
├── manifest.firefox.json # Firefox (MV3)
├── manifest.opera.json # Opera / Opera GX (MV3 + Workaround)
├── newtab.html # Haupt-HTML (UI-Struktur, Modals, Settings Panel)
├── LICENSE # CC BY-NC-SA 4.0
├── CHANGELOG.md # Versionshistorie
├── SECURITY.md # Sicherheitsrichtlinie und Meldeprozess
├── DISCLAIMER.md # Haftungsausschluss
@@ -193,27 +223,25 @@ hellion-newtab/
│ ├── js/
│ │ ├── storage.js # Storage Abstraction + Quota-Prüfung
│ │ ├── state.js # Globaler State, Defaults, Hilfsfunktionen
│ │ ├── dialog.js # Custom Dialog-System (HellionDialog.alert/confirm)
│ │ ├── themes.js # Theme-Definitionen & Anwendungslogik
│ │ ├── boards.js # Board/Bookmark Rendering, Event Delegation, Modals
│ │ ├── drag.js # Drag & Drop (Pointer Events, Board + Bookmark)
│ │ ├── settings.js # Settings Panel (Toggles, Theme-Picker, Background)
│ │ ├── settings.js # Settings Panel, Theme-Modal, Accordion
│ │ ├── search.js # Suchleiste (Google, DuckDuckGo, Bing)
│ │ ├── sticky.js # Sticky Note Widget (Drag, Persist, Toggle)
│ │ ├── data.js # JSON Export / Import mit Validierung
│ │ ── app.js # Init, Clock, globale Events (Einstiegspunkt)
│ │ ── onboarding.js # Mehrstufiger Willkommens-Flow
│ │ ├── app.js # Init, Clock, globale Events (Einstiegspunkt)
│ │ └── opera/ # Opera GX Workaround-Skripte
│ │ ├── background.js # Tab-Management gegen Speed Dial
│ │ └── redirect.js # Content Script Redirect
│ └── css/
│ └── main.css # Styles + Theme-System + Responsive Breakpoints
├── assets/
│ ├── fonts/ # Lokale Fonts (Rajdhani, Inter, Cinzel)
│ ├── themes/ # 8 Theme-Hintergrundbilder
│ │ ├── bg-nebula.jpg
│ │ ├── bg-crescent.jpg
│ │ ├── bg-event-horizon.jpg
│ │ ├── bg-merchantman.webp
│ │ ├── bg-julia-jin.png
│ │ ├── bg-sc-sunset.jpg
│ │ ├── bg-hellion-hud.png
│ │ └── bg-hellion-energy.jpg
│ └── icons/
│ ├── icon16.png
│ ├── icon48.png
@@ -223,16 +251,16 @@ hellion-newtab/
└── workflows/
├── security.yml # CodeQL-Analyse + Dependency Review
├── quality.yml # Struktur, Manifest, Syntax, Versions-Konsistenz
└── release.yml # ZIP-Pakete (Chrome + Firefox) + SHA256 Checksummen
└── release.yml # ZIP-Pakete (Chrome + Firefox + Opera) + SHA256
```
### Design-Prinzipien
- **Zero Dependencies** — Kein npm, kein Build, kein Framework. Direkt lauffähig
- **Privacy First** — Alle Daten lokal, kein Server-Kontakt
- **Modular** — 10 JS-Dateien mit klarer Zuständigkeit
- **Modular** — 12 JS-Dateien mit klarer Zuständigkeit
- **Responsive** — Tablet (768px) und Smartphone (480px) Breakpoints
- **Secure** — createElement statt innerHTML, URL-Validierung, Storage-Fehlerbehandlung
- **Secure** — `createElement` statt `innerHTML`, URL-Validierung, Storage-Fehlerbehandlung
- **Event Delegation** — Ein Listener pro Board-Liste statt pro Bookmark (Performance)
- **Theme-System** — CSS Custom Properties, 8 Themes, Custom-Background-Support
@@ -257,14 +285,14 @@ hellion-newtab/
### Release (`release.yml`)
- **Trigger** — Bei Git-Tag (`v*`)
- **Pakete** — Chrome-ZIP (MV3) + Firefox-ZIP (MV2)
- **Pakete** — Chrome-ZIP + Firefox-ZIP + Opera-ZIP (alle MV3)
- **Checksummen** — SHA256 für alle Artefakte
- **GitHub Release** — Automatisch mit Installationsanleitung
```bash
# Release erstellen:
git tag v1.2.0
git push origin v1.2.0
git tag v1.5.2
git push origin v1.5.2
# → GitHub Action erstellt automatisch Release mit ZIP-Dateien
```
@@ -304,7 +332,7 @@ Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
Vollständige Lizenz: [LICENSE](LICENSE) | [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)
| | |
| --- | --- |
|---|---|
| **Entwickler** | Florian Wathling |
| **Unternehmen** | Hellion Online Media |
| **Web** | [hellion-media.de](https://hellion-media.de) |
@@ -314,54 +342,12 @@ Vollständige Lizenz: [LICENSE](LICENSE) | [CC BY-NC-SA 4.0](https://creativecom
---
## Changelog
### v1.2.0 — 20.03.2026
- Projektstruktur in `src/js/`, `src/css/`, `assets/` aufgeteilt
- JS in 10 Module aufgeteilt (storage, state, themes, boards, drag, settings, search, sticky, data, app)
- 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 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 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
- 5 neue Themes (Merchantman, Julia & Jin, SC Sunset, Hellion HUD, Hellion Energy)
- Suchleiste (Google / DuckDuckGo / Bing)
- Sticky Note Widget
- JSON Export & Import
- Datum neben der Uhr
- About / Impressum in Settings
- Board Blur-Funktion (Privat-Modus)
- Drag & Drop auf Pointer Events umgestellt
- Opera / Opera GX Kompatibilität
### v1.0.0 — 20.03.2026
- Initiales Release
- Boards & Bookmarks mit Drag & Drop
- 3 Themes (Nebula, Crescent, Event Horizon)
- HTML-Import (Browser-Lesezeichen)
- Settings Panel
---
### Einsatz von AI
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.
---
> Vollständige Versionshistorie: [CHANGELOG.md](CHANGELOG.md)
**Hellion NewTab** — [Hellion Online Media](https://hellion-media.de) — JonKazama-Hellion