diff --git a/download.html b/download.html
index 85340e3..e928aaa 100644
--- a/download.html
+++ b/download.html
@@ -76,19 +76,30 @@
Fetching latest...
- Download for Firefox
-
+ Install Portage (.xpi)
+ Download unsigned (.zip)
+
-
Loaded as a temporary add-on. History titles and times are preserved.
+
Signed by Mozilla. Installs permanently — no developer mode needed.
-
+
- - Unzip the downloaded
portage_firefox.zip file.
- - Navigate to
about:debugging#/runtime/this-firefox.
- - Click Load Temporary Add-on...
- - Select the
manifest.json file inside the unzipped folder.
+ - Click Install Portage (.xpi) above.
+ - Firefox will prompt — click Continue to Installation.
+ - Click Add to confirm.
+
+
+ Developer install (unsigned source)
+
+ - Download the unsigned
.zip using the button above.
+ - Unzip it somewhere you'll remember.
+ - Navigate to
about:debugging#/runtime/this-firefox.
+ - Click Load Temporary Add-on... and select
manifest.json from the unzipped folder.
+
+ Temporary add-ons are removed when Firefox restarts.
+
@@ -124,29 +135,35 @@
const verFirefox = document.getElementById("ver-firefox");
const btnChrome = document.getElementById("btn-chrome");
const btnFirefox = document.getElementById("btn-firefox");
+ const btnFirefoxZip = document.getElementById("btn-firefox-zip");
try {
const res = await fetch(`https://api.github.com/repos/${REPO}/releases/latest`);
if (!res.ok) throw new Error("GitHub API failed");
-
+
const data = await res.json();
const tag = data.tag_name || "Latest";
-
+
let chromeUrl = data.html_url;
- let firefoxUrl = data.html_url;
+ let firefoxXpiUrl = data.html_url;
+ let firefoxZipUrl = data.html_url;
if (data.assets && data.assets.length > 0) {
const cAsset = data.assets.find(a => a.name === "portage_chrome.zip");
if (cAsset) chromeUrl = cAsset.browser_download_url;
+ const xpiAsset = data.assets.find(a => a.name.endsWith(".xpi"));
+ if (xpiAsset) firefoxXpiUrl = xpiAsset.browser_download_url;
+
const fAsset = data.assets.find(a => a.name === "portage_firefox.zip");
- if (fAsset) firefoxUrl = fAsset.browser_download_url;
+ if (fAsset) firefoxZipUrl = fAsset.browser_download_url;
}
verChrome.textContent = tag;
verFirefox.textContent = tag;
btnChrome.href = chromeUrl;
- btnFirefox.href = firefoxUrl;
+ btnFirefox.href = firefoxXpiUrl;
+ btnFirefoxZip.href = firefoxZipUrl;
} catch (err) {
console.warn("Could not fetch release data:", err);
@@ -156,4 +173,4 @@
});