mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-23 12:13:04 -05:00
- Persistence: settings, shortcuts, recent projects, imported media, saved projects and auto-saves live in OPFS (IndexedDB fallback) through an in-memory mirror flushed in the background (apps/effectcraft-web/src/store.rs, persist.rs); ConfigStore gains FileOps so auto-save / recovery work in the browser store; the session snapshot restores the last project + editor state on reload; File > Open Recent works from storage. - Audio: Web Audio output (AudioWorklet, ScriptProcessor fallback) fed by AudioPlayback::pump on wasm32; A/V sync from AudioContext.currentTime; meters; unlock on first gesture. - Background jobs: engine::offload (WorkerRequest/WorkerReply protocol, Offload trait, run_request); Render Queue, tracker, mask tracker, Warp Stabilizer and Roto Freeze run in Web Workers (a second engine instance on the shared compiled module), progress streamed back; cancel terminates the worker. - GPU: WebGPU viewer frames drawn straight from the compositor's texture (gpu_display on wasm32 when the viewer draws plainly); async readback (Gpu::read_display_async) for pixels. - PWA: manifest, service worker precaching the build (xtask fills list/version), icons copied from assets/app-icon; COOP/COEP kept from cached responses; offline reload works. - window.effectcraft: saveToBrowser, listStored, removeStored, flush; info() reports storage, audio, gpu, workers. - Tests: native store + protocol + offload (render, track, cancel) tests; smoke.mjs extended (GPU path, worker render responsiveness, audio gesture + playback, reload persistence, Open Recent, offline reload). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 lines
568 B
JSON
18 lines
568 B
JSON
{
|
|
"name": "EffectCraft",
|
|
"short_name": "EffectCraft",
|
|
"description": "Motion graphics and visual effects compositor, in the browser",
|
|
"id": "./",
|
|
"start_url": "./",
|
|
"scope": "./",
|
|
"display": "standalone",
|
|
"background_color": "#1b1c1f",
|
|
"theme_color": "#1b1c1f",
|
|
"categories": ["graphics", "photo", "productivity"],
|
|
"icons": [
|
|
{ "src": "favicon.svg", "sizes": "any", "type": "image/svg+xml" },
|
|
{ "src": "icon-256.png", "sizes": "256x256", "type": "image/png" },
|
|
{ "src": "icon-512.png", "sizes": "512x512", "type": "image/png" }
|
|
]
|
|
}
|