29e0ff7cbd5d
chore: Repair package ownership and remove stale AMO tooling (v4.10.37)
- time
- 2026-08-29 12:49 UTC · 1 month ago
- machine
- koh2
- parent
- 06609f3696a8
↓ peach-browser-29e0ff7c.tar.gzatlas at this save
files changed8 files
.amoignore+0 −72README.md+1 −1bun.lock+2 −1manifest.firefox.json+1 −1manifest.json+1 −1package.json+3 −2scripts/package-amo-source.sh+0 −100vite.config.ts+0 −1.amoignore+0 −72
@@ -1,72 +0,0 @@1-# Exclusion list for the AMO source archive packager.2-# Format: one pattern per line, relative to the repo root.3-# Lines starting with '#' and blank lines are ignored.4-5-# Dependency install dirs — reviewers reinstall from package-lock.json6-node_modules7-node_modules/8-9-# Build output — reviewers run the build themselves10-dist11-dist/12-dist-chrome13-dist-chrome/14-dist-firefox15-dist-firefox/16-17-# Koh internal version control state18-.koh19-.koh/20-LOG.md21-22-# Git internals (history is not part of the AMO submission)23-.git24-.git/25-26-# macOS / OS detritus27-.DS_Store28-__MACOSX29-30-# Editor / IDE state31-.vscode32-.vscode/33-.idea34-.idea/35-.cursor36-.cursor/37-38-# Local agent / scratch state39-.agent40-.agent/41-.gstack42-.gstack/43-.playwright-mcp44-.playwright-mcp/45-.sisyphus46-.sisyphus/47-memory48-memory/49-.claude50-.claude/51-52-# Test artifacts53-test-results54-test-results/55-.playwright-mcp56-tsconfig.tsbuildinfo57-58-# Credential / env files59-.env60-.env.*61-62-# Stray packaged extension archives at the repo root63-peach-*.zip64-peach-*.crx65-peach-*.xpi66-67-# Source archives produced by this very script (don't recurse into ourselves)68-peach-3.6.65-source.zip69-70-# Lockfiles for package managers we don't use for releases71-pnpm-lock.yaml72-bun.lockREADME.md+1 −1
@@ -36,7 +36,7 @@3636 3737 ## Open Source3838 39-Peach is released under the [GPL v3](./LICENSE). This repository contains the browser extensions and shared web application code.39+Peach is released under the [GPL v3](./LICENSE). This repository contains Peach's Chrome and Firefox browser extensions. Android is maintained separately.4040 4141 The source is hosted on [Kepr](https://kepr.uk/peach), Asha Software's version control platform.4242 bun.lock+2 −1
@@ -23,6 +23,7 @@2323 "papaparse": "5.5.3",2424 "pdf-lib": "1.17.1",2525 "pdfjs-dist": "6.2.108",26+ "solid-js": "1.9.12",2627 "tldts": "7.0.28",2728 },2829 "devDependencies": {@@ -33,11 +34,11 @@3334 "@types/node": "^22.0.0",3435 "@types/pako": "^2.0.4",3536 "@types/papaparse": "^5.5.2",36- "@vitest/ui": "^4.1.4",3737 "chrome-webstore-upload-cli": "^4.0.0",3838 "jsdom": "^29.0.2",3939 "playwright": "^1.59.1",4040 "typescript": "^6.0.3",41+ "vite": "^8.0.8",4142 "vite-plugin-solid": "^2.11.12",4243 "vitest": "^4.1.4",4344 "web-ext": "^10.2.0",manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach Password Manager",4- "version": "4.10.36",4+ "version": "4.10.37",55 "description": "Zero-knowledge password manager",66 "browser_specific_settings": {77 "gecko": {manifest.json+1 −1
@@ -2,7 +2,7 @@22 "manifest_version": 3,33 "minimum_chrome_version": "116",44 "name": "Peach Password Manager",5- "version": "4.10.36",5+ "version": "4.10.37",66 "description": "Zero-knowledge password manager",77 "action": {88 "default_popup": "src/popup/index.html",package.json+3 −2
@@ -1,6 +1,6 @@11 {22 "name": "peach",3- "version": "4.10.36",3+ "version": "4.10.37",44 "description": "Zero-knowledge password manager",55 "license": "GPL-3.0-only",66 "type": "module",@@ -47,6 +47,7 @@4747 "papaparse": "5.5.3",4848 "pdf-lib": "1.17.1",4949 "pdfjs-dist": "6.2.108",50+ "solid-js": "1.9.12",5051 "tldts": "7.0.28",5152 "@zxcvbn-ts/core": "3.0.4",5253 "@zxcvbn-ts/language-common": "3.0.4",@@ -60,11 +61,11 @@6061 "@types/node": "^22.0.0",6162 "@types/pako": "^2.0.4",6263 "@types/papaparse": "^5.5.2",63- "@vitest/ui": "^4.1.4",6464 "chrome-webstore-upload-cli": "^4.0.0",6565 "jsdom": "^29.0.2",6666 "playwright": "^1.59.1",6767 "typescript": "^6.0.3",68+ "vite": "^8.0.8",6869 "vite-plugin-solid": "^2.11.12",6970 "vitest": "^4.1.4",7071 "web-ext": "^10.2.0"scripts/package-amo-source.sh+0 −100
@@ -1,100 +0,0 @@1-#!/usr/bin/env bash2-#3-# package-amo-source.sh — produce peach-3.6.65-source.zip for AMO review.4-#5-# Reviewers must be able to reproduce the submitted peach-3.6.65.zip from6-# the contents of this archive. The archive is staged into a temporary7-# directory using rsync with .amoignore as the exclusion list, then zipped8-# with sorted entry order so the archive is reproducible across runs.9-#10-# This script does not use `rm`. All deletions go through `trash` per the11-# project convention; the only filesystem removal happens through `trash`12-# acting on the staging directory.13-14-set -euo pipefail15-16-VERSION="3.6.65"17-ARCHIVE_NAME="peach-${VERSION}-source.zip"18-19-REPO_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"20-cd "$REPO_ROOT"21-22-# ---- 1. Sanity checks ------------------------------------------------------23-24-# Working tree should be clean per koh — if it isn't, surface state and stop.25-if command -v koh >/dev/null 2>&1; then26- KOH_STATUS_JSON="$(koh status --json 2>/dev/null || true)"27- if printf '%s' "$KOH_STATUS_JSON" | grep -q '"dirty":true'; then28- echo "error: working tree is dirty per koh status. Save or stash before packaging." >&229- echo "$KOH_STATUS_JSON" >&230- exit 131- fi32-fi33-34-# Confirm manifest version matches what we're packaging.35-MANIFEST_VERSION="$(node -e 'console.log(JSON.parse(require("fs").readFileSync("manifest.firefox.json","utf8")).version)')"36-if [ "$MANIFEST_VERSION" != "$VERSION" ]; then37- echo "error: manifest.firefox.json version is $MANIFEST_VERSION, expected $VERSION" >&238- exit 139-fi40-41-# Confirm .amoignore exists.42-if [ ! -f .amoignore ]; then43- echo "error: .amoignore not found at repo root" >&244- exit 145-fi46-47-# ---- 2. Stage into a temp directory ---------------------------------------48-49-STAGE_DIR="$(mktemp -d -t peach-amo-source.XXXXXX)"50-STAGE_SUBDIR="$STAGE_DIR/peach-${VERSION}-source"51-mkdir -p "$STAGE_SUBDIR"52-53-# Use rsync with --exclude-from to apply .amoignore. rsync interprets the54-# patterns the same way for the source side, so the result is deterministic55-# given the same input tree.56-rsync -a \57- --exclude-from=.amoignore \58- --exclude='.amoignore' \59- ./ "$STAGE_SUBDIR/"60-61-# Drop README.amo.md and .amoignore explicitly at the archive root.62-cp README.amo.md "$STAGE_SUBDIR/README.amo.md"63-cp .amoignore "$STAGE_SUBDIR/.amoignore"64-65-# ---- 3. Produce a reproducible zip ----------------------------------------66-67-OUT_PATH="$REPO_ROOT/$ARCHIVE_NAME"68-69-# Remove any prior archive at the destination, via `trash` (never `rm`).70-if [ -e "$OUT_PATH" ]; then71- trash "$OUT_PATH"72-fi73-74-# Build a sorted file list and feed it to zip via -@ so entry order is75-# stable across runs and across filesystems with different traversal orders.76-(77- cd "$STAGE_SUBDIR"78- # Use find with -print0 / sort -z for safety, then translate back to79- # newline-terminated for `zip -@`. No filenames in this repo contain80- # newlines, but the NUL pipeline keeps the script robust.81- find . -type f -print0 \82- | LC_ALL=C sort -z \83- | tr '\0' '\n' \84- | zip -X -q -@ "$OUT_PATH"85-)86-87-# ---- 4. Report -------------------------------------------------------------88-89-SIZE_BYTES="$(stat -f%z "$OUT_PATH" 2>/dev/null || stat -c%s "$OUT_PATH")"90-SHA256="$(shasum -a 256 "$OUT_PATH" | awk '{print $1}')"91-92-echo ""93-echo "AMO source archive: $OUT_PATH"94-echo " size: $SIZE_BYTES bytes"95-echo " sha256: $SHA256"96-echo ""97-98-# ---- 5. Clean up staging via `trash` --------------------------------------99-100-trash "$STAGE_DIR"vite.config.ts+0 −1
@@ -67,7 +67,6 @@6767 if (id.includes("node_modules/solid-js")) return "vendor-solid";6868 if (id.includes("node_modules/otpauth")) return "vendor-otp";6969 if (id.includes("node_modules/papaparse")) return "vendor-parse";70- if (id.includes("node_modules/qrcode")) return "vendor-qr";7170 },7271 },7372 },