| … | … | @@ -181,7 +181,7 @@ Catalogue updates are versioned from [`catalog-source/pearbrowser-network.catalo |
| 181 | 181 | |
| 182 | 182 | ```sh |
| 183 | 183 | node scripts/gen-catalogue-seed.mjs |
| 184 | node scripts/publish-catalog-bee.js catalog-source/pearbrowser-network.catalog.json --storage /Users/localllm/Projects/pear-ecosystem/03-sites/pearbrowser-publishers/catalog | |
| 184 | node scripts/publish-catalog-bee.js catalog-source/pearbrowser-network.catalog.json --storage ~/pear-ecosystem/03-sites/pearbrowser-publishers/catalog | |
| 185 | 185 | node scripts/verify-live-catalog.js --expect-app peercord --expect-app peerit --expect-app hiveworm |
| 186 | 186 | ``` |
| 187 | 187 |
| … | … | @@ -38,7 +38,7 @@ module.exports = { |
| 38 | 38 | "driveKey": "ec6e2d6d9d22b9d6b40e11a9ca3042be3197e4bdca9e9a7f079be6ee830761b4", |
| 39 | 39 | "link": "hyper://ec6e2d6d9d22b9d6b40e11a9ca3042be3197e4bdca9e9a7f079be6ee830761b4/", |
| 40 | 40 | "iconData": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iZyIgeDE9IjAiIHkxPSIwIiB4Mj0iMSIgeTI9IjEiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZjZiM2QiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjOWI2Y2ZmIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8cmVjdCB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHJ4PSIxNiIgZmlsbD0idXJsKCNnKSIvPgogIDwhLS0gdGhyZWUgcGVlcnMgY29ubmVjdGVkIGluIGEgbWVzaCwgd2l0aCBhbiB1cHZvdGUgYXJyb3cgLS0+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMGEwZTE3IiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+CiAgICA8cGF0aCBkPSJNMjAgNDAgTDQ0IDQwIE0yMCA0MCBMMzIgMjAgTTQ0IDQwIEwzMiAyMCIgb3BhY2l0eT0iMC41Ii8+CiAgPC9nPgogIDxjaXJjbGUgY3g9IjMyIiBjeT0iMjAiIHI9IjYiIGZpbGw9IiMwYTBlMTciLz4KICA8Y2lyY2xlIGN4PSIyMCIgY3k9IjQwIiByPSI2IiBmaWxsPSIjMGEwZTE3Ii8+CiAgPGNpcmNsZSBjeD0iNDQiIGN5PSI0MCIgcj0iNiIgZmlsbD0iIzBhMGUxNyIvPgogIDxwYXRoIGQ9Ik0zMiA1MCBMMzIgMzMgTTMyIDMzIEwyNiAzOSBNMzIgMzMgTDM4IDM5IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMy40IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiLz4KPC9zdmc+Cg==", |
| 41 | "author": "defidon", | |
| 41 | "author": "bigdestiny2", | |
| 42 | 42 | "categories": [ |
| 43 | 43 | "community", |
| 44 | 44 | "social", |
| … | … | @@ -72,7 +72,7 @@ module.exports = { |
| 72 | 72 | "type": "hypersite", |
| 73 | 73 | "driveKey": "ac1977a75cc84b46af0af8bb559cd4ebbe10507eb0f51d863e289d09635f6d74", |
| 74 | 74 | "link": "hyper://ac1977a75cc84b46af0af8bb559cd4ebbe10507eb0f51d863e289d09635f6d74/", |
| 75 | "author": "defidon", | |
| 75 | "author": "bigdestiny2", | |
| 76 | 76 | "categories": [ |
| 77 | 77 | "community", |
| 78 | 78 | "social", |
| … | … | @@ -92,7 +92,7 @@ module.exports = { |
| 92 | 92 | "driveKey": "0724aabf2ad6394983f91c6b24ebd417cb3d25addcf29c98eb246c512dc77f90", |
| 93 | 93 | "link": "pear://7octu5dimjye8rn68raehwuetk5mttzt4zxh6yjw1eqktn49bq7o", |
| 94 | 94 | "iconData": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiByeD0iMTQiIGZpbGw9IiMwYTBkMTIiLz48cGF0aCBkPSJNMzIgMTJsMTYgNnYxMWMwIDExLTcgMTgtMTYgMjMtOS01LTE2LTEyLTE2LTIzVjE4eiIgZmlsbD0iIzU4YTZmZiIvPjxnIHN0cm9rZT0iIzBhMGQxMiIgc3Ryb2tlLXdpZHRoPSIyLjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0iTTI2IDI4aDEyTTI2IDM0aDEyTTI2IDQwaDgiLz48L2c+PC9zdmc+", |
| 95 | "author": "defidon", | |
| 95 | "author": "bigdestiny2", | |
| 96 | 96 | "categories": [ |
| 97 | 97 | "productivity", |
| 98 | 98 | "security" |
| … | … | @@ -110,7 +110,7 @@ module.exports = { |
| 110 | 110 | "driveKey": "25a06bb3dddec8138e9eda606cc4a11e9ebbe47815fd5d22064b30cff752bb5b", |
| 111 | 111 | "link": "pear://qnax5k8ojtod51ci9qwkrawdof1hx5w3a7gqbueoqnzzq9dw5hfo", |
| 112 | 112 | "iconData": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiByeD0iMTQiIGZpbGw9IiMwYTBkMTIiLz48cmVjdCB4PSIxOCIgeT0iMTYiIHdpZHRoPSIyOCIgaGVpZ2h0PSIzNCIgcng9IjQiIGZpbGw9IiM0YWRlODAiLz48cmVjdCB4PSIyNSIgeT0iMTEiIHdpZHRoPSIxNCIgaGVpZ2h0PSI5IiByeD0iMi41IiBmaWxsPSIjNGFkZTgwIiBzdHJva2U9IiMwYTBkMTIiIHN0cm9rZS13aWR0aD0iMiIvPjxnIHN0cm9rZT0iIzBhMGQxMiIgc3Ryb2tlLXdpZHRoPSIyLjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHBhdGggZD0iTTI0IDMwaDE2TTI0IDM2aDE2TTI0IDQyaDEwIi8+PC9nPjwvc3ZnPg==", |
| 113 | "author": "defidon", | |
| 113 | "author": "bigdestiny2", | |
| 114 | 114 | "categories": [ |
| 115 | 115 | "productivity", |
| 116 | 116 | "security", |
| … | … | @@ -115,8 +115,8 @@ class TabRuntime { |
| 115 | 115 | // (worker)" card launches. |
| 116 | 116 | const env = (globalThis.Bare && Bare.env) || (globalThis.process && process.env) || {} |
| 117 | 117 | let demoWorker = env.PEAR_TAB_DEMO_WORKER || null |
| 118 | if (!demoWorker) { | |
| 119 | const p = '/Users/localllm/Desktop/pear-request-demo' | |
| 118 | if (!demoWorker && env.HOME) { | |
| 119 | const p = env.HOME + '/Desktop/pear-request-demo' | |
| 120 | 120 | try { require('bare-fs').statSync(p); demoWorker = 'file://' + p } catch {} |
| 121 | 121 | } |
| 122 | 122 | if (demoWorker) { |
| … | … | @@ -34,7 +34,7 @@ |
| 34 | 34 | "id": "peerit", |
| 35 | 35 | "name": "peerit", |
| 36 | 36 | "description": "The front page of the P2P internet — a peer-to-peer Reddit. Communities, posts, threaded comments and votes live in a shared Holepunch log (Autobase + Hyperbee) and replicate directly between peers. No servers, no data center. Runs as a P2P site inside PearBrowser, seeded 24/7 on HiveRelay.", |
| 37 | "author": "defidon", | |
| 37 | "author": "bigdestiny2", | |
| 38 | 38 | "version": "1.0.0", |
| 39 | 39 | "type": "hypersite", |
| 40 | 40 | "categories": [ |
| … | … | @@ -74,7 +74,7 @@ |
| 74 | 74 | "id": "p2pbuilders", |
| 75 | 75 | "name": "P2P Builders", |
| 76 | 76 | "description": "Permissionless peer-to-peer Hacker News for anons who build P2P — in the browser. Proof-of-work-gated posts, reputation-weighted votes, boards, threaded comments, follows and subscribable blocklists replicate directly between peers over the same Holepunch engine as peerit. Runs as a P2P site inside PearBrowser, seeded 24/7 on HiveRelay.", |
| 77 | "author": "defidon", | |
| 77 | "author": "bigdestiny2", | |
| 78 | 78 | "version": "1.0.0", |
| 79 | 79 | "categories": [ |
| 80 | 80 | "community", |
| … | … | @@ -96,7 +96,7 @@ |
| 96 | 96 | "id": "pear-dealroom", |
| 97 | 97 | "name": "Pear Dealroom", |
| 98 | 98 | "description": "Zero-infrastructure P2P virtual data room for M&A and due diligence. End-to-end encrypted documents, a signed tamper-evident audit trail, and cryptographic access tiers — no cloud, no server, no vendor. Built on Holepunch.", |
| 99 | "author": "defidon", | |
| 99 | "author": "bigdestiny2", | |
| 100 | 100 | "version": "1.0.0", |
| 101 | 101 | "categories": [ |
| 102 | 102 | "productivity", |
| … | … | @@ -122,7 +122,7 @@ |
| 122 | 122 | "id": "pearpaste", |
| 123 | 123 | "name": "Paste", |
| 124 | 124 | "description": "Local-first, end-to-end encrypted notes & clipboard sync for your own devices. No account, no hosted database, no plaintext replication — built on Pear, Holepunch, Hypercore, Hyperbee, Autobase and Hyperswarm. Tap-to-decrypt rows keep secrets sealed until you reveal them. Desktop (macOS / Windows / Linux) + Expo mobile.", |
| 125 | "author": "defidon", | |
| 125 | "author": "bigdestiny2", | |
| 126 | 126 | "version": "0.1.0", |
| 127 | 127 | "categories": [ |
| 128 | 128 | "productivity", |
| … | … | @@ -4,7 +4,7 @@ |
| 4 | 4 | PearBrowser Desktop is source-green in the current checkout, but it is not announcement-ready. The remaining release work is operator evidence: desktop GUI and real-network rows, Peercord human trust approval, mobile real-device and production signing/store rows, and the final announcement decision. |
| 5 | 5 | |
| 6 | 6 | ## Checkout |
| 7 | - Root: `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop` | |
| 7 | - Root: `~/pear-ecosystem/01-browser/pearbrowser-desktop` | |
| 8 | 8 | - Branch: `fix/native-packaging-linux-deps` |
| 9 | 9 | - Head: `bb3bb68` |
| 10 | 10 | - Package version: `pearbrowser-desktop@0.5.2` |
| … | … | @@ -143,7 +143,7 @@ The mobile app logic is tested, and native simulator/device release smoke is par |
| 143 | 143 | - The mobile backend now isolates `CMD_NAVIGATE` parsing in `backend/navigation.js`; tests cover hex/z32 drive keys, path/query/hash preservation, proxy-port validation, and fail-closed API-token issuance. |
| 144 | 144 | - An installed iOS simulator build launched and exposed `[runtime not ready]: Error: Cannot find native module 'ExpoLinking'`. |
| 145 | 145 | - `expo-linking@~55.0.15` is now tracked in `package.json`/`package-lock.json`; `npm ls expo-linking` resolves `expo-linking@55.0.15`, and Expo autolinking resolves the `ExpoLinking` pod/module. |
| 146 | - A follow-up generated Expo iOS Debug simulator build now succeeds with signing disabled and DerivedData under `/private/tmp`; it includes the `ExpoLinking` pod, runs `[Expo] Configure project`, and copies/strips the BareKit xcframework stack. The generated Expo Release simulator path is also release-build-cleared when the build pins `HERMES_CLI_PATH` to `ios/Pods/hermes-engine/destroot/bin/hermesc` as an Xcode build setting. The earlier stalled path invoked `/Users/localllm/Desktop/PearBrowser/node_modules/hermes-compiler/hermesc/osx-bin/hermesc`; the Pods compiler successfully bytecodes the same 7.5 MB JS bundle, and the full generated Expo Release simulator build now succeeds. | |
| 146 | - A follow-up generated Expo iOS Debug simulator build now succeeds with signing disabled and DerivedData under `/private/tmp`; it includes the `ExpoLinking` pod, runs `[Expo] Configure project`, and copies/strips the BareKit xcframework stack. The generated Expo Release simulator path is also release-build-cleared when the build pins `HERMES_CLI_PATH` to `ios/Pods/hermes-engine/destroot/bin/hermesc` as an Xcode build setting. The earlier stalled path invoked `~/Desktop/PearBrowser/node_modules/hermes-compiler/hermesc/osx-bin/hermesc`; the Pods compiler successfully bytecodes the same 7.5 MB JS bundle, and the full generated Expo Release simulator build now succeeds. | |
| 147 | 147 | - The tracked SwiftUI `ios-native` shell builds, installs, launches, and reaches green `Connected` on the iPhone 17 simulator. The smoke also verified stale-Corestore recovery: the first launch failed with `Another corestore is stored here`, then the fallback build recovered into an identity-scoped subdirectory and booted the worklet. |
| 148 | 148 | - Android native Gradle inspection, Kotlin/Java compile, and `:app:assembleDebug` pass with Eclipse Temurin 17; Homebrew OpenJDK 17.0.19 hung in AGP's JDK image transform on this machine. The fresh debug APK (`android-native/app/build/outputs/apk/debug/app-debug.apk`, 169 MB diagnostic build with bare-kit/addons and two ARM ABIs) installed and launched on a headless `pp_avd` emulator. The app reached a green `Connected` Home screen after extracting the bundled worklet and starting the local proxy. |
| 149 | 149 | - Android native `:app:assembleRelease` and `:app:bundleRelease` pass with R8/resource shrink after suppressing unused React Native adapter warnings from the local Bare Kit AAR. Env-driven release signing was verified with a disposable test keystore: `app-release.apk` is 142 MB and verifies with certificate `CN=PearBrowserTest, O=PearBrowser, C=US`; `app-release.aab` is 49 MB and passes `jarsigner -verify` with expected self-signed test-certificate warnings. |
| … | … | @@ -201,7 +201,7 @@ npm audit fix # mobile/native, non-force only |
| 201 | 201 | npm audit --audit-level=high # mobile/native after fix |
| 202 | 202 | npm run validate # publisher catalogue |
| 203 | 203 | node scripts/gen-catalogue-seed.mjs |
| 204 | node scripts/publish-catalog-bee.js catalog-source/pearbrowser-network.catalog.json --storage /Users/localllm/Projects/pear-ecosystem/03-sites/pearbrowser-publishers/catalog | |
| 204 | node scripts/publish-catalog-bee.js catalog-source/pearbrowser-network.catalog.json --storage ~/pear-ecosystem/03-sites/pearbrowser-publishers/catalog | |
| 205 | 205 | npm run check:appling-release -- --tag v0.5.0 # desktop native packaging metadata, latest run passed |
| 206 | 206 | cd appling && npm ci && npm run generate && npm run build # desktop native local macOS build, latest run produced an ad-hoc signed PearBrowser.app |
| 207 | 207 | npm run package:appling -- --tag v0.5.0 # desktop native local macOS collection, produced PearBrowser-0.5.0-macos-arm64.app.zip |
| … | … | @@ -18,7 +18,7 @@ manual gate. |
| 18 | 18 | | Desktop PR/CI URL | PR #28: `https://github.com/bigdestiny2/pearbrowser-desktop/pull/28`; Desktop CI pull_request run `https://github.com/bigdestiny2/pearbrowser-desktop/actions/runs/28320741592`, job `83902114643`, passed | |
| 19 | 19 | | Mobile repo/head | `bigdestiny2/PearBrowser`, `main`, `9101200d8bb54ff31b21d6d90154cb2321756a6c` | |
| 20 | 20 | | Mobile preflight CI URL | `https://github.com/bigdestiny2/PearBrowser/actions/runs/28316870344` (`mobile-release-preflight` artifact downloaded and verified locally) | |
| 21 | | macOS machine | `Locals-Mac-Studio.local`, macOS 26.4.1 build 25E253 | | |
| 21 | | macOS machine | `localhost`, macOS | | |
| 22 | 22 | | iOS simulator/device(s) | Prior simulator proof in `PearBrowser/ios-native/BUILD.md`: iPhone 17 simulator green `Connected`; not rerun in this loop | |
| 23 | 23 | | Android emulator/device(s) | Prior emulator proof in `PearBrowser/android-native/BUILD.md`: headless `pp_avd` green `Connected`; not rerun in this loop | |
| 24 | 24 | | Network/location | Local shell in Asia/Dubai timezone; 2026-06-24 Pear hotfix release ran with real network access | |
| … | … | @@ -2,7 +2,7 @@ |
| 2 | 2 | |
| 3 | 3 | Generated: 2026-06-23 |
| 4 | 4 | Loop candidate: `pearbrowser-desktop-security-crosscheck` |
| 5 | Source root: `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop` | |
| 5 | Source root: `~/pear-ecosystem/01-browser/pearbrowser-desktop` | |
| 6 | 6 | |
| 7 | 7 | ## Executive Status |
| 8 | 8 | |
| … | … | @@ -127,21 +127,21 @@ Local validation completed in this loop: |
| 127 | 127 | |
| 128 | 128 | ## Source Evidence |
| 129 | 129 | |
| 130 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/hyper-proxy.js` | |
| 131 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/http-bridge.js` | |
| 132 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/pear-bridge.js` | |
| 133 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/swarm-bridge.js` | |
| 134 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/catalog-safety.cjs` | |
| 135 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/sheets-catalog.js` | |
| 136 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/index-room-client.js` | |
| 137 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/capability-verify.cjs` | |
| 138 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/search-handler.js` | |
| 139 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/search-federation.cjs` | |
| 140 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/identity-binding.cjs` | |
| 141 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/nostr-binding-store.cjs` | |
| 142 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/nostr-events-apply.cjs` | |
| 143 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/federated-nostr-feed.cjs` | |
| 144 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/docs/SEARCH-HANDOVER.md` | |
| 145 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/docs/P2P-BROWSER-FEATURE-ROADMAP.md` | |
| 146 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/docs/DEEP_AUDIT_CATALOG_SEARCH_NAMING_NOSTR_2026-06-21.md` | |
| 147 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/docs/TEST-COMMAND-MATRIX-2026-06-23.md` | |
| 130 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/hyper-proxy.js` | |
| 131 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/http-bridge.js` | |
| 132 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/pear-bridge.js` | |
| 133 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/swarm-bridge.js` | |
| 134 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/catalog-safety.cjs` | |
| 135 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/sheets-catalog.js` | |
| 136 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/index-room-client.js` | |
| 137 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/capability-verify.cjs` | |
| 138 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/search-handler.js` | |
| 139 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/search-federation.cjs` | |
| 140 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/identity-binding.cjs` | |
| 141 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/nostr-binding-store.cjs` | |
| 142 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/nostr-events-apply.cjs` | |
| 143 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/federated-nostr-feed.cjs` | |
| 144 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/docs/SEARCH-HANDOVER.md` | |
| 145 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/docs/P2P-BROWSER-FEATURE-ROADMAP.md` | |
| 146 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/docs/DEEP_AUDIT_CATALOG_SEARCH_NAMING_NOSTR_2026-06-21.md` | |
| 147 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/docs/TEST-COMMAND-MATRIX-2026-06-23.md` |
| … | … | @@ -3,7 +3,7 @@ |
| 3 | 3 | Generated: 2026-06-23 |
| 4 | 4 | Loop candidate: `pearbrowser-desktop-test-matrix` |
| 5 | 5 | Autonomy level: Level 1 docs-tests |
| 6 | Source root: `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop` | |
| 6 | Source root: `~/pear-ecosystem/01-browser/pearbrowser-desktop` | |
| 7 | 7 | |
| 8 | 8 | ## Executive Status |
| 9 | 9 | |
| … | … | @@ -250,18 +250,18 @@ Run the PearBrowser Desktop release-evidence cleanup pass: |
| 250 | 250 | |
| 251 | 251 | ## Source Evidence |
| 252 | 252 | |
| 253 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/package.json` | |
| 254 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/backend/package.json` | |
| 255 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/examples/headless-tab/package.json` | |
| 256 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/docs/CURRENT_STATUS_AUDIT_2026-06-23.md` | |
| 257 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/docs/RELEASE_READINESS_2026-06-23.md` | |
| 258 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/docs/MANUAL_RELEASE_SMOKE_2026-06-23.md` | |
| 259 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/runtime-rpc-smoke.mjs` | |
| 260 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/check-release-evidence.mjs` | |
| 261 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/check-relays.js` | |
| 262 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-pin.js` | |
| 263 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-live-catalog.js` | |
| 264 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-release-contents.js` | |
| 265 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-app-full.js` | |
| 266 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-pear-bundle-contract.js` | |
| 267 | - `/Users/localllm/Projects/pear-ecosystem/01-browser/pearbrowser-desktop/test` | |
| 253 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/package.json` | |
| 254 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/backend/package.json` | |
| 255 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/examples/headless-tab/package.json` | |
| 256 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/docs/CURRENT_STATUS_AUDIT_2026-06-23.md` | |
| 257 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/docs/RELEASE_READINESS_2026-06-23.md` | |
| 258 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/docs/MANUAL_RELEASE_SMOKE_2026-06-23.md` | |
| 259 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/runtime-rpc-smoke.mjs` | |
| 260 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/check-release-evidence.mjs` | |
| 261 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/check-relays.js` | |
| 262 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-pin.js` | |
| 263 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-live-catalog.js` | |
| 264 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-release-contents.js` | |
| 265 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-app-full.js` | |
| 266 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/scripts/verify-pear-bundle-contract.js` | |
| 267 | - `~/pear-ecosystem/01-browser/pearbrowser-desktop/test` |
| … | … | @@ -675,15 +675,15 @@ External (web) sources — every external claim above is cited by number: |
| 675 | 675 | 29. iroh — project repo (n0-computer/iroh). <https://github.com/n0-computer/iroh> |
| 676 | 676 | |
| 677 | 677 | Internal source files read for this doc (all absolute): |
| 678 | - `/Users/localllm/Desktop/pear-pos/app/backend/payments.js` (crypto sale path, `status:'pending'`, no confirmation — verified by zero-hit grep) | |
| 679 | - `/Users/localllm/Desktop/pear-pos/app/backend/processors/{interface,registry,btcpay}.js` (adapter seam; btcpay `POLL_INTERVAL_MS=3000`, `Settled→CAPTURED`) | |
| 680 | - `/Users/localllm/Desktop/pear-pos/app/backend/config.js` (`DEFAULT_CONFIG`, `SENSITIVE_FIELDS` AES-256) | |
| 681 | - `/Users/localllm/Desktop/pear-pos/app/backend/receipt-delivery.js` (unsigned print/email/SMS) | |
| 682 | - `/Users/localllm/Desktop/pear-exchange/app/backend/escrow.js` (`createEscrowAPI`, fund/release/refund, signatures[]) | |
| 683 | - `/Users/localllm/Desktop/pear-exchange/app/backend/escrow-btc.js` (`monitorAddress`/`monitorConfirmations`/`broadcastTx`, mempool.space/Blockstream, 2-of-3 P2WSH) | |
| 684 | - `/Users/localllm/Desktop/pear-exchange/app/backend/escrow-cashu.js` (NUT-11 P2PK, `verifySignatures`, placeholder mint URL) | |
| 685 | - `/Users/localllm/Desktop/pear-exchange/app/backend/crypto.js` (Ed25519 sign **and** verify; deterministic replay-bound messages) | |
| 686 | - `/Users/localllm/Desktop/pear-exchange/app/backend/price-feeds.js` (multi-source median + `rejectOutliers`) | |
| 678 | - `~/Desktop/pear-pos/app/backend/payments.js` (crypto sale path, `status:'pending'`, no confirmation — verified by zero-hit grep) | |
| 679 | - `~/Desktop/pear-pos/app/backend/processors/{interface,registry,btcpay}.js` (adapter seam; btcpay `POLL_INTERVAL_MS=3000`, `Settled→CAPTURED`) | |
| 680 | - `~/Desktop/pear-pos/app/backend/config.js` (`DEFAULT_CONFIG`, `SENSITIVE_FIELDS` AES-256) | |
| 681 | - `~/Desktop/pear-pos/app/backend/receipt-delivery.js` (unsigned print/email/SMS) | |
| 682 | - `~/Desktop/pear-exchange/app/backend/escrow.js` (`createEscrowAPI`, fund/release/refund, signatures[]) | |
| 683 | - `~/Desktop/pear-exchange/app/backend/escrow-btc.js` (`monitorAddress`/`monitorConfirmations`/`broadcastTx`, mempool.space/Blockstream, 2-of-3 P2WSH) | |
| 684 | - `~/Desktop/pear-exchange/app/backend/escrow-cashu.js` (NUT-11 P2PK, `verifySignatures`, placeholder mint URL) | |
| 685 | - `~/Desktop/pear-exchange/app/backend/crypto.js` (Ed25519 sign **and** verify; deterministic replay-bound messages) | |
| 686 | - `~/Desktop/pear-exchange/app/backend/price-feeds.js` (multi-source median + `rejectOutliers`) | |
| 687 | 687 | - `backend/identity.js` (sign/signForApp/getAppKeypair; verifier has since landed; seed-at-rest hardening remains separate) |
| 688 | 688 | - `backend/anongpt-buyer.js` (signed-receipt dial pattern; verify path has since been un-stubbed) |
| 689 | 689 | - `backend/autobee-catalog-ops.cjs` (op schema + `validateOp` tri-state template) |
| … | … | @@ -110,7 +110,7 @@ Every path below was read on `feat/phase5-relay-directory`. |
| 110 | 110 | 12. RFC 9230 — *Oblivious DNS over HTTPS* (Independent Submission, experimental) — https://datatracker.ietf.org/doc/rfc9230/ |
| 111 | 111 | 13. *Private Information Retrieval* (Chor/Goldreich/Kushilevitz/Sudan) — https://www.cs.umd.edu/~gasarch/TOPICS/pir/first.pdf ; CPIR overview — https://en.wikipedia.org/wiki/Private_information_retrieval |
| 112 | 112 | 14. iroh connectivity & relays (docs + DERP lineage) — https://docs.iroh.computer/concepts/relays ; https://www.iroh.computer/blog/what-is-derp (IP/NodeId-visibility synthesized — flagged) |
| 113 | 15. pear-pos Tor relay architecture (in-house prior art) — `/Users/localllm/Desktop/pear-pos/docs/tor-relay-architecture.md` | |
| 113 | 15. pear-pos Tor relay architecture (in-house prior art) — `~/Desktop/pear-pos/docs/tor-relay-architecture.md` | |
| 114 | 114 | 16. HyperDHT / Hyperswarm privacy — README + privacy issues — https://github.com/holepunchto/hyperdht ; https://github.com/holepunchto/hyperdht/issues/50 ; https://github.com/holepunchto/hyperdht/issues/2 |
| 115 | 115 | |
| 116 | 116 | ## 6. Candidate approaches (with tradeoffs) |
| … | … | @@ -341,7 +341,7 @@ External prior-art claims are cited inline by bracketed number to this list; int |
| 341 | 341 | 12. RFC 9230 — *Oblivious DNS over HTTPS* (Independent Submission, experimental — "not endorsed by the IETF") — https://datatracker.ietf.org/doc/rfc9230/ |
| 342 | 342 | 13. *Private Information Retrieval* (Chor, Goldreich, Kushilevitz, Sudan) — https://www.cs.umd.edu/~gasarch/TOPICS/pir/first.pdf ; cPIR/itPIR overview — https://en.wikipedia.org/wiki/Private_information_retrieval ; CACM survey — https://cacm.acm.org/research/private-information-retrieval/ |
| 343 | 343 | 14. iroh connectivity & relays — https://docs.iroh.computer/concepts/relays ; DERP lineage (blog) — https://www.iroh.computer/blog/what-is-derp ; holepunching — https://www.iroh.computer/docs/protocols/net/holepunching (IP/NodeId-visibility synthesized from blog/docs — flagged; re-read the relay protocol spec before citing as load-bearing) |
| 344 | 15. pear-pos Tor relay architecture (in-house prior art, design-only, Node-20/Docker not Bare) — `/Users/localllm/Desktop/pear-pos/docs/tor-relay-architecture.md` | |
| 344 | 15. pear-pos Tor relay architecture (in-house prior art, design-only, Node-20/Docker not Bare) — `~/Desktop/pear-pos/docs/tor-relay-architecture.md` | |
| 345 | 345 | 16. HyperDHT / Hyperswarm privacy — README (server-mode announces keypair to the DHT) — https://github.com/holepunchto/hyperdht ; privacy issues — https://github.com/holepunchto/hyperdht/issues/50 , https://github.com/holepunchto/hyperdht/issues/2 ; independent analysis — https://hypha.coop/dripline/p2p-primer-part-3/ |
| 346 | 346 | |
| 347 | 347 | --- |
| … | … | @@ -15,7 +15,7 @@ test('peerit is seeded as a browsable hypersite, not a standalone app', () => { |
| 15 | 15 | assert.equal(app.type, 'hypersite') |
| 16 | 16 | assert.equal(app.driveKey, PEERIT_KEY) |
| 17 | 17 | assert.equal(app.link, PEERIT_URL) |
| 18 | assert.equal(app.author, 'defidon') | |
| 18 | assert.equal(app.author, 'bigdestiny2') | |
| 19 | 19 | assert.equal(app.version, '1.0.0') |
| 20 | 20 | assert.ok(app.categories.includes('featured'), 'peerit must be featured') |
| 21 | 21 | assert.ok(app.categories.includes('site')) |