## Source

`TODO`: "Allow user-defined scenes & addings photos and videos to notes. These should be uploaded to an R2 bucket per-project,
 - TODO: how does a local project work?"

User-defined scenes are **permanently out of scope**: simulation was removed in 98245bd. This issue is only about video and the asset storage model.

## Current state

- Notes already embed raster images using the `asset://<sha256>/<name>` reference, upload-before-reference, and the guest (IndexedDB) versus signed-in (R2) split.
- Accepted image types are `png`, `jpeg`, `webp`, `gif` and `avif`, capped at 8 MB. Video is not accepted.
- R2 keys are global content addresses (`assets/<hash>`), not scoped to one project bucket.

## Acceptance

- [x] Decision: video in notes is **signed-in only**. Guest projects can still use images; video requires an account and cloud storage.
- [x] Decision: video clips may be up to **2 minutes / 200 MB**.
- [ ] Implement video support:
  - [ ] Define allowed formats, maximum size/duration and poster-frame behaviour.
  - [ ] Playback works for every collaborator and survives reload/reconnect.
  - [ ] The upload UI reports failures next to the file and never writes a reference before the bytes are stored.
  - [ ] No video bytes are placed in the Yjs document.
- [x] Decision: **all project assets**, images and video, use **per-project R2 scoping**, not global content-addressed keys.
- [ ] Define the migration from global `assets/<hash>` keys to per-project keys for all existing images and assets.
- [ ] Decide whether deduplication is lost deliberately; record the storage and permission consequences.
- [ ] If the storage model changes, define the migration for existing assets and the permission/storage-accounting consequences.
- [ ] Guest projects keep local image support. When a guest tries to upload video, show the account requirement inline; do not silently downgrade the file.
- [ ] Update the attachments e2e journey and document the asset model in README/AGENTS (or a new doc if docs are reintroduced).
- [ ] Do not add scene or 3D-model support here.


<sub>Generated on _MrBeast_ using _opencode/deepseek-v4.1-flash_ in _ses_e8326e581ffeJviTmSkomwnKES_</sub>




