Commit Graph

87 Commits

Author SHA1 Message Date
ae7721d70e feat: story gallery progress, type updates, roadmap, cleanup old session file 2026-06-11 21:08:29 +08:00
03c4ee3a65 feat: i18n for choice prompt via promptKey, with fallback 2026-06-10 16:51:50 +08:00
2f9f9a4117 feat: i18n achievement UI labels and data layer title/description 2026-06-10 16:36:24 +08:00
e51b5e234e feat: i18n StoryGallery UI labels and data layer chapter/ending names 2026-06-10 16:29:25 +08:00
0a1147c2fe fix: hotspot, demo, i18n and type updates 2026-06-10 16:10:23 +08:00
d2dae38f05 feat: P22 merge chapter select and gallery into StoryGallery, i18n updates 2026-06-10 16:01:26 +08:00
7c1c734572 fix: i18n all settings labels, add ja to language select, dynamic lang options 2026-06-10 15:42:33 +08:00
4c20c6444b fix: add missing Japanese UI keys, deduplicate resume key, use pauseResume for pause menu 2026-06-10 15:38:39 +08:00
bf4b09f4e0 feat: pause menu, accessibility improvements, main menu polish, roadmap update 2026-06-10 15:18:39 +08:00
e7ed52d89b fix: reduce menu overlay opacity to show background video 2026-06-10 14:54:28 +08:00
bb289f5438 feat: switch hotspot coordinates from container percentage to absolute content pixels 2026-06-10 12:45:41 +08:00
8f6138f97e fix: remove scene. prefix from textKey, add fallback to choice.text when locale key missing 2026-06-10 12:29:01 +08:00
86a0aebdc8 feat: configurable locales path per story, dynamic language switching from story data 2026-06-10 12:17:52 +08:00
0071a34acf feat: add Japanese language support, three-language subtitles for all demo scenes 2026-06-10 11:55:03 +08:00
87ba62b9ef feat: main menu component, roadmap update 2026-06-09 20:15:46 +08:00
3185dc5819 fix: change pause key from Space to P, disable pause during QTE 2026-06-09 19:46:51 +08:00
c9d29019a0 feat: accessibility settings, subtitle/QTE improvements, docs update 2026-06-09 19:42:08 +08:00
906965c963 fix: wire up EndingGallery click to open ChapterRecap via chapterId 2026-06-09 17:57:21 +08:00
9297117544 feat: P15 ending gallery, chapter recap, visited tracking, save system v6 2026-06-09 17:49:07 +08:00
451c6ea025 chore: sync latest changes 2026-06-09 17:21:54 +08:00
bca137535b fix: hoist prompt toast to App.vue so it survives ChoicePanel unmount after selection 2026-06-09 16:55:57 +08:00
bf4b85f727 feat: choice conditions with variables, demo updates, roadmap update 2026-06-09 16:46:06 +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
59aed77199 feat: i18n system, lang switch component, english subtitles, UI improvements, roadmap update 2026-06-09 15:40:51 +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
660fa9347c feat: playback bar component, save system improvements, demo and roadmap updates 2026-06-09 14:21:41 +08:00
ace5ed1fb3 feat: chapter select system, multi-chapter support, scene manager refactor, and docs update 2026-06-09 11:35:11 +08:00
6b67989007 feat: engine improvements, new scenes, videos, subtitles, hotspot component and docs update 2026-06-08 14:01:58 +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
b6eb3c3959 fix: QTE false race condition + restore auto-save slot in menu
- QTESystem: add if (!this.active) return guard in setInterval/setTimeout
  callbacks to prevent false result from firing after successful key press
- SaveLoadMenu: restore auto-save slot 0 row with blue styling, thumbnail,
  scene label, and read-only load button
2026-06-07 21:07:21 +08:00
e2670c50d4 refactor: rename Subtitles prop videoUrl to subtitleUrl 2026-06-07 20:48:39 +08:00
319a379921 feat: P2 - QTE system, subtitles, save thumbnails
- QTESystem: trigger detection via timeupdate, multi-key matching, timeout handling
- QTEOverlay: SVG countdown ring + key prompts + success/fail animation
- Engine: integrate QTE (timeupdate check, conditional branching, effect application)
- Subtitles: WebVTT parsing + synchronized subtitle rendering
- GamePlayer: overlay QTE and subtitle components
- SaveSystem: DB v2 with thumbnail field, canvas snapshot at 320x180 JPEG
- SaveLoadMenu: thumbnail preview for save slots
- VideoManager: getActiveVideoElement() for canvas capture
- App.vue: QTE/subtitle integration, thumbnail capture on save
- stores: QTE state management, save list with thumbnails
- demo.json: QTE scene (right_door), subtitles, new event types
- ROADMAP: mark P2 as completed
2026-06-07 19:35:14 +08:00
c61826e87c feat: auto-save on scene change + resume from auto-save
- useGameEngine: auto-save to slot 0 on every sceneChange event
- useGameEngine: add resumeAutoSave() for continuing from auto-save
- useGameEngine: extract registerEvents() to share between start and resume
- SaveLoadMenu: show slot 0 as '自动存档' with distinct styling and read-only button
- App.vue: check auto-save on load, show '继续上次进度' button if available
2026-06-07 18:42:34 +08:00
937e45c203 feat: P1 core - seamless video switching, conditional branches, save/load
- VideoManager: A/B dual-buffered video with crossfade transitions and candidate preloading
- Engine: condition-based choice filtering, ChoiceSystem timer, resumeScene for save/load
- SceneManager: getCandidateUrls for preloading next scenes
- SaveSystem: Dexie.js IndexedDB multi-slot save/load
- ChoiceSystem: timed choices with countdown and auto-default on timeout
- GamePlayer: dual video elements with crossfade CSS
- ChoicePanel: timer progress bar and countdown text
- SaveLoadMenu: save/load UI component
- App.vue: menu trigger, dual video refs, save/load integration
- gameStore: timer state, saves list
- demo.json: conditional choice example (secret ending, requires trust >= 80)
- ROADMAP: mark P1 as completed
2026-06-07 16:48:52 +08:00
aeb6dc46a4 init 2026-06-07 13:50:05 +08:00