OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-proto-peer commits / 9d10147

0.3.111: log the STACK when a DID fails to boot
A per-DID boot failure was reported by message alone. On a phone — no filesystem access, no debugger, no way to add a print — `Cannot read properties of undefined (reading 'length')` names a JS idiom and nothing else, so localizing it meant guessing at input shapes and rebuilding an APK per guess. Two guesses in, that is plainly the wrong instrument: the message is the one part that cannot identify the site. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9d101472019975d7a1ac0e84a6203864124fecb3
by plankatron <fleeky@gmail.com> · 2026-08-10T15:23:06.000Z

Changed files (2) +7 -2

lib/device-node.js +6 -1
……@@ -747,7 +747,12 @@ export async function bootMultiDevice ({ storage, dids = [], deviceMnemonic = nu
747747 if (node.overlay) for (const conn of swarm.connections) { try { node.overlay.attachProtocol(Protomux.from(conn)); logOverlayAttachResult(node.did, node.overlay); if (node.reconcile) node.reconcile() } catch (err) { logOverlayAttachFail(node.did, err) } }
748748 console.log(JSON.stringify({ msg: 'multi-did: serving DID', did: node.did, handle: d.handle || null, controlKey: node.control ? node.control.serverKey : null }))
749749 } catch (e) {
750 console.error(JSON.stringify({ msg: 'multi-did: failed to boot DID', did: d.did, error: e.message }))
750 // WITH THE STACK. A per-DID boot failure is reported by MESSAGE alone on every node in the fleet,
751 // including a phone with no filesystem access and no debugger — so `Cannot read properties of
752 // undefined (reading 'length')` named a JS idiom and nothing else, and localizing it meant guessing
753 // at shapes and rebuilding an APK per guess. The message is the one thing that cannot identify the
754 // site; the stack is free and is the whole diagnosis.
755 console.error(JSON.stringify({ msg: 'multi-did: failed to boot DID', did: d.did, error: e.message, stack: e.stack }))
751756 }
752757 }
753758 await swarm.flush().catch(() => {})
package.json +1 -1
……@@ -1,6 +1,6 @@
11{
22 "name": "hyper-proto-peer",
3 "version": "0.3.110",
3 "version": "0.3.111",
44 "description": "Self-custody, P2P-native atproto peer — holds the user's key + content as Hypercores and authors+signs its own repo. The source of truth in the peer/bridge split (Model B); atproto-bridge projects it to bsky.",
55 "type": "module",
66 "main": "lib/peer.js",