Commit Graph

332 Commits

Author SHA1 Message Date
3dtours 4db3e3484a FIX: sửa lỗi cnnot move items 2026-07-30 16:11:31 +07:00
3dtours f0479dc3d8 FIX: sửa lỗi Uncaught ReferenceError: stopPreviewNote is not defined 2026-07-30 15:56:09 +07:00
3dtours 7836cfcc76 FIX: chỉnh sửa hoàn thành UX/UI master strip 2026-07-30 15:38:25 +07:00
3dtours 19f02a5a49 FIX: chỉnh sửa UX volume của master strip 2026-07-30 15:22:47 +07:00
3dtours dc7ec3af4c FIX: chỉnh sửa UI volume của master strip 2026-07-30 15:19:41 +07:00
3dtours c073ca7a49 FIX: chỉnh sửa UI của master strip 2026-07-30 15:04:03 +07:00
3dtours 9f6f9763c1 FIX: chỉnh sửa UI của mixer panel 2026-07-30 15:01:52 +07:00
3dtours bbd06f23d5 FEAT: thay đổi UI của mixer panel 2026-07-30 14:52:57 +07:00
3dtours b67c0264fb feat(mixer): Master + Track Strip Console per specs 47/48 2026-07-30 12:55:35 +07:00
3dtours 74597cfe8b feat(mixer): install Master Strip Console per spec 47 2026-07-30 12:47:10 +07:00
3dtours 0c1a27ef2c FIX: sửa PIANO ROLL TAB khi vẽ draw note midi phải play các note được vẽ 2026-07-30 11:38:36 +07:00
3dtours eb61015cff FIX: sửa MASTERING PANEL thay đổi knob thì thay đổi các thông số hiển thị 2026-07-30 11:18:35 +07:00
3dtours 6e1f116658 FIX: sửa MASTERING PANEL có tác dụng với mainout 2026-07-30 11:06:31 +07:00
3dtours 2c55db372a FIX: sửa volume main out 2026-07-30 10:05:11 +07:00
3dtours e64070a83e FEAT: cài đặt tính năng cho volume main out 2026-07-30 09:34:36 +07:00
3dtours 66eef405a7 FIX: tăng velocity thêm tính năng midi key khác sử dụng cho midi note 2026-07-29 22:34:05 +07:00
3dtours 971dad84e7 FEAT: thêm tính năng midi key khác sử dụng cho midi note 2026-07-29 22:25:21 +07:00
3dtours 4cead1010e FEAT: thêm tính năng hiển thị ở master track 2026-07-29 22:13:54 +07:00
3dtours 7b5d4bf27a FEAT: thêm tính năng MasteringModules Modal 2026-07-29 22:03:20 +07:00
3dtours 47af85c072 FIX: sửa UNDO/REDO bị lỗi màn hình đen 2026-07-29 18:19:02 +07:00
3dtours d4ad3bc1f7 feat: add comprehensive Ctrl-Z/Ctrl-Y undo/redo engine for MAIN SESSION and SECTION-TAB 2026-07-29 16:05:43 +07:00
3dtours a1767e338a fix: Select Instrument stays open after picking instrument
Remove setInstrumentSelectorTrackId(null) from
setTrackInstrumentWithProgram. Modal stays open so user can
switch tracks and assign instruments without reopening.
2026-07-29 11:56:26 +07:00
3dtours 8051cf3edb fix: add missing aiTypeaheadRef definition 2026-07-29 11:52:49 +07:00
3dtours 35e767795a fix: Synth button opens modal with inline track selector
Remove external track dropdown. Add select dropdown inside the
instrument selector modal between title and search box. Users
can switch tracks without closing the modal.
2026-07-29 11:52:12 +07:00
3dtours 7bfdd72850 feat: Synth button shows track dropdown for quick instrument assign
Synth button opens a dropdown listing all tracks instead of opening
the modal directly. Selecting a track opens the instrument selector
for that track. No need to close modal and click each track's Synth.
2026-07-29 11:49:34 +07:00
3dtours 41b5a70a60 fix: AI SUGGEST auto-updates after saving preset in manager
Add aiPresetVersion counter. Increment on modal close. AI panel
compares version and calls loadPresets() to sync from localStorage.
2026-07-29 11:45:31 +07:00
3dtours a3e681afc0 fix: re-fetch instrument data after login for new machines
Auth success handler now eagerly loads instrumentSelectorData
via listPlugins + getSoundfontCatalog. The mount-time useEffect
runs before auth token is set, so it silently fails on new machines.
2026-07-29 11:34:50 +07:00
3dtours d4262acb9f fix: rewrite drag handler with stable crossOffset + outTracks merge 2026-07-29 11:13:31 +07:00
3dtours e40fdf15ad fix: use original baseTrackId for crossOffset, never update drag.trackId 2026-07-29 11:10:59 +07:00
3dtours 0d763c5a0b fix: targetTrackId undefined outside updateActiveTracks closure
Move track Y-position computation before updateActiveTracks so
targetTrackId is accessible for setDraggedSectionItem update.
2026-07-29 11:09:05 +07:00
3dtours ad6fa1feb9 fix: auto-add tracks when drag exceeds track count
Compute maxTargetIdx across all multiIds items. Prepend new
tracks to prev array before mapping if needed.
2026-07-29 11:08:11 +07:00
3dtours 9abb0e6a50 fix: cross-track drag computes target from mouse Y position
Replace hoveredTrackIdRef with Y-position calculation through
track heights from prev state. Works reliably during drag.
2026-07-29 11:03:30 +07:00
3dtours 6c6a326b7d fix: single-item cross-track drag
Each track filters the item independently. Only target track
receives the inserted item. Removes duplicate state update.
2026-07-29 11:02:03 +07:00
3dtours 8e8fc58082 fix: group drag uses original trackId for offset math
Store trackId in multiIds at drag start. Each item computes
target from original track + crossOffset, immune to stale state
from previous drag events. Track 1 item drags n tracks -> track
1+n, track 2 item -> track 2+n, etc.
2026-07-29 11:00:51 +07:00
3dtours ec355da58d fix: group drag cross-track uses live prev state for index mapping
Build trkIds from prev (updateActiveTracks callback) instead of
stale activeTracksRef. Fix srcItem lookup with proper for loop.
2026-07-29 10:55:39 +07:00
3dtours 9c3a435f26 fix: group drag cross-track maintains relative track offsets
Each item computes its own target track as srcIdx + crossOffset.
Items from different source tracks land on different target tracks,
preserving the group's vertical layout shape.
2026-07-29 10:52:50 +07:00
3dtours 12d2639455 fix: group drag keeps items on their original tracks
Remove all cross-track logic in multiIds path. Each item only
updates its time position (delta) on its current track. No
merging or track reassignment.
2026-07-29 10:50:37 +07:00
3dtours e99bc8624f fix: group drag moves all items, clamp to track 0, auto-add track
Restore multiIds cross-track move for all selected items.
Clamp targetTrackId to first track. Auto-add new track via
addNewTrack() when dragging below the last track.
2026-07-29 10:47:53 +07:00
3dtours 9869566d3e fix: multi-item drag no longer merges all items into target track
Only the dragged item (drag.itemId) crosses tracks. Other selected
items stay on their original tracks and only move horizontally.
2026-07-29 10:42:42 +07:00
3dtours e544d5e694 fix: show all presets always, no filter by selection
Remove selection-based filter entirely. Suggestions list stays
stable across select/deselect — no preset appears at top when
deselecting.
2026-07-29 10:18:47 +07:00
3dtours 614d83b971 fix: filter excludes non-rearrange presets in AI suggestion list
Remove || p.is_favorite from filter when MIDI item selected.
Only presets with category === 'Rearrange / Variation' appear.
2026-07-29 10:17:36 +07:00
3dtours 895ad0b7d9 fix: restore AI suggestion filter by selection, cache PromptTemplateManager
Cache PromptTemplateManager in ref to prevent new instance per
render. Filter: show only Rearrange/favorites when MIDI item
selected, all presets otherwise. Root cause of 'suggestion added
at top' was stale array reference from new instance every render.
2026-07-29 10:11:10 +07:00
3dtours 98ca21bd9a fix: AI Suggestion list changing on item select/deselect
Always show full preset list instead of filtering to rearrange/
favorites when item selected. Prevents suggestion list from
visually changing during selection/deselection.
2026-07-29 10:08:05 +07:00
3dtours 5ed943b3d6 fix: stuck MIDI notes when ARM toggled off mid-note
Remove !st.isArmed guard in note-off handler. Stop note on ALL
tracks regardless of ARM state — FluidSynth stopNote on inactive
channel/pitch is a no-op, so this is safe.
2026-07-29 10:02:30 +07:00
3dtours b00f0cff95 feat: mixer VU meter, fader scaling, track name color
- Master strip: add fader placeholder + VU meter bar
- MixerStrip: items-end -> items-stretch so fader + VU fill height
- VU meter: bar height maps volumeDb, color green/amber/red
- Track name uses track.color instead of fixed text-zinc-400
2026-07-29 09:54:18 +07:00
3dtours 2187440681 feat: Mixer Panel display-only with F7 toggle
Add MixerStrip component for display-only track strips (no audio
routing). Mixer panel at bottom with drag resize handle (80-400px).
F7 keyboard shortcut, status bar toggle button, View menu item.
onUpdateTrack handles mute/solo/volume changes directly on tracks.
2026-07-29 09:49:47 +07:00
3dtours 35fb29201d fix: AI Suggestion shows only Rearrange presets when MIDI item selected
When hasSelItem is true, suggestions filtered to only
Rearrange / Variation category + favorites.
2026-07-28 21:04:19 +07:00
3dtours 393dd7190f fix: rearrangeMidiMelody newId not defined
newId was defined inside updateActiveTracks callback but
referenced outside (line 15002 return). Moved declaration
before the callback as rearrangeNewId, accessible in both
the callback body and the outer return statement.
2026-07-28 20:58:44 +07:00
3dtours fc81f19b1c fix: MIDI rearrange tool spec double-wrapped, AI returns _unknown
REARRANGE_TOOL_SPEC already has {type:'function', function:{...}}
wrapper. callLLM's tools.map(t => ({type:'function', function:t}))
added ANOTHER wrapper, creating nested:
  {type:'function', function:{type:'function', function:{name}}}
which AI models couldn't parse -> function name became _unknown.
Fix: pass .function (inner spec) instead of the outer wrapper.
2026-07-28 20:51:27 +07:00
3dtours 61f4b90af0 feat: Action Log hidden by default, click header to toggle
- showAIActionLog state defaults to false
- Action Log header clickable (cursor-pointer), shows '-' when
  visible, '+' when hidden
- Body always rendered with CSS class 'hidden' toggled, avoids
  deep ternary nesting that exceeded Babel 8 maxTargets limit
2026-07-28 20:43:08 +07:00