Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a3f309c
Add Pale Moon content runtime
HyperCriSiS Aug 8, 2026
1973adc
Add Pale Moon browser controller
HyperCriSiS Aug 8, 2026
196be3d
Add Pale Moon WebExtension compatibility shim
HyperCriSiS Aug 8, 2026
d34da24
Add Pale Moon install manifest
HyperCriSiS Aug 8, 2026
a57a470
Register Pale Moon chrome package
HyperCriSiS Aug 8, 2026
a526acb
Add Pale Moon browser overlay
HyperCriSiS Aug 8, 2026
2b1fff1
Add Pale Moon build target
HyperCriSiS Aug 8, 2026
e5d15ca
Add Pale Moon build command
HyperCriSiS Aug 8, 2026
a1d0c75
Fix Pale Moon content runtime typing
HyperCriSiS Aug 8, 2026
1ef87ab
Build and validate Pale Moon package in CI
HyperCriSiS Aug 8, 2026
03efb6f
Fix Pale Moon controller compatibility typing
HyperCriSiS Aug 8, 2026
e97c1f2
Fix Pale Moon sandbox bridge
HyperCriSiS Aug 9, 2026
52b43d8
Invoke Pale Moon content runtime inside sandbox
HyperCriSiS Aug 9, 2026
c8a536d
Resize Pale Moon toolbar icon
HyperCriSiS Aug 9, 2026
d95d82b
Fix Pale Moon toolbar icon rendering
HyperCriSiS Aug 9, 2026
816f2c8
Add Pale Moon 64px submission icon source
HyperCriSiS Aug 9, 2026
27874f7
Add anchored Pale Moon popup controller
HyperCriSiS Aug 9, 2026
6772993
Style Pale Moon toolbar icon and popup panel
HyperCriSiS Aug 9, 2026
e97c51b
Use native anchored Pale Moon popup panel
HyperCriSiS Aug 9, 2026
cd12fa3
Set reviewed Pale Moon compatibility metadata
HyperCriSiS Aug 9, 2026
401b7d6
Package Pale Moon popup assets and submission icon
HyperCriSiS Aug 9, 2026
934dec0
Document Pale Moon hosted submission requirements
HyperCriSiS Aug 9, 2026
cc407e2
Harden Pale Moon submission checks in CI
HyperCriSiS Aug 9, 2026
d491139
Add dedicated 16px Pale Moon toolbar icon source
HyperCriSiS Aug 9, 2026
9e2a771
Fix Pale Moon popup sizing and toolbar icon isolation
HyperCriSiS Aug 9, 2026
a397c72
Scope Pale Moon overlay CSS to popup only
HyperCriSiS Aug 9, 2026
0a29b44
Make Pale Moon popup responsive without affecting browser chrome
HyperCriSiS Aug 9, 2026
15283fd
Generate dedicated Pale Moon toolbar icon during build
HyperCriSiS Aug 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI

on:
push:
branches: [main, dev]
branches: [main, dev, palemoon]
pull_request:
branches: [main, dev]

Expand Down Expand Up @@ -81,7 +81,21 @@ jobs:
test -s docs/SETTINGS-BACKUP-FORMAT.md
test -s docs/AMO-SOURCE-INSTRUCTIONS.md
test -s docs/PUBLICATION-CHECKLIST.md
test -s docs/PALEMOON-SUBMISSION.md
test -s SECURITY.md
test -s legacy/palemoon/install.rdf
test -s legacy/palemoon/chrome.manifest
test -s legacy/palemoon/icon64.png.base64
test -s legacy/palemoon/palemoon/browser-overlay.xul
test -s legacy/palemoon/palemoon/browser-overlay.css
test -s legacy/palemoon/palemoon/popup-panel.js
test -s legacy/palemoon/palemoon/legacy-api.js
grep -q 'BrowserToolbarPalette' legacy/palemoon/palemoon/browser-overlay.xul
grep -q 'SprachverstandPaleMoonUI.togglePopup' legacy/palemoon/palemoon/browser-overlay.xul
grep -q '__VERSION__' legacy/palemoon/install.rdf
grep -q '<em:maxVersion>34.3.2</em:maxVersion>' legacy/palemoon/install.rdf
! grep -q '<em:updateURL>' legacy/palemoon/install.rdf
! grep -Eq '<em:maxVersion>[^<]*\*' legacy/palemoon/install.rdf
for size in 32 48 128; do
test -s "static/icons/icon${size}.png"
done
Expand All @@ -91,6 +105,26 @@ jobs:
- name: Browser-Builds erstellen
run: npm run build

- name: Pale-Moon-Build prüfen
shell: bash
run: |
test -s dist/palemoon/install.rdf
test -s dist/palemoon/chrome.manifest
test -s dist/palemoon/icons/icon64.png
test -s dist/palemoon/palemoon/browser-overlay.xul
test -s dist/palemoon/palemoon/browser-overlay.css
test -s dist/palemoon/palemoon/popup-panel.js
test -s dist/palemoon/palemoon/controller.js
test -s dist/palemoon/palemoon/content.js
test -s dist/palemoon/palemoon/legacy-api.js
file dist/palemoon/icons/icon64.png | grep -q '64 x 64'
! grep -q '__VERSION__' dist/palemoon/install.rdf
grep -q '<em:maxVersion>34.3.2</em:maxVersion>' dist/palemoon/install.rdf
! grep -q '<em:updateURL>' dist/palemoon/install.rdf
grep -q '../palemoon/legacy-api.js' dist/palemoon/popup/popup.html
grep -q '../palemoon/legacy-api.js' dist/palemoon/options/options.html
test ! -e dist/palemoon/manifest.json

- name: Erzeugte Logo-Dateien vollständig prüfen
run: npm run validate:icons

Expand All @@ -114,28 +148,38 @@ jobs:
zip -qr "../../artifacts/sprachverstand-${VERSION}-firefox.xpi" .
)

(
cd dist/palemoon
zip -qr "../../artifacts/sprachverstand-${VERSION}-palemoon.xpi" .
)

git archive \
--format=zip \
--output="artifacts/sprachverstand-${VERSION}-source.zip" \
HEAD

cp docs/BETA-TEST.md artifacts/
cp docs/AMO-SOURCE-INSTRUCTIONS.md artifacts/
cp docs/PALEMOON-SUBMISSION.md artifacts/
cp dist/palemoon/icons/icon64.png artifacts/palemoon-icon64.png
printf '%s\n' "$GITHUB_SHA" > artifacts/SOURCE_COMMIT.txt

(
cd artifacts
sha256sum \
"sprachverstand-${VERSION}-chromium.zip" \
"sprachverstand-${VERSION}-firefox.xpi" \
"sprachverstand-${VERSION}-palemoon.xpi" \
"sprachverstand-${VERSION}-source.zip" \
palemoon-icon64.png \
SOURCE_COMMIT.txt \
> SHA256SUMS.txt
sha256sum -c SHA256SUMS.txt
)

unzip -t "artifacts/sprachverstand-${VERSION}-chromium.zip"
unzip -t "artifacts/sprachverstand-${VERSION}-firefox.xpi"
unzip -t "artifacts/sprachverstand-${VERSION}-palemoon.xpi"
unzip -t "artifacts/sprachverstand-${VERSION}-source.zip"

if unzip -l "artifacts/sprachverstand-${VERSION}-firefox.xpi" | grep -q 'META-INF/'; then
Expand Down
46 changes: 46 additions & 0 deletions docs/PALEMOON-SUBMISSION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Pale Moon submission notes

This document describes the dedicated Pale Moon build and the metadata intended for submission to the official Pale Moon Add-ons Site.

## Distribution

- Distribution model: Hosted add-on on the Pale Moon Add-ons Site
- Category: Tools & Utilities
- Add-on name: Sprachverstand
- Source repository: https://github.com/HyperCriSiS/Sprachverstand
- Suggested slug: `sprachverstand` (subject to availability on the Pale Moon Add-ons Site)
- Update URL: none. Hosted add-ons must use the Pale Moon Add-ons Site update service.

## Compatibility

- Pale Moon application ID: `{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}`
- Minimum version: 34.0.0
- Maximum version: 34.3.2
- Runtime-tested version: 34.3.2

The maximum version is deliberately explicit. Do not replace it with a wildcard for a hosted submission. Raise it only after testing a newer Pale Moon release.

## Submission metadata

- Description: `Macht Webseiten leichter lesbar.`
- 64x64 alpha-transparent PNG: generated as `dist/palemoon/icons/icon64.png` during the Pale Moon build
- The XPI uses the same generated 64x64 icon through `em:iconURL`.

## Final runtime checklist before submission

- Install the generated XPI in a clean Pale Moon 34.3.2 profile.
- Restart Pale Moon and confirm that the toolbar button remains available.
- Confirm that the toolbar icon is rendered at normal toolbar size.
- Confirm that the popup is anchored to the toolbar button instead of opening a separate window.
- Confirm that the popup closes when clicking outside it.
- Confirm that replacements work on a normal static page.
- Confirm that replacements also work after dynamically inserted page content.
- Toggle the extension off and on and verify that the page is restored/reprocessed correctly.
- Test excluded domains.
- Test the rule-group switches and text-processing switches in the popup.
- Open the full options page and save settings.
- Open several tabs and verify that the replacement count follows the active tab.
- Check the Error Console for new Sprachverstand errors.
- Restart the browser and verify that settings persist.

Only submit after this checklist passes on the XPI produced by the final commit.
2 changes: 2 additions & 0 deletions legacy/palemoon/chrome.manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
content sprachverstand ./
overlay chrome://browser/content/browser.xul chrome://sprachverstand/content/palemoon/browser-overlay.xul
1 change: 1 addition & 0 deletions legacy/palemoon/icon16.png.base64
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC0ElEQVR4nG2TX2iWZRiHr9/9Pq/79m3ftk8r0oLqQHCdVQRBpVHQiWdi9seDwA7yJBQ6CYtGWie2ooiImlEUWexPYmQI1sJFBQkKapNllGTGbCqs7dv27X2f5+5gWy7qgvvo5jq4uX8/sYFQm7ivx6RNnlwsIDyBDMAB8LS0Q1mWUopDU9eN7FZt3fo9ysJzpLikXsX5fwQow2P5YpC0hVS6REzJLcaEFl2TkPQfNyVPZmSStgScqCzTTGPG8mBqba2QkiOJGCPJ/V9ydMgkWziTaBaMxswsD957J8cOfajjh/fr2OcfaHR4QL3P7tDcXBMzYYLZEu64PnLk0YbqFaeIrlAUJR3tVd586Rkd/f44n33xJXm1Sh4yLlyc8DzPcQcTFKV46vam5ubx8YZRCYmQyqi2zhqr6l18/e0PfHrkG7rqHZRFZGryL9rrnQhnpoBbr408cHNk84GqF8lVDWCV1or/Pj7Ba+/u573X93Dp9DBnjx7g0smv6N/Xu/BInPnC2H5bobErGSPnM9pzp0yJEGOiva1Kz6vv+NChYVbVO9RszlNrb2Owr5ftWzdp7xvv+41r6jzSXbBzuNVjEmYiRmF4Eu7cdMNqJqcbjP3yG+cujHN6dIxPDh5mxxMPY5UaW9c1uNgQB38KtK1IpARChIi8kgeG3t6r7rW3qChLAPI8p+flt7j/nrvY+fhGPVT2se/Uam80od4Ki7EjZLiKGNn29AtUWlaQ3DGJIkZOnBz1jq6VemXXNk71DjJwRlRbILpA4O4EkLs7P/78q6d0NTQhZOQtLfR9NOBPPrZRH0/ezR+Xv6Pe2UaZfDGr7uro3jAGrBUeEba8B+4QU2TNNSu5PN2kOTeNWQZ4QpZ58rPm7v3I5Ci4y/4ZZC5ZFnI7/+cVm2/OWhZyQ2ZSFmRBkvoFhFr3+ucN2+zLKrscM8M9sVQLyTyRBqfOjOz+GzhBUpGw8OQNAAAAAElFTkSuQmCC
1 change: 1 addition & 0 deletions legacy/palemoon/icon64.png.base64
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABgFBMVEUNKD0PKkENJzz8/PwBGzEOKkD6lzAAAAAtQ1bHy9BUZXWdpq8vNzrn6OocNEglOkwOKD1teoeQZTbqjC4OLEMAVVVHWmpsVDh0gY2zdDSstLvWhDAOKDy8wsnS1dkMGSwMJjkQLUFNRTqKk5yhbDaorLHAezPe4uYADyUSMEg7T2A/UmCBjpqTnaexucDQsY/b3uH/oC/9vH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr0djTAAAAgHRSTlP+/qz//6r/AP//////////m////1MD////////U///FBSZ/////////1T///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEOeelgAAAIZSURBVHjaxZeJcoIwEIYB1xi5wqV4gGe19/n+D9du1xQEbS3ZTv8ZYSaSb+bfbDYba/Cp29v12nH6X3IOao/Q6HpdFDTTYgCsVo5jd5DjrFYcgNEIp1sdhIjRyBxQFN2mEyLLzAFRZAKIInNA1xDqMJoD+v0K8FsULwCfAP8BoCDiT6ntdtjQeNye5vvTD/EBtAWlFoteSw8PAM3QJsnrqxC+zwsA8DycUJbel3Y7z5OybSBNhUgSMs4BoCCGYRD0ep4HDbVDmOdCpCka4AVIiYA4vrmph+xUas/nQlxd6eTjA1gWLuJiIWV4kFJh2LaABmgJ+QB6GScTSp2gptmsuYz7vRCUxiQOQFXSKJWOdX0dhtXnmw0a2Gx4AVVJA7i7i+PJh/AZx7MZIjC59OfTqRD7fd0SL4CCWRchlNLbCA3keb0IcwDOHywA9/cIeHykopIkQsznx6nOCbBteSSl4th10UQQKAVAhSTPz56NnQE6iGXZTiMs6/jebgHIwDcnkzHg5aUNKEvbfnrChFYKCwmVUm6ADqKUbkO4lQHIxPNzmupS+leAZhrTFsL/hkNEVKW0sZkYAe12GscAXBcBb2++/zeAepN1Tmhitzt10HEAfmo0qfkZj+vFlRdwWbN9rgG8uFv/BpBllwBOf2PbRWEOwEtX92b/cGszAgwGy2XXi+dy+XlzNQagsiyKnF8oirLs6PbeHfAOb71DTTt2EFMAAAAASUVORK5CYII=
23 changes: 23 additions & 0 deletions legacy/palemoon/install.rdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>sprachverstand@hypercrisis</em:id>
<em:type>2</em:type>
<em:name>Sprachverstand</em:name>
<em:version>__VERSION__</em:version>
<em:description>Macht Webseiten leichter lesbar.</em:description>
<em:creator>HyperCriSiS</em:creator>
<em:homepageURL>https://github.com/HyperCriSiS/Sprachverstand</em:homepageURL>
<em:iconURL>chrome://sprachverstand/content/icons/icon64.png</em:iconURL>
<em:optionsURL>chrome://sprachverstand/content/options/options.html</em:optionsURL>

<em:targetApplication>
<Description>
<em:id>{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}</em:id>
<em:minVersion>34.0.0</em:minVersion>
<em:maxVersion>34.3.2</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
12 changes: 12 additions & 0 deletions legacy/palemoon/palemoon/browser-overlay.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#sprachverstand-popup-panel {
padding: 0;
margin: 0;
}

#sprachverstand-popup-browser {
width: 408px;
height: 600px;
margin: 0;
padding: 0;
border: 0;
}
36 changes: 36 additions & 0 deletions legacy/palemoon/palemoon/browser-overlay.xul
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://sprachverstand/content/palemoon/browser-overlay.css" type="text/css"?>
<overlay id="sprachverstand-browser-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript"
src="chrome://sprachverstand/content/palemoon/controller.js"/>
<script type="application/javascript"
src="chrome://sprachverstand/content/palemoon/popup-panel.js"/>

<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton
id="sprachverstand-toolbar-button"
class="toolbarbutton-1 chromeclass-toolbar-additional"
label="Sprachverstand"
tooltiptext="Sprachverstand"
style="list-style-image: url('chrome://sprachverstand/content/icons/icon16.png');"
oncommand="SprachverstandPaleMoonUI.togglePopup(this);"/>
</toolbarpalette>

<popupset id="mainPopupSet">
<panel
id="sprachverstand-popup-panel"
type="arrow"
noautofocus="true"
consumeoutsideclicks="false"
onpopuphidden="SprachverstandPaleMoonUI.resetPopup();">
<browser
id="sprachverstand-popup-browser"
type="content"
width="408"
height="600"
disablehistory="true"
src="about:blank"/>
</panel>
</popupset>
</overlay>
Loading