OverviewFilesCommitsIssuesDocsReleasesPeers

pearbrowser-desktop commits / 511778e

separate browser content replication from app delivery
511778ea8b6a8b56a751410fec0b4797e116279d
by bigdestiny2 <33146784+bigdestiny2@users.noreply.github.com> · 2026-07-22T23:39:49.000Z

Changed files (4) +12 -12

README.md +2 -2
……@@ -265,8 +265,8 @@ ID/notary and Windows signing credentials are configured.
265265| Repo | What |
266266|---|---|
267267| [`bigdestiny2/hyper-fetch`](https://github.com/bigdestiny2/hyper-fetch) | ~5 KB JS library — read `hyper://` drives from any browser via the HiveRelay HTTP gateway. Pair with PearBrowser to embed hyper:// content in regular web pages. |
268| [`bigdestiny2/hiveworm`](https://github.com/bigdestiny2/hiveworm) | Featured multiplayer life-sim. Uses `window.pear.swarm.v1` for direct peer gossip. Live at `pear://d1xbkcpc…`. |
269| [`mastercodeon/Peercord`](https://git.churchofmalware.org/mastercodeon/Peercord) | Featured decentralized Discord-style chat. Current Pear release: `pear://wmir47w7…`, window-class desktop app. |
268| [`bigdestiny2/hiveworm`](https://github.com/bigdestiny2/hiveworm) | Featured multiplayer life-sim. Uses `window.pear.swarm.v1` for direct peer gossip; its legacy native release needs a verified v3 package. |
269| [`mastercodeon/Peercord`](https://git.churchofmalware.org/mastercodeon/Peercord) | Featured decentralized Discord-style chat. Its legacy desktop release needs a publisher-provided verified v3 package. |
270270| [`bigdestiny2/P2P-Hiverelay`](https://github.com/bigdestiny2/P2P-Hiverelay) | The always-on relay backbone keeping the whole network alive; this desktop checkout consumes the compatible `0.20.2` npm packages and verifies live relay compatibility through capability docs. |
271271| [`bigdestiny2/PearBrowser`](https://github.com/bigdestiny2/PearBrowser) | Mobile-focused sibling — iOS / Android port. Bare-kit-based. |
272272
backend/profile.js +1 -1
……@@ -5,7 +5,7 @@
55 * storing profile fields (display name, avatar, bio, email, etc.) and
66 * per-app grants that let apps read specific fields.
77 *
8 * Only the "browser" context (`pear://browser/profile`) can WRITE to
8 * Only the local browser-owned context can WRITE to
99 * the profile. Catalogue apps READ the profile only through the
1010 * `pear.login()` consent ceremony (Phase C), and only the fields the
1111 * user has explicitly granted.
scripts/pin-app-on-hiverelay.js +8 -8
……@@ -2,13 +2,13 @@
22 * Durably pin an EXISTING app bundle (or any Hyperdrive) on HiveRelay,
33 * WITHOUT owning its signing key.
44 *
5 * A pear:// app bundle is just a Hyperdrive — its z32 key is the drive key.
6 * Pinning is read-only replication: HiveRelay's seed-request is signed by
5 * A content bundle is addressed by a Hyperdrive key. Pinning is read-only
6 * replication: HiveRelay's seed-request is signed by
77 * THIS client's swarm keypair (see HiveRelayClient.seed → request.publisher*
88 * is OUR keypair, not the drive author's). So any peer that can fetch the
99 * content may ask the relay fleet to hold it. The author does NOT have to be
10 * the one to seed it — correcting the old assumption that only `pear seed`
11 * by the author makes an app durable.
10 * the one to seed it — replication does not make a binary trustworthy or
11 * provide a native application installer.
1212 *
1313 * IMPORTANT sizing note: a drive's blob *core* byteLength can be far larger
1414 * than its CURRENT checkout when the key was re-staged many times during dev
……@@ -29,11 +29,11 @@
2929 * and asking relays to hold it can create misleading "reachable but empty"
3030 * evidence instead of repairing availability.
3131 *
32 * Confirm durability afterwards (local `pear seed` for the key STOPPED):
32 * Confirm durability after stopping the local seed source:
3333 * node scripts/verify-app-full.js --key <64-hex>
3434 *
3535 * Usage:
36 * node scripts/pin-app-on-hiverelay.js <pear://z32 | z32 | 64-hex> \
36 * node scripts/pin-app-on-hiverelay.js <hyper://key | z32 | 64-hex> \
3737 * [--name x] [--hold 300] [--replicas 5] [--ttlDays 365] \
3838 * [--maxStorage <MB>] [--standard] [--dlTimeout 150]
3939 */
……@@ -62,7 +62,7 @@ function parseArgs (argv) {
6262function toHexKey (raw) {
6363 if (!raw) return null
6464 let s = String(raw).trim()
65 s = s.replace(/^pear:\/\//i, '').replace(/^hyper:\/\//i, '').replace(/\/.*$/, '')
65 s = s.replace(/^hyper:\/\//i, '').replace(/\/.*$/, '')
6666 if (/^[0-9a-f]{64}$/i.test(s)) return s.toLowerCase()
6767 try {
6868 const buf = z32.decode(s)
……@@ -74,7 +74,7 @@ function toHexKey (raw) {
7474const { positional, flags } = parseArgs(process.argv.slice(2))
7575const keyHex = toHexKey(positional[0])
7676if (!keyHex) {
77 console.error('usage: node scripts/pin-app-on-hiverelay.js <pear://z32 | z32 | 64-hex> [--name x] [--hold 300] [--maxStorage <MB>] [--replicas 5] [--ttlDays 365] [--standard]')
77 console.error('usage: node scripts/pin-app-on-hiverelay.js <hyper://key | z32 | 64-hex> [--name x] [--hold 300] [--maxStorage <MB>] [--replicas 5] [--ttlDays 365] [--standard]')
7878 process.exit(2)
7979}
8080
scripts/verify-pin.js +1 -1
……@@ -304,7 +304,7 @@ async function main () {
304304 console.log(' relay: ' + hiveRelayProof.mode + ' via ' + hiveRelayProof.relay.slice(0, 12) + '…')
305305 }
306306 console.log()
307 console.log(' `pear run pear://...` from anywhere will find this drive.')
307 console.log(' A Hyperdrive reader can retrieve this content from available peers.')
308308
309309 await cleanup(0)
310310}