You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"notes": "This file is deployed on each supernode. PC2 nodes fetch it on first startup. NEVER commit the real usageKey to git β provision it manually on each supernode after deployment."
-[x] Creator Dashboard dApp β upload any file, set price/royalties, encrypt via Lit Protocol, upload to IPFS *(implemented Mar 13 β pc2-node/data/test-apps/elacity-creator/)*
@@ -173,7 +173,7 @@ These diagrams from Rong define the north star. Every work stream should move us
173
173
-[x]**WASM-native PDF rendering** β Replaced `lopdf` (WASM crash) with `hayro` pure-Rust PDF rasterizer for full-fidelity rendering (layout, fonts, tables, images). Fixed WASI compilation target (`wasm32-wasip1`). Node.js canvas fallback text wrapping fixed. Elacity brand blue (`#3b82f6`) applied to viewer. "Mint on Elacity" right-click for non-dDRM files. Wallet bridge restored *(completed Mar 16)*
174
174
-[x]**WASM crypto hardening (Phases A-C)** β AES-GCM decrypt-only mode in WASM (CEK never in Node.js heap, 50MB threshold), fMP4 strip+decrypt combined in single WASM call (Rust port with 64-bit box support), `build-wasm.sh` pipeline, `wasm32-wasip1` toolchain. PDF text extraction spike confirmed `hayro-syntax` lacks CMap resolution β keeping `pdfjs-dist`. Phase D (Lit Chipotle) COMPLETE. Phase E (ECDH to WASM) conditional on Chipotle envelope format.
175
175
-[x]**Bug fixes (Mar 16)** β Fixed double-signature bug (duplicate `pc2-wallet-bridge.js` + `IPC.js` handlers), fixed WASM text renderer exceeding JPEG 65535px limit, fixed video autoplay after signing, fixed `eth_requestAccounts` prompting unnecessarily (use `eth_accounts` first). Removed duplicate `eth_sendTransaction` handler from ParticleNetworkContext
176
-
-[x]**Bug fixes (Mar 18)** β Fixed duplicate wallet signatures (IPC.js + pc2-wallet-bridge.js dual handling), fixed "Network fee: Unavailable" (removed explicit gas estimation, let MetaMask handle), fixed duplicate chain switch popup (check current chain before switching), fixed duplicate SIWE login on account change, fixed media encode `dataToEncryptHash` propagation for correct minting contentId, fixed IPFS directory pinning for DASH packages (Helia `storeDirectory` + local directory detection in `pinRemoteCID`)
176
+
-[x]**Bug fixes (Mar 18)** β Fixed duplicate wallet signatures (IPC.js + pc2-wallet-bridge.js dual handling), fixed "Network fee: Unavailable" (removed explicit gas estimation, let MetaMask handle), fixed duplicate chain switch popup (check current chain before switching), fixed duplicate SIWE login on account change, fixed media encode `dataToEncryptHash` propagation for correct minting contentId, fixed IPFS directory pinning for DASH packages (Helia `storeDirectory` + local directory detection in `pinRemoteCID`), fixed PSSH extraction (multi-pattern search), fixed PSSH ciphertext/hash/kid embedding, fixed authority address (`0x8fe6bf98...` AuthorityGateway on Base), fixed GUI IPC rebuild (bundle.min.js), **E2E verified: mint β buy β download β playback**
177
177
-[x]**dDRM Viewer native windowing** β launches as UIWindow via IPC `postMessage` β `launch_app()` (not browser popup), integrated with taskbar *(completed Mar 15)*
178
178
-[x]**.ddrm.json capsule format** β descriptor files for non-media assets with CID, Lit params, mimeType. MIME: `application/x-ddrm+json`. Saved to Documents *(completed Mar 15)*
#### Media Encoding Pipeline β WORKING (Pending Lit API Recovery) (Mar 17-18)
351
+
#### Media Encoding Pipeline β WORKING END-TO-END (Mar 17-18)
352
352
353
353
Built a complete local media encoding pipeline for the Creator Dashboard. Video/audio files uploaded by creators are transcoded, fragmented, CENC-encrypted, and packaged as DASH streams β all on the local PC2 node, no cloud dependency.
354
354
@@ -380,8 +380,9 @@ Built a complete local media encoding pipeline for the Creator Dashboard. Video/
380
380
381
381
**IPFS integration:**
382
382
-`uploadDashToIPFS()` uses Helia `storeDirectory()` for correct UnixFS directory CIDs
383
-
-`pinRemoteCID()` enhanced: local `fs.stat()` check for directories, instant recursive fetch for already-local content
383
+
-`pinRemoteCID()` enhanced: uses `ipfs-unixfs-exporter` for robust local directory detection, bypasses Helia `fs.stat()`/`fs.ls()` hangs on large DAGs, `fetchDirectoryRecursive()` uses `entry.size` metadata instead of reading all bytes
384
384
- Best-effort replication of individual DASH files to Elacity IPFS gateway for multi-node reachability
385
+
- Downloaded content stored in PC2 virtual filesystem (IPFS blockstore) with `.edrm` descriptor in user's Videos folder β NOT in native OS Finder
- Root cause: Both `src/gui/src/IPC.js` and `pc2-node/src/wallet-bridge/pc2-wallet-bridge.js` independently listened for `pc2-wallet-rpc` messages and forwarded them to `window.ethereum`
@@ -396,12 +397,21 @@ Built a complete local media encoding pipeline for the Creator Dashboard. Video/
-`EncodeJob` interface returns `dataToEncryptHash` and `ciphertext` for correct minting `contentId`
398
399
399
-
**Current status:** Pipeline works end-to-end through transcoding, fragmenting, and IPFS upload. CENC encryption step blocked by Lit Chipotle API outage (Phala TEE backend TLS failure). Retry mechanism in place β will recover automatically when Lit infrastructure comes back.
400
+
**Current status:** Pipeline works end-to-end. **Video playback verified** β Creator mint β buy β download β PC2 Media Player plays DASH/CENC-encrypted video. Download saves `.edrm` descriptor to user's Videos folder in PC2 virtual filesystem.
-**PSSH extraction pattern** β `extractPSSHJson()` searched for `{"data":{` but Bento4 PSSH JSON starts with `{"protocolVersion":`. Fixed to search multiple patterns.
404
+
-**PSSH missing ciphertext/hash** β `buildPSSHJson()` was called before CEK encryption, so PSSH lacked `ciphertext` and `dataToEncryptHash`. Restructured flow: encrypt CEK first, then build PSSH with result.
405
+
-**PSSH wrong authority address** β `DEFAULT_AUTHORITY` was `0x580c26De...` (incorrect contract). Changed to `0x8fe6bf98...` (the real AuthorityGateway on Base that implements `hasAccessByContentId`). Long-term: authority should be passed dynamically per-channel from creator app.
406
+
-**PSSH kid mismatch** β `kid` was a random UUID from `generateCEK()`, but contract registers `hashToContentId(dataToEncryptHash)`. Fixed: `buildPSSHJson` now derives kid from encryption hash using same formula as creator app.
407
+
-**IPFS pin hanging** β `pinRemoteCID` called `fs.stat()` and `fs.ls()` which both hang on large UnixFS directory DAGs in Helia. Rewrote local detection to use `ipfs-unixfs-exporter` directly against blockstore (fast, bypasses Helia's blocking layers).
408
+
-**GUI IPC not rebuilt** β `src/gui/src/IPC.js` had the duplicate wallet fix in source but GUI bundle was never rebuilt. Ran `npm run build:only` in `src/gui/` to compile fix into `dist/bundle.min.js`.
400
409
401
410
**Known issues:**
402
411
- Elacity frontend UA receipt parsing: `UAReceiptFetcher.enrichOperationsWithContracts` throws `TypeError` after successful on-chain purchase. Bug is in Elacity's frontend, not our code.
403
412
- MPD parser error for image assets: Elacity's media player tries to parse image metadata as DASH manifest. Expected for non-video content.
404
413
- Lit Datil deprecation: Datil network being deprecated ~April 25, 2026 in favor of Chipotle (REST API, API key auth, TEE-based). Migration required.
414
+
- Authority address is hardcoded to Base AuthorityGateway `0x8fe6bf98...`. Works for all Base channels (shared gateway). Long-term: creator app should pass resolved authority into encode endpoint for per-channel support.
405
415
406
416
#### PC2 Media Runtime β WORKING END-TO-END (Mar 15-16)
407
417
@@ -482,7 +492,7 @@ Comprehensive player hardening and UX polish:
482
492
1.~~**Lit Chipotle migration**~~ β **DONE (Mar 13-18)** β Phases 0-5 complete. Migrated to new `chipotle-dev` network. All Lit Action CIDs registered. Pinned encrypt action (`non-media-encrypt-chipotle.js`). Auto-provisioning from supernodes built. **E2E verified** (PDF, image, text β all decrypt via Chipotle on new platform).
483
493
2.~~**End-to-end testing**~~ β **DONE (Mar 18)** β Full Creator mint β buy β dDRM Viewer decrypt verified on new Lit dev network. WASM rendering, watermarks, on-chain access check all confirmed working.
484
494
3.**Deploy supernode provisioning** β `/api/ddrm/provision` endpoint coded but NOT deployed to supernodes. See `docs/core/LIT_PRODUCTION_CHECKLIST.md` for deployment steps. **This is a v1.2.0 release blocker.**
485
-
4.**Media pipeline on Chipotle** β Full encoding pipeline built and tested (transcode, fragment, IPFS upload all working). CENC encryption blocked by Lit Chipotle API outage (Phala TEE backend). Retry mechanism in place (5 attempts, exponential backoff). Will complete E2E once Lit recovers. See media encoding pipeline section above.
495
+
4.~~**Media pipeline on Chipotle**~~ β **DONE (Mar 18)** β Full encoding pipeline E2E verified: transcode β fragment β CENC encrypt β DASH package β IPFS upload β mint β buy β download β playback. PSSH includes ciphertext, hash, contract-compatible kid, correct authority. Lit Chipotle API recovered.
486
496
5.**P-256 ECDH unwrap to WASM (Phase E)** β conditional on Chipotle envelope format. If Chipotle returns CEK directly, this phase is eliminated.
487
497
6.**`cenc-encrypt` Rust WASM crate** β Symmetric counterpart to `cenc-decrypt`. AES-128-CTR encryption in WASM, replaces `mp4encrypt` Bento4 binary. Uses identical crypto primitives from `cenc-decrypt/cenc.rs`. Target: `wasm32-wasip1`.
488
498
7.**`pssh-gen` Rust WASM crate** β PSSH box generator per ISO 23001-7. Produces binary PSSH boxes from Elacity dDRM metadata. Replaces JSON-based approach in `dashPackager.ts`.
@@ -697,7 +707,7 @@ Chipotle TEE available `Lit.Actions` methods:
697
707
-[dDRM Pipeline E2E](fd6755f0-d73c-4e41-8df3-0f57f15071a2) β @elacity-js/access, Creator Dashboard, Lit Action trust model (Path A), capacity credit auto-detection, decrypt endpoint, decentralization analysis. Also: hayro PDF rendering, WASM text fixes, Mint context menu, wallet bridge restore, Elacity branding, WASM crypto hardening Phases A-C, double-signature fix, TXT dimension cap, video autoplay, fMP4 strip+decrypt in Rust
0 commit comments