From 82ee5c98d0ecd246e062f9f7fc50451ad1f00021 Mon Sep 17 00:00:00 2001
From: th
Date: Tue, 21 Apr 2026 22:00:35 +0200
Subject: [PATCH] 0.8.1: dirty-state + Cmd/Ctrl+S, fullscreen plays to OUT, UX
fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Unsaved-changes indicator: a small accent dot appears on the save
button whenever the scene has changed since the last save/load.
Save/load/new all mark the project clean on next tick.
- Cmd/Ctrl+S saves the project (reuses the same flow as the button;
prompts for a name on first save). Tooltip now mentions the
shortcut.
- Fullscreen preview plays to the OUT marker (or scene.duration when
no OUT is set) instead of looping at the last keyframe. Dropped
the runtime's effectiveEnd helper; RUNTIME_VERSION 13 → 14.
- "Still frame" keyframes no longer disable easing. A held kf's
easing still drives the segment INTO it from the previous kf, so
you can ease into a pause. Only the first kf disables easing
(nothing precedes it). Dropped `timeline.holdDisabledHint`.
- Settings dialog: hint text 11px → 13px (and dropped italic) so
the inline help is readable; section headings 10px → 13px.
- Canvas stage shadow: `shadowCfg` always emits explicit values plus
a `shadowEnabled` flag instead of returning `{}`. Konva's default
shadowOpacity is 1, so bailing with `{}` could leave stale shadow
attrs on the shape. Preview and editor now gate on the same
condition deterministically.
- Sidebar empty-state copy: "No clips" → "No clips yet" to match
"No buttons yet".
Regression tests: runtime rangeOut fallback is scene.duration (not
last kf); sidebar empty-states both contain "yet"; the
holdDisabledHint key is gone; saveProject tooltips mention the
shortcut.
Co-Authored-By: Claude Opus 4.7 (1M context)
---
package.json | 2 +-
src/App.vue | 63 +++++++++++++++++++++++++++--
src/components/CanvasStage.vue | 8 +++-
src/components/DocumentSettings.vue | 12 +++---
src/components/Timeline.vue | 7 ++--
src/devtools/tests.ts | 43 ++++++++++++++++++++
src/i18n/messages.ts | 6 +--
src/lib/exportPlayer.ts | 33 ++++-----------
src/version.ts | 2 +-
todo | 5 ++-
10 files changed, 133 insertions(+), 48 deletions(-)
diff --git a/package.json b/package.json
index 528cdf5..138e131 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "animatr",
"private": true,
- "version": "0.8.0",
+ "version": "0.8.1",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/src/App.vue b/src/App.vue
index 76d954e..0309a69 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,5 +1,5 @@
|