Files
SonicForgeStudio/wiki.md
T

6.8 KiB

[2026-07-25 06:57] Task: Fix Piano Roll runtime errors (rollBeats TDZ + handleCCMouseMove)

  • Tóm tắt thay đổi: Sửa lỗi Cannot access 'rollBeats' before initialization bằng cách di chuyển khai báo rollBeats/rollBeatsRef lên trước totalBeats. Thêm hàm handleCCMouseMove bị thiếu và cập nhật handleCCMouseDown hỗ trợ Ctrl+Click paint velocity.
  • Các file ảnh hưởng: app/static/js/app.jsx, app/static/js/app.precompiled.js
  • Ghi chú/Test (nếu có): cd /home/locpham/SonicForgeStudio && npm run build — build passes.

[2026-07-25 07:25] Task: 4 tính năng mới (Piano Roll zoom fill + Shift+scroll playhead + auto-scroll drag + SoundFont cache)

  • Tóm tắt thay đổi: (1) Piano Roll zoom-out không còn màn hình đen — bars fill toàn bộ viewport. (2) Shift+scroll trong Piano Roll di chuyển playhead và play notes MIDI như fast-forward. (3) Khi drag section/MIDI/clip đến cạnh phải timeline, auto-scroll container. (4) Server-side cache FluidSynth instances + PluginManager singleton + list_soundfont_instruments cache.
  • Các file ảnh hưởng: app/static/js/app.jsx, app/core/vst_engine.py
  • Ghi chú/Test (nếu có): npm run build pass. vst_engine.py thêm load_soundfont_cached, release_soundfont, get_plugin_manager, _SF_INSTRUMENTS_CACHE — refcount-based cache.

[2026-07-25 07:31] Task: Fix zoom cursor + right edge black + AI Copilot for Piano Roll

  • Tóm tắt thay đổi: (1) Tách drawWidth (content) và cssWidth (CSS) — canvas coordinate system không còn bị sai khi zoom out. (2) Thêm min-width fill viewport, không còn mảng đen phải. (3) Thêm AI Copilot input + handler trong Piano Roll — gõ prompt tạo MIDI notes trực tiếp.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npm run build pass.

[2026-07-25 08:08] Task: Fix velocity draw position, shift+scroll play, canvas redraw deps

  • Tóm tắt thay đổi: (1) CC lane velocity stem vẽ tại start note thay vì center. (2) Shift+scroll chỉ play note khi playhead vượt qua start_beat. (3) Thêm viewWidth/viewBeats vào dependency array grid canvas + CC canvas để auto-redraw khi resize/zoom.
  • Các file ảnh hưởng: app/static/js/app.jsx, app/static/js/app.precompiled.js
  • Ghi chú/Test (nếu có): npm run build pass.

[2026-07-25 08:31] Task: Fix AI Copilot tab scope + hide bottom panels + context menu Insert + autoscroll

  • Tóm tắt thay đổi: (1) AI Copilot context dùng activeTracks thay tracks — chỉ tác động tab đang active. (2) Bottom panels mặc định ẩn. (3) Right-click track timeline có 4 mục Insert. (4) Thêm auto-scroll vào stretched clip resize. Sửa insertSectionAtPlayhead dùng updateActiveTracks.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 08:36] Task: Fix auto-scroll + maxDuration tab isolation + 1-bar margin

  • Tóm tắt thay đổi: (1) maxDuration dùng activeTracks + 4-bar buffer. (2) Cách ly MAIN vs SECTION-TAB. (3) Clip/section/MIDI drag/stretch/resize clamp 1-bar from right. (4) Clip drag + stretched clip dùng updateActiveTracks. (5) Stretched clip handler thêm auto-scroll.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 08:53] Task: Add timeline left/right margin + dynamic buffer expansion

  • Tóm tắt thay đổi: (1) PADDING_LEFT thay đổi từ 2s thành 2-bar margin ở cả WaveformLane và TempoTrackLane. (2) Thêm state scrollBufferExtra + auto-expand 4 bars khi auto-scroll gần đến rìa timeline. (3) maxDuration thêm scrollBufferExtra + 6 bars static buffer. (4) Clip drag/stretch dùng activeTracks + updateActiveTracks thay tracks/setTracks.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 09:04] Task: Fix left margin 1-beat, items always visible, bar/timeline sync

  • Tóm tắt thay đổi: (1) PADDING_LEFT từ 2-bar xuống 1-beat ở cả WaveformLane và TempoTrackLane. (2) Drag clamp left ≥ 1 beat, right ≤ maxDuration - 1 bar. (3) Bar numbers + grid vẽ lại đồng bộ với scroll+zoom.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 09:08] Task: Fix Piano Roll CC lane always visible + resizable height

  • Tóm tắt thay đổi: (1) showCC default true — CC lane luôn hiển thị. (2) Thêm ccHeight state + resize handle (drag top edge) — cho phép thay đổi độ cao CC lane. (3) Canvas dùng ccHeight thay hardcoded 80px.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 09:18] Task: Fix brush velocity isolation from CC lane

  • Tóm tắt thay đổi: Thêm brushVelocityRef riêng biệt (0.8) — brush không còn bị ảnh hưởng bởi velocity paint từ CC lane.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 09:20] Task: Auto-follow dragged item in viewport

  • Tóm tắt thay đổi: (1) Clip drag: sau mỗi update, nếu item ra khỏi vùng 120px viewport edge, tự scroll để item luôn thấy. (2) Section/MIDI drag: tương tự. (3) Section/MIDI resize: theo dõi edge đang kéo.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 09:23] Task: Sync bar ruler redraw during drag

  • Tóm tắt thay đổi: (1) TempoTrackLane nhận canvasRedrawCount prop + deps — force redraw bar numbers khi drag. (2) Cả 3 drag handler increment setCanvasRedrawCount sau auto-follow scroll. (3) Sub-tab TempoTrackLane thêm viewportWidth + scrollLeft + canvasRedrawCount — đồng bộ ruler với timeline.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.

[2026-07-25 07:25] Task: Fix auto-scroll + maxDuration tab isolation + 1-bar margin

  • Tóm tắt thay đổi: (1) maxDuration dùng activeTracks + 4-bar buffer. (2) Cách ly MAIN vs SECTION-TAB. (3) Clip/section/MIDI drag/stretch/resize clamp 1-bar from right. (4) Clip drag + stretched clip dùng updateActiveTracks. (5) Stretched clip handler thêm auto-scroll.
  • Các file ảnh hưởng: app/static/js/app.jsx
  • Ghi chú/Test (nếu có): npx babel app/static/js/app.jsx — compile pass.