T-HUB/infra/occupymedia
glass beadian 0a1c3b392b feat: direct-to-R2 Files uploads (client-sealed SPENC2) + chunked video dropzone + multi-file queue
For scale: payload bytes go browser → R2 → browser; the api handles keys,
authz and metadata only, so a cheap box can serve thousands of users.

- SPENC2 frame (browser-sealed, P-256 ECDH → HKDF wrap of a per-file CEK,
  10 MiG AES-GCM segments): storage.ts gains the reader (magic-branched
  getObject), presignPut/headObject, openDirectHeader; sealForDirect is the
  reference sealer for cross-implementation tests
- Files API: GET /files/direct/config, POST /files/direct/init (presigned
  PUT), POST /files/direct/complete (HEAD-gated commit), POST
  /files/:id/direct-download (presigned GET + CEK ticket)
- web: lib/direct-storage (WebCrypto seal/open), lib/files-direct (flows),
  dropzone rewritten with a multi-file sequential queue (per-file status,
  direct-first with server fallback), file download decrypts in-browser for
  direct objects (falls back to streaming)
- video dropzone wired to the chunked ingest API (>10 MiB → init/chunk/
  complete), fixing the Cloudflare ~100 MB body cap for large videos
- DIRECT_EC_PRIVATE_KEY (P-256, PKCS8 b64) wired through compose; cross-impl
  roundtrip tests prove web-seal ↔ server-open byte compatibility
2026-10-16 08:12:11 +00:00
..
edge fix: raise upload limits — api 2 GiB, nginx 2g (was 100 MiB api / 20m-512m nginx) 2026-10-15 08:46:50 +00:00
element feat: per-connection publish governance — auto, 1-admin, majority, consensus 2026-10-14 08:04:56 +00:00
files feat: enable oCIS public link sharing (folders can be shared publicly) 2026-10-15 09:56:25 +00:00
.env.example Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
conduwuit.toml Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
DEPLOY.md Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
docker-compose.app.yml feat: direct-to-R2 Files uploads (client-sealed SPENC2) + chunked video dropzone + multi-file queue 2026-10-16 08:12:11 +00:00
docker-compose.chat.yml ops: tuwunel loads appservice registrations via TUWUNEL_APPSERVICE_DIR 2026-10-13 16:05:48 +00:00
docker-compose.tube.yml Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
docker-compose.yml Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00
Dockerfile fix: api image installs ffmpeg (ffprobe was missing — every upload probe failed ENOENT) 2026-10-14 22:55:02 +00:00
peertube.env Tactical Media Broadcast Hub — initial release 2026-10-10 11:56:42 +00:00