OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-deploy commits / 5b80e84

0.4.1: drop unsolicited v1 fileList broadcast on connection
DeployServer's flat manifest scope is the entire shared ~/.local/share/store/dependencies/ cache (1207 trees / 100k+ files on tabertron). JSON.stringify(this.manifest.files) exceeds secret-stream's 16 MB MAX_ATOMIC_WRITE limit, so the unsolicited broadcast on every peer connection killed the session before any other traffic could flow — including the v2 overlay-protocol tree-request path that pgh app install actually uses. Stortron's "tree request timed out: 6d21cd6b…" was the downstream symptom. The fix: stop broadcasting the file list at connection time. v1 onFileRequest below still handles individual file lookups if a v1-only peer ever asks. v2 (overlay-protocol-v2) is the canonical client surface and is unaffected. Diagnosed via [TOOLARGE]+[v2-diag] instrumentation in pgh-sidecar 0.2.8 + hyper-overlay; the absence of any [v2-diag] markers in the failing session confirmed the offender was the v1 unsolicited send, not any v2 message. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
5b80e8440870992231492255173b190704096fa2
by plankatron <fleeky@gmail.com> · 2026-05-05T00:09:51.000Z

Changed files (2) +10 -6

index.js +9 -5
……@@ -280,11 +280,15 @@ export class DeployServer extends ReadyResource {
280280 this.emit('error', err)
281281 })
282282
283 // Send file list
284 const fileList = this.manifest.files.map(f => ({
285 path: f.path, contentHash: f.hash, size: f.size
286 }))
287 proto.sendFileList(fileList).catch(safetyCatch)
283 // v1 fileList broadcast removed (2026-05-04): with a shared
284 // dependencies cache holding 100k+ files (1207 trees on this
285 // machine), `JSON.stringify(this.manifest.files).length` exceeds
286 // secret-stream's 16 MB MAX_ATOMIC_WRITE limit. The unsolicited
287 // broadcast on every peer connection killed the session before
288 // any other traffic (including the v2 overlay-protocol tree-
289 // request flow that pgh app install actually uses) could flow.
290 // v1 onFileRequest below still serves individual file lookups if
291 // a v1-only peer ever asks; only the eager dump is gone.
288292
289293 // Handle file requests
290294 proto.onFileRequest(async (req) => {
package.json +1 -1
……@@ -1,6 +1,6 @@
11{
22 "name": "hyper-deploy",
3 "version": "0.4.0",
3 "version": "0.4.1",
44 "description": "P2P release distribution — serve build artifacts to peers over Hyperswarm",
55 "type": "module",
66 "main": "index.js",