diff --git a/.agents/PLAN.md b/.agents/PLAN.md index f4ddb51..486241a 100644 --- a/.agents/PLAN.md +++ b/.agents/PLAN.md @@ -32,7 +32,7 @@ contact details and GPG public keys. | Build | `build.sh`: md5 content-hash cache-busting + `sed` reference rewrites → `dist/` | md5 is a cache key, not a security hash — acceptable | LOCKED (pre-existing) | | Serving | `nginx:alpine`, `listen 8080`, plain HTTP | TLS is added by the Caddy edge in front of the container | LOCKED (pre-existing) | | Edge | Caddy reverse proxy (Route53 DNS-validated TLS) in front of the container | HSTS/TLS are edge responsibilities | LOCKED (assumed — verify per Phase 03) | -| E2E tests | `@playwright/test` pinned **1.62.0** (matches cached chromium-1234), serves `dist/` via `python3 -m http.server 8123`, config `playwright.config.js` | Tests the deployed artifact; pinned to avoid browser re-downloads | LOCKED (2026-09-18, user-approved) | +| E2E tests | `@playwright/test` pinned **1.63.0** (matches cached chromium-1243), serves `dist/` via `python3 -m http.server 8123`, config `playwright.config.js` | Tests the deployed artifact; pinned to avoid browser re-downloads | LOCKED (2026-09-18; re-pinned 2026-09-18, user-approved — see review history) | | Deployment | Docker image → `gitea.reeseapps.com/services/homepage` via Gitea Actions (secrets-based registry login) | Self-hosted CI | LOCKED (pre-existing) | | Persistence | `localStorage` only (achievements, key `reese-terminal-achievements`) | No backend by design | LOCKED (pre-existing) | @@ -110,3 +110,13 @@ Caddy edge — folded into Phase 03 verification), L-3 (drop L-5 (label the displayed SSH key as fictitious or show fingerprint only), L-7 (pin CI action SHAs / image signing), L-8 (build.sh verification test in CI). + +## 8. Review History + +- **2026-09-18** — Security & code-quality audit; module split and the + `@playwright/test` 1.62.0 / chromium-1234 pin approved. +- **2026-09-18** — User-approved dependency update: `@playwright/test` + bumped 1.62.0 → 1.63.0; §3 lock re-pinned to 1.63.0 (matches cached + chromium-1243, re-downloaded locally). Full 44-test E2E suite green on + 1.63.0. Executed as a direct change per explicit user instruction + (no phase). diff --git a/AGENTS.md b/AGENTS.md index bf4b27c..2271d4d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -16,7 +16,7 @@ Rules for any agent working in this repository. - `./build.sh` — rebuild `dist/` (tests run against `dist/`, the deployed artifact — never test `src/` directly). - `npm test` — the Playwright E2E suite (pinned `@playwright/test` - 1.62.0; do not bump without re-checking the cached browser revision). + 1.63.0; do not bump without re-checking the cached browser revision). - For any nginx/Dockerfile change: `./scripts/check-headers.sh` (Phase 03+). diff --git a/package-lock.json b/package-lock.json index 1201d61..1194539 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,17 +8,17 @@ "name": "homepage", "version": "1.0.0", "devDependencies": { - "@playwright/test": "1.62.0" + "@playwright/test": "1.63.0" } }, "node_modules/@playwright/test": { - "version": "1.62.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.0.tgz", - "integrity": "sha512-9zOJ6ZQRAena31MpOH9VSzIz8Ou3YJ/wtY/eQm5T2uhfhG7/U3COrMS8xOtUrZrp9OgdmzEnIYODye3nY1VqzA==", + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz", + "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.62.0" + "playwright": "1.63.0" }, "bin": { "playwright": "cli.js" @@ -27,44 +27,26 @@ "node": ">=20" } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/playwright": { - "version": "1.62.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.0.tgz", - "integrity": "sha512-Z14dG305dgaLu6foB1TXQagFiW8JfSUIUaUuPaKQ6NtBPKF1P/qXcqfh6c6K/icPqdy37JmjbiBXf6JNg6Sylw==", + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz", + "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.62.0" + "playwright-core": "1.63.0" }, "bin": { "playwright": "cli.js" }, "engines": { "node": ">=20" - }, - "optionalDependencies": { - "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.62.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.0.tgz", - "integrity": "sha512-nsNRyq0r2zsG8AcRHWknc9QRA5XCueC7gWMrs+Gx2tlZn9hcl8zudfh00lhJPY1DE7NmZ6bDsT9g2yey8mXljA==", + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", + "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 850b3e4..896ea29 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,6 @@ "test:headed": "playwright test --headed" }, "devDependencies": { - "@playwright/test": "1.62.0" + "@playwright/test": "1.63.0" } }