From cd9cf91ef0a14ab4fe3dfc14951ce6fe7dba1bcc Mon Sep 17 00:00:00 2001
From: th
Date: Fri, 24 Apr 2026 17:50:35 +0200
Subject: [PATCH] 1.0.1: target size for GIF / APNG / APNG preview
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Frame-based exports (GIF, APNG, APNG-preview) accept an optional
target output size. ExportDialog exposes it as a single width
input above the three image-export rows; height is derived live
from the scene's aspect ratio so the user can't squash the output.
The preview HTML mirrors the target dims so a downsized export
previews at its real pixel size.
renderFrames takes targetWidth / targetHeight, sizes its canvas
accordingly and scales the ctx once; drawSceneFrame's own
save/restore preserves the transform across frames, including the
top-level-mask offscreen compositing path.
Target width on dialog open is inherited from the current
scene.canvas — watched via modelValue so resizing the stage and
reopening the dialog picks up the new size (instead of the stale
value from whenever ExportDialog first instantiated).
Co-Authored-By: Claude Opus 4.7 (1M context)
---
package.json | 2 +-
src/components/ExportDialog.vue | 186 +++++++++++++++++++++++++++++---
src/devtools/tests.ts | 174 ++++++++++++++++++++++++++++++
src/i18n/messages.ts | 3 +
src/lib/apngExport.ts | 10 +-
src/lib/frameExport.ts | 23 +++-
src/version.ts | 2 +-
7 files changed, 374 insertions(+), 26 deletions(-)
diff --git a/package.json b/package.json
index c9b0dee..fef36ce 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "ruwio",
"private": true,
- "version": "1.0.0",
+ "version": "1.0.1",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/src/components/ExportDialog.vue b/src/components/ExportDialog.vue
index 51120f5..990ae00 100644
--- a/src/components/ExportDialog.vue
+++ b/src/components/ExportDialog.vue
@@ -1,5 +1,5 @@
|