Commit Graph

42 Commits

Author SHA1 Message Date
Xiaohan-Tian f57dd7c1da fix: failed to initialize WebGPU 2026-05-11 22:40:13 -07:00
Xiaohan-Tian d32dc35b6d feat: added local separator implementation 2026-05-11 22:27:22 -07:00
Xiaohan-Tian 8fa2c16395 feat: added save as option when renaming the project 2026-05-10 13:25:12 -07:00
Xiaohan-Tian 490cd19f68 feat: added audio recording feature 2026-05-09 15:57:46 -07:00
Xiaohan-Tian 31e02b4149 feat: implemented track level automation 2026-05-08 15:44:07 -07:00
Xiaohan-Tian f3d26126fa feat: added MIDI CC recording and list event table operation support. 2026-05-07 22:12:06 -07:00
Xiaohan-Tian 0d9e2a9f9b fix: round interpolated MIDI values to integers to deduplicate repeated consecutive values 2026-05-06 20:01:46 -07:00
Xiaohan-Tian 738628fc76 feat: added pitch bend automation (linear interpolation) 2026-05-06 18:25:14 -07:00
Xiaohan-Tian 98cccf5c7a feat: added pitch bend support 2026-05-05 21:28:32 -07:00
Xiaohan-Tian 8f453f8f4c feat: implemented inline edit for the list event panel 2026-05-05 17:55:06 -07:00
Xiaohan-Tian 8a6e904ab4 feat: added an option to let user choose the vertical resolution of the spectrogram, also fixed a bug that peak of pitch in the spectrogram has been mapped to the start of the note bin instead of the center 2026-05-04 20:14:04 -07:00
Xiaohan-Tian d089456676 feat: honor MIDI input notes' velocity during recording 2026-05-04 19:34:54 -07:00
Xiaohan-Tian cd90dc1c99 fix: linter errors 2026-05-01 14:36:56 -07:00
Xiaohan-Tian 9be96cd957 feat: add R as shortcut of recording button; fixed linter errors. 2026-05-01 14:29:27 -07:00
Xiaohan-Tian f7f79cdb32 fix: extract stems from trimmed audio is using full song 2026-04-20 21:49:25 -07:00
Xiaohan-Tian 1828dbbc63 feat: replace browser built-in alert/confirm/prompt pop-up with new DialogProvider 2026-04-19 23:54:26 -07:00
Xiaohan-Tian e3a77e6398 fix: removed unnecessary override confirmation when user save project with project name unchanged 2026-04-16 20:29:10 -07:00
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