ipfs2foc: v0.3.0
0.3.0
One console, two backends. ipfs2foc serve now hosts the same browser console as the hosted site, serves pieces to providers directly, and submits on chain with a wallet-granted session key — no PRIVATE_KEY for interactive use. The headless CLI flow is unchanged.
The serve daemon
- serves the bundled browser console and a versioned
GET /api/capabilitiesthe app adapts to (the hosted site falls back to hosted defaults) (c9ac956, fd8425c) - answers
GET/HEAD /piece/{pcidv2}itself — 302 to the source gateway for passthrough pieces, bytes from disk for assembled ones — with built-in ingress (--ingress cloudflared) or a self-fronted--public-base, plus a reachability self-check (f23be37) - accepts a browser-granted session key (
POST /api/session, verified on chain, persisted for restart-resume) and drives the pull/add machine with it:POST /api/submit,POST /api/data-sets(91a68f3, ff1cff4) - binds loopback with Host and Origin checks; a public tunnel reaches only the piece endpoint and health check, never the control plane
The browser console
- signing panel for local mode: connect a wallet, grant a scoped session (CreateDataSet + AddPieces, explicit expiry, extend/revoke), hand it to the daemon (9c8bea1)
- chunked submission: large runs land in provider-sized pulls and sequential on-chain adds, with chunk-level resume (8bc101c)
- partial-commit deferral: pieces a provider cannot fetch from their source are carved out and offered back as a retry and a remainder manifest; everything fetchable commits (9ed4e92)
- the advertised provider minimum piece size is treated as advisory — providers accept and commit smaller pieces; a hint names how many sit under the typical 1 MiB floor (63fcb17)
- self-service recovery paths throughout: actionable too-small guidance with the local packing walkthrough, per-row "check availability" links, resume hints for interrupted prepares (df47ea5)
Bug fixes
- min piece guard compared the fr32 payload size against the padded floor, wrongly rejecting pieces exactly at the provider minimum (15fdc50)
- a failed pull now discards its presign so retries actually retry instead of replaying the same terminal status (36178f8)
Docs
- new guide: migrate with the local console — hosted vs local, and how a run carries over
- session keys section in SECURITY.md; ingress guide covers
serveand the http2 fallback for blocked quick tunnels