# [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)
