1.1.0: .ruw project bundle + per-export target FPS

- New .ruw file format: a STORE-only zip wrapping project.json +
  an assets/ folder. packProject extracts every data-URL asset
  (images, audio, background video) into its own file and
  rewrites the in-JSON src fields to relative paths;
  unpackProject rehydrates back to data URLs on read. Zero
  dependencies — we ship a minimal in-house zip codec.
- ExportDialog surfaces the new format as a top-row
  "RUWIO project (.ruw)" option that round-trips through the
  welcome-dialog file picker. Legacy .json imports still work
  via byte-sniffing the PK header in readAnyProjectFile. Dead
  App.vue `exportProjectFile` helper removed.
- Frame-based exports (GIF, APNG, APNG preview) take an optional
  targetFps override so a 60fps project doesn't balloon the file
  — APNG / GIF size scales ~linearly with frame count. The
  ExportDialog grows a second input next to target size;
  defaults inherit the scene's fps and reset on each dialog
  open.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
thandClaude Opus 4.7 committed 2026-04-24 20:50:21 +02:00
1 parent 647f09b287
commit 92e9f1619f
10 files changed
+735 -30

No files matched your search

+6
View File
@@ -454,6 +454,12 @@ export const en = {
targetSize: 'Target size',
targetSizeReset: 'Reset to scene canvas size',
targetSizeResetLabel: 'Reset',
targetFps: 'Target FPS',
targetFpsHint: 'Lower → smaller file',
targetFpsReset: 'Reset to scene FPS',
ruwTitle: 'RUWIO project (.ruw)',
ruwBadge: 'Reimportable',
ruwDesc: 'Zipped bundle — project JSON + every image / audio asset as a separate file. Drop it onto the welcome screen to reopen.',
},
tests: {