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