# [0.17.3-build.20260515] (2026-05-15)

* Merge pull request #44 from KGAudioLab/feat/2026-05-11-embedded-models (03a47c6)
* fix: always use unix-style LF even in Windows (3110304)
* fix: optimized system prompt for local LLM (93798fd)

# [0.17.2-build.20260515] (2026-05-15)

* Merge pull request #43 from KGAudioLab/feat/2026-05-11-embedded-models (8a6937d)
* fix: allow local Gemma runtime on GitHub Pages and avoid OPFS cache finalize read errors (e243f9e)

# [0.17.1-build.20260515] (2026-05-15)

* Merge pull request #42 from KGAudioLab/feat/2026-05-11-embedded-models (796a9cf)
* fix: remove CORS checking for downloading remote model file (b2bbc08)

# [0.17.0-build.20260515] (2026-05-15)

* Merge pull request #41 from KGAudioLab/feat/2026-05-11-embedded-models (13eb7e6)
* docs: updated README.md and LICENSE (1fd2c28)
* fix: failed tests (f5a1ef5)
* feat: added thinking time statistics; added LaTeX rendering support (ac2d924)
* fix: minor UI adjustments (42b9662)
* fix: minor UI adjustments (892e154)
* fix: update default playhead fps to 30 (f9a3edb)
* fix: align chatbox hint region style same with KGOne panel (b6c0d93)
* fix: switch to processing status when receiving response tokens from LLM (2bd6925)
* feat: added a welcome msg for local LLM users (1a051fe)
* feat: added local LLM context length option (a48966d)
* fix: updated Gemma 4 URL from local test url to HF url (dbf0c20)
* fix: initial global spinner randomly hanging until 10s timeout (6460d4f)
* fix: show cache loading progress (c7a1630)
* feat: added performance statistics info when using embedded LLM (eb1c7bd)
* feat: implemented the v1 browser embedded LLM support (Gemma 4 E4B based) (98c2b97)
* feat: added VSCode Windows debugging entry (0e6e273)
* fix: few minor UI and behavior adjustments (64dda5b)
* fix: failed to initialize WebGPU (f57dd7c)
* feat: added local separator implementation (d32dc35)

# [0.16.0-build.20260510] (2026-05-10)

* Merge pull request #40 from KGAudioLab/feat/2026-05-09-staff-notation (9b64c8f)
* docs: updated README.md and LICENSE (1a84199)
* feat: added `save as` option when renaming the project (8fa2c16)
* feat: added track scope mode for sheet music view; adjusted viewport behavior when switching between piano roll view and sheet music view (578be7b)
* feat: added sheet music (stuff notation) view to the piano roll window MIDI mode (d69b392)

# [0.15.0-build.20260510] (2026-05-10)

* Merge pull request #39 from KGAudioLab/feat/2026-05-09-waveform-recording (0ddb2e5)
* fix: failed tests (4f4511e)
* feat: added track level event list tab; rename `List Event` to `Event List`. (894c3b1)
* feat: added track level list event tab (48a51f1)
* feat: added audio recording feature (490cd19)

# [0.14.0-build.20260509] (2026-05-09)

* Merge pull request #38 from KGAudioLab/feat/2025-05-02-midi-automation (1afe732)
* docs: updated README.md (5148e0d)
* Merge pull request #37 from KGAudioLab/feat/2025-05-02-midi-automation (098d465)
* docs: updated README.md (f38597e)
* fix: when piano roll window is not visible, select a row on list event table will cause current MIDI region lose selection (a1c8727)
* fix: default piano roll window's Y position (37da0f6)
* fix: minor UI adjustments (bd067ca)
* feat: implemented track level automation (31e02b4)
* feat: implemented editable automation lane in piano roll window (6e5d946)
* fix: misc UI updates and fixes (eead27d)
* fix: few minor UI adjustments and fixes (1e33caa)
* feat: added a read-only piano roll automation view (917a1b0)
* feat: added MIDI CC recording and list event table operation support. (f3d2612)
* feat: added support for real time MIDI CC input (CC1, CC2, CC7, CC11 -> velocity; CC64 -> sustain) (6305983)
* fix: round interpolated MIDI values to integers to deduplicate repeated consecutive values (0d9e2a9)
* feat: added pitch bend automation (linear interpolation) (738628f)
* feat: added adding pitch bend feature and delete selected events feature to the list event panel (fc1a044)
* fix: load existing projects will crash the playback or have no sound due to missing pitchBend array in the JSON (6ed1ddd)
* feat: added pitch bend support (98cccf5)
* feat: implemented inline edit for the list event panel (8f453f8)
* feat: added v1 read-only version list event panel (3743f9c)
* fix: error when creating MIDI region first time after the app has started `projectStore.ts:271 Cannot update a component (`Toolbar`) while...` (c2e68e3)
* fix: show loading spinner instead of hanging in open project dialog when user click open button (6928416)
* feat: added a warning pop-up when openning projects. (213a4ee)
* 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 (8a6e904)
* feat: honor MIDI input notes' velocity during recording (d089456)
* feat: added merge MIDI regions feature (066946e)
* fix: minor updated the region lasso selection behavior (a2f12ca)
* feat: allow user to use lasso to select multiple regions (f323f1a)
* feat: allow user to bulk resize and move regions (01a3f88)
* feat: allow user to multi-select regions. (6d952b5)
* feat: updated toolbar button style (bc7db71)
* fix: should cut a held looped recording note at the loop end when note off arrives after wrap (c733c39)
* fix: "back to beginning" button should also shift viewport to the beginning of the song (769d70c)
* feat: added a shortcut `E` to open/close piano roll (fc304ac)
* fix: pause button while recording should stop recoding (7a6e755)
* fix: recording preview notes are not taking region position into consideration (9f536d9)
* fix: spectrogram is not taking region position into consideration (0fc4ee2)
* feat: added edit MIDI notes' attribute feature (7b74687)
* fix: minor updated some styles (90aee14)

# [0.13.0-build.20260502] (2026-05-02)

* Merge pull request #36 from KGAudioLab/feat/2026-04-30-midi-device-recording (07ba49d)
* docs: updated README.md (9828c45)
* feat: preserve the viewport position when zooming in and out (f132f6b)
* feat: add cross-component playhead scroll synchronization (da8b949)
* fix: move computing spectrogram text to the center of current viewport of piano roll window (6b8a470)
* fix: piano roll spectrogram is not being zoomed correctly; switching from MIDI region to audio region with piano roll open might cause residual notes. (5890a6d)
* feat: added zoom-in/out feature for piano roll window. (811b3a0)
* feat: added fine tune region position feature (d59ad68)
* fix: random not able to exit piano roll hybrid mode issue when switching between different MIDI regions (introduced a region dragging start threshold) (d5795c5)
* fix: updated the spectrogram icon (cbd2fc6)
* fix: minor UI updates (756fc1b)
* fix: unit test errors and TS type errors (b792630)
* feat: implemented piano roll hybrid mode to allow user edit MIDI notes while observing spectrogram as reference (8303445)
* fix: few misc issues when switching between MIDI region and audio regions (ba0e27e)
* feat: added audio track spectrogram visualization feature (eafb3a4)
* Merge pull request #35 from KGAudioLab/feat/2026-04-30-midi-device-recording (cc0aae4)
* fix: linter errors (cd90dc1)
* feat: add `R` as shortcut of recording button; fixed linter errors. (9be96cd)
* fix: missing count-in when recording with loop mode on (043e90b)
* fix: wwitched the preroll metronome scheduling off `window.setTimeout` and onto Tone’s audio-context clock (adb2345)
* fix: pre-roll metronome ticks are missing (a474065)
* feat: switch track volume to dB scale with Logic Pro-style fader (−∞dB ~ +12dB) (95ca339)
* feat: added recording MIDI device feature. (77885c8)

# [0.12.0-build.20260430] (2026-04-30)

* Merge pull request #34 from KGAudioLab/feat/2026-04-28-add-remix-and-repaint-support (c54cf3e)
* docs: updated README.md (d7a3bcc)
* feat: added remix and repaint support (f60c7b4)

# [0.11.0-build.20260425] (2026-04-25)

* Merge pull request #33 from KGAudioLab/feat/2026-04-15-kgone-integration (f5d24a8)
* docs: added K.G.One demo to README.md (d0ba246)
* Merge pull request #32 from KGAudioLab/feat/2026-04-15-kgone-integration (799f938)
* docs: updated README.md, added K.G.One Music Studio information (3261356)
* fix: added base url presents for OpenAI Compatible settings (3bce450)
* chore: added two debugger automation utilities (d6001a6)
* fix: extract stems from trimmed audio is using full song (f7f79cd)
* fix: minor updated color palette for some components; updated default region/track names for stem separation. (a71de0c)
* refactor: replace purple accent color with light blue theme and beautify Open Project modal (1e4fdfc)
* feat: add closing animation to all modal dialogs and fix drag-dismiss bug (55861cf)
* 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. (778c023)
* feat: replace browser built-in alert/confirm/prompt pop-up with new DialogProvider (1828dbb)
* feat: added metronome feature (0ac3906)
* fix: remove hardcoded lm model (f0a2f06)
* fix: removed https support from vite dev server (8308cdf)
* fix: add https support for local vite dev server (7e67ca9)
* fix: minor updates the parameters send to ace-step-1.5 (474b68c)
* fix: adjust UI for `open project` pop up (ebcbe40)
* feat: added "powered by" info to 3rd party powered features (5ca1358)
* fix: default `K.G.One Music Generator` panel to Full Song tab (7d10d37)
* feat: allow kgone-server.json to override the kgone server base url and soundfont base url (71dc7d9)
* fix: honor the soundfont -> baseUrl config (206fa6f)
* fix: undo is resetting the mute and solo track button status (cb4bf59)
* feat: added split region feature (ebcebb5)
* fix: allow user to create audio region by triggering audio upload pop-up (9d91904)
* feat: added auto-center playhead to piano roll window (cb027b6)
* feat: let playhead automatically centered (425aeab)
* fix: linter errors (1d5bb59)
* fix: removed unnecessary override confirmation when user save project with project name unchanged (e3a77e6)
* fix: reserve `Untitled Project` name; rename project will trigger save immidiatly. (24ffaa7)
* 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. (3010cf4)
* feat: implemented drag-n-drop to import KGOne generated audio/MIDI file feature (7b82572)
* feat: integrate K.G.One music generation panel (cadd51c)

# [0.10.0-build.20260411] (2026-04-11)

* Merge pull request #31 from KGAudioLab/feat/2026-04-09-add-wav-track-support (2328ddb)
* doc: updated README.md (eeebf54)
* Merge pull request #30 from KGAudioLab/feat/2026-04-09-add-wav-track-support (c8f84d7)
* fix: missing tool calling info in the exported conversation JSON and MD (d082c9c)
* feat: added bouncing to MP3 feature (d16553e)
* feat: add bounce-to-WAV export with offline rendering via Tone.Offline (d486442)
* feat: add snap-to-grid toggle for track grid regions and playhead (d94b53d)
* feat: add audio region trimming with non-destructive clip offset (1670679)
* doc: updated help.md (39401b3)
* feat: add bar width multiplier (1x–8x horizontal zoom) for track grid (139684b)
* feat: enhanced emulated bash terminal (by using browser's input box pop-up loop) (4917e54)
* feat: add Open Project modal with project browser, soft delete, and duplicate (1ff9bfc)
* fix: assigned an image as audio track's instrument-preview background (21a1991)
* fix: missing media files when renaming + saving the project (83f4bfe)
* feat: added `rm` opfs mock bash command (6080acc)
* feat: add audio track support with WAV/MP3 playback and looping (fc84edf)
* Merge pull request #29 from KGAudioLab/feat/2026-04-08-refactor-data-storage (de29791)
* refactor: migrate project storage from IndexedDB to OPFS with folder-based structure (2d3ea33)
* refactor: split monolithic App.css into feature-based co-located CSS files (17610f1)
* refactor: moved "Add track" button from bottom TrackControl to top-left-spacer for better discoverability (58cb4ce)

# [0.9.0-build.20260406] (2026-04-06)

* Merge pull request #28 from KGAudioLab/feat/2026-04-05-refactor-tool-calling (5a863fe)
* feat: added Claude 4.6 model series options. (63ced27)
* feat: added OpenAI SDK with OpenRouter based Claude model support; updated recommended models in README.md (586f0f9)
* feat: added model options for GPT-5.4 families; updated default model to gpt-5.4-mini (6c49fbf)
* fix: rename `start_beat` to `start` and `end_beat` to `end` in 3 tools. (26b7510)
* fix: minor UI enhancements. (ee31ca0)
* refactor: migrate agent system from XML tool calling to OpenAI SDK with native function calling (2cd976f)

# [0.8.0-build.20260123] (2026-01-23)

* Merge pull request #27 from KGAudioLab/feat/2026-01-22-looping (5042477)
* docs: updated README.md (8e8c557)
* feat: implemented playback looping; fixed an linter error in Toolbar.tsx (1c8361d)
* feat: enhanced the note scheduling logic to support loop mode (b767d21)
* feat: added upgradeToV3 upgrader (b46442b)
* feat: added a hotkey for loop button (78b798e)
* feat: implemented change loop setting command (b80e7e8)
* feat: implemented UI of looping feature (f367c84)
* docs: updated welcome_again.md (20310cc)

# [0.7.1-build.20260117] (2026-01-17)

* Merge pull request #26 from KGAudioLab/feat/2026-01-17-add-option-allow-persist-api-key-on-non-localhost (59faeff)
* fix: added a warning comment (609efab)
* docs: updated README.md (8c1ab53)
* feat: add option to persist API keys on non-localhost (opt-in security feature) (e8b79ef)

# [0.7.0-build.20260117] (2026-01-17)

* Merge pull request #25 from KGAudioLab/feat/2025-12-25-more-models (6717cea)
* feat: added latest (as of 2025-12-25) GPT and Claude model support (4f4e60f)

# [0.6.3-build.20251222] (2025-12-22)

* Merge pull request #24 from KGAudioLab/feat/2025-12-19-midi-keyboard-support (ab8c268)
* chore: updated README (3b2b359)
* Merge pull request #23 from KGAudioLab/feat/2025-12-19-midi-keyboard-support (ef08ec9)
* feat: added an option to control playhead animation fps (b44e6fb)
* feat: added playback delay configuration (eaee036)
* feat: added lookAhead option (aadf9e0)
* fix: reduce Tone.js context.lookAhead to reduce MIDI input latency (4b075e8)
* feat: added MIDI keyboard support (d3a2fe1)

# [0.6.2-build.20251218] (2025-12-18)

* Merge pull request #22 from KGAudioLab/feat/2025-12-08-chord-assistant (22c11fd)
* feat: implemented chord guide customization feature (5cceec0)
* feat: merge `mode_list.json` into `functional_chords.json` (610b81e)

# [0.6.1-build.20251216] (2025-12-16)

* Merge pull request #21 from KGAudioLab/feat/2025-12-08-chord-assistant (2fc6e56)
* test: fixed test errors; skip failing integration tests temporarily (46d3a21)

# [0.6.0-build.20251216] (2025-12-16)

* Merge pull request #20 from KGAudioLab/feat/2025-12-08-chord-assistant (03b5796)
* docs: add Intelligent Chord Assistant feature to README (56be444)
* feat: implemented the logic to automatically create a chord when a suitable guide chord is highlighted. (54b227c)
* fix: default chord guide note's length to last edited note's length (fbd13ee)
* feat: added unit tests for scaleUtil.ts (df722ab)
* feat: added highlighted chord guide on piano grid (bdc7fc8)
* feat: added logic to get suitable chords (console log only) (8512fb4)
* feat: map chords base on each mode (fe9eb79)
* feat: added functional chords resource files (2636395)
* feat: persistence selected mode (dcd2d89)
* fix: display the currently selected mode in the mode dropdown (fa201d1)
* feat: add scale highlighting to Piano Roll grid (9e0c0cc)
* feat: added mode list dropdown (98ed8a6)
* feat: added integration tests (02a7a61)
* Merge pull request #19 from KGAudioLab/test/2025-09-03-initial-unit-tests (c5ada0d)
* feat: added unit tests for `timeUtil` and `xmlUtil`. (2dcc763)
* feat: added unit tests for KGMidiRegion and abcNotationUtil; update all deprecated method `plainToClass` to `plainToInstance`. (2bf5328)
* feat: add Vitest unit testing infrastructure with initial test suite. (aa2b199)

# [0.5.4-build.20250830] (2025-08-30)

* Merge pull request #18 from KGAudioLab/feat/2025-08-29-new-instruments (3f087e2)
* feat: added 28 new instruments. (3dae319)

# [0.5.3-build.20250829] (2025-08-29)

* Merge pull request #17 from KGAudioLab/fix/2025-08-24-misc (d5dbe90)
* fix: manually cleaned up the initial changelog. (d601bd1)

# [0.5.2-build.20250829] (2025-08-29)

* Merge pull request #16 from KGAudioLab/fix/2025-08-24-misc (8eeec39)
* fix: use correct token in `release` action. (f93626d)

# [0.5.1-build.20250829] (2025-08-29)

* Merge pull request #15 from KGAudioLab/fix/2025-08-24-misc (58ba8e9)
* fix: use correct token in `release` action. (9230b0f)
* Merge pull request #14 from KGAudioLab/fix/2025-08-24-misc (72994b5)
* feat: implement automated versioning. (0eac494)
* fix: reset mute/solo UI states on project/track changes (62b3a8c)
* fix: preserve overlapping notes with same end time in ABC conversion (1fd1486)
* feat: implemented select all notes feature. (6445325)
* Merge pull request #13 from KGAudioLab/feat/2025-08-24-claude-support (131b99a)
* implemented Claude caching breakpoints (OpenRouter version). (b0e589d)
* implemented `ClaudeOpenRouterProvider`. (efb161d)
* added a configuration option for Claude through OpenRouter. (81c6aeb)
* Merge pull request #12 from KGAudioLab/fix/2025-08-16-misc (cd671ea)
* added `Disclaimer` section to README. (efee261)
* Merge pull request #11 from KGAudioLab/fix/2025-08-16-misc (48c9337)
* minor README update. (bc01d42)
* Merge pull request #10 from KGAudioLab/fix/2025-08-16-misc (9b095e1)
* minor README updates. (042366d)
* Merge pull request #9 from KGAudioLab/fix/2025-08-16-misc (7b4b825)
* minor README update. (719a184)
* Merge pull request #8 from KGAudioLab/fix/2025-08-16-misc (7ac14b3)
* rewrote `welcome_new` article; updated readme file; introduced `/help` command. (f2355b2)
* added export conversation feature. (0c54332)
* added an option to fix the "Zoom can't capture the sound" problem (it is IMPORTANT to choose "share sound" when share screen in Zoom). (c1112f4)
* added overview document. (365acda)
* optimized ChatBox component. (8b0ddae)
* cleaned up the LLM providers. (429efaf)
* removed native tool_calls handling from `OpenAIProvider`. (cf4f3ed)
