Xiaohan-Tian
55861cf3cd
feat: add closing animation to all modal dialogs and fix drag-dismiss bug
2026-04-20 00:36:32 -07:00
Xiaohan-Tian
778c0236b6
fix: added a special treatment for time signature input; fixed text selection in pop-up and release the mouse outside the pop-up will close the pop-up issue.
2026-04-20 00:02:47 -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
0ac39068b2
feat: added metronome feature
2026-04-19 17:00:10 -07:00
Xiaohan-Tian
f0a2f06295
fix: remove hardcoded lm model
2026-04-18 16:28:29 -07:00
Xiaohan-Tian
8308cdf79a
fix: removed https support from vite dev server
2026-04-18 14:38:09 -07:00
Xiaohan-Tian
7e67ca9d10
fix: add https support for local vite dev server
2026-04-18 14:27:07 -07:00
Xiaohan-Tian
474b68c494
fix: minor updates the parameters send to ace-step-1.5
2026-04-17 23:58:10 -07:00
Xiaohan-Tian
ebcbe4002a
fix: adjust UI for open project pop up
2026-04-17 18:21:52 -07:00
Xiaohan-Tian
5ca1358795
feat: added "powered by" info to 3rd party powered features
2026-04-17 18:02:08 -07:00
Xiaohan-Tian
7d10d37b4f
fix: default K.G.One Music Generator panel to Full Song tab
2026-04-17 16:55:24 -07:00
Xiaohan-Tian
71dc7d99e7
feat: allow kgone-server.json to override the kgone server base url and soundfont base url
2026-04-17 16:32:55 -07:00
Xiaohan-Tian
206fa6fdf9
fix: honor the soundfont -> baseUrl config
2026-04-17 16:18:33 -07:00
Xiaohan-Tian
cb4bf59de1
fix: undo is resetting the mute and solo track button status
2026-04-16 22:41:06 -07:00
Xiaohan-Tian
ebcebb5d3b
feat: added split region feature
2026-04-16 22:36:31 -07:00
Xiaohan-Tian
9d9190413d
fix: allow user to create audio region by triggering audio upload pop-up
2026-04-16 21:05:05 -07:00
Xiaohan-Tian
cb027b6c20
feat: added auto-center playhead to piano roll window
2026-04-16 20:53:01 -07:00
Xiaohan-Tian
425aeab2d1
feat: let playhead automatically centered
2026-04-16 20:46:28 -07:00
Xiaohan-Tian
1d5bb59ad7
fix: linter errors
2026-04-16 20:46:09 -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
cadd51c3a4
feat: integrate K.G.One music generation panel
...
- ConfigManager: add `general.kgone` config block (enabled toggle +
base URL); add `setKGOneManagedByServer()` / `isKGOneServerManaged()`
for managed deployments that supply a `kgone-server.txt` override
- App.tsx: probe for `kgone-server.txt` on startup (Content-Type guard
to avoid Vite SPA fallback false-positive)
- GeneralSettings: new K.G.One section with enable toggle + base URL
input; fields disabled when server-managed
- Toolbar: magic wand button (FaWandMagicSparkles) that toggles the
panel; disabled with reduced opacity when K.G.One is turned off;
mutually exclusive with the Chat panel
- projectStore: add `showKGOnePanel` state + `toggleKGOnePanel` action
- KGOnePanel (new): three-tab panel (Clip / Full Song / Separator)
- Clip: prompt + advanced params → POST /v1/clip/generate → poll
/v1/clip/result → download WAV → AudioPlayer preview
- Full Song: caption + lyrics + advanced params → POST
/v1/fullsong/generate → poll /v1/fullsong/result (live progress %
from nested JSON string) → download MP3 → AudioPlayer preview
- Separator: reads selected audio region from OPFS via
KGAudioFileStorage → POST /v1/separator/separate (multipart) →
poll /v1/separator/result → parallel-download all stem files →
multiple labeled AudioPlayer instances rendered vertically
- Shared: custom AudioPlayer (play/pause, clickable seek bar),
spinner + hint text, error card, AbortController cleanup,
DEBUG_MODE.KGONE-gated REQ/RES console logging
2026-04-15 19:51:16 -07:00
Xiaohan-Tian
2328ddb3f1
Merge pull request #31 from KGAudioLab/feat/2026-04-09-add-wav-track-support
...
doc: updated README.md
2026-04-11 13:00:05 -07:00
Xiaohan-Tian
eeebf5407f
doc: updated README.md
2026-04-11 12:59:41 -07:00
Xiaohan-Tian
c8f84d7870
Merge pull request #30 from KGAudioLab/feat/2026-04-09-add-wav-track-support
...
Feat/2026 04 09 add wav track support
2026-04-11 12:55:45 -07:00
Xiaohan-Tian
d082c9cfb5
fix: missing tool calling info in the exported conversation JSON and MD
2026-04-11 12:54:10 -07:00
Xiaohan-Tian
d16553e659
feat: added bouncing to MP3 feature
2026-04-11 12:30:15 -07:00
Xiaohan-Tian
d4864426e3
feat: add bounce-to-WAV export with offline rendering via Tone.Offline
2026-04-11 12:18:30 -07:00
Xiaohan-Tian
d94b53dcf5
feat: add snap-to-grid toggle for track grid regions and playhead
2026-04-10 20:57:34 -07:00
Xiaohan-Tian
1670679c61
feat: add audio region trimming with non-destructive clip offset
2026-04-10 20:17:31 -07:00
Xiaohan-Tian
39401b39c6
doc: updated help.md
2026-04-10 18:27:32 -07:00
Xiaohan-Tian
139684b413
feat: add bar width multiplier (1x–8x horizontal zoom) for track grid
2026-04-10 18:17:36 -07:00
Xiaohan-Tian
4917e54048
feat: enhanced emulated bash terminal (by using browser's input box pop-up loop)
2026-04-10 13:47:37 -07:00
Xiaohan-Tian
1ff9bfcac4
feat: add Open Project modal with project browser, soft delete, and duplicate
...
Replace the prompt-based project loading with a full modal UI:
- Draggable/resizable panel with overlay and backdrop blur
- Filterable project list with incremental fuzzy matching
- Sortable columns (name, created, updated) with asc/desc toggle
- Duplicate project with auto-rename on name conflict
- Soft delete with trash view, restore, and permanent delete
- Auto-purge trash after 30 days
- Orphan media file cleanup on project open
- Skip folders without valid meta.json in project listing
2026-04-10 13:28:01 -07:00
Xiaohan-Tian
21a19918b5
fix: assigned an image as audio track's instrument-preview background
2026-04-10 12:30:57 -07:00
Xiaohan-Tian
83f4bfe47f
fix: missing media files when renaming + saving the project
2026-04-10 12:14:20 -07:00
Xiaohan-Tian
6080accd3a
feat: added rm opfs mock bash command
2026-04-09 22:17:20 -07:00
Xiaohan-Tian
fc84edfc59
feat: add audio track support with WAV/MP3 playback and looping
...
Introduce KGAudioTrack and KGAudioRegion as new track/region types
alongside existing MIDI tracks. Users can import WAV, MP3, OGG, FLAC,
and AAC files into audio tracks with full playback, looping, and
solo/mute/volume support.
New core models:
- KGAudioTrack (extends KGTrack with TrackType.Wave)
- KGAudioRegion (extends KGRegion with audio file reference)
- KGAudioPlayerBus (Tone.Gain + ToneBufferSource-based playback)
- KGAudioFileStorage (OPFS media/ directory for binary audio files)
New commands:
- AddAudioTrackCommand (create audio track with player bus)
- ImportAudioCommand (import audio file, create region at playhead,
auto-expand maxBars)
Playback features:
- Audio regions scheduled via Tone.Transport alongside MIDI events
- Loop support with duration capping at loop boundaries
- Resume safety offset to prevent ToneBufferSource timing misses
- Cross-track buffer copy when moving audio regions between tracks
- Proper buffer cleanup on track deletion and project switch
UI changes:
- Separate "+ MIDI" and "+ Audio" buttons in top-left spacer
- Audio track shows upload button instead of instrument selector
- FileImportModal reused for audio file drag-and-drop upload
- Real waveform rendering on audio region canvas
- Green color scheme for audio regions (vs blue for MIDI)
- Pencil icon and resize handles hidden for audio regions
- Cross-type region moves blocked (MIDI ↔ Audio)
- Piano roll blocked for audio regions
- Audio region deletion support
Infrastructure:
- Project structure version bumped to 4 (no-op migration)
- class-transformer discriminators updated for new subtypes
- RemoveTrackCommand updated to clean up audio player buses
2026-04-09 21:54:54 -07:00
Xiaohan-Tian
de2979178e
Merge pull request #29 from KGAudioLab/feat/2026-04-08-refactor-data-storage
...
Feat/2026 04 08 refactor data storage
2026-04-09 19:25:35 -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
17610f12f3
refactor: split monolithic App.css into feature-based co-located CSS files
2026-04-09 17:31:49 -07:00
Xiaohan-Tian
58cb4cebef
refactor: moved "Add track" button from bottom TrackControl to top-left-spacer for better discoverability
2026-04-08 19:15:01 -07:00
Xiaohan-Tian
5a863fee35
Merge pull request #28 from KGAudioLab/feat/2026-04-05-refactor-tool-calling
...
Feat/2026 04 05 refactor tool calling
2026-04-05 23:03:52 -07:00
Xiaohan-Tian
63ced27702
feat: added Claude 4.6 model series options.
2026-04-05 23:01:58 -07:00
Xiaohan-Tian
586f0f996c
feat: added OpenAI SDK with OpenRouter based Claude model support; updated recommended models in README.md
2026-04-05 22:57:12 -07:00
Xiaohan-Tian
6c49fbfabe
feat: added model options for GPT-5.4 families; updated default model to gpt-5.4-mini
2026-04-05 22:23:07 -07:00
Xiaohan-Tian
26b7510178
fix: rename start_beat to start and end_beat to end in 3 tools.
2026-04-05 21:28:19 -07:00
Xiaohan-Tian
ee31ca087e
fix: minor UI enhancements.
2026-04-05 19:59:49 -07:00
Xiaohan-Tian
2cd976ff96
refactor: migrate agent system from XML tool calling to OpenAI SDK with native function calling
...
- Replace custom XML-based tool parsing (XMLToolExecutor) with OpenAI SDK's
native tool_calls via `openai` npm package (dangerouslyAllowBrowser)
- Consolidate 4 LLM providers (OpenAI, Claude, Gemini, ClaudeOpenRouter)
into a single OpenAI SDK-based LLMProvider compatible with any
OpenAI-style API (OpenAI, OpenRouter, Ollama, vLLM)
- Move agentic tool execution loop from ChatBox into AgentCore
- Update Message type to support tool roles, tool_calls, and tool_call_id
- Update system prompt to remove XML formatting instructions (~45% smaller)
- Remove AttemptCompletionTool (replaced by stop_reason detection),
ThinkTool, and ThinkingTool
- Polish tool descriptions for OpenAI function calling schema compliance
- Normalize base URLs by stripping /chat/completions suffix
2026-04-05 18:59:25 -07:00
Xiaohan-Tian
5042477a2a
Merge pull request #27 from KGAudioLab/feat/2026-01-22-looping
...
Feat/2026 01 22 looping
2026-01-23 15:37:27 -08:00
Xiaohan-Tian
8e8c55774f
docs: updated README.md
2026-01-23 15:36:51 -08:00
Xiaohan-Tian
1c8361d45b
feat: implemented playback looping; fixed an linter error in Toolbar.tsx
2026-01-23 15:34:26 -08:00
Xiaohan-Tian
b767d2176f
feat: enhanced the note scheduling logic to support loop mode
...
pending cases: user disabled the loop mode or updated the loop range during playback.
2026-01-23 13:22:51 -08:00
Xiaohan-Tian
b46442bd9d
feat: added upgradeToV3 upgrader
2026-01-22 19:10:01 -08:00
Xiaohan-Tian
78b798e138
feat: added a hotkey for loop button
2026-01-22 19:05:22 -08:00
Xiaohan-Tian
b80e7e84b8
feat: implemented change loop setting command
2026-01-22 18:50:09 -08:00
Xiaohan-Tian
f367c84ee8
feat: implemented UI of looping feature
2026-01-22 18:36:25 -08:00
Xiaohan-Tian
20310ccea0
docs: updated welcome_again.md
2026-01-22 17:32:25 -08:00
Xiaohan-Tian
59faeff4a1
Merge pull request #26 from KGAudioLab/feat/2026-01-17-add-option-allow-persist-api-key-on-non-localhost
...
Feat/2026 01 17 add option allow persist api key on non localhost
2026-01-17 14:05:35 -08:00
Xiaohan-Tian
609efab64a
fix: added a warning comment
2026-01-17 14:05:10 -08:00
Xiaohan-Tian
8c1ab53f25
docs: updated README.md
2026-01-17 14:02:49 -08:00
Xiaohan-Tian
e8b79efde7
feat: add option to persist API keys on non-localhost (opt-in security feature)
2026-01-17 13:54:15 -08:00
Xiaohan-Tian
6717cea57c
Merge pull request #25 from KGAudioLab/feat/2025-12-25-more-models
...
feat: added latest (as of 2025-12-25) GPT and Claude model support
2026-01-17 12:33:35 -08:00
Xiaohan-Tian
4f4e60f84a
feat: added latest (as of 2025-12-25) GPT and Claude model support
2025-12-25 14:29:50 -08:00
Xiaohan-Tian
ab8c268a12
Merge pull request #24 from KGAudioLab/feat/2025-12-19-midi-keyboard-support
...
chore: updated README
2025-12-21 22:46:07 -08:00
Xiaohan-Tian
3b2b359d43
chore: updated README
2025-12-21 22:45:27 -08:00
Xiaohan-Tian
ef08ec91e2
Merge pull request #23 from KGAudioLab/feat/2025-12-19-midi-keyboard-support
...
Feat/2025 12 19 midi keyboard support
2025-12-21 22:42:32 -08:00
Xiaohan-Tian
b44e6fb1ee
feat: added an option to control playhead animation fps
2025-12-21 22:42:01 -08:00
Xiaohan-Tian
eaee036fc2
feat: added playback delay configuration
2025-12-21 20:11:27 -08:00
Xiaohan-Tian
aadf9e06df
feat: added lookAhead option
2025-12-21 18:51:20 -08:00
Xiaohan-Tian
4b075e8979
fix: reduce Tone.js context.lookAhead to reduce MIDI input latency
2025-12-19 12:55:56 -08:00
Xiaohan-Tian
d3a2fe1f8d
feat: added MIDI keyboard support
2025-12-19 11:44:58 -08:00
Xiaohan-Tian
22c11fd31e
Merge pull request #22 from KGAudioLab/feat/2025-12-08-chord-assistant
...
Feat/2025 12 08 chord assistant
2025-12-17 23:08:01 -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
2fc6e56f40
Merge pull request #21 from KGAudioLab/feat/2025-12-08-chord-assistant
...
test: fixed test errors; skip failing integration tests temporarily
2025-12-15 22:57:31 -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
03b579682e
Merge pull request #20 from KGAudioLab/feat/2025-12-08-chord-assistant
...
Feat/2025 12 08 chord assistant
2025-12-15 22:19:07 -08:00
Xiaohan-Tian
56be4440fa
docs: add Intelligent Chord Assistant feature to README
2025-12-15 22:18:28 -08:00
Xiaohan-Tian
54b227c1be
feat: implemented the logic to automatically create a chord when a suitable guide chord is highlighted.
2025-12-15 21:59:56 -08:00
Xiaohan-Tian
fbd13eef9f
fix: default chord guide note's length to last edited note's length
2025-12-15 21:48:03 -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
fe9eb79959
feat: map chords base on each mode
2025-12-14 21:37:13 -08:00
Xiaohan-Tian
2636395cbf
feat: added functional chords resource files
2025-12-12 17:07:02 -08:00
Xiaohan-Tian
dcd2d89d0f
feat: persistence selected mode
2025-12-10 21:54:16 -08:00
Xiaohan-Tian
fa201d11c5
fix: display the currently selected mode in the mode dropdown
2025-12-09 23:55:48 -08:00
Xiaohan-Tian
9e0c0cc1f5
feat: add scale highlighting to Piano Roll grid
2025-12-09 23:50:03 -08:00
Xiaohan-Tian
98ed8a60ce
feat: added mode list dropdown
2025-12-08 22:59:09 -08:00
Xiaohan-Tian
02a7a61b1d
feat: added integration tests
2025-12-08 17:56:58 -08:00
Xiaohan-Tian
c5ada0db63
Merge pull request #19 from KGAudioLab/test/2025-09-03-initial-unit-tests
...
Test/2025 09 03 initial unit tests
2025-09-06 19:09:16 -07: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
3f087e2821
Merge pull request #18 from KGAudioLab/feat/2025-08-29-new-instruments
...
feat: added 28 new instruments.
2025-08-30 13:33:29 -07:00
Xiaohan-Tian
3dae3195e5
feat: added 28 new instruments.
2025-08-30 13:32:36 -07:00
Xiaohan-Tian
d5dbe9066a
Merge pull request #17 from KGAudioLab/fix/2025-08-24-misc
...
fix: manually cleaned up the initial changelog.
2025-08-28 22:41:13 -07:00