29e0ff7cbd5d

chore: Repair package ownership and remove stale AMO tooling (v4.10.37)

- Declare Solid and Vite where the repository imports them directly - Remove the unused Vitest UI dependency and obsolete QR chunk rule - Retire the unused AMO source-packaging path and clarify repository scope

time
2026-08-29 12:49 UTC · 1 month ago
machine
koh2
parent
06609f3696a8
8 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.lock

view file at the parent

README.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 

view file

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",

view file

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": {

view file

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",

view file

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"

view file

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"

view file at the parent

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     },

view file