Commit Graph

25 Commits

Author SHA1 Message Date
Xiaohan-Tian 24ffaa76f6 fix: reserve Untitled Project name; rename project will trigger save immidiatly. 2026-04-16 20:24:43 -07:00
Xiaohan-Tian 3010cf4e2d fix: long track name displaying issue; wrong separator model name mapping; imported generated full song not adjusting max bars; implemented retry mechanism for K.G.One server calls. 2026-04-16 17:44:44 -07:00
Xiaohan-Tian 7b82572d5c feat: implemented drag-n-drop to import KGOne generated audio/MIDI file feature 2026-04-15 22:40:47 -07:00
Xiaohan-Tian 83f4bfe47f fix: missing media files when renaming + saving the project 2026-04-10 12:14:20 -07:00
Xiaohan-Tian 2d3ea33ce6 refactor: migrate project storage from IndexedDB to OPFS with folder-based structure
- Replace monolithic KGStorage with KGProjectStorage (OPFS) and KGConfigStorage (IndexedDB)
- Each project stored as folder: project.json + meta.json + media/
- Add KGConfigUpgrader with V1 upgrader to auto-migrate existing IndexedDB projects to OPFS
- Request persistent storage via navigator.storage.persist() to prevent browser eviction
- Show loading spinner during one-time migration
- Enforce safe project name characters (letters, numbers, space, hyphen, underscore, period, parens)
- Export projects as .kgstudio zip bundles instead of raw JSON
- Import supports .kgstudio bundles (with meta.json validation) and legacy JSON files
- Auto-deduplicate project names on import with (1), (2), etc. suffix
- Add OPFS shell debugger (pwd, ls, cd, cat, dl) accessible via KGDebugger.opfs()
- Add ESLint semi rule for consistent semicolons
- Delete KGStorage.ts — all logic absorbed by new storage classes
- Add jszip dependency for zip export/import
2026-04-09 19:25:08 -07:00
Xiaohan-Tian 78b798e138 feat: added a hotkey for loop button 2026-01-22 19:05:22 -08:00
Xiaohan-Tian 5cceec0c01 feat: implemented chord guide customization feature 2025-12-17 23:07:21 -08:00
Xiaohan-Tian 610b81e4cc feat: merge mode_list.json into functional_chords.json 2025-12-17 22:10:37 -08:00
Xiaohan-Tian 46d3a21178 test: fixed test errors; skip failing integration tests temporarily
Skip command-execution and project-store-sync tests due to getMaxBars initialization issue
2025-12-15 22:56:32 -08:00
Xiaohan-Tian df722abd71 feat: added unit tests for scaleUtil.ts 2025-12-15 20:40:35 -08:00
Xiaohan-Tian bdc7fc899a feat: added highlighted chord guide on piano grid 2025-12-15 20:14:30 -08:00
Xiaohan-Tian 8512fb4204 feat: added logic to get suitable chords (console log only) 2025-12-14 21:52:23 -08:00
Xiaohan-Tian 9e0c0cc1f5 feat: add scale highlighting to Piano Roll grid 2025-12-09 23:50:03 -08:00
Xiaohan-Tian 02a7a61b1d feat: added integration tests 2025-12-08 17:56:58 -08:00
Xiaohan-Tian 2dcc76368e feat: added unit tests for timeUtil and xmlUtil. 2025-09-06 18:53:36 -07:00
Xiaohan-Tian 2bf5328af7 feat: added unit tests for KGMidiRegion and abcNotationUtil; update all deprecated method plainToClass to plainToInstance. 2025-09-03 23:05:13 -07:00
Xiaohan-Tian aa2b19966b feat: add Vitest unit testing infrastructure with initial test suite. 2025-09-03 22:15:05 -07:00
Xiaohan-Tian 1fd1486c59 fix: preserve overlapping notes with same end time in ABC conversion 2025-08-28 19:44:21 -07:00
Xiaohan-Tian 6445325f3a feat: implemented select all notes feature. 2025-08-28 19:23:21 -07:00
Xiaohan-Tian f2355b2350 rewrote welcome_new article; updated readme file; introduced /help command. 2025-08-21 23:05:22 -07:00
Xiaohan-Tian 0c54332401 added export conversation feature. 2025-08-21 21:56:22 -07:00
Xiaohan-Tian 2510014580 updated the naming convention for new tracks and regions. New tracks now default to 'Track {i}', and new regions default to '{track_name} Region {i}'. 2025-08-12 21:41:11 -07:00
Xiaohan-Tian 3534dc7fca hide the ChatBox instead of unmount it to prevent lose chat history. 2025-08-12 19:29:32 -07:00
Xiaohan-Tian bf085dacf2 introduce BASE_URL to the app and set it to /kgstudio/. 2025-08-11 22:35:51 -07:00
Xiaohan-Tian de51967b49 initial public release. 2025-08-11 18:37:21 -07:00