feat: AI Copilot suggestion chips + typeahead dropdown

- Suggestion chips bar: context-aware (amber for rearrange, indigo for creation)
- Typeahead dropdown: keyword matching on ≥2 chars, Tab to select
- getSelectedMidiItemInfo helper for context detection
- Backend: 4 rearrange presets in ai_presets.py
- PromptTemplateManager: getContextualSuggestions(hasSelectedItem)
This commit is contained in:
2026-07-28 11:20:26 +07:00
parent 3f7abe0c95
commit cff3950670
5 changed files with 153 additions and 7 deletions
+4 -2
View File
@@ -22,11 +22,13 @@ def test_list_presets_defaults():
assert res.status_code == 200
data = res.json()
assert data["success"] is True
assert len(data["presets"]) == 3
assert len(data["presets"]) == 7
names = [p["name"] for p in data["presets"]]
assert "Epic Orchestra Intro (8 Bars)" in names
assert "Pop Piano Chords (4 Bars)" in names
assert "Cyberpunk Synthwave (8 Bars)" in names
assert "Jazz Swing Variation" in names
assert "80s Synthwave Arpeggiator" in names
def test_create_user_preset():
@@ -54,7 +56,7 @@ def test_create_user_preset():
assert res2.status_code == 200
names = [p["name"] for p in res2.json()["presets"]]
assert "My Beat (4 Bars)" in names
assert len(res2.json()["presets"]) == 4 # 3 defaults + 1 user
assert len(res2.json()["presets"]) == 8 # 7 defaults + 1 user
def test_update_user_preset():