# [0.20.10-build.20260708] (2026-07-08) * Merge pull request #59 from KGAudioLab/feat/2026-06-30-misc (d793195) * fix: failed test cases (89983e4) # [0.20.9-build.20260708] (2026-07-08) * Merge pull request #58 from KGAudioLab/feat/2026-06-30-misc (3caa541) * feat: persist playhead position and restore centered timeline on project load (cca874a) * feat: misc behavior changes (93450ae) * feat: implemented v1 audio-to-midi conversion (polyphonic only, algorithm-based) (5aa74e6) * feat: improve spectrogram pitch mapping and vertical smoothing (f4e22e5) # [0.20.8-build.20260707] (2026-07-07) * Merge pull request #57 from KGAudioLab/feat/2026-06-30-misc (73b2840) * fix: fixed failed test cases (08c9cf2) # [0.20.7-build.20260707] (2026-07-07) * Merge pull request #56 from KGAudioLab/feat/2026-06-30-misc (5c74c82) * fix: correct piano-roll header seek when horizontally scrolled (3c93dd7) * fix: keep imported MIDI in one region and expand project bars (be15983) * feat: add mock OPFS du command for recursive size inspection (f9334dc) # [0.20.6-build.20260705] (2026-07-05) * Merge pull request #55 from KGAudioLab/feat/2026-06-30-misc (61fe39e) * fix: persist separator results until project switch (722ba68) * fix: tempo-driven audio region resizing and playhead clamping (a8c68d9) # [0.20.5-build.20260702] (2026-07-02) * Merge pull request #54 from KGAudioLab/feat/2026-06-30-misc (eca0fbd) * fix: close Settings after successful saved project load (09dd717) * feat: cache soundfont MP3s in OPFS and add cache controls (86ec455) * feat: added region color customization feature (4f11fe8) # [0.20.4-build.20260613] (2026-06-13) * Merge pull request #53 from KGAudioLab/feat/2026-06-01-enhance-ai-agent (fbdba02) * fix: playhead location offset issues in piano roll window; z-index issue in `bar-numbers` and `top-left-spacer` (30d8c74) * fix: added missing i18n labels (ef7ff08) * fix: preserve 7sus4 chord canonicalization for global chord MIDI import (3ba8f81) * fix: support extended chord symbols in chord-to-MIDI import (6bfce38) # [0.20.3-build.20260607] (2026-06-07) * Merge pull request #52 from KGAudioLab/feat/2026-06-01-enhance-ai-agent (7af9662) * fix: minor UI adjustments (6b9fe85) * fix: audio track undo buffer rehydration (94befcd) * fix: support numeric track_id arguments across track tools (a76a8ab) # [0.20.2-build.20260606] (2026-06-06) * Merge pull request #51 from KGAudioLab/feat/2026-06-01-enhance-ai-agent (b8d17f4) * fix: use raw streaming chat completions and keep readable preview stacks (8323e62) * fix: minor errors during compilation (2e27bec) # [0.20.1-build.20260606] (2026-06-06) * Merge pull request #50 from KGAudioLab/feat/2026-06-01-enhance-ai-agent (98bcbc5) * docs: updated readme files (748cd78) # [0.20.0-build.20260606] (2026-06-06) * Merge pull request #49 from KGAudioLab/feat/2026-06-01-enhance-ai-agent (ebee595) * docs: updated readme files (11cfcb7) * Merge pull request #48 from KGAudioLab/feat/2026-06-01-enhance-ai-agent (30fe899) * docs: updated readme files and help messages (daef1db) * feat: added global key signature track, global chord progression track, global tempo(BPM) track, and global marker track related tools for AI Agent (c4f5d7b) * feat: added tool `write_chord_progression` (622dbbe) * feat: added delete_track tool (2e3f362) * feat: add instrument listing, track creation and update tools to AI agent (7d53a9c) * feat: add track-aware tool targeting and new agent tools, lifted the requirement of selection a MIDI region to use AI Agent (8ee7dda) * feat: separated efficient agent mode (lite mode) for small language models (5c5a07b) * feat: added conversation history feature (a3a0f2f) * fix: localize auto-compact threshold settings (5c6e1d6) * fix: use i18n strings for chatbox todo snapshot card (42fdceb) * feat: implemented confirmation mechanism for tool invokation (ad1e0c2) * feat: sync translations (414565e) * feat: persist global track visibility status and metronome status (528e4ca) * refactor: added UI-only tool result summary to all the tools; move summary generation logic to tool's own ts file (6b0de74) * feat: minor UI adjustments (4bdd0d5) * feat: add agent todo tool and inline todo snapshot cards in chat (5aacf01) * feat: add manual/auto conversation compaction and preserve full export history (c1d9f4c) # [0.19.0-build.20260531] (2026-05-31) * Merge pull request #47 from KGAudioLab/feat/2026-05-30-i18n-v1 (4187711) * fix: minor UI issues (e3c609f) * chore(i18n): minor wording adjustments (a64ba42) * chore(i18n): unify Traditional Chinese wording across UI and docs (f58d9a8) * fix: few missed translations (e1f8e69) * fix: minor UI updates (5d070a5) * feat: added translations for 4 tabs in Settings screen (59dea65) * docs: added Traditional Chinese and French README files (9fb206c) * feat: added French support (e263b1c) * fixed: failed test cases (4c82f51) * feat: added Traditional Chinese support (9180a27) * feat: added i18n support for Open Project pop-up (4488fe8) * feat: added translation for Music Generator panel; provided `K.G.Studio Musician Assistant` a Chinese name (b5546aa) * feat: added i18n support; added Simplified Chinese support (957f6db) # [0.18.0-build.20260529] (2026-05-29) * Merge pull request #46 from KGAudioLab/feat/2026-05-23-global-track (227b1ed) * fix: load onnx runtime mjs from assets folder (ee6cef1) * feat: implemented user-friendly chord guide editor; added real time chord guide info to the status bar (cd2938f) * refactor: chord guide system (72297cb) * fix: minor UI update (ad17263) * feat: simplify chord guide feature; updated help doc; added hotkeys doc (4d415a7) * feat: allow user to drag-n-drop audio clip into audio tracks; added m4a support (cd4d584) * docs: updated README.md (c8af2dd) * fix: minor UI updates (e95ff72) * feat: added local separator model `demucs_4s` support (2140e94) * refactor: move all localSeparator*.ts into a subfolder (e2a7d1c) * docs: updated README.md and LICENSE (7340f7f) * feat: added waveform view for audio regions (c4e4470) * feat: added tempo detection with auto-align beats feature (7fc5ac1) * fix: changing BPM in the middle of the song causes empty spaces between notes during playback/bounce (e82c3cb) * feat: added Global tab to Event List panel (9ed3e57) * feat: add `read_chord_progression` tool for the Agent (3950323) * feat: implemented chord detection feature for MIDI regions (0f1bad4) * docs: updated LICENSE (275cfec) * feat: added v1 Meyda.js based chord detection feature (a588cb4) * feat: add audio chord detection for spectrogram regions (f12add9) * fix: update default BPM to 120 (a7158b1) * feat: added global chord region to MIDI region conversion feature (8aa36d2) * fix: minor UI updates (e49b675) * fix: restore main content global track updates after refactor (742b2fe) * fix: truncate project name if it's too long (3f96b13) * fix: add ellipsis truncation for long track and piano roll titles (d4cc4c8) * refactor: split MainContent into focused hooks and fix audio debug build (b36ea5a) * feat: enhance multi-region selection feature to support both shift and cmd/ctrl (1f33081) * fix: linter errors (2c84b48) * feat: use embedded inputbox for track name editing and region name editing (b80066c) * fix: default project main grid's zoom level to 2x (2794877) * fix: minor UI updates (af0b816) * feat: implement global chord track (1879df8) * fix: stereo sample downmix in track panners which causes the sampled sounds (both MIDI and audio tracks) are quieter than it should be (77fb0e4) * fix: update default master volume to 1.0 (7ee4a74) * feat: implemented global tempo (bpm) track (7d27580) * feat: implemented global key signature track (8eb3f5d) * fix: open existing project doesn't highlight current key signature (1e81659) * feat: implement scale-of-fifth based key signature picker (247c762) * feat: implemented global marker track (fb3c6cd) * feat: added mock up global tracks (7ca2cb0) * feat: refactor the add track behavior to use a pop-up instead (041641c) * feat: added rules row under the main grid bar number row (a7071f3) # [0.17.4-build.20260520] (2026-05-20) * Merge pull request #45 from KGAudioLab/feat/2026-05-17-misc (5398cc2) * fix: stabilize the preview canvas inside of the region during resizing (b865064) * feat: preview all the notes/regions during resizing/moving multiple notes and regions (4b5b5c8) * feat: added visual feedback when pressing piano keys (06e2162) * feat: allow user to config Gemma 4 E4B and MDX-NET model download URL (6db66be) * fix: keep piano roll window showing last selected region if user deselect region instead of closing the piano roll window (862dad7) * feat: persist piano roll zoom level into project; fixed an issue in the horizontal auto-scrolling logic in piano roll window (a0fe283) * feat: added shortcut `N` for sheet music view (97dad69) * feat: added split notes function (4cf474b) * feat: added shortcut for split and merge regions (d109650) * feat: added an option to allow user choose whether to trim leading silence when bouncing audio (fe1b4fc) * fix: dropdown list in the main ToolBar is lower than event list panel's dropdown label button (47d1d98) * feat: brighten on-bar and on-C separator lines in piano roll grid (5fd19c7) * fix: when resizing an unselected note, we should clear selected note(s) and select the current note being updated (288af15) * fix: playhead click-n-seek offset issue in piano roll window's sheet music view (60f5b75) * fix: hide zoom level option in piano roll window's sheet music view (b5f5e16) * feat: persist track mute/solo status (9c197ec) * fix: VSCode debug option in macOS (cbd66ab) # [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)