| … | … | @@ -1,5 +1,51 @@ |
| 1 | 1 | # Changelog |
| 2 | 2 | |
| 3 | ## v0.7.0 — 2026-07-16 | |
| 4 | ||
| 5 | Swarm-distributed browser protections and extensions. Content Shield lists, | |
| 6 | Pear Plugins, and the plugin catalogue now travel as ordinary Hyperdrives: | |
| 7 | checksum-verified, pinned on HiveRelay, hot-swappable, and usable offline. | |
| 8 | ||
| 9 | ### Added | |
| 10 | ||
| 11 | - **P2P filter-list subscriptions** — add a drive key in Settings, verify the | |
| 12 | manifest and SHA-256 before activation, refresh in place, and restore cached | |
| 13 | rules without a network connection. The default `pear-default` list is | |
| 14 | published and pinned at `842fb9e6…`. | |
| 15 | - **Drive-installed Pear Plugins** — install styles, scripts, and filter | |
| 16 | contributions from Hyperdrives with explicit capabilities, hash-authorized | |
| 17 | injection, a per-plugin kill switch, update/uninstall controls, and a | |
| 18 | fail-closed capability-escalation prompt. | |
| 19 | - **P2P plugin catalogue** — one-click Install/Open actions, a built-in anonGPT | |
| 20 | app entry, and support for extra `/plugins.json` catalogue drives. The public | |
| 21 | catalogue is pinned at `01b74736…`. | |
| 22 | - **Published examples** — Pear Dark Reader (`bbde8330…`) and peerit Enhancer | |
| 23 | (`1b21d8a6…`) are live, pinned, and fresh-peer verified. | |
| 24 | ||
| 25 | ### Changed | |
| 26 | ||
| 27 | - Content Shield Settings now expose list subscriptions, forced refresh, | |
| 28 | per-drive allowlist/strict controls, plugin lifecycle controls, and catalogue | |
| 29 | sources from one browser-owned surface. | |
| 30 | - Cosmetic rules, supported scriptlets, and plugin content contributions use | |
| 31 | the CSP-safe hash-authorized injection path. | |
| 32 | - Native release and embedded catalogue metadata advance to `0.7.0`. | |
| 33 | ||
| 34 | ### Security / privacy | |
| 35 | ||
| 36 | - A list checksum mismatch, malformed/oversized drive, missing capability, or | |
| 37 | silent plugin capability increase fails closed before any contribution runs. | |
| 38 | - Blocking remains browser-owned: denied requests never reach peers, relays, or | |
| 39 | clearnet, and cached lists keep working offline. | |
| 40 | ||
| 41 | ### Distribution scope | |
| 42 | ||
| 43 | - The stable Pear app, live catalogue, GitHub source/assets, `pearbrowser.com`, | |
| 44 | and the website Hyperdrive must all agree on `v0.7.0` before announcement. | |
| 45 | - Native packages remain package-proof previews until macOS notarization and | |
| 46 | Windows public-trust signing credentials are available; verify SHA-256 | |
| 47 | sidecars and expect operating-system trust prompts. | |
| 48 | ||
| 3 | 49 | ## v0.6.1 — 2026-07-15 |
| 4 | 50 | |
| 5 | 51 | Corrective distribution release aligning the catalogue, Linux package, website, |
| … | … | @@ -4,7 +4,7 @@ A local-first peer-to-peer browser, app store, search engine, naming layer, Nost |
| 4 | 4 | |
| 5 | 5 | **No accounts. No DNS. No manual app updates.** Sites and apps are addressed by stable Pear/Hyperdrive keys and pinned 24/7 on the [HiveRelay](https://github.com/bigdestiny2/P2P-Hiverelay) backbone. The publisher's laptop being offline doesn't matter — the relays carry the bytes, and users launch the current release from the catalogue without hunting for a download or applying an updater. |
| 6 | 6 | |
| 7 | **Current release:** `v0.6.1` · stable Pear production length `63165` · fresh-peer reachability verified that exact length and sampled `/index.html` with five connected peers · five HiveRelay pin acceptances observed. Signed HiveRelay storage proof remains unavailable on the observed relay service route, so the release claim is backed by the successful fresh-peer content read and live replication rather than a storage-proof receipt. This corrective release aligns the catalogue, public website, GitHub assets, native metadata, and stable Pear channel, and replaces the incorrect normalized Linux AppImage attached to `v0.6.0`. Desktop packages default to npm `latest` for HiveRelay, with the current dist-tag resolving to `0.20.2` and runtime compatibility checked through relay capability documents. See [docs/RELEASE_v0.6.1_OPERATOR.md](./docs/RELEASE_v0.6.1_OPERATOR.md) for the coordinated publish record. | |
| 7 | **Release candidate:** `v0.7.0` · stable Pear production baseline length `63165` · **new length recorded after `scripts/release-prod.sh`**. This release ships swarm-distributed Content Shield lists, capability-gated Pear Plugins, and a one-click P2P plugin catalogue. The default filter list, both example plugins, and the catalogue are already published, pinned, and fresh-peer verified; their stable keys are in [the distribution guide](./filter-lists/README.md). Desktop packages default to npm `latest` for HiveRelay, with the current dist-tag resolving to `0.20.2` and runtime compatibility checked through relay capability documents. See [docs/RELEASE_v0.7.0_OPERATOR.md](./docs/RELEASE_v0.7.0_OPERATOR.md) for the coordinated publish record. | |
| 8 | 8 | |
| 9 | 9 | **Current architecture:** start with [docs/ARCHITECTURE_AND_CAPABILITIES.md](./docs/ARCHITECTURE_AND_CAPABILITIES.md). The deeper catalogue/search/naming/Nostr audit is in [docs/DEEP_AUDIT_CATALOG_SEARCH_NAMING_NOSTR_2026-06-21.md](./docs/DEEP_AUDIT_CATALOG_SEARCH_NAMING_NOSTR_2026-06-21.md). |
| 10 | 10 | |
| … | … | @@ -51,9 +51,9 @@ The key above is **content-addressed and stable**: when we ship a new release, t |
| 51 | 51 | - **Ask Browser:** click **✦ Ask** to question a local QVAC/Qwen model about the active page, with private on-device streaming, cancellation, short follow-ups, source provenance, and no page access to the browser-owned AI channel |
| 52 | 52 | - **Local AI widget:** every blank new tab (`⌘T`) hosts a QVAC quick-ask card — zero page context, streamed on-device answers, model picker, and load-on-first-use progress ([docs](./docs/ASK_BROWSER.md)) |
| 53 | 53 | - **Content Shield:** Brave-style ad/tracker blocking enforced inside the browser-owned proxy — blocked requests never reach a peer, relay, or the network; cosmetic element hiding + scriptlets ride the CSP-safe HTML injection path; per-drive allowlist/strict modes, toggle + live counters in Settings ([plan](./docs/BROWSER_PARITY_PLAN.md)) |
| 54 | - **P2P filter lists:** subscribe to a filter-list Hyperdrive by key — rules sync peer-to-peer with sha256 verification, hot-swap when the publisher updates, and keep blocking fully offline; publish your own with `scripts/build-shield-list.mjs` + `scripts/publish-and-pin.js` ([guide](./filter-lists/README.md)) | |
| 55 | - **Pear Plugins:** extensions as Hyperdrives with declared capabilities (`pear.content.styles/scripts`, `pear.net.filter`) — install by drive key, contributions inject hash-authorized, and a swarm update that requests new capabilities is auto-disabled pending re-approval; two ready-to-publish examples in `examples/plugins/` | |
| 56 | - **Plugin catalogue:** one-click discovery in Settings — curated entries install without pasting keys, `kind: "app"` entries like **anonGPT** open directly as P2P apps, and additional catalogues load from any drive with a `/plugins.json` (shippable source in `catalogues/pear-plugins/`) | |
| 54 | - **P2P filter lists:** subscribe to a filter-list Hyperdrive by key — rules sync peer-to-peer with SHA-256 verification, hot-swap when the publisher updates, and keep blocking fully offline; the default list is live at `842fb9e6…` and you can publish your own with `scripts/build-shield-list.mjs` + `scripts/publish-and-pin.js` ([guide](./filter-lists/README.md)) | |
| 55 | - **Pear Plugins:** extensions as Hyperdrives with declared capabilities (`pear.content.styles/scripts`, `pear.net.filter`) — install by drive key, contributions inject hash-authorized, and a swarm update that requests new capabilities is auto-disabled pending re-approval; Pear Dark Reader and peerit Enhancer are published and pinned | |
| 56 | - **Plugin catalogue:** one-click discovery in Settings — curated entries install without pasting keys, `kind: "app"` entries like **anonGPT** open directly as P2P apps, and additional catalogues load from any drive with a `/plugins.json`; the public catalogue is live at `01b74736…` | |
| 57 | 57 | |
| 58 | 58 | ### Apps |
| 59 | 59 | - Paste any `pear://` link → opens in its own isolated window |
| … | … | @@ -332,7 +332,7 @@ add_pear_appling( |
| 332 | 332 | pearbrowser_desktop |
| 333 | 333 | ID "tco5k7h38uoxatedp1wongdbhjxow1x7jiwm3t1i9cujbebhsbty" |
| 334 | 334 | NAME "PearBrowser" |
| 335 | VERSION 0.6.1 | |
| 335 | VERSION 0.7.0 | |
| 336 | 336 | AUTHOR "pearbrowser-desktop contributors" |
| 337 | 337 | DESCRIPTION "P2P browser, app store, and publishing platform — no servers required." |
| 338 | 338 |
| … | … | @@ -20,6 +20,7 @@ |
| 20 | 20 | </categories> |
| 21 | 21 | <url type="homepage">https://github.com/bigdestiny2/pearbrowser-desktop</url> |
| 22 | 22 | <releases> |
| 23 | <release version="0.7.0" date="2026-07-16"/> | |
| 23 | 24 | <release version="0.6.1" date="2026-07-15"/> |
| 24 | 25 | <release version="0.6.0" date="2026-07-13"/> |
| 25 | 26 | <release version="0.5.2" date="2026-07-01"/> |
| … | … | @@ -26,7 +26,7 @@ module.exports = { |
| 26 | 26 | "p2p" |
| 27 | 27 | ], |
| 28 | 28 | "description": "P2P browser, decentralized app store, and site publisher. macOS / Windows / Linux. Talks to peers directly over Hyperswarm. Pinned 24/7 on HiveRelay.", |
| 29 | "version": "0.6.1", | |
| 29 | "version": "0.7.0", | |
| 30 | 30 | "homepage": "hyper://03f0060a35451cfb6b68ad1dda1b8474ebb43fd9100071ccf7d67679a83ebb4f/", |
| 31 | 31 | "sourceUrl": "https://github.com/bigdestiny2/pearbrowser-desktop", |
| 32 | 32 | "license": "MIT", |
| … | … | @@ -1,8 +1,8 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "PearBrowser Network", |
| 3 | 3 | "description": "Curated entry point for the Pear ecosystem — the browser itself plus its companion sites.", |
| 4 | "version": 7, | |
| 5 | "publishedAt": "2026-06-21T00:00:00Z", | |
| 4 | "version": 8, | |
| 5 | "publishedAt": "2026-07-16T00:00:00Z", | |
| 6 | 6 | "publisher": "bigdestiny2", |
| 7 | 7 | "apps": [ |
| 8 | 8 | { |
| … | … | @@ -10,7 +10,7 @@ |
| 10 | 10 | "name": "PearBrowser Desktop", |
| 11 | 11 | "description": "P2P browser, decentralized app store, and site publisher. macOS / Windows / Linux. Talks to peers directly over Hyperswarm. Pinned 24/7 on HiveRelay.", |
| 12 | 12 | "author": "bigdestiny2", |
| 13 | "version": "0.6.1", | |
| 13 | "version": "0.7.0", | |
| 14 | 14 | "categories": [ |
| 15 | 15 | "browser", |
| 16 | 16 | "tools", |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | # PearBrowser → mainstream-browser parity plan |
| 2 | 2 | |
| 3 | Status: Phases 1–3 shipped with gates closed; Phase 4 clearnet proxy + session-bridge facade shipped; Phase 5 privacy ladder shipped (HTTPS-only, tracking strip, farbling, cookie isolation in proxy mode). P2P distribution live 2026-07-16: filter-list drive subscriptions (`shield-list-sync.cjs`) and plugin installs from drives (`plugin-drive-loader.cjs` with the capability-escalation guard), plus the plugin catalogue (`plugin-catalog.cjs`, anonGPT in the builtin seed). All four distribution drives published, pinned, and fresh-peer verified — keys in `filter-lists/README.md`. Remaining: the native pear-electron session.webRequest bridge for direct-mode shields. | |
| 3 | Status: Phases 1–3 shipped with gates closed; Phase 4 clearnet proxy + session-bridge facade shipped; Phase 5 privacy ladder shipped (HTTPS-only, tracking strip, farbling, cookie isolation in proxy mode). P2P distribution live 2026-07-16: filter-list drive subscriptions (`shield-list-sync.cjs`) and plugin installs from drives (`plugin-drive-loader.cjs` with the capability-escalation guard), plus the plugin catalogue (`plugin-catalog.cjs`, anonGPT in the builtin seed). All four distribution drives published, pinned, and fresh-peer verified — keys in `filter-lists/README.md`. Remaining: the native pear-electron session.webRequest bridge for direct-mode shields. | |
| 4 | 4 | Date: 2026-07-16 |
| 5 | 5 | |
| 6 | 6 | The goal: make PearBrowser as capable a daily browser as Brave — ad blocking, |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | # Install Native Packages |
| 2 | 2 | |
| 3 | Current release: `v0.6.1`. | |
| 3 | Current release: `v0.7.0`. | |
| 4 | 4 | |
| 5 | 5 | These are package-proof desktop builds. Linux uses checksums only. macOS is |
| 6 | 6 | ad-hoc signed but not notarized, and Windows packages are unsigned until the |
| … | … | @@ -12,14 +12,14 @@ PearBrowser is free of malware until a signed and notarized DMG is published. |
| 12 | 12 | ## Choose A Package |
| 13 | 13 | |
| 14 | 14 | Download directly from the |
| 15 | [`v0.6.1` GitHub release](https://github.com/bigdestiny2/pearbrowser-desktop/releases/tag/v0.6.1). | |
| 15 | [`v0.7.0` GitHub release](https://github.com/bigdestiny2/pearbrowser-desktop/releases/tag/v0.7.0). | |
| 16 | 16 | |
| 17 | 17 | | Machine | Recommended package | Checksum sidecar | |
| 18 | 18 | | --- | --- | --- | |
| 19 | | macOS Apple Silicon | [PearBrowser-0.6.1-macos-arm64.app.zip](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-macos-arm64.app.zip) | [PearBrowser-0.6.1-macos-arm64.app.zip.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-macos-arm64.app.zip.sha256) | | |
| 20 | | macOS Intel | [PearBrowser-0.6.1-macos-x64.app.zip](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-macos-x64.app.zip) | [PearBrowser-0.6.1-macos-x64.app.zip.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-macos-x64.app.zip.sha256) | | |
| 21 | | Windows x64 | [PearBrowser-0.6.1-windows-x64.msix](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-windows-x64.msix) | [PearBrowser-0.6.1-windows-x64.msix.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-windows-x64.msix.sha256) | | |
| 22 | | Linux x64 | [PearBrowser-0.6.1-linux-x64.AppImage](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-linux-x64.AppImage) | [PearBrowser-0.6.1-linux-x64.AppImage.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.6.1/PearBrowser-0.6.1-linux-x64.AppImage.sha256) | | |
| 19 | | macOS Apple Silicon | [PearBrowser-0.7.0-macos-arm64.app.zip](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-macos-arm64.app.zip) | [PearBrowser-0.7.0-macos-arm64.app.zip.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-macos-arm64.app.zip.sha256) | | |
| 20 | | macOS Intel | [PearBrowser-0.7.0-macos-x64.app.zip](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-macos-x64.app.zip) | [PearBrowser-0.7.0-macos-x64.app.zip.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-macos-x64.app.zip.sha256) | | |
| 21 | | Windows x64 | [PearBrowser-0.7.0-windows-x64.msix](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-windows-x64.msix) | [PearBrowser-0.7.0-windows-x64.msix.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-windows-x64.msix.sha256) | | |
| 22 | | Linux x64 | [PearBrowser-0.7.0-linux-x64.AppImage](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-linux-x64.AppImage) | [PearBrowser-0.7.0-linux-x64.AppImage.sha256](https://github.com/bigdestiny2/pearbrowser-desktop/releases/download/v0.7.0/PearBrowser-0.7.0-linux-x64.AppImage.sha256) | | |
| 23 | 23 | |
| 24 | 24 | The Linux release contains exactly one product AppImage. Packaging now rejects |
| 25 | 25 | ambiguous AppImages and excludes build tools such as AppImageTool. |
| … | … | @@ -31,26 +31,26 @@ native release workflow. |
| 31 | 31 | From a source checkout, ask the resolver for the current machine: |
| 32 | 32 | |
| 33 | 33 | ```sh |
| 34 | npm run resolve:native-release -- --tag v0.6.1 --repo bigdestiny2/pearbrowser-desktop | |
| 34 | npm run resolve:native-release -- --tag v0.7.0 --repo bigdestiny2/pearbrowser-desktop | |
| 35 | 35 | ``` |
| 36 | 36 | |
| 37 | 37 | Or specify a target: |
| 38 | 38 | |
| 39 | 39 | ```sh |
| 40 | npm run resolve:native-release -- --tag v0.6.1 --repo bigdestiny2/pearbrowser-desktop --platform macos --arch x64 | |
| 40 | npm run resolve:native-release -- --tag v0.7.0 --repo bigdestiny2/pearbrowser-desktop --platform macos --arch x64 | |
| 41 | 41 | ``` |
| 42 | 42 | |
| 43 | 43 | Release operators can verify every recommended package download and checksum |
| 44 | 44 | sidecar in one pass: |
| 45 | 45 | |
| 46 | 46 | ```sh |
| 47 | npm run verify:native-downloads -- --tag v0.6.1 --repo bigdestiny2/pearbrowser-desktop --all | |
| 47 | npm run verify:native-downloads -- --tag v0.7.0 --repo bigdestiny2/pearbrowser-desktop --all | |
| 48 | 48 | ``` |
| 49 | 49 | |
| 50 | 50 | Release operators can regenerate this guide from the same resolver rules: |
| 51 | 51 | |
| 52 | 52 | ```sh |
| 53 | npm run -s generate:native-install-guide -- --tag v0.6.1 --repo bigdestiny2/pearbrowser-desktop | |
| 53 | npm run -s generate:native-install-guide -- --tag v0.7.0 --repo bigdestiny2/pearbrowser-desktop | |
| 54 | 54 | ``` |
| 55 | 55 | |
| 56 | 56 | ## Verify The Download |
| … | … | @@ -58,7 +58,7 @@ npm run -s generate:native-install-guide -- --tag v0.6.1 --repo bigdestiny2/pear |
| 58 | 58 | macOS and Linux: |
| 59 | 59 | |
| 60 | 60 | ```sh |
| 61 | shasum -a 256 -c PearBrowser-0.6.1-macos-arm64.app.zip.sha256 | |
| 61 | shasum -a 256 -c PearBrowser-0.7.0-macos-arm64.app.zip.sha256 | |
| 62 | 62 | ``` |
| 63 | 63 | |
| 64 | 64 | Use the matching filename for your package. A passing check prints `OK`. |
| … | … | @@ -66,7 +66,7 @@ Use the matching filename for your package. A passing check prints `OK`. |
| 66 | 66 | Windows PowerShell: |
| 67 | 67 | |
| 68 | 68 | ```powershell |
| 69 | $package = "PearBrowser-0.6.1-windows-x64.msix" | |
| 69 | $package = "PearBrowser-0.7.0-windows-x64.msix" | |
| 70 | 70 | $expected = (Get-Content "$($package).sha256").Split(" ")[0].ToLowerInvariant() |
| 71 | 71 | $actual = (Get-FileHash $package -Algorithm SHA256).Hash.ToLowerInvariant() |
| 72 | 72 | if ($actual -ne $expected) { throw "SHA-256 mismatch for $package" } |
| … | … | @@ -88,7 +88,7 @@ macOS: |
| 88 | 88 | |
| 89 | 89 | Windows: |
| 90 | 90 | |
| 91 | 1. Install `PearBrowser-0.6.1-windows-x64.msix`. | |
| 91 | 1. Install `PearBrowser-0.7.0-windows-x64.msix`. | |
| 92 | 92 | 2. For package-proof builds, Windows SmartScreen may warn because the installer |
| 93 | 93 | is not yet Authenticode-signed. Continue only if you intentionally trust this |
| 94 | 94 | package and its checksum. |
| … | … | @@ -96,8 +96,8 @@ Windows: |
| 96 | 96 | Linux: |
| 97 | 97 | |
| 98 | 98 | ```sh |
| 99 | chmod +x PearBrowser-0.6.1-linux-x64.AppImage | |
| 100 | ./PearBrowser-0.6.1-linux-x64.AppImage | |
| 99 | chmod +x PearBrowser-0.7.0-linux-x64.AppImage | |
| 100 | ./PearBrowser-0.7.0-linux-x64.AppImage | |
| 101 | 101 | ``` |
| 102 | 102 | |
| 103 | 103 | ## Recovery Fallback |
| … | … | @@ -0,0 +1,33 @@ |
| 1 | # PearBrowser Desktop v0.7.0 | |
| 2 | ||
| 3 | PearBrowser `v0.7.0` makes browser protection and extensions peer-to-peer. | |
| 4 | Content Shield can now subscribe to checksum-verified filter-list Hyperdrives, | |
| 5 | hot-swap updates, and keep blocking offline. Pear Plugins install from ordinary | |
| 6 | drives with explicit capabilities, hash-authorized content injection, a kill | |
| 7 | switch, and a fail-closed re-consent step whenever an update asks for more | |
| 8 | power. | |
| 9 | ||
| 10 | The release also adds a P2P plugin catalogue with one-click Install/Open | |
| 11 | actions. Pear Dark Reader, peerit Enhancer, the default shield list, and the | |
| 12 | catalogue itself are already published, pinned on HiveRelay, and fresh-peer | |
| 13 | verified. | |
| 14 | ||
| 15 | Highlights: | |
| 16 | ||
| 17 | - P2P filter lists with SHA-256 verification, 30-minute refresh, and offline | |
| 18 | restore. | |
| 19 | - Pear Plugins for scoped styles, scripts, and network filters. | |
| 20 | - Capability-escalation protection: updates cannot silently gain permissions. | |
| 21 | - One-click P2P catalogue discovery, including anonGPT as an app entry. | |
| 22 | - Per-drive shield allowlists and strict mode through the browser-owned proxy. | |
| 23 | ||
| 24 | PearBrowser remains local-first: blocked requests never leave the browser, | |
| 25 | plugin/list metadata is independently verifiable, and no account or central | |
| 26 | extension store is required. | |
| 27 | ||
| 28 | Native macOS, Windows, and Linux packages are package-proof previews with | |
| 29 | matching SHA-256 sidecars. macOS is not notarized and Windows is unsigned, so | |
| 30 | operating-system trust prompts remain expected until public-trust credentials | |
| 31 | are configured. The stable Pear address continues to hot-sync the current app: | |
| 32 | ||
| 33 | `pear://tco5k7h38uoxatedp1wongdbhjxow1x7jiwm3t1i9cujbebhsbty` |
| … | … | @@ -0,0 +1,69 @@ |
| 1 | # PearBrowser Desktop v0.7.0 — release runbook | |
| 2 | ||
| 3 | Date: 2026-07-16 | |
| 4 | Tag: `v0.7.0` | |
| 5 | Repo: `bigdestiny2/pearbrowser-desktop` | |
| 6 | Production link: `pear://tco5k7h38uoxatedp1wongdbhjxow1x7jiwm3t1i9cujbebhsbty` | |
| 7 | Catalogue key: `f5fb7500bccd60a976d2b1d24246108f4444a210b9ca591533114dffc089934d` | |
| 8 | Website Hyperdrive key: `03f0060a35451cfb6b68ad1dda1b8474ebb43fd9100071ccf7d67679a83ebb4f` | |
| 9 | ||
| 10 | This release is complete only when source, stable Pear bytes, the live | |
| 11 | catalogue, GitHub release/assets, `pearbrowser.com`, and the website Hyperdrive | |
| 12 | mirror all advertise `v0.7.0` and pass fresh-reader checks. | |
| 13 | ||
| 14 | ## Feature anchors | |
| 15 | ||
| 16 | - Default filter list: `842fb9e64c1c2092ec426151fd4f9ffb23a2efcae26ff3dd61d5d564ed58d99f` | |
| 17 | - Pear Dark Reader: `bbde8330169798dc5e0d08f8909b407cea2f8fec7e31d6241f479c714ad42082` | |
| 18 | - peerit Enhancer: `1b21d8a6960bdcdfb76da94b80dae0d1a28247516de87e6839ea2f87bb609e10` | |
| 19 | - Pear Plugins catalogue: `01b7473601a6a6a58ec240b1c4ef0cdcf1aef0f6f8bf7ff16636faecb640ad13` | |
| 20 | ||
| 21 | All four drives were published, pinned, and fresh-peer verified on 2026-07-16. | |
| 22 | ||
| 23 | ## Preflight | |
| 24 | ||
| 25 | ```sh | |
| 26 | npm test | |
| 27 | npm audit --audit-level=high | |
| 28 | git diff --check | |
| 29 | npm run check:appling-release -- --tag v0.7.0 | |
| 30 | npm run check:linux-appimage-metadata -- --json | |
| 31 | ``` | |
| 32 | ||
| 33 | ## Coordinated publication order | |
| 34 | ||
| 35 | 1. Merge the tested source candidate to `main` and record `SOURCE_REF`. | |
| 36 | 2. Publish the stable Pear production link with `./scripts/release-prod.sh`. | |
| 37 | 3. Record the new Pear length in README and this runbook; merge that record. | |
| 38 | 4. Publish the live Hyperbee catalogue from | |
| 39 | `catalog-source/pearbrowser-network.catalog.json` using persistent publisher | |
| 40 | storage. | |
| 41 | 5. Tag the exact release-source commit `v0.7.0` and create the GitHub release | |
| 42 | from `docs/RELEASE_NOTES_v0.7.0.md`. | |
| 43 | 6. Run `desktop-native-release.yml` in `package-proof` mode and verify every | |
| 44 | attached package against its SHA-256 sidecar. | |
| 45 | 7. Update and deploy `pearbrowser.com` from the verified asset metadata. | |
| 46 | 8. Re-publish the website's stable Hyperdrive mirror. | |
| 47 | ||
| 48 | ## Required evidence | |
| 49 | ||
| 50 | - Full desktop test suite, high-severity npm audit, diff check, appling metadata, | |
| 51 | and Linux metadata pass on the tagged source. | |
| 52 | - Stable Pear exact length and sampled content are reachable from a fresh peer; | |
| 53 | HiveRelay pin acceptance/replication is recorded without claiming unavailable | |
| 54 | signed storage proof. | |
| 55 | - Live catalogue reports PearBrowser `0.7.0`, the stable Pear link, and the | |
| 56 | current website Hyperdrive homepage. | |
| 57 | - GitHub release exposes one product package per supported target plus matching | |
| 58 | SHA-256 sidecars and manifests. | |
| 59 | - `pearbrowser.com` and its Hyperdrive mirror expose the same version, length, | |
| 60 | filenames, byte sizes, and hashes. | |
| 61 | ||
| 62 | ## Final record | |
| 63 | ||
| 64 | - Source PR/merge: pending | |
| 65 | - Stable Pear length: pending | |
| 66 | - Live catalogue length: pending | |
| 67 | - GitHub release/workflow: pending | |
| 68 | - Website deploy: pending | |
| 69 | - Website Hyperdrive length: pending |
| … | … | @@ -107,6 +107,6 @@ Publish the curated catalogue: |
| 107 | 107 | node scripts/publish-and-pin.js catalogues/pear-plugins --name pear-plugins-catalog |
| 108 | 108 | ``` |
| 109 | 109 | |
| 110 | After publishing the two example plugin drives, paste their keys into the | |
| 111 | `driveKey` fields of `plugins.json` and re-publish the catalogue — every | |
| 112 | subscriber's Install buttons light up on their next load. | |
| 110 | The published example keys are already recorded in `plugins.json`. When an | |
| 111 | example is replaced, publish the new drive, update its `driveKey`, and | |
| 112 | re-publish the catalogue with the original catalogue key and publisher storage. |
| … | … | @@ -1,12 +1,12 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "pearbrowser-desktop", |
| 3 | "version": "0.6.1", | |
| 3 | "version": "0.7.0", | |
| 4 | 4 | "lockfileVersion": 3, |
| 5 | 5 | "requires": true, |
| 6 | 6 | "packages": { |
| 7 | 7 | "": { |
| 8 | 8 | "name": "pearbrowser-desktop", |
| 9 | "version": "0.6.1", | |
| 9 | "version": "0.7.0", | |
| 10 | 10 | "hasInstallScript": true, |
| 11 | 11 | "license": "Apache-2.0 AND MIT", |
| 12 | 12 | "dependencies": { |
| … | … | @@ -1,6 +1,6 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "pearbrowser-desktop", |
| 3 | "version": "0.6.1", | |
| 3 | "version": "0.7.0", | |
| 4 | 4 | "description": "P2P browser + decentralized app store + site builder, desktop Pear fork of PearBrowser (jj10133/Vinjari family)", |
| 5 | 5 | "license": "Apache-2.0 AND MIT", |
| 6 | 6 | "type": "module", |