Skip to content

ipfs2foc: v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 20:52
05ef0f7

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/capabilities the 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