fddef6d1fc
docs: scope P14 SFX to UI feedback only, scene audio belongs in video production
2026-06-09 16:18:11 +08:00
7a7c6c935c
docs: update roadmap
2026-06-09 16:08:08 +08:00
f044ed0b60
refactor: switch to key-based i18n for choices, revert inline textEn approach
2026-06-09 15:54:55 +08:00
8e7f77bc38
feat: inline bilingual choice text (textEn), lang-aware choice rendering
2026-06-09 15:51:37 +08:00
daec24d69b
fix: App.vue updates
2026-06-09 15:45:58 +08:00
59aed77199
feat: i18n system, lang switch component, english subtitles, UI improvements, roadmap update
2026-06-09 15:40:51 +08:00
6b4114af43
feat: press Esc to open menu during gameplay, close with Esc
2026-06-09 15:40:01 +08:00
72e442f2c3
feat: UI polish, chapter select improvements, save system enhancements, roadmap update
2026-06-09 15:19:53 +08:00
2748b2c16f
fix: remove absolute positioning from PlaybackBar to prevent overlap with top-bar buttons
2026-06-09 15:03:18 +08:00
66c7028b32
fix: move skippable flag from QTE result scenes to the triggering scene
2026-06-09 14:57:46 +08:00
0a6d26ecb0
fix: suppress videoEnd during QTE, clear QTE UI on game end and chapter restart
2026-06-09 14:55:13 +08:00
660fa9347c
feat: playback bar component, save system improvements, demo and roadmap updates
2026-06-09 14:21:41 +08:00
ca71b6d52e
docs: update README
2026-06-09 12:35:55 +08:00
652162f565
fix: restore opacity when replaying same video after image scene
2026-06-09 12:32:48 +08:00
ed435f790f
refactor: extract enterScene as single source of truth for scene transitions
2026-06-09 12:26:38 +08:00
bdf62bf0a6
fix: set currentScene before image branch in resumeScene so hotspots are clickable
2026-06-09 12:18:42 +08:00
9e339c7c16
refactor: inline event registration at setup level, remove registerEvents duplication across entry points
2026-06-09 12:06:40 +08:00
ace5ed1fb3
feat: chapter select system, multi-chapter support, scene manager refactor, and docs update
2026-06-09 11:35:11 +08:00
655b9a23d0
feat: fullscreen composable, roadmap update, and future plans doc
2026-06-09 10:47:14 +08:00
4bfdfbc27d
feat: audio system, demo scene updates, docs, and engine improvements
2026-06-08 23:18:33 +08:00
514c8f5207
fix: shorten stay subtitle cue to avoid overlap with loop segment
2026-06-08 22:02:19 +08:00
0dbe1b097d
feat: video loop support for hotspot scenes, demo updates, docs, and engine fixes
2026-06-08 21:48:47 +08:00
5b40781d0a
fix: hide old video frame before crossfade when coming from image scene
2026-06-08 21:24:28 +08:00
972738572f
fix: filter stale timeupdate events by tracking sceneVideo element
2026-06-08 21:09:10 +08:00
6c0deea0e2
fix: pause old video before switching to prevent stale timeupdate triggering wrong hotspot states
2026-06-08 15:29:28 +08:00
17c479525d
fix: emit initial hotspot state immediately after sceneChange to prevent flash
2026-06-08 15:17:43 +08:00
077de2a64e
fix: emit sceneChange before video start to avoid hotspot flash, prevent game end for hotspot-only scenes
2026-06-08 15:02:38 +08:00
d81042174a
fix: skip crossfade when switching to same video, replay from start
2026-06-08 14:32:34 +08:00
fa7c333214
fix: use v-show instead of v-if for GamePlayer to prevent video element detach during image scenes
2026-06-08 14:26:21 +08:00
6b67989007
feat: engine improvements, new scenes, videos, subtitles, hotspot component and docs update
2026-06-08 14:01:58 +08:00
e68ed9c962
fix: await nextTick before setting video src on first preview
2026-06-08 13:48:50 +08:00
a0749261bf
feat: highlight upstream/downstream edges when node selected
2026-06-08 13:09:47 +08:00
a16f34acd9
docs: add graph layout optimization record to editor README
2026-06-08 13:07:18 +08:00
b542660095
feat: replace BFS layout with dagre for professional graph layout
2026-06-08 13:01:17 +08:00
e323f7973a
fix: pass SmoothStepEdge component instead of string to default-edge-type
2026-06-08 12:49:42 +08:00
a008c927a5
feat: use smoothstep edge type for orthogonal lines
2026-06-08 12:24:42 +08:00
419bfab1f4
fix: remove animated edges
2026-06-08 12:22:41 +08:00
23f8fb97a6
feat: BFS-based left-to-right tree layout for scene graph
2026-06-08 12:21:05 +08:00
f439f7784e
fix: add immediate:true to watcher so initial data renders on first mount
2026-06-08 12:14:57 +08:00
b48a760a1e
fix: use local refs for nodes/edges, only useVueFlow for events and fitView
2026-06-08 12:10:18 +08:00
518c451a59
fix: remove redundant :nodes/:edges props from VueFlow, useVueFlow already provides them via inject
2026-06-08 12:05:54 +08:00
4d48463164
refactor: rewrite editor with immutable state, async-safe Vue Flow, and loading guard
2026-06-07 23:18:43 +08:00
45461b4ed7
fix: prevent Vue Flow edge render crash by clearing edges before structural node changes
2026-06-07 23:01:52 +08:00
dad5e9b8c3
docs: add editor README with usage guide
2026-06-07 22:51:56 +08:00
a22dd8497e
fix: move critical layout CSS to index.html, revert broken absolute positioning
2026-06-07 22:50:20 +08:00
469fc1ff33
fix: ensure Vue Flow parent container has explicit dimensions
2026-06-07 22:41:51 +08:00
f9ee24197a
chore: update roadmap and session log
2026-06-07 22:00:30 +08:00
3b4c6d7024
feat: P3 - visual scenario editor with Vue Flow
...
- editor/: stand-alone Vite multi-page app for visual scenario editing
- editor/components/SceneGraph.vue: Vue Flow graph with scene nodes, branch/default/QTE edges
- editor/components/NodeEditor.vue: right panel editing video/subtitle paths, choices, QTE params
- editor/components/PreviewPanel.vue: embedded video player previewing selected scene
- editor/composables/useGraphEditor.ts: bidirectional graph<->JSON sync
- editor/App.vue: toolbar (new scene, import/export JSON, load demo, start scene selector)
- @vue-flow/core|background|controls: graph visualization dependencies
- vite.config.ts: multi-page build (main + editor)
- ROADMAP: mark P3 as completed
2026-06-07 21:38:08 +08:00
65c26e0972
fix: clear old subtitle cues when switching to scene without subtitles
...
Previously when subtitleUrl became null, the old cues array was retained
and would replay from the beginning on the next scene.
2026-06-07 21:22:45 +08:00
a34d787336
fix: register checkQTE once in constructor instead of per-scene
...
Previously goToScene added a new checkQTE closure to onTimeUpdate on
every scene transition, accumulating stale closures that re-triggered
old QTE. Now checkQTE is an arrow property registered once in the
constructor, reading this.currentScene directly — no closure, no stale
references, no guard condition needed.
2026-06-07 21:16:31 +08:00