cadd51c3a4
- ConfigManager: add `general.kgone` config block (enabled toggle +
base URL); add `setKGOneManagedByServer()` / `isKGOneServerManaged()`
for managed deployments that supply a `kgone-server.txt` override
- App.tsx: probe for `kgone-server.txt` on startup (Content-Type guard
to avoid Vite SPA fallback false-positive)
- GeneralSettings: new K.G.One section with enable toggle + base URL
input; fields disabled when server-managed
- Toolbar: magic wand button (FaWandMagicSparkles) that toggles the
panel; disabled with reduced opacity when K.G.One is turned off;
mutually exclusive with the Chat panel
- projectStore: add `showKGOnePanel` state + `toggleKGOnePanel` action
- KGOnePanel (new): three-tab panel (Clip / Full Song / Separator)
- Clip: prompt + advanced params → POST /v1/clip/generate → poll
/v1/clip/result → download WAV → AudioPlayer preview
- Full Song: caption + lyrics + advanced params → POST
/v1/fullsong/generate → poll /v1/fullsong/result (live progress %
from nested JSON string) → download MP3 → AudioPlayer preview
- Separator: reads selected audio region from OPFS via
KGAudioFileStorage → POST /v1/separator/separate (multipart) →
poll /v1/separator/result → parallel-download all stem files →
multiple labeled AudioPlayer instances rendered vertically
- Shared: custom AudioPlayer (play/pause, clickable seek bar),
spinner + hint text, error card, AbortController cleanup,
DEBUG_MODE.KGONE-gated REQ/RES console logging
84 lines
2.2 KiB
JSON
84 lines
2.2 KiB
JSON
{
|
|
"general": {
|
|
"language": "en_us",
|
|
"llm_provider": "openai",
|
|
"persist_api_keys_non_localhost": false,
|
|
"openai": {
|
|
"api_key": "",
|
|
"flex": false,
|
|
"model": "gpt-5.4-mini"
|
|
},
|
|
"gemini": {
|
|
"api_key": "",
|
|
"model": "gemini-2.5-flash"
|
|
},
|
|
"claude": {
|
|
"api_key": "",
|
|
"model": "claude-sonnet-4.6"
|
|
},
|
|
"claude_openrouter": {
|
|
"api_key": "",
|
|
"base_url": "https://openrouter.ai/api/v1",
|
|
"model": "anthropic/claude-sonnet-4.6"
|
|
},
|
|
"openai_compatible": {
|
|
"api_key": "",
|
|
"base_url": "",
|
|
"model": ""
|
|
},
|
|
"soundfont": {
|
|
"base_url": "https://cdn.jsdelivr.net/npm/soundfont-for-samplers/FluidR3_GM/"
|
|
},
|
|
"kgone": {
|
|
"enabled": false,
|
|
"base_url": "http://127.0.0.1:8000"
|
|
}
|
|
},
|
|
"hotkeys": {
|
|
"main": {
|
|
"hold_to_create_region": "ctrl",
|
|
"play": "space",
|
|
"loop": "c",
|
|
"undo": "ctrl+z",
|
|
"redo": "ctrl+shift+z",
|
|
"select_all": "ctrl+a",
|
|
"copy": "ctrl+c",
|
|
"cut": "ctrl+x",
|
|
"paste": "ctrl+v",
|
|
"save": "ctrl+s"
|
|
},
|
|
"piano_roll": {
|
|
"switch": "tab",
|
|
"select": "q",
|
|
"pencil": "w",
|
|
"hold_to_create_note": "ctrl",
|
|
"snap_none": "1",
|
|
"snap_1_4": "2",
|
|
"snap_1_8": "3",
|
|
"snap_1_16": "4",
|
|
"qua_pos_1_4": "5",
|
|
"qua_pos_1_8": "6",
|
|
"qua_pos_1_16": "7",
|
|
"qua_len_1_4": "8",
|
|
"qua_len_1_8": "9",
|
|
"qua_len_1_16": "0"
|
|
}
|
|
},
|
|
"editor": {
|
|
"playhead_update_frequency": 10
|
|
},
|
|
"chatbox": {
|
|
"default_open": true
|
|
},
|
|
"audio": {
|
|
"enable_audio_capture_for_screen_sharing": false,
|
|
"lookahead_time": 0.05,
|
|
"playback_delay": 0.2
|
|
},
|
|
"templates": {
|
|
"custom_instructions": ""
|
|
},
|
|
"chord_guide": {
|
|
"chord_definition": ""
|
|
}
|
|
} |