Merge feature/next: ask GPT-SoVITS again before refusing an import
# Conflicts: # CHANGELOG.md
This commit is contained in:
@@ -24,6 +24,9 @@
|
||||
- **Where downloads (and now imports) go is a choice**: by base model (the new default), in Downloads then by base model, all in a Downloads folder, straight in the type's folder, or your own folder typed by hand; an example path shows the result. Without a saved setting, downloads now go by base model instead of into a Downloads folder.
|
||||
- The scanner's offline guess of a base model (for models Civitai does not know) now also recognizes LoRAs, Qwen-Image, Wan, Chroma and Hunyuan Video files.
|
||||
|
||||
### 🎙️ Importing a character right after installing (装好就能导入角色)
|
||||
- The first "Import character" on a fresh install no longer says the storage place cannot be written to: the voices page asks GPT-SoVITS again before refusing, instead of trusting what it heard up to a minute earlier.
|
||||
|
||||
### 🔗 Short share codes, one place to import (短分享码与统一导入)
|
||||
- **Share codes are 5–10 times shorter (AMB2)**: only what a workflow needs is kept — node types, values, links, positions, titles, groups and the models' fingerprints — and ComfyUI fills in the rest when it opens. A Chinese-character spelling ("汉字码") is the shortest; a letter spelling ("字母码") posts anywhere, for chats or comment sections whose word filters stop the characters. Before a code is given, it is opened once and compared with the canvas; a workflow it cannot hold exactly (subgraphs, for one) is shared whole. Nodes from node packs keep their links on a computer that has not installed the pack yet. AMB0 and AMB1 codes still open.
|
||||
- **Share and import in one place**: the Workflows page's ⇅ makes the code as soon as it opens (with the fingerprint and download-link notes), and takes anything in: a pasted share code or workflow JSON, or a dropped or chosen workflow file, an image with a workflow, or a backup .zip.
|
||||
|
||||
@@ -72,12 +72,10 @@ export async function openTtsImport({ files = [], target = null, onDone } = {})
|
||||
await anomalousAlert(t('ttsSetupRemote'));
|
||||
return;
|
||||
}
|
||||
// New characters always go to the storage place (changed in GPT-SoVITS settings).
|
||||
// New characters go to the storage place. The status is kept a minute (a fresh install's folder may be there by now): ask again before refusing.
|
||||
if (!target && !status.libraries.find(lib => lib.storage)?.writable) status = await loadGptSovitsStatus({ force: true }).catch(() => status) || status;
|
||||
const home = status.libraries.find(lib => lib.storage);
|
||||
if (!target && !home?.writable) {
|
||||
await anomalousAlert(t('ttsImportNoLibrary', { path: status.storage }));
|
||||
return;
|
||||
}
|
||||
if (!target && !home?.writable) return anomalousAlert(t('ttsImportNoLibrary', { path: status.storage }));
|
||||
|
||||
activeScope?.dispose();
|
||||
const scope = createViewScope();
|
||||
|
||||
Reference in New Issue
Block a user