Files
DemonGatanjieu-Anomalous_Mo…/CHANGELOG.md
T
Claude ca2cdecf7e fix(models): import upload and Tidy moves only from this computer
PUT /anomalous/import/upload and POST /anomalous/placement/move wrote
into the model folders for any caller, while place and identify already
answered only the computer ComfyUI runs on. With ComfyUI started with
--listen, another device could upload model files or move models
between folders. Both now check mcp_server._is_local first and answer
403 not_local, which the import and Tidy screens already show.

Tests drive both routes through a proxy header and check nothing was
written or moved; they fail without the check. Full suite: structure
check, every tests/*.mjs and 234 Python tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018P2T2R7TFbJsc3C9maCD8B
2026-10-08 20:35:57 +00:00

120 KiB
Raw Blame History

📈 Anomalous Model Browser Changelog

Unreleased

📥 Drop a model in, it goes to the right folder (拖进来自动归位)

  • Models page → + Import, or drop model files anywhere on the models page: each file gets a card saying what it is — Checkpoint, LoRA, VAE, text encoder, diffusion model, ControlNet, Embedding, CLIP Vision, upscale model — with its base model, how sure that is, and one line on what such a model is for. It is read from the file's header only; .ckpt/.pt files, which can carry code, are never opened (you pick their type).
  • Where it will go is shown and can be changed; by default it follows the download setting (by base model, such as loras/Illustrious). A file found in your Downloads folder or on the Desktop is moved there (instant on the same drive; tick "Keep the original" to copy); any other file is sent as a copy.
  • While you look, the whole file is checked against Civitai: SDXL-family LoRAs get their exact base model (Pony, Illustrious, NoobAI cannot be told apart from the file alone) and the model and version name. A file you already have (identical content) is pointed out and left out unless you tick it; a different file of the same name is saved as "name (2)". Nothing is ever replaced. The new files are scanned right after.

🧹 Tidy: models in the wrong folder, files you have twice (整理模型)

  • The models page has tabs: All models, Tidy and Sources (Sources was a chip among the model types). Tidy shows a count when it found something.
  • Tidy reads the "table of contents" inside every model file and shows, as cards with the model's cover and name, two steps. 1. In the wrong folder: what the file really is and where it belongs, drawn as Checkpoint → UNet / Anima, with one plain reason (for example an Anima, Flux or Wan model that is only the main part, which "Load Checkpoint" cannot read — Civitai labels all of these "Checkpoint"). Move there takes the model with its cover, info and your notes, keeping its subfolder ("Change place" to pick another); nothing is replaced, and it says which loader node your workflows need instead. 2. Identical files: the copies side by side, the one in the right folder marked to keep (click another cover to keep that one), and one button sends the extra copies to the Recycle Bin with their covers and info. Scanned models are compared at once; same-size files never scanned when you press Compare.
  • Models that load where they are anyway (a whole checkpoint in the UNet folder) are not listed.
  • Importing, uploading and Tidy's moves only work on the computer ComfyUI runs on; opened from another device (ComfyUI started with --listen), they say so instead of writing into your model folders.

🧬 Filter models by base model (按底模筛选)

  • Under the type chips, one chip per base model the listed models have, with counts: All · Illustrious 21 · Anima 7 · SDXL 9 · Unknown 2. Spellings of one family count as one (SDXL 1.0 and SDXL). Models not scanned yet are listed by what their file's header tells. Handy for LoRAs: pick the base model of your checkpoint and only the LoRAs that fit are left. It works together with the search.

🏷️ Version labels on model cards (卡片显示版本号)

  • A scanned model's card shows its Civitai version ("v2.0", "Illustrious", "fp8"…) as a small label above the name, so versions of one model that share a file name can be told apart.

⚙️ Settings in tabs (设置分组)

  • The settings page is split into tabs: Look, Models, Workflows, Prompts, Backup, Help. "Change where downloads go" opens Models directly.
  • 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.

🔗 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.

📦 Recipe packages are back (配方包重新开放)

  • A recipe card's export button (and Export in the recipe's More menu) makes a recipe package: one .zip with the recipe's workflow, name, notes, tags, parameters, cover and model thumbnails (its versions only when ticked), to give to someone. Dropped into the ⇅ of their Workflows page, it becomes a new recipe card, optionally opened on the canvas; a recipe of the same name is never replaced (the new one is kept as "Name (2)"). Packages are checked for size, paths and checksums before anything is written, and a failed import leaves nothing half done. Send it as a file in chat apps.

🧩 Combos keep any nodes (搭配能存任意节点)

  • Save as combo keeps every picked node, not only the model and text nodes: an upscale model's loader with the node that uses it and the Save Image after it, a ControlNet's nodes, any small group of nodes that work together. The models and prompts in it can still be changed in the combo; the other nodes are listed under Nodes put back as saved with their values, and go back on the canvas exactly as saved (change them on the canvas and save the combo again).
  • A link coming in from a node that was not picked cannot be kept; the save dialog, the combo and its card (1 input to wire) say which inputs to connect after putting it down. Subgraphs cannot be kept yet. A combo with no models shows its nodes' names on the card. Combos saved before work as they did.

🎯 Opens where your node is; number keys for the pages (按节点打开、数字键切页)

  • Opening follows the selected node: open the browser with a text node selected on the canvas and Prompt Studio opens on that node; with a KSampler, a model loader or any other node, Current node opens. With nothing selected it reopens the page you used last, as before. It can be turned off in Settings → Opening and window.
  • Prompts is a page like the others (提示词变成普通页面): the rail's Prompts entry (and 7) now shows Prompt Studio inside the browser window instead of folding the window away. Beside the canvas on the page moves it next to the canvas as before, to see the canvas while you edit (its side and width are remembered); Back to the window returns it.
  • Prompt Studio's own shortcut is gone (Ctrl+Shift+L, and its row in ComfyUI's settings and the Extensions menu): it opens from the rail, with 7 while the browser is open, or by opening the browser with a text node selected. The browser's shortcut (Ctrl+Shift+M) stays.
  • 1–9 go to the pages on the left while the browser is open (Home, Activity, Models, Gallery, Workflows, Combos, Prompts, Voices, Audio library). Numbers typed into a box stay in the box, and the rail's tooltips show each number. W/S were not used because W is ComfyUI's own Workflows key.

☀️ Light theme (浅色主题)

  • Settings → Appearance → Theme: Follow ComfyUI (the default), Dark, Light or Abyssal Scarlet. Following ComfyUI switches with ComfyUI's color palette at once, light with a light palette and dark with a dark one. The same choice is in ComfyUI's settings under Anomalous Model Browser (it replaces the Abyssal Scarlet on/off switch; Abyssal Scarlet stays chosen if it was on).
  • Every page, the Prompt Studio drawer and the dialogs follow the theme. The image viewer stays dark, like ComfyUI's own, and so do the labels and buttons over pictures (a model card's name, a recipe's cover labels, the gallery's View parameters button), so their text reads on any picture. Grey hint and secondary text is darker in the light theme so it reads clearly. The dark themes look as before.
  • The "all models are here" banner on a recipe now reads green instead of pink, and the voice page's Import character button has dark text on its light blue in the dark themes.

🌐 Your own DeepL key for translation (DeepL 翻译密钥)

  • Settings → Translation → DeepL key: prompts are translated with Google's free endpoint (MyMemory when Google cannot be reached); with your own DeepL API key, DeepL comes first. Saving the key translates one sentence to show it works, or says why not (a key DeepL refuses, a used-up month). The Free plan gives 500,000 characters a month. The key stays on this computer and is never put in a backup.
  • A DeepL key saved by hand in config.json before did not work any more: DeepL stopped taking the key as a request parameter in 2025. It now goes in the Authorization header.

💾 Backup and restore (备份与恢复)

  • Settings → Backup → Export packs your Workflow Recipes, combos, materials and saved prompts, parameter sets, the plugin settings and the names, notes and covers you gave your models into one .zip, optionally with ComfyUI's own saved workflows. Keep it on a cloud drive or a USB stick. The Civitai API key is never included.
  • Import first lists what is in the backup next to what this computer has (new, the same, different), and the models it finds again by file hash, even after they were renamed or moved. By default it only adds what is missing; "take the backup's" replaces differing files and puts this computer's in the Recycle Bin. A model's name and notes are filled in where empty, and your own cover takes the place of the Civitai one. Nothing is deleted.
  • Models' scan results (.info: names, trigger words, base models from Civitai) are in the backup too, so they survive Civitai removing a model; Civitai's covers can be added (they can be hundreds of MB). Both are put back only where this computer has none.
  • Download what the new computer lacks: the backup also keeps a model list (each model's place, size, fingerprint and link). Importing says how many of those models this computer lacks; Find downloads… looks them up like Model Check (Civitai by hash, the saved link, Hugging Face), shows sizes and sources, and downloads the ticked ones one by one into the folder and file name they had, each checked against its fingerprint and scanned after.

🧪 Tests in the repository (测试公开)

  • The plugin's tests are now part of the repository: tests/ (Python tests for the backend, .mjs tests for the frontend rules), node tools/run_tests.mjs runs them all with the structure check, and docs/guides/testing.md says how to run and write them. They need no network or GPU and only touch temporary folders. Developer notes no longer point at tests that were removed earlier.

🧭 New layout (新布局)

  • Icon rail (左侧图标栏): every page now has one place on the left: Home, Models, Gallery, Workflows, Combos, Prompts, then Voices and Audio for the audio side, then scan, Model Check, Node Assistant and the toolbox, with settings at the bottom. It replaces the tabs at the top, the image/audio switch and the tool bar under the folder list.
  • Folder list opens and closes per page (列表按页面收放): click the current page's icon again, or the button at the top left, to hide or show its list; each page remembers your choice. Pages without a list (Home, Gallery) give the space to the content. In a narrow or docked window the list starts closed and opens as a drawer against the rail, over a dimmed page; picking a folder or character, pressing the dimmed page or Esc closes it.
  • Home page (主页): "What would you like to do?" with a card per task (find a model, fix missing models, give a character a voice, look through outputs, keep workflows, use a combo, put prompts together) and first steps (scan model folders, tour the interface, what's new). The first time you open the browser it starts here; after that it reopens the page you used last.
  • The header shows the current page's name; workflow and material workspaces keep the rail visible, so you can switch pages without closing them first.
  • Up-to-date guides (说明跟上新界面): the help page, the ! "What's new" guide and the README now describe the rail, Home, model types, the activity log and character voices instead of the old tabs and bottom bar. The help page also says where the Civitai API key really goes (the scan settings on the scan page).
  • The tour follows how you work (导览按使用顺序讲): the interface tour now goes the way the pages are used: the rail as one line (pick models, keep a good result, use it again), the Gallery's ☆ and where each kind of keep goes, Workflows (with share codes), Combos, Prompt Studio, Current node, then scanning, Model Check, the ! guide and Settings. Steps that still described translating on Current node and the old scan wizard are rewritten, and the tour's text follows the interface language like the rest of the browser.
  • Deleting goes to the Recycle Bin (删除进回收站): deleting a model (with its info and covers), an output image, generated audio, a recipe (with its versions and images), a material, a prompt note or a parameter note, replacing or resetting a cover, and the duplicate copy a file rename finds, all move the files to the system Recycle Bin instead of erasing them. On a USB stick or network drive, which has no Recycle Bin, nothing is deleted and the message says to delete it by hand. The confirmations say where things go. An unused route that could erase every .civitai.info in the library (with the names you set) is gone.
  • Scan page (扫描页): the rail's scan button and Home's "Scan model folders" open a page instead of the old seven-switch dialog. It shows how many models are matched on Civitai, not matched, and not scanned yet; one button scans the new ones, with progress in the page (it runs in the background, so the window can be closed). Offline scanning, renaming files on disk, fetching everything again, picking models and the Civitai API key are in Scan settings; the two risky switches turn themselves off after each scan. The "record model fingerprints in workflows" switch moved to Settings → Model settings.
  • Unmatched models can be looked up again (没匹配上的模型可以重新查找): a model that Civitai did not know, or that was scanned while Civitai could not be reached, used to stay "local only" for good unless every model was fetched again (which also replaced your own covers). Look up the N unmatched models again retries just those, keeps your covers, and reuses the saved hash when the file is unchanged, so it takes seconds instead of re-hashing gigabytes.
  • Which models, and what a scan did (是哪些模型、扫描做了什么): on the scan page, Not matched and Not scanned yet open a list of those models, with their type and folder; unmatched ones say why (Civitai does not have the file, Civitai could not be reached then, or it was an offline scan) and the base model inferred. Each row opens the model (Back returns to the scan page), scans it or looks it up again, or searches Civitai for its name. After a scan the page shows its result: when, how long, how many matched, inferred, failed, covers downloaded and files renamed, and each model it changed with what happened; the progress box says the same and, when it floats over the canvas, has Show the result. A model's card scan looks an unmatched model up again and its message says what it found.
  • Online and offline in one scan (联网和离线在同一次扫描里): a scan asks Civitai first and infers the base model from the file for what Civitai does not know, as before; now it also remembers why. When Civitai stops answering (two models in a row), the rest of the scan infers from the files right away instead of waiting out every timeout, and the next online scan looks those models up again by itself, as it does for models from an offline scan. Models Civitai answered "not found" for wait for Look up again. A model that fails (a locked file, say) no longer ends the scan of the others; it is listed as failed with the reason.
  • Your edits come first (你改的永远优先): names, notes and download links you set in the model editor now have a file of their own next to the model (<model>.anomalous.json) that scans never write, and they win over Civitai's information, which wins over what is inferred from the file. Edits saved by earlier versions keep working. Editing a model that was never scanned used to make it look scanned, so scans skipped it for good; it is now scanned like any new model.
  • Covers you chose are never replaced (你换的封面不会被替换): a cover counts as Civitai's only while it is the very image the scan downloaded; any other cover is yours. Fetch scanned models again now keeps your covers (and names and notes), updates only Civitai's own, and asks before it starts.
  • Where a model's information comes from (信息来源标注): cards look as before for models matched on Civitai; a base model inferred from the file shows as "≈ SDXL" with a dashed outline, and a model not scanned yet says so, each with a tooltip on what to do. The detail header adds the source (Civitai, inferred from the file, not scanned) and which fields you edited.
  • Faster rescans (重复扫描更快): a scan no longer downloads every cover and Civitai model page again for models whose information is already on disk; only new or missing ones go to the network.
  • Model types at the top (模型页顶部类型标签): the models page starts with a chip per model type (Checkpoint, LoRA, VAE…) and how many models it holds; a chip shows that whole type, subfolders included, so the grid no longer looks like it holds one folder's models. Picking a folder in the list narrows the grid to that folder, shown as a chip with ✕ that goes back to the whole type. The browser remembers the type you picked last.
  • Model Check, formerly Model Doctor, redone (模型检查,原“模型医生”,重做): when a workflow opens with models this computer does not have, a bar over the canvas says how many, and how many are here under another name or folder; Put in swaps those in and Show opens the doctor. The doctor page lists what needs you first and says why in plain words (same file found elsewhere, same size only, not on this computer, no fingerprint saved in the workflow), with a button for each: put in, use it, pick one yourself, or look it up on Civitai; the models that are fine fold away. Opening the doctor no longer changes the workflow by itself, and a model put in by the doctor or its picker no longer stays marked red by ComfyUI. The "auto-detect on startup" switch (it did nothing) and the doctor's own deep hash scan are gone: the check hashes same-size files itself, and the page points to the scan page when unscanned models could be the missing ones.
  • The Model Check bar can be turned off (模型检查横条可以关掉): the bar now starts with "Model Check:" so it is clear it comes from the browser, not ComfyUI, and has Don't show again, which stops checking workflows when they open and says where to turn it back on. The same switch is in Settings → Workflows ("Check for missing models when a workflow opens", on by default); with it off, run Model Check from the rail when you want it.
  • A model put in by Model Check stays put (模型检查换上的模型不会再变回去): ComfyUI was not told about the change, so reloading the page right after Put in (or Ctrl+Z) brought back the old, missing name and its red mark. Each put-in is now one step of ComfyUI's history, saved like any edit of your own.
  • A character voice dropped on a TTS node stays put (拖到 TTS 节点的角色声音刷新后还在): the same gap as above: reloading right after the drop brought back the node's previous voice, and Ctrl+Z skipped it. Every drop from the browser onto the canvas is now recorded as one history step.
  • Prompt boxes found by what they are (提示词框按节点定义识别): dropping or writing a prompt (material library, Prompt Studio, translator) now finds a node's prompt boxes by ComfyUI's own definition (multiline text inputs) instead of guessing from names, so a filename or "value" box no longer takes a prompt and third-party prompt nodes are recognised. Whether a box is positive or negative follows its wiring to the sampler, not the node's title: a CLIP Text Encode connected to the negative input gets the negative prompt even if it is still called "CLIP Text Encode". Prompt Studio's "take prompts from the selected node" also reads the roles right again (it could not follow links in current ComfyUI).
  • See where a dragged prompt goes (拖提示词前先看清楚落在哪): while you drag a prompt from the material library, every prompt box on the canvas is outlined (green for positive, red for negative, grey when it is not wired to a sampler) and the box under the pointer lights up. The label next to the pointer says exactly what releasing does, e.g. "Release: into #6's positive prompt box; the negative prompt box on the same sampler (#7) too". Drop on a box and that box is filled; the matching negative (or positive) box of the same sampler gets the other half of the material. On a node with several prompt boxes, point at the one you mean instead of letting it guess. A short message confirms what was filled; the library's receipt undoes it. Dropping a prompt plan on empty canvas used to create an empty prompt node; it now creates a positive and, when the plan has one, a negative node with their text.
  • Current node (当前节点, formerly Node Assistant): the panel no longer splits into "actions" and "parameter sets" tabs; it is one page with the model actions on top and Parameters below. Parameters lists every saved set of values for this kind of node in one list — from the material library and from recipes' parameter sets, the same values saved twice shown once — and each entry says exactly what it would change on the selected node ("steps: 20 → 30"). Apply these N changes only those; seeds and model files stay (change the model above), and the receipt undoes it. Save these values keeps the node's current values in the material library, so the next node of that kind can use them.
  • Prompts on Current node (当前节点列出提示词框): Current node now lists the selected node's prompt boxes, each marked positive or negative by its wiring, and Edit in Prompt Studio opens them in the studio, where they are edited and translated. The separate Prompt Translator window is gone.
  • No more toolbox (工具箱拆掉了): every tool now opens from the page it belongs to. Workflow share codes (import / export) are the ⇅ button at the top right of Workflows (where a disabled import button used to sit); Prompt Studio opens from Prompts on the rail (Prompt Notes became Combos, a page of their own); Model Sources is at the end of the type chips on Models, and Model Check has Where to download for the open workflow's models; translation is on the prompt boxes in Current node. The rail keeps scan, Model Check and Current node.
  • No more Material Library page (素材页拆掉了): it held four unrelated things, so each went where it is used. Prompts on the rail opens Prompt Studio beside the canvas, where your saved prompts are (and can be renamed, deleted and dragged onto the canvas); the browser comes back when you close the studio, and the second keyboard shortcut (Ctrl+Shift+L) now opens the studio too. Saved node values are in Current node when you select a node of their kind, which can now delete them. Recent results are the gallery's ☆, combos have their own page, and whole workflows are recipes. The recipe page's buttons that copied parameter sets into the library are gone (Current node lists recipe sets already), and saving nodes from an image's details says where they went. Nothing is deleted: your saved prompts and values stay in the same files.
  • Prompt Studio edits the node itself (提示词工坊直接改节点): no more assembly board, "write to node" step or positive / negative tabs. Select a prompt node and its prompt boxes appear in the studio, positive and negative together, as tags: click one to make it stronger or weaker, double-click to edit it, drag to reorder, × to remove. Every change goes straight into the node, and the studio's Undo (or Ctrl+Z on the canvas) takes it back; line breaks in your prompt stay where they were. Type in a box and press Enter to add tags: Chinese, Japanese, Korean or any other language is translated to English first, and tags the box has already are not added twice; a box that holds words that are not English offers to translate them. The meaning menu in the top bar puts each tag's meaning under it in Simplified or Traditional Chinese, Japanese, Korean, Russian, Spanish, French, German or Portuguese; Text shows the whole text instead. With no prompt node selected you write a draft, which can be saved or dragged onto the canvas by its ⠿ handle; the studio keeps editing the last prompt node until you select another one or press the ✕ beside its name. A clicked card goes into the box of its role (a negative card never lands in a positive box). The six starter cards are down to three (quality, common negative, hands and anatomy), your saved prompts are under My prompts with their first words showing, and the studio no longer reads every saved prompt again every 30 seconds, only new ones.
  • Saved prompts are managed in Prompt Studio (存过的提示词在提示词工坊里管理): the studio's library cards for prompts you saved used to be read-only ("managed by the source material"). Their preview now has Rename and Delete (the whole saved prompt, positive and negative together, to the Recycle Bin), and any card can be dragged out of the studio onto the canvas: onto a prompt box it fills that box (outlined by role, with the text previewed before you let go, one Ctrl+Z or Undo in the message to take it back), onto empty canvas it makes a prompt node.
  • Keep a result from the gallery (图库里点 ☆ 收藏): every image in the gallery has a ☆. It asks what to keep, and says where each goes: The whole workflow (a Workflow Recipe on the Workflows page, with the picture as its cover), Its combo (the main model, LoRAs and positive prompt, on the Combos page, ready to put on the canvas; models this computer does not have are left out and the message says how many) or Just the prompts (positive and negative, in your saved prompts). No name is asked: it is named after the prompt. Kept images show ★; a row already kept shows ✓ and opens it, and its Remove (取消收藏) moves what was kept to the Recycle Bin after asking, so the star goes back to ☆. The image workbench's Keep opens the same menu (its name-and-tags form is gone). The Material Library's Recent shelf, which did the same for whole workflows only, is gone: the gallery lists the same images. Deleting an image from the gallery asks in the usual dialog instead of over the picture.
  • Model sources on the Models page (模型来源进了模型页): the Sources chip at the end of the model types now shows, in place of the cards, where each model is downloaded, for This workflow or All models, filtered by with / without a link. Every link can be typed or pasted straight into its row (any site, not only Civitai), found automatically, opened and saved with one button; a link is kept in the model's own information (the same as the editor's download link) and, for this workflow's models, in the workflow too, so it travels when the workflow is shared. The list can go on the canvas as a note or to the clipboard. Model Check's Where to download opens it on This workflow. The separate pop-up, its lock-then-edit links and its four ways of saving are gone.
  • One look everywhere (配色统一): pages made at different times used their own greys (bluish slate here, neutral grey there) and their own accent (sky blue, violet, indigo). They now all take the Home page's colours: neutral surfaces, the same text greys and one accent for links and selection, and they follow the Abyssal Scarlet theme too (the Material Library, Prompt Studio, voices and several dialogs used to stay blue-grey in it). The workflow share-code dialogs lost their blue and orange buttons for the usual ones. Status colours and prompt-role colours are unchanged.
  • See it before you let go (拖的时候先看到结果): dragging a prompt over a prompt box shows, in that box and in the opposite box on the same sampler, the text releasing would put there; move away and they go back. Dragging saved values over a node of their kind lists what would change, such as "steps 12 → 28, cfg 4.5 → 5.5", or says nothing would change.
  • The scan page in plain words (扫描页说人话): it says what a scan does (the file's fingerprint is looked up on Civitai), and why a model was not found: not published on Civitai (voice, upscale and detection models mostly come from HuggingFace or GitHub), trained or merged by you, or changed after download; it works as usual, and you can add its download link. A model Civitai does not know that is no known image model says it may be a voice or upscale model. Model files in other formats (.pth, .ckpt, .bin…), which scans never read, are listed under Other formats with why, so they are no longer a mystery.
  • Undo what you dropped (拖错了可以撤回): anything Anomalous writes on the canvas (a material dropped on a node, a prompt put in a box, values applied in Current node, a model swapped or a LoRA inserted, a recipe or prompt note sent to the canvas) is now one step of ComfyUI's own Ctrl+Z; before, a drop was not, and Ctrl+Z could undo the step before it instead. After a drop, the message at the top right has Undo and stays while the pointer is on it. Dropping a prompt on empty canvas can be undone the same way. In Activity, canvas changes made since the page was opened have Undo while nothing has changed them since; entries that removed nodes or rewired existing ones only record.
  • A tidier scan page (扫描页更清爽): the scan page now holds only the counts, the scan button, the last scan in one card and a card saying how the next scan goes. Not found, Not scanned yet, the other formats and the last scan's models each open their own page with ‹ Back to scan, a line on why those models are there, one button for all of them (scan these / look them up again) and the list; a model opened from it comes back to the same list where you were. Show the result after a scan opens the last scan's page. The old fold-out Advanced is now Scan settings, a page of its own like the lists: its card on the scan page shows how the next scan goes (all models or the picked ones, online or offline, renaming files…, with the ones that change files in yellow), and the page asks one question per card, which models as two choices side by side and each option with a switch, the ones that change files or take long marked so, the online-only ones under their own heading (faded for an offline scan).
  • Characters and Voice-over, one page (角色和配音在同一页): the Script Director used to be a drawer opened by one of four equal buttons on Voices, over the character cards. Voices now has two views switched at the top, Characters and Voice-over, sharing the character list on the left: on Voice-over, clicking a character makes it the one who speaks. Each character card has Voice-over to go there with that character chosen; Home's "Give a character a voice" opens it too, and the rail's Voices entry reopens the view you used last. Generate is the big button; when it is done it says how long it took (instead of the node's count of sentences, batches and cache) and Saved to Audio › opens the audio gallery. Pushing to a node, dragging onto one and copying sit below under Into your own workflow, and a push or drop is one Ctrl+Z step.
  • Generation settings you can read (生成设置不再挤成一团): language is a row of choices and speed a slider, always in view; the four sampling numbers fold under Fine-tuning (usually left alone), one per row with a plain name (Candidates, Randomness…) and the node's own name under it. The side no longer scrolls sideways.
  • Calmer line cards (台词卡片更清爽): split, merge and delete show when the pointer is on a card; another take of a line stays in view. The ▶ that played the emotion's reference clip (easily taken for the generated line) is now a small speaker beside the emotion chips. A character with only its main voice shows no chips at all, just one line on how to add emotions. Plainer words: "Split into lines" instead of "Parse lines", "3 lines · using main voice" instead of "Bundled 3 lines".
  • Audio gallery (音频库): each file's lines show once (the full text was always shown under the summary), 💬 opens them on Voice-over with their character for another take, and the list on the left no longer repeats the gallery as "Audio history".

🪶 Lighter on memory (更省内存)

  • Model cards show up sooner (模型卡片出得更快): card thumbnails used to live in ComfyUI's temp folder, which ComfyUI empties on every start, so the first visit after each restart remade them all. They are now kept in ComfyUI's user folder (still at most 256 MB) and survive restarts. Opening a model type also makes the missing ones in the background, one at a time, so scrolling down finds them ready; the first screen of cards loads before the rest.
  • Video covers show a still first (视频封面先显示第一帧): a video cover now shows its first frame right away and downloads nothing until it plays. Playing on hover is the default now (it was always-play, though the setting called hover "recommended"), so fewer videos decode at once; "Always play" is still in Settings.
  • A settings page (设置页): the gear opens a page instead of a small pop-up with a second dialog inside: Look (view mode, atmosphere, interface scale as a slider, theme, language), Model cards and memory (thumbnails or originals, video covers, the thumbnail cache with its size and an Empty button), Model folders, Workflows (model fingerprints), Opening and window (where the browser opens from, reset layout) and Help and feedback. Each setting says what it does and what it costs; Back returns to the page you came from.
  • Easy feedback (反馈更方便): Home ends with "Found a problem, or have an idea?" and Settings has the same under Help and feedback. Report a problem and Suggest something open a small window with one text box (a sentence or two, any language); Submit on GitHub then opens a new issue with it written in, titled from its first words, in the browser's language, so only Submit is left to press. The environment (plugin and ComfyUI versions, Python and PyTorch, GPU and memory, OS and browser, the page you were on; never a file path or ComfyUI's command line) is attached folded at the end when ticked, and can be looked at first; Copy diagnostics copies it for anywhere else. The repository's issue forms ask just what went wrong, with optional screenshots.
  • No more manual pop-up (使用手册弹窗去掉了): the long help text, which had fallen behind the window (it still called recipes and materials "in testing"), is gone; each page now explains itself, Home lists what you can do, and ! shows what changed. Settings → Help and feedback has Interface tour, What's new, Full guide (the README on GitHub, at its Chinese half in Chinese) and the feedback buttons. The README's backup note no longer calls these features a test.
  • Model folders, readable (模型文件夹设置更好懂): folder management is a view of the settings page instead of a pop-up. Grouping is two plain choices, By model type or By folders on disk (it was "Category mode / Physical mode"); the types shown on the Models page come first, each with its usual name (Checkpoint, Diffusion…) and folder name, a switch and ↑↓ to order them; the ones that are off follow, and the many folders ComfyUI registers that few people use (configs, datasets…) fold away. Each change applies at once; there is no Save and reload button any more.
  • The output gallery shows 512 px thumbnails instead of full images (cached like model cards), so scrolling through hundreds of outputs no longer fills the browser's memory and graphics memory with full-size pictures. Dragging an image to the canvas and the large viewer still use the original. When the browser has been closed for 90 seconds, its gallery images are released too, like the model grid.

⬇️ Download missing models from Model Check (模型检查一键下载缺失模型)

  • Download next to a missing model, and Download all for every one, when its source is certain: Civitai found the very file by the workflow's fingerprint, or the workflow carries a link to the file (a shared workflow's model links, or the download links in ComfyUI's own templates on Hugging Face). A file name alone is never enough, and a link to a different file than the workflow's is not offered.
  • You see where it goes before it starts: the dialog shows, per file, its size, source and base model, the full path it will be saved to, and the free disk space. The models folder (when you have several, e.g. through extra_model_paths) and the subfolder can be changed right there; the folder you pick is remembered per type.
  • Your folder habits (按你的文件夹习惯放): Settings → Model downloads sets the default. Where the workflow says (default) puts the file in the subfolder the workflow names, so nothing in the workflow changes; a model without one goes into the folder set below (Downloads). A set folder always uses that folder, and the node is moved to the new place (Ctrl+Z undoes it). Write {base} in the folder to sort by base model (SDXL, Flux, Illustrious…); a folder of that name you already have is used, in whatever spelling.
  • Safe by default: it downloads into a temporary file and checks the fingerprint before giving it its name, so a broken or wrong download never shows up in your models; an existing file is never replaced; an interrupted download continues where it stopped. .ckpt / .pt files get a warning (they can run code), and a source without a fingerprint says it cannot be checked. Your Civitai API key (needed for some models; Settings → Model downloads, or the scan page) is only sent to Civitai.
  • Progress shows in the row with Cancel; when a file is done, the nodes using it get it, a short message says so, the new files are scanned for their information and cover, and the activity log records the download (source, size, whether the fingerprint matched).
  • Base models, VAEs, text encoders… from ComfyUI-Manager's list (Manager 模型清单): models that are not on Civitai (Flux's VAE, T5 and CLIP text encoders, upscalers, ControlNets…) are now looked up by file name in the model list of the ComfyUI-Manager installed here, which has a few hundred of them, mostly on Hugging Face. When the workflow carries the model's fingerprint, only the listed file with that fingerprint is offered, so it is certainly the same file; without one, a single listed file of that name is offered as Download by name, with a warning, and never in Download all.
  • Hugging Face first with the mirror (开镜像时优先抱脸): when a model is on Civitai and the very same file (same fingerprint) is on Hugging Face too, through the workflow's link or ComfyUI-Manager's list, it now downloads from Hugging Face while the China mirror is on: usually much faster there, and no Civitai login. Civitai's name, base model and page are still shown.
  • Covers and prompts from Hugging Face (抱脸模型的封面和示例提示词): a model downloaded from Hugging Face gets its model card's first example image as its cover, and its trigger words, example prompts and base model in its notes, with the repository as its link. Nothing you or a scan already set is replaced. Hugging Face cannot be searched by fingerprint, so this is for files downloaded from it.
  • Text encoders, CLIP vision and upscalers shown by default (文本编码器等默认显示): these folders are now shown and scanned by default, also where an earlier version saved them as hidden (once; you can hide them again in Settings → Model folders). Scanned models get fingerprints, so workflows you share carry them for T5, CLIP and the like too and Model Check can find the very file for whoever opens them.
  • One site down does not stop the others (一个网站连不上不影响其他): when Civitai does not answer (common in mainland China), the rest of the lookup no longer gives up: it stops asking Civitai and still asks Hugging Face (through the mirror) and the others.
  • AI apps can download too (AI 也能下载): three new MCP tools: download_missing_models (what Model Check's Download all does, for the open workflow), download_model (one model from a Civitai version link, a Hugging Face or GitHub file link, or a Civitai hash, into the folder of its type) and download_status. Files go where Settings → Model downloads says, are checked the same way, and are never written over an existing file.
  • Hugging Face through the China mirror (Hugging Face 国内镜像): Settings → Model downloads can send Hugging Face downloads through hf-mirror.com, which is on by default for the Chinese interface. When a download from Hugging Face itself fails, the row suggests the mirror.
  • Ctrl+Z after a scan (扫描后的 Ctrl+Z): after any scan, the first Ctrl+Z used to seem to do nothing: the workflow's saved fingerprints had changed, which ComfyUI counted as a step. A change of fingerprints alone no longer takes a step.

🧱 Combos from your own nodes (按自己的节点结构做搭配)

  • A combo is no longer only "a main model, LoRAs and a prompt". Pick nodes on the canvas (a Flux UNet with its two text encoders and VAE, a video model, a node pack's loader…), choose New → From the nodes picked on the canvas, and the combo keeps those nodes and how they are wired. Its editor then lists the slots: each model drop-down (a node with several has several) to change with a picker that shows that folder's models with covers, filtered by base model, and each prompt box to write in. Put on canvas lays the nodes out wired as saved, with your choices in them.
  • Only certain things are kept: nodes that pick model files and nodes that hold text, and the links between them. Other picked nodes (samplers, latents…) are left out and their ports stay open for you to wire, as before. Every other value of the kept nodes (strengths, CLIP type…) is stored by name and put back untouched. When the dialog saves, you see what is kept and what is not, and can rename slots or untick the ones that should stay as they are.
  • A node combo's page is grouped into Models, LoRAs and Prompts, in the order they flow (loaders first, LoRAs from the model outwards, the positive prompt before the negative); "LoRA 1" is the one next to the model. Each model shows its cover (looked up once for models chosen on the canvas), a two-line name, and its node's saved values (strength, CLIP strength, type) as small read-only tags. A whole row opens the picker; prompt boxes grow with their text. The top bar of the combo editor no longer floats 20 px down with the page showing above it.
  • Each slot names the node it is on, and its node pack when that is not ComfyUI's own. A prompt has a small "译" button: a read-only panel beside it shows the translation (English for Chinese, Chinese for English); Prompt Studio stays the place to edit prompts.
  • Nodes holding several models (Load CLIP Triple, LoRA stacks of rgthree, Comfyroll and Easy-Use, Easy-Use's full loader): each model is its own slot, and each saved value goes to the row with its number (strength_02 under the second LoRA); more than four values fold behind "+N". Empty rows of a stack (None) start unticked when saving, so a ten-row stack does not make ten empty slots. rgthree's Power Lora Loader draws its own rows instead of drop-downs and is not kept.
  • Right-click → Save as combo: the canvas's node menu saves the picked nodes (or the node you right-clicked, when it is not among them) the same way, without opening the browser first. It shows only when there is a model or text node to keep.
  • Every other value of a saved node stays as it was saved: the combo always puts down exactly what you saved, so a Flux combo cannot fall back to a node's default CLIP type or strength. For other values, save another combo.
  • On another computer, missing nodes are named with their node pack before anything is placed; a box or link a node pack has since renamed is reported after placing, never guessed. New → Same structure as … starts another combo from a structure you already saved.

🔎 Model search in the header (模型搜索放到顶栏)

  • The models page's search sits in the header now, instead of inside the folder list you had to open first. It matches the name, file name, folder, trigger words, base model and notes, every word you type, in the type you are looking at; Esc clears it. It also searches all the models of the type, where the old box only filtered the cards on screen.

🧩 Inserting a LoRA wires it properly (插入 LoRA 连线更聪明)

  • Current node → Insert LoRA before / after now works on the usual workflows it refused before: a checkpoint whose CLIP feeds both prompts (both now hang behind the LoRA), and UNet / Flux / Anima workflows with their own CLIP loader. Whether the CLIP line goes through the LoRA is decided by the LoRA file itself: one that also trains the text encoder (most SD 1.5 / SDXL / Illustrious LoRAs) takes it, from the checkpoint or the CLIP loader; one that does not (most Flux and Anima LoRAs) is inserted as a model-only LoRA loader. Inserting before a sampler moves only that sampler's model, and the CLIP of the prompts wired into it.

🤖 AI apps can use your library (MCP,让 AI 用你的库)

  • While ComfyUI runs, AI apps that speak MCP (Claude Code, Claude Desktop, Cursor, Cherry Studio, VS Code…) can connect to http://127.0.0.1:8188/anomalous/mcp and ask about your library: models with their Civitai information, trigger words and your notes, which models are unmatched and why, output images and the settings that made them, combos, workflow recipes, saved prompts, generated speech and the activity log. A model's cover or an image's thumbnail can be attached for apps that look at pictures.
  • It can also act on the workflow open in ComfyUI: rewrite or extend the prompts, swap a node's model, add a LoRA (it goes after the model loader and the LoRAs already there; one that also trains the text encoder takes the CLIP line too, from the checkpoint or, in a UNet workflow, from its CLIP loader, and everything those fed, such as both prompts, moves behind it; one that does not, like most Flux and Anima LoRAs, patches the model only), place one of your combos, check and put back missing models, and run the workflow; and start scans, or have an Anomalous TTS voice read a line. Every canvas change is one Ctrl+Z step, shows a note on the page and is in the activity log marked "AI". Nothing deletes or renames files; AI apps ask before calling a tool that changes something.
  • Only this computer can connect, and requests from web pages, other hosts or through a proxy are refused. It costs no memory while nobody is connected. Setup for each app: docs/guides/mcp.md.

🕘 Activity log (操作记录)

  • See what Anomalous changed (看 Anomalous 改了什么): the new Activity page on the rail lists, by day, every change the plugin made: on the canvas, which node settings changed (from → to), which nodes were added or removed, and which workflow was opened; in files, models, covers, recipes, materials, notes, presets, images, audio and imported characters. Filter by canvas or files; open a canvas entry for its details and Find on canvas to jump to the node. Your own edits on the canvas are not recorded as the plugin's. The home page shows the latest few.
  • More detail (记录更详细): a scan is recorded when it ends, with what it found and each model it changed (open one from the entry), instead of a bare "scanned models" when it started. Editing a model records each field from → to, and deleting one lists the files moved to the Recycle Bin.
  • It only records; nothing is undone for you. Clear removes the log itself, never your changes. The newest 500 entries (at most 2 MB) are kept in ComfyUI's user folder.

🎙️ Audio & Voice Studio (音频与声音工作台)

  • Generate right on the Voice-over page (配音页直接生成): for GPT-SoVITS characters, Generate runs the script in ComfyUI without touching the canvas (it waits in the queue while ComfyUI is busy), plays the result and saves it to output/audio/<character>/. ↻ on a line card gives just that line another take while the others come from cache; New take of all starts over with a new seed. Language, speed and the sampling parameters (one folded Generation settings line, with a hint on each) start from the character's saved defaults; when a take sounds right, Save these settings as this character's default keeps them for next time. The drawer is wider: the line cards get the full height with generating in a column beside them, and in a narrow or docked browser the drawer covers the studio with generating below the cards; either way only the cards scroll, however long the script is. Needs Anomalous_TTS interface 11.
  • Pronunciation table (读音表): Pronunciation on a GPT-SoVITS character card lists what the script says and what the character should read instead (C站 → 西站); each line can be heard as the character reads it now and as replaced, without filling the audio gallery.
  • Audio page tour (音频页遮罩导览): the tour offered in the audio page's "!" guide now walks through the audio page itself (import, dragging a character onto a node, emotions and pronunciation, emotion tags, Voice-over, audio gallery, GPT-SoVITS settings) instead of the image-side tour, whose buttons are not there. Tour steps whose button is not on screen are skipped.
  • Suggested folder layout (推荐的文件夹放法): the "many characters" import screen shows, folded, how to arrange a folder so it sorts cleanly: one folder per character, named after it, with its GPT and SoVITS models and 3–10 s clips (and same-name line files) inside.
  • Emotion tag buttons (情绪标签按钮): a clip's copy button now reads "Copy {happy}" and its tooltip says what pasting it into the speech text does; characters with only a main voice have no copy button, since their text needs no tag.
  • Audio page tabs (音频页顶部标签): the "Audio Workflows" tab is gone from the audio page; generating now happens on the Voice-over page, and saved workflows stay under Workflows on the image side.
  • Voice-over (配音): paste a script for one character; each sentence becomes a card with emotion chips, inline editing, split at cursor, merge and delete. Generate it right there (below), or push the tagged script to the selected GPT-SoVITS node or drag it onto one.
  • Audio gallery (音频库): lists generated audio with its speech text, voice and seed read from the file itself, supports search, and can save unsaved previews into output/audio/.
  • Clear drag rules (拖动规则明确): drag a character card's header onto a GPT-SoVITS node to set its character. The hint says what releasing will do; unsupported nodes are refused with the reason instead of being guessed.
  • Usage guide (使用说明): in the audio page, the header ! opens a five-step how-to; the full guide is docs/guides/audio-studio.md.
  • GPT-SoVITS characters (GPT-SoVITS 角色): the audio page manages characters of the separate Anomalous_TTS node pack, detected at runtime; while it is missing, the page shows what it does, how to install it (ComfyUI Manager or the project page) and nothing else depends on it. The node's character menu has Import or edit characters, which opens this page on that character. Preview reference clips, pick a reference clip per emotion ("Edit emotions", saved through the node's API), drag a character onto the node, and write or generate scripts on the Voice-over page.
  • Audio sidebar (音频侧栏): characters are grouped by language in foldable groups; a character unfolds into its clips, and a click plays one. Characters drag onto nodes from the sidebar too, a red dot marks characters that need a look, a search box appears from six characters on, and files dropped on a character open Add files for it.
  • GPT-SoVITS setup and import (GPT-SoVITS 准备与导入): an empty studio is a drop area with Import character, which also sits in the toolbar. GPT-SoVITS settings at the bottom of the sidebar opens a dialog with where characters are kept, pretrained files and missing Python packages; missing pretrained files only get a small dot on that entry, with "don't remind me", once your characters need them, and the import form notes what the chosen language will download. Batch import (批量导入): the import window takes one or many characters. It first asks what you have (one character, many characters or a package, or files for a character you already have), with three steps at the top and a spotlight tour the first time ("?" replays it). Each character card leads with a checklist that lights up the next step (GPT model, SoVITS model, clips, main voice, name) and offers its button right there; the card says how many steps are left. Drop files or whole folders (a GPT-SoVITS package too), or pick them in the browser; everything is uploaded to the node: a folder holding one set of GPT + SoVITS weights and its clips is one character named after the folder (two characters whose weights are both called model stay apart; 派蒙/v2 becomes "派蒙 v2"); weights in a package's weight folders pair up by name (latest epoch kept); clips and line files follow their character folder, the weights in their folder or the character their folder or file name points at; an annotation file (.list) no character claims goes to every character; two clips with the same name (开心/01.wav, 难过/01.wav) both go in, the second as 难过_01.wav; anything unclear waits in a card of its own, one line per folder that can be assigned at once, and is uploaded only once it is put into a character. Clips outside 3–10 s are left out with their line files. Python environments and base models (runtime, pretrained_models, venv…) are skipped, and a package's program and training folders (GPT_SoVITS, logs, output, TEMP, tools) only inside a package: your own folders called output or GPT_SoVITS, and the folder you chose or dropped, are always read; the window says which folders were skipped instead of files going missing quietly. A big add opens 20 characters (about 800 files) at a time; Next batch opens the rest, and it opens by itself once a batch is imported, so a huge folder does not freeze the window. Every clip has ▶ to listen while importing — uploading or unassigned — and clicking another clip switches to it for quick comparing. Long clip lists show the first 60, and a very large upload is confirmed first; uploads run three at a time. Each character is a card: one line with its name, a short status and what it holds, unfolding into its model tiles and clips; files move between characters with the picker on each row. Import N characters imports each ready one on its own, so one failure leaves the others alone. Status is colour-coded throughout: green ready, amber still missing something, red a failed or refused file, blue uploading; Import stays at the bottom. Adding to a character skips files it already has and merges annotation files (Anomalous_TTS interface 5). Characters are kept in one storage place (default models/gpt_sovits). It, other character folders and GPT-SoVITS packages to take pretrained files from are set in Anomalous_TTS's settings file, which the dialog names with a copy button: the node takes no folder or file path on this computer from the page, so a page cannot choose where folders are made or which files are read. Download pretrained files with progress. Import character builds a character from dropped or picked GPT / SoVITS weights, reference clips and annotation files: the name, SoVITS version, clip lengths and lines are filled in automatically, and everything is copied (originals stay). Drop files on a card, or use Add files, to add clips and emotions to an existing character. Lines are found in same-name .txt / .lab files, annotation files or, as a marked guess, the file name; a text file dropped on a clip's line box fills it. Needs Anomalous_TTS with interface version 13; file actions only work on the computer running ComfyUI.

Fixes

  • Prompt Notes are now Combos, a page of their own (提示词笔记改名“搭配”,有了自己的页面): a note was always a main model, a few LoRAs and a prompt kept together, so it is called a combo and sits on the rail as Combos, with a card on Home. The page shows every combo as a card with its model's cover, its LoRAs and the start of its prompt, a search box and New combo; a card opens the combo to edit, and ‹ All combos goes back. The old notes column with its quick-jump list is gone. Your notes are the same files and show up as combos; prompts saved from notes before still show in the Material Library and can be saved as a new combo.
  • Whole workflows live on the Workflows page (完整工作流都在“工作流”页): a result kept whole (now with the gallery's ☆, or from the image workbench) is a Workflow Recipe with that picture as its cover (it was a material), so versions, parameter sets and Model Check work on it. The Material Library keeps the pieces (nodes, parameters, prompts) and lost its Workflow category. Whole workflows kept as materials before show on the Workflows page as "N more in the library — Move them here"; moving saves each as a recipe and leaves the material file where it is, just no longer listed. Recipes that are not whole workflows are called Modules everywhere (the filter said "Sub-graph").
  • Put a combo on the canvas (搭配一键放到画布): Put on canvas on a combo's card or in its editor (formerly Send to canvas, under More) lays the combo out as a group of nodes wired together: its main model loader, its LoRAs and a positive and a negative prompt node; the group follows the pointer until you click, and Esc takes it off again (nothing is logged or left behind). The positive node holds the combo's prompt (left empty when it has none, rather than leaving the prompt nodes out) and the negative node gets Prompt Studio's common negative card. A combo card can also be dragged onto the canvas, and the group is built where it is dropped. Nothing already on the canvas is changed (to change an existing node's values, use Current node). A new group from a UNet combo connects its prompt nodes to the canvas's CLIP loader when there is exactly one, and says so once the group is down (the message no longer pops up while the group still follows the pointer, where closing it put the group down).
  • Recipe detail, plainer (配方详情更清爽): the models a recipe uses are one list: preview, name, the node, whether this computer has it under the saved name, size, your note and its download page. The recipe's own "match local model / apply match" buttons, the identity badges, the advanced blocks with paths and hashes, the origin editor and the recipe fingerprint are gone: when the workflow opens, Model Check finds renamed or moved models and puts them in, and saving the recipe again keeps that (the old version is kept). The status says "Every model is on this computer" or "N models missing" with what happens next. The save dialog and the empty page speak plainly (no more "unclosed node chain" or "self-healing"), and the parameters page lost its save-to-library button on every node (pick nodes with "select some parameters" instead).
  • Shared workflows say where their models come from (分享的工作流带上模型来源): saving a workflow or an image now also stores each model's download link (the one you set in the model editor, else its Civitai page) unless the workflow already keeps one, and drops links of models it no longer uses, so after Model Check swaps in your own model, what you export names your file, fingerprint and link while the workflow you opened stays as it was. GGUF, .pth and .sft models get fingerprints too. The share-code export says how many models carry a fingerprint, warns when some have none, and can leave the links out.
  • Model Check finds renamed models by fingerprint again (按指纹找回改名的模型): when a workflow's model was renamed or moved and no scan had hashed the file yet, Model Check failed to hash the same-size files itself (an error in the background) and called the model missing. It now hashes them and finds it.
  • Model Check is honest about same-name files (模型检查不再把同名当成同一个文件): for a workflow without fingerprints, a missing LoRA or checkpoint with a file of the same name on this computer was listed as "the same file under another name or folder" and counted among those to put in at once. It is now a candidate you take or leave on its row: "same name", or "same name and exactly the same size, very likely the one" (listed first). VAE, CLIP and other foundation components still go by fingerprint only. Model Check now also checks GGUF models and finds upscale models moved to another folder. Each one carries a level next to its name: ●●● sure (same fingerprint), ●●○ likely, ●○○ maybe, ○○○ unclear / does not match / not found.
  • GGUF and .pth models show up (GGUF、.pth 模型能看到了): the Models page, the folder list's counts, search and model lookups only knew .safetensors, .ckpt and .pt, in lower case, so quantized GGUF models (Wan, Flux, Qwen…), most upscalers (.pth), .sft and .bin files and names like MODEL.SAFETENSORS were missing. They are all listed now. Scans still read only .safetensors; the others stay under Not scanned yet.
  • Language follows ComfyUI again (语言跟随 ComfyUI): with the language left on "Follow ComfyUI" (the default), changing ComfyUI's language now switches the browser the next time it opens; before, it kept the old language until the page was reloaded.
  • Empty list on the audio pages (音频页左边列表是空的): after reloading ComfyUI, a browser that reopened straight onto Voices or Audio showed an empty list column until you switched to the image side and back.
  • Prompt Studio's new card form showed "cancel" instead of 取消 on its Cancel button.
  • All-in-one loader recipes and cross-node prompt injection use one verified adapter table; prompt text never crosses between positive and negative.
  • The Workflows and Combos workspace no longer covers the header: the Models / Gallery / Workflows tabs stay clickable while it is open, and Esc closes it (back to what was open before) unless a dialog is above it or a text field has focus. Closing the Prompt Translator brings back the browser it folded away.
  • Gallery pictures dragged to the canvas open their workflow again (图库拖到画布又能直接打开工作流): since the gallery shows small thumbnails, Chrome handed ComfyUI the thumbnail, which has no workflow in it, so only a Load Image node appeared. The original is dragged now: on an empty spot it opens the workflow, on a Load Image node it becomes that node's picture (full size, not the thumbnail).
  • The picture details' thumbnail rail keeps its place (查看参数左边的缩略图不再重新翻一遍): picking a picture near the end loads the next gallery page; the rail used to be rebuilt and scroll down again from the top, now the new pictures are added below.

v1.57.3 Beta (Hotfix: Offline Scan, Prompt Workshop) — 2026-09-29

🔌 Offline scan and small fixes (离线扫描与小修复)

  • Offline scan stays offline (离线扫描不再联网): "Offline fast read" no longer sends the greyed-out rename and overwrite options, and an offline scan never fetches Civitai model pages or preview images, even for models whose .info came from Civitai. Scan requests without options are refused instead of starting an online scan.
  • Clicking the drop zone at the end of the Prompt Workshop's assembly track focuses the card search again instead of failing silently.
  • Malformed requests to translation, deletion, scanning and image-material routes get a clear 400 instead of a server error.

v1.57.2 Beta (Hotfix: Canvas Performance, Saving Workflows) — 2026-09-27

💾 Saving workflows and Prompt Notes (保存工作流与提示词笔记)

  • Saving a workflow works again (保存工作流失败): since v1.57, Save Current Workflow failed with "Could not save this Workflow Recipe" for any workflow with a model loader, because splitting the backend into smaller files left the save path calling a function that was no longer imported. The same split also made model cards load full-size cover images instead of thumbnails (slow on big folders), and made editing details of a model that had moved fail.
  • Prompt Notes with UNet models (提示词笔记与 UNet 模型): sending a note with a UNet / diffusion model to the canvas built a graph that could not run, because its LoRAs waited for a CLIP the UNet does not have. LoRAs of a UNet now load model-only, and the note says to connect your own text encoder to the two prompt nodes. Models whose metadata names no base model (most models not downloaded from Civitai) were missing from every group; they now appear under No base model listed. Listing models no longer blocks ComfyUI while it reads the folders.
  • Installed v1.57.2 before 2026-09-27 through the version panel? Pick v1.57.2 there once more to get this build; updating through ComfyUI Manager gets it as usual.

⚡ Smooth canvas dragging again (画布拖动卡顿修复)

  • Dragging and zooming the canvas no longer slows down with this plugin installed (安装插件后拖动画布掉帧): one stylesheet rule, which only hid the sidebar tooltip while the Toolbox or Settings popup was open, made the browser re-check the whole page every time any element's inline style changed. ComfyUI moves every text-box widget on every frame while you pan or zoom, so each frame paid for it, even with the browser closed. Measured on a 300-node workflow in ComfyUI: style work while panning drops from about 11× the no-plugin cost back to the same as without the plugin.
  • Large workflows with ComfyUI Prompt Assistant (与提示词小助手同时安装时的严重卡顿): the cost grew with the number of page elements, and Prompt Assistant adds a row of buttons to every text box, so together style work took about 19 ms per frame (more than a whole 60 fps frame): single-digit frame rates or freezes on big workflows. It is now back to the level of Prompt Assistant alone. The two plugins never conflicted otherwise.
  • The tooltip still stays hidden while the Toolbox or Settings popup is open; the popups already hide it when they open and it does not reappear until they close.

🧩 Material Library with a node selected (选中节点时素材库卡片错位)

  • One apply button per card (每张卡片只有一个应用按钮): with a node selected, the Material Library showed every card's Apply Scheme button twice, each with a doubled ⚡ icon.
  • No more overlapping text (卡片文字不再重叠): the extra button squeezed the badges, date, node types and tags on top of each other. Cards in apply mode now get a taller row with the button at the bottom; applying works as before.

v1.57.1 Beta (Version Panel: Update, Switch & Roll Back) — 2026-09-23

🏷️ Version & Updates Panel (版本号与一键更新 / 版本切换)

  • Version entry in the update guide (更新引导顶部的版本号与更新入口): the installed version (e.g. v1.57.1-beta) and a Check for updates / switch version button now appear at the top of the update guide (opened via the header ! button), avoiding accidental clicks near the tool dock or crowding the header in docked/scaled layouts. Reading it is local only; nothing goes online.
  • Manual "Check for updates" (手动检查更新): the plugin never checks by itself. Clicking Check for updates / switch version opens the panel, and only the Check for updates button contacts GitHub. Each published release shows its notes, date and a GitHub link; pre-releases are hidden by default and are never offered as the latest version.
  • One-click update to published releases (一键更新到正式发布版本): updates only target releases published on GitHub, not in-progress commits, so what you install is a released build.
  • Switch or roll back (切换 / 回退版本): any published release can be installed from the list. Rolling back warns that older versions may not read settings or recipes saved by newer ones; nothing is deleted, and it all works again after returning.
  • Back to latest & undo (回到最新版 / 撤销上次切换): Back to latest returns to the default branch and pulls the newest code; Undo last switch returns to exactly where you were before. Versions older than v1.57.1 have no panel, so from those use Update for this plugin in ComfyUI Manager to come back.
  • Safe by default (安全保护): every switch is refused while plugin files have local modifications (the files are listed), and a local branch with unpublished commits is never overwritten.
  • Restart (重启生效): after a switch the panel offers to restart ComfyUI through ComfyUI Manager; without Manager it asks you to restart by hand.

🎨 Pure Vector Iconography Overhaul (纯代码矢量图标体系全面升级)

  • Universal Code-Native SVG Icons (全套规范化纯代码矢量 SVG 图标):
    • Completely phased out legacy emojis and pixel icons in favor of lightweight, mathematically crisp 24x24 code-native vector SVGs (stroke-width: 2, rounded joins/caps).
    • Redesigned the floating entry trigger orb with the Anomalous Hypercube Core (1b985ba) and frosted glass lighting effect, maintaining smooth rendering and subtle hover micro-interactions.
    • Sidebar and toolbox action buttons upgraded with distinct vector geometry: 3D Asset Cube for Toolbox, Radar Pulse for Scan Wizard, Stethoscope for Model Doctor, Four-Point Spark for Node Assistant, Layered Sheets for Material Library, and Obsidian Gear for Settings.
    • Eliminated icon flicker, CSS pseudo-element clipping, and alignment shifts across all display scales.
  • Multi-Field Real-Time Search (提示词/模型/种子/哈希多维检索):
    • Upgraded the native output gallery header with an intelligent search bar capable of parsing prompts, model file names, exact numeric seeds, and cryptographic SHA-256 model hashes simultaneously (1476faf).
    • Search terms are dynamically converted into visually distinct, standalone Search Blocks (搜索标签块) (e077689).
    • Each search block clearly displays its matched category and provides an accessible × button for one-click removal, enabling flexible compound filtering without retyping.
    • Backed by optimized chunk parsing (api/image_search.py) that reads only header metadata prior to pixel buffers, ensuring zero-lag gallery navigation.

🚀 Polymorphic Canvas Drag & Drop (全域多态画布拖拽架构)

  • Universal Canvas Drag (全域多态画布拖拽):
    • Dragging workflow materials onto empty canvas automatically reconstructs and opens the full workflow.
    • Dragging prompt-only materials onto empty canvas auto-creates native CLIPTextEncode nodes with pure prompt text, bilingual titles, and standard ComfyUI dark theme colors (#532323 for negative / #235327 for positive).
    • Dragging materials onto existing canvas nodes prioritizes the target node, injecting matching widget values and prompt text via semantic widget sniffing while strictly filtering out model file paths and loader blocks.
  • Floating Trigger Pre-Mount & Anti-FOUC (悬浮入口预挂载防闪烁与安全吸附):
    • Completely eliminated FOUC flicker on page refresh via pre-mount positioning and smooth opacity reveal (53c9f1b).
    • Hardened PointerEvents persistence, safe coordinate validation, and boundary clamping to prevent trigger entrapment or collapsing to the viewport origin (09b06d1).

🧰 Toolbox Catalog & Dedicated Bottom Dock (实用工具箱与底部固定快捷栏架构)

  • Dedicated Bottom Action Bar (结构化底部快捷栏):
    • Streamlined the lower-left sidebar into a dedicated 6-button utility bar:
      1. Toolbox (🧰 实用工具箱): Anchored as the primary launcher on the left to access secondary tools.
      2. Scan Wizard (🔄 扫描向导): Direct shortcut to launch model library scanning.
      3. Model Doctor (🩺 模型医生): Direct shortcut to diagnose and auto-heal missing workflow models.
      4. Node Assistant (🤖 节点助手): Direct shortcut for canvas node inspection, model swapping, and parameter injection.
      5. Material Library (✨ 素材库): Direct shortcut to manage curated material bundles and polymorphic canvas drag-and-drop.
      6. Settings (⚙️ 设置): Fixed anchor on the right for interface preferences.
  • Toolbox Modal Catalog (实用工具箱浮窗面板):
    • Clicking the first icon (🧰 实用工具箱) opens a dedicated popup panel housing 5 secondary tools not on the main dock:
      1. Workflow Transfer Center (导入导出): Lossless AMB format workflow share code import and export.
      2. Prompt Studio (提示词工坊): Modular prompt mixer deck for lego-block prompt extraction, reordering, and assembly.
      3. Prompt Translator (翻译助手): Bilingual real-time English/Chinese prompt translation.
      4. Model Source Hub (模型来源): Online model source URL inspector with instant canvas Note node generation.
      5. Prompt Notes (提示词笔记): Lightweight notebook for drafting and organizing reusable prompt snippets (workflows/anomalous_notebooks).
  • Enhanced Sidebar Tooltips & Reveal Timing (侧边栏操作提示与动画优化):
    • 100ms quick hover text replacement on shortcut buttons and 600ms rich singleton floating tooltip bubble (#anomalous-sidebar-tooltip-bubble) with bold title and muted explanation, cleanly avoiding CSS pseudo-element clipping issues.
    • Clicking or pressing any action button immediately suppresses hover text and floating tooltips.
    • Maintained elegant obsidian glass / dark monochromatic aesthetics without harsh or distracting bright colors.

Navigation and update guide

  • Sidebar icons reveal compact text labels on hover or keyboard focus while keeping their existing button size and actions. Detailed hints explain each tool; scan-state and language changes retain labels. Unclipped tooltips ensure explanations are fully readable.
  • Update guide opens only from the persistent top-right exclamation button or Help. Dismissing never removes the entry. Sidebar labels slide upward on hover/focus; duplicate source-panel and obsolete notice styles were removed. See docs/architecture/update-guide.md.

Model Source Hub (模型来源中控中心)

  • Added a unified Model Source Hub under Toolbox for dual-scope (current workflow and full library) model source URL inspection, one-click browser navigation to Civitai/HuggingFace/Liblib/ModelScope, custom source editing, workflow metadata synchronization (extra.anomalous_model_sources), and instant canvas Note node generation for non-intrusive workflow documentation.

Export availability

  • Removed Prompt Studio's JSON export action and closed the Material Library file-import entry; copying prompts and local saves remain available.
  • Recipe package import/export is disabled in the UI and API, including both upload inspection and import commit. The verified AMB0/AMB1 workflow Import / Export Center is restored in Toolbox as the only active import/export center. Ordinary downloads and image/workflow hash metadata are unchanged.
  • Studio source cards automatically follow library additions, edits and deletions, display their origin, and cannot be deleted from the studio. Failed synchronization preserves existing cards; mixer copies remain editable.

Material Library

  • Fixed grouped material filters, Recipe scope/tag filters, and prompt studio imports using actual detail payloads. Fixed side-studio draft reset/return state and guarded recipe drops against canvas changes. Recipe model status no longer treats saved hash verification as current availability.
  • Separated the lower-left Material Library from the Recipes/Prompt Notes workspace. Added canvas drag-and-drop: parameter materials replace matching node values, while the simplified prompt panel inserts text at the beginning or end, with undo.
  • Material Library now opens from the lower-left control; Workflow Recipes stays at the upper right. The workflow Import / Export Center is available in Toolbox.
  • Added Prompt Combinations: ordered general/specific fragments, enable switches, separate positive/negative content, and saved snapshots.
  • Library cards can apply matching parameters to one selected node through the same transaction as Node Assistant, with seed preservation, native-option validation and guarded undo. Prompt combinations support explicit text replacement or append.
  • Material details initially expand prompt cards only; other node parameters render on first expansion. Details omit the complete source workflow, which loads separately when opening a full snapshot. Selected-node materials never return their hidden source graph.
  • Material capture supports PNG workflows, Recipe parameters and Prompt Notes. Applying reference images to LoadImage remains future work.
  • Added search by name, tag, or node type, type/tag filters, and pagination. Material names and tags can be edited in place without changing their workflow.
  • Saving the same source image and node selection now prompts before creating another copy. Save labels distinguish full image/workflow snapshots, node parameters, and Prompt Notes.
  • Shared parameter inspection between the library and image workbench, improved keyboard card access and clipboard failure feedback, and fixed confirmation dialogs being covered by the workbench.

Reliability

  • Material browsing reuses signature-validated summaries and reads full workflows only for matching node types. Gallery pagination shares a short-lived directory snapshot; refresh and deletion invalidate it immediately.
  • Prompt Notes now use the ComfyUI user directory with recoverable legacy copying, atomic saves, and visible save failures. Material saves stage their files and roll back new assets if persistence fails.
  • File identity now uses full-file SHA-256 only. BLAKE3 and tensor/header digests cannot become verified file identities. Older offline metadata is reverified on demand while preserving personal notes.

🩺 Model Doctor

  • Manual size fallback (模型大小手动兜底): A unique same-size local model is now presented for explicit confirmation instead of being applied automatically. Background checks never apply it, while hash/size identity conflicts are rejected and shown in the Doctor dashboard.

🧰 Workflow Recipes

  • Scope-aware recipes (局部/整体配方): Graphs with open required connections or no runnable output are saved as partial recipes and append to the current canvas. Independently runnable graphs are saved as complete recipes and open in a new workflow canvas.
  • Optional save-time model verification (保存时可选模型核验): Recipe saving now performs a lightweight cached-identity check. Recognized model references missing identity are listed in the save dialog, while full SHA-256 calculation remains explicitly opt-in. This is especially useful for hash-only Model Doctor categories such as VAE and text encoders.
  • Model lifecycle consistency (模型生命周期一致性): Partial append remaps and merges node-scoped model Hash records, while applying a local model match updates the workflow value, structured model reference, base-model summary, and Hash index together.
  • Recipe-scoped model notes (配方模型备注): Each model reference can keep a bounded personal note. Package export asks whether to include these notes, and version comparison reports note and identity changes.
  • Material Library MVP (统一素材库 MVP): Main Gallery and Recipe gallery images now expose a non-intrusive two-column parameter detail view and can be saved as one curated bundle containing the original image, exact embedded workflow, model provenance, and reusable node blocks. Core metrics remain concise, while a lazy two-level inspector exposes every serialized node widget value, node properties, mode, and volatile-parameter marker on demand. Every node card now has a direct “Save to Library” action; checked nodes share a colocated multi-save action above the list, while the footer is reserved for the full image/workflow snapshot. One generation-settings action saves the sampler and size nodes together, and prompt cards expose topology-based positive/negative detection, manual role overrides, and direct node saving. Saved Material details preserve those overrides and allow returning to automatic detection. Workflow Recipe parameters and saved Parameter Notebooks can now publish all widget-bearing nodes, one node, or an explicit node selection as image-free Recipe Parameter materials. The ambiguous plain-text share action has been removed in favor of a visible Material Library save entry. Focused node materials feed Node Assistant without exposing a misleading full-workflow action. Saved Material cards stay compact and open a focused in-library inspector with the uncropped reference image on the left and scoped model/node parameters on the right; returning releases the full response and detailed DOM. Detail navigation bounds parsed metadata to a 16-entry LRU, cancels obsolete reads, avoids a second full-PNG browser allocation, removes duplicated widget payloads, and defers local-model preview resolution until the Models tab opens. Main Gallery keeps its existing click, drag, delete, and cover-selection behavior. The Workspace Material Library opens complete snapshots in a new canvas, while Node Assistant filters matching blocks by the selected node type, skips volatile seeds, and hands remapped Hash evidence to Model Doctor.

✨ Material capture and simpler pages

  • 图片、配方参数与提示词笔记均可保存到素材库,保存后直接查看。提示词笔记支持整份组合或仅提示词,并可从素材载入为新笔记。
  • 图片保存表单、用途调整、节点技术信息、笔记模型区与配方多选改为按需展开;配方参数页去掉重复数值,统一使用“参数方案”名称。

✨ Interface & Access

  • Native Configurable Shortcut (原生可配置快捷键): Added Ctrl + Shift + M as the default shortcut for opening the browser. The plugin's Interface settings show the currently active binding and open ComfyUI's native key recorder for customization. Conflict detection, overwrite confirmation, removal, reserved-key guidance, and modal guards therefore remain centralized without a separate global keyboard listener.

🐛 Bug Fixes

  • Prompt Studio Preview Popover Safe Zone (提示词预览浮窗全域安全区与防消失机制): 解决鼠标从词卡划向右侧浮窗按钮过程中浮窗提前消失的问题。引入全局动态指针安全区判定(isPointInSafeZone),将卡片、浮窗(向外各扩展 40px)与空间通道全部纳入安全驻留区,光标移动即实时取消关闭计时;并在定时器回调中执行终审坐标校验;结合 100ms 展开防抖与 [📌 固定] 钉住功能,确保用户可从容点击复制与添加按钮。
  • Live Language Switching (语言即时切换): Changing the plugin language now immediately re-translates the open native Interface settings—including labels, tooltips, and combo choices—as well as the browser UI, without refreshing ComfyUI.

v1.56.1 Beta (Interface Preferences & Scan Reliability) — 2026-08-26

✨ Interface & Access

  • Native Interface Preferences (原生界面偏好): Added one native ComfyUI entry-mode setting with three strictly exclusive choices: floating button, action-bar button beside the run controls, or Extensions menu only. Floating size/style controls now appear only when floating mode is selected. A colocated language preference follows ComfyUI by default or applies a plugin-only Chinese/English override, and the existing in-browser language shortcut updates that same native setting. Entry selection remains authoritative during action-bar redraws, and every entry reuses the same browser instance and open path.

🐛 Reliability & Scan Feedback

  • Interrupted Scan Recovery (异常扫描自动恢复): Closing ComfyUI during a folder or global scan no longer leaves the browser permanently locked. Versioned scan ownership records distinguish live workers from stale or legacy markers, clean interrupted state automatically, and allow an immediate retry without reinstalling the extension.
  • Real Scan Progress (真实扫描进度): Folder, custom-selection, and global scans now show a non-blocking localized progress panel backed by the scanner's actual folder/model counts and current filename. Reopening the browser reconnects to the running task through the existing status polling contract.

v1.56 Beta (Model Doctor Intelligence & Smart Civitai Routing)

🚀 Major Improvements & Features

  • On-Demand Dynamic Hash Resolution (按需动态算哈希与智能认亲): Upgraded Model Doctor's fallback resolution engine. When a local candidate model matches the exact byte size of a missing reference but lacks local metadata (e.g., after renaming and deleting .info files), the backend dynamically calculates its SHA256 on demand. Upon cryptographic verification, the node is seamlessly resolved and an offline inferred .info record is saved locally.
  • Dedicated Hash Inspection Modal (🔑 查看哈希透视详情): Added a dedicated 🔑 查看哈希 (View Hash) button on every model card in the Doctor Dashboard. Clicking it opens a crystal-clear inspection modal comparing the workflow-embedded provenance hash & size with local disk hash & size, featuring one-click clipboard copying.
  • Smart Civitai by-hash Routing & NSFW Domain Dispatch (C 站精准直达与 .red/.com 智能分流): Upgraded the "🌐 Civitai" action buttons across Model Doctor and Workflow Import. Instead of crude search bar queries, it now queries the official Civitai by-hash API to resolve exact Model IDs and Version IDs, automatically routing NSFW models to civitai.red and safe models to civitai.com.
  • UNET Default Scan Coverage (UNET 目录扫描补齐): Added models/unet to the default scanned model types, ensuring UNET / Diffusion Models are consistently indexed during background deep scans.
  • Parameter Notebook Renaming (参数笔记本重命名): Users can now rename saved parameter notebooks directly from both the recipe sidebar list and the detail heading via inline ✏️ action buttons and modal prompts, safely updating names with atomic writes without disrupting parameter provenance or canvas matching.
  • Cross-Platform Path Separator Normalization (跨平台斜杠全链路归一化): Fully unified Windows \ and Unix / path handling across workflow serialization, hash retrieval, and node diagnostic matching, preventing lookup misses caused by cross-platform workflow exchange.

🐛 Bug Fixes & UX Polish

  • Fixed a false-negative rejection issue where size-matching renamed models without local .info files were incorrectly rejected as identity_conflict.
  • Fixed duplicate key icons on the Model Doctor Hash Inspection modal header.
  • Fixed a loop duplication issue in the workflow import modal preflight inspection.
  • Updated unit test suite with comprehensive coverage for dynamic hash resolution and unet folder discovery.

v1.55 Beta (Workflow Recipes Preview)

Beta scope: Workflow Recipes, Parameter Notebooks, and the recipe-powered Parameter Presets tab in Node Assistant are preview features. The Node Assistant's Actions tab—visual model replacement and LoRA insertion—is not part of this beta. Save the current canvas and back up workflows/anomalous_recipes plus workflows/anomalous_parameters before updating, importing, restoring, deleting, or applying recipe data. The stable target for these preview features is v1.6.

🚀 Major Features

  • Workflow Recipes (工作流配方): Save a complete workflow with a cover, name, tags, notes, model references, prompts, sampler settings, safe node parameters, and a reproducibility fingerprint. Recipes append to the current canvas without replacing it.
  • Recipe Detail Workspace (配方详情): Added Overview, Parameter Notebook, Gallery, and Versions tabs. Long values can be expanded or copied, model requirements are shown as separate cards, and the overview avoids exposing local model paths as display names.
  • Parameter Notebooks (参数笔记本): Create edited parameter notes, capture a fresh note from a matching live canvas, switch between saved notes with clear feedback, delete individual notes, and apply one note back to a workflow only after the complete recipe skeleton matches. Volatile values such as seeds are intentionally ignored.
  • Node Assistant Recipe Presets (节点助手配方预设): The Parameter Presets tab reads same-type node values saved by Workflow Recipes. Select a node such as KSampler and apply sampler, scheduler, steps, CFG, denoise, and other safe values in one click without replacing the rest of the workflow.
  • Model Identity and Local Matching (模型身份与本地匹配): Recipe model cards retain hashes, size, model category, available Civitai origin names/links, and previews. Imported recipes can match another author's model references to local files without trusting their folder paths.
  • Recipe Gallery and Parameter Comparison (配方图库与参数对比): Find historical outputs with the same node structure, inspect embedded generation data, compare differing parameters, and promote an output image to the recipe cover.
  • Version History (版本历史): Recipe updates retain bounded local history. Compare meaningful changes, restore an older version safely, and preserve the current version before restoration.
  • Portable Recipe Packages (便携配方包): Import or export recipes with optional preview snapshots and history. Model identity hashes can be removed for privacy. Preview snapshots contain presentation images only and never include model files.
  • Conservative Prompt Roles (保守的正负提示词识别): Native supported prompt paths are classified without title guessing. Unknown third-party text nodes remain unclassified until the user labels them as positive, negative, shared, or ignored.

✨ Interface and Interaction

  • Renamed the combined Notes and Recipes area to Creative Workspace / 创作工作台, with separate Prompt Notes and Workflow Recipes sections.
  • Recipe models, LoRAs, prompt text, common parameters, and generic node controls use dedicated responsive layouts with copy and full-content expansion where needed.
  • Returning from a model detail page restores the previous recipe position instead of jumping back to the top.
  • The main output gallery refreshes when opened, avoiding continuous background polling.
  • Beta and data-protection guidance is available in the Recipe list, the Node Assistant Parameter Presets tab, Settings Help, and README in both Chinese and English.

🐛 Reliability Fixes

  • Fixed a cross-panel state leak where opening a model from a Recipe Overview could overlap Node Assistant, then leave the next Workflow Recipe visit with an empty list. Returning normally, switching directly to another main panel, reopening Workspace, and closing Workspace mid-return now all restore one coherent surface.
  • Fixed blank Workspace/Parameter Notebook surfaces and restored the plugin trigger when frontend module errors prevented registration.
  • Fixed parameter application against current ComfyUI widget callbacks and added transactional rollback when a node update fails.
  • Fixed positive/negative prompt duplication and legacy role recovery while keeping ambiguous third-party prompt nodes visibly unknown.
  • Fixed panel closing and canvas handoff behavior, docked notebook confirmation controls, recipe scroll restoration, long model status text, and narrow parameter layouts.
  • Added backend validation and regression coverage for recipe round-tripping, linked inputs, parameter-note deletion, model matching, and prompt-role metadata.

v1.5.1 (The Workflow Exchange & Deep Scan Update)

🚀 Major Features

  • Lossless Workflow Exchange (无损工作流交互): Added dedicated Import/Export buttons to the bottom-left of the plugin UI. This feature allows users to directly extract, share, and import pure workflow data without relying on original PNG images, completely bypassing the metadata-stripping compression used by social platforms (like WeChat or Discord) that causes workflow loss.
  • Force Overwrite Configs (强制覆盖已有配置): Added a new "Force Overwrite" toggle in the Scan Wizard. When enabled, the scanner will deliberately ignore existing local .info files and force a fresh SHA256 hash calculation and a complete metadata pull from Civitai. This is a lifesaver for repairing incorrectly matched or corrupted model profiles.
  • Model Card Settings (模型卡片设置): The Settings Hub now opens one focused panel for video-cover playback (Always play or recommended Play on hover) and card image quality (Optimized thumbnail or Original cover). Existing autoplay preferences remain compatible, while image-quality choice is intentionally simple and local to the browser.

🐛 Bug Fixes

  • Base Model Hash Misattribution: Fixed a critical bug in the fast scanner where it would aggressively fuzzy-match any 64-character hex string in the metadata. This previously caused LoRAs (trained via Kohya) to inherit their Base Model's hash (ss_sd_model_hash), resulting in totally incorrect Civitai mappings. The scanner now strictly adheres to the official modelspec.hash.sha256/blake3 standard.
  • Lossless Cover Reset: Reset now restores the persistent .civitai_bak.* copy first, falls back to a bare original cover for non-Civitai models, and preserves the active preview with a visible warning when no recoverable source exists.
  • Safe Sidecar Lifecycle: Deleting a model cleans recognized sidecars, while renaming migrates them—including the Civitai backup—to the new stem. Same-stem model files with different model extensions are never treated as sidecar garbage.
  • Bounded Sidecar I/O: Repeated extension literals in the API and scanner were replaced with fixed tuples and exact-path checks. Rename, delete, and reset remain constant-bounded and never scan an entire model directory.
  • Reset/Rename Extension Integrity: Fixed a reused loop variable that could change a model's extension when cover reset and physical rename were requested together.
  • Signature-Aware Metadata Cache: Unchanged model metadata and embedded safetensors hashes are now served from bounded caches keyed by physical file signatures. Sidecar or model changes invalidate entries automatically, while defensive copies prevent cache pollution.
  • Stable Cover Caching: Removed per-refresh random cover URLs and switched to nanosecond file-version tokens, allowing the browser to reuse unchanged images and videos while still updating changed covers immediately.
  • Responsive Large Libraries: Folder/model disk work now runs outside the aiohttp event loop, current-folder discovery uses one os.scandir() inventory, stale requests are aborted, and cards render in animation-frame chunks with lazy media activation.
  • Batched Model Doctor Resolution: Provenance-rich workflows skip a redundant full hash-cache walk, then resolve missing nodes through a type-grouped batch endpoint so each required category is walked once per repair pass. Legacy workflows still refresh the filename cache when needed. The original hash/size/type/ambiguity rules remain unchanged, with automatic fallback to the single-item endpoint.
  • Direct Preview Fast Path: Visual replacement resolves contained relative model paths directly and performs a full library walk only for unresolved basename fallbacks.
  • Balanced Cover Memory Use: Static grid covers default to cached 512px WebP derivatives while detail views retain the original. Derived files are stored in ComfyUI's temporary area, capped at 256 MiB, and never alter source covers. Closing the browser releases active media immediately and releases the warm card DOM after 90 seconds of inactivity.

v1.5.0 (The Workflow & UI Evolution Update)

🚀 Major Features

  • Node Assistant (节点助手): Introduced a dedicated "Assistant" tab within the Model Doctor. Selecting any node in the canvas instantly focuses the Assistant on that specific node, providing deep analysis and contextual controls without obscuring your view.
  • Visual Model Switcher (可视化模型选择): Eliminated blind dropdown menus! When replacing a model, a stunning visual grid pops up inside the Assistant panel, displaying full cover images and model names. You can now select replacements purely visually.
  • Global Health Dashboard (全图体检报表): A top-level dashboard in the Doctor panel provides a bird's-eye view of your entire workflow. It categorizes nodes into "Healthy", "Missing", "Replaced", and "Unrelated", giving you instant situational awareness.
  • Inline Node Notes (内联节点备注): Added the ability to view and edit model notes directly beneath the preview image in the Node Assistant, ensuring zero layout shifting and maintaining a continuous UX flow.
  • Local Metadata Parsing Toggle (非C站模型本地解析): Added a new explicit toggle in the Settings Hub. This allows users to enable deep local/offline metadata scanning (e.g. for HuggingFace models) without strictly enforcing a Civitai lookup.

🐛 Bug Fixes & UX Polish

  • Regex Replacement Bug: Fixed a critical bug where regex backslashes were swallowed during update patching, causing a syntax error in main.js that made the plugin icon disappear.
  • Dynamic Regex Splitting: Ensured file paths are split properly using both forward slashes and backslashes /[\/]/ for complete cross-platform Windows/Linux compatibility.
  • Temporary Feature Suspension: Temporarily commented out the WIP "Preflight Import Workflow" button while its parsing engine is being finalized.

v1.4.4 (The Cover Decoupling Update)

🚀 Enhancements

  • Custom Cover Decoupling: Manually selected covers (from the gallery or local uploads) now exclusively use a .preview.* suffix. The backend no longer artificially renames standard non-Civitai .png files to .civitai_bak, preventing semantic entanglement.
  • Intuitive Reset Logic: Clicking 'Reset' now cleanly deletes the custom .preview.* file. For non-Civitai models, it organically falls back to your original manual cover. For Civitai models, it accurately restores the .civitai_bak file obtained from the initial scan.
  • UX Workflow Polish: After changing a cover via the gallery or local upload, the UI no longer stubbornly bounces you back to the Model Edit modal. It gracefully returns you straight to the model grid to admire the new cover, eliminating the confusing implication that you still needed to click 'Save'.
  • Cache Busting for Covers: Added a timestamp parameter when loading covers into the grid so that uploading a new custom cover instantly updates the display without requiring a manual browser refresh.

🐛 Bug Fixes

  • Video Cover Regex Fix: Fixed a bug where .mp4 and .webm video covers failed to play if cache-busting URL parameters were appended. The regex now gracefully handles trailing & or ? parameters.
  • State Null-Reference Crash: Fixed an undefined error where a missing this.models assignment during the model reload phase caused the UI to abort mid-transition, resulting in a blank screen.

v1.4.3 (The Silent Load Update)

🚀 Enhancements

  • Silent Loading by Default: Reversed the default behavior of the hash resolver. To prevent interrupting workflows for users with massive unindexed local libraries, the aggressive "Missing Models Alert" popups and heavy background hash fetching on startup are now OFF by default. You can enable the auto-detect feature manually via the Settings Hub.
  • Refined Settings UI: Updated the terminology in the Settings Hub. The toggle has been re-worded from "Auto-Detect Missing: ON/OFF" to "🪄 Auto-Detect Missing on Load: [ON]" and "🔕 Auto-Detect Missing on Load: [OFF]" to eliminate any semantic confusion regarding the plugin's status.

🚀 Enhancements

  • ComfyUI Manager Ready: The plugin is officially available in the ComfyUI Manager default node list!

🐛 Bug Fixes

  • Native Language Sync: Fixed a bug where the plugin would not properly synchronize its UI language with ComfyUI's modern native Comfy.Locale settings. The language check has been migrated from local storage caching to a dynamic app.ui.settings API call during the extension setup phase.
  • Gallery Zoom Review: Verified and confirmed that the mouse wheel zoom feature inside the gallery image viewer is functioning natively as intended.

v1.4.1 (The Drag & Drop Resilience Update)

🚀 Enhancements

  • Silent Quick Scan Button: Added a new dedicated 🔍 Check & Auto-Scan Missing Info button to the Settings Hub. It silently finds unscanned models and extracts their hashes in the background without popping up the intrusive Civitai black-box prompt, keeping your workflow uninterrupted.
  • Hires Fix Drag Resilience: Fixed a critical Chromium memory allocation crash where dragging extremely large (Hires. fix) images from the Gallery would silently fail to initiate. Implemented a lightweight, translucent SVG "Workflow" ghost using setDragImage, allowing massive 4K+ images to be dragged seamlessly onto the ComfyUI canvas without memory limits.
  • Operation Guide: Added a highly requested docs/核心按钮操作指南_大白话版.md (Layman's Core Operation Guide) to clearly distinguish between the different scanning and fixing buttons for new users.

🐛 Bug Fixes

  • Orange Toast Eradication: Completely ripped out the overly aggressive app.queuePrompt interceptor. Users will no longer be bombarded by the orange "Unscanned Models" warning toast every time they click Generate.
  • CSS Compatibility: Added the standard line-clamp property alongside -webkit-line-clamp in the stylesheet for better cross-browser compatibility when truncating model names.

v1.4.0 (The UI & Architecture Overhaul)

💎 Gemini-Style Popovers & UX

  • Lightweight Side Popovers: Completely dismantled the heavy, center-screen settings modal with blurred backgrounds. Rebuilt the Settings Hub as a lightweight, non-intrusive side-popover that snaps to the sidebar—heavily inspired by Gemini's web UI.
  • Global Click-Outside: Implemented a zero-leak Vanilla JS global mousedown listener. Clicking anywhere outside an active popover instantly and smoothly dismisses it, vastly improving workflow immersion.
  • Full-Width Action Dock: Replaced the cramped bottom capsule with a 100% width solid Action Dock. This provides a stable visual foundation and properly balances the action buttons (Scan, Fix) against the Settings cog.
  • Gallery Letterboxing: Switched the Image Gallery's thumbnail rendering from object-fit: cover to object-fit: contain with a deep #000 background. Tall 9:16 vertical character portraits are now 100% visible, perfectly framed by natural letterboxing instead of being decapitated.

⚙️ Deep Architecture & Bounds Fixing

  • Banned CSS zoom: Eradicated the CSS zoom property for UI scaling, which was severely distorting the browser's physical bounding boxes and causing the plugin to randomly "fly off-screen" when dragged to the top edge.
  • Rem/Calc Sizing Engine: Adopted a bottom-up relative scaling approach using font-size: calc(16px * scale). The plugin container maintains stable physical dimensions while internals scale smoothly, restoring absolute precision to the drag-and-drop collision physics.
  • State Mutex Locks: Implemented strict interaction locks. Entering an exclusive fullscreen view (like the Gallery) now aggressively disables the main hamburger menu to prevent rendering conflicts and DOM state overlapping.
  • Centralized i18n Mutator Engine: Solved the "Fake Localization" bug where newly added dynamic buttons remained in Chinese. All persistent DOM elements are now strictly bound to the Top-Down language mutation hook, ensuring flawless 1-click bilingual swapping without Vue or React.

v1.3.0 (Zero-API Tensor Fingerprinting Update)

🧠 HuggingFace Native Support

  • Offline Base Model Inference: Added a zero-API local inference engine! For models downloaded purely from HuggingFace (or private unreleased models) that return a 404 on Civitai, the scanner no longer gives up. It now forcibly parses the .safetensors structure and uses Tensor Fingerprinting (e.g., detecting double_blocks.0.img_attn for Flux) to accurately deduce the underlying base architecture with 100% precision.
  • Universal UI Integration: Successfully inferred offline models are dynamically assigned a virtual .info payload (ID: -1). This instantly grants them full VIP access to the frontend ecosystem—they seamlessly appear in the Cross-Folder Radar, interact perfectly with the bilingual Notebook, and support one-click Auto-Inject loaders, all completely completely offline!

v2.0.0 (The Workflow & UI Evolution Update)

🚀 Major Features

  • Node Assistant (节点助手): Introduced a dedicated "Assistant" tab within the Model Doctor. Selecting any node in the canvas instantly focuses the Assistant on that specific node, providing deep analysis and contextual controls without obscuring your view.
  • Visual Model Switcher (可视化模型选择): Eliminated blind dropdown menus! When replacing a model, a stunning visual grid pops up inside the Assistant panel, displaying full cover images and model names. You can now select replacements purely visually.
  • Global Health Dashboard (全图体检报表): A top-level dashboard in the Doctor panel provides a bird's-eye view of your entire workflow. It categorizes nodes into "Healthy", "Missing", "Replaced", and "Unrelated", giving you instant situational awareness.
  • Inline Node Notes (内联节点备注): Added the ability to view and edit model notes directly beneath the preview image in the Node Assistant, ensuring zero layout shifting and maintaining a continuous UX flow.
  • Local Metadata Parsing Toggle (非C站模型本地解析): Added a new explicit toggle in the Settings Hub. This allows users to enable deep local/offline metadata scanning (e.g. for HuggingFace models) without strictly enforcing a Civitai lookup.

🐛 Bug Fixes & UX Polish

  • Regex Replacement Bug: Fixed a critical bug where regex backslashes were swallowed during update patching, causing a syntax error in main.js that made the plugin icon disappear.
  • Dynamic Regex Splitting: Ensured file paths are split properly using both forward slashes and backslashes /[\/]/ for complete cross-platform Windows/Linux compatibility.
  • Temporary Feature Suspension: Temporarily commented out the WIP "Preflight Import Workflow" button while its parsing engine is being finalized.

v1.2.0 (The O(1) Speed & Tiered Resolution Update)

🚀 Architectural Breakthroughs

  • Tiered Fallback Resolution Engine: The core hashing and scanning engine has been completely rewritten. When scanning new .safetensors files without an .info file, the scraper no longer blindly computes the SHA256 of the entire 7GB+ file. Instead, it extracts the uint64 header size and parses the internal JSON to retrieve the embedded modelspec.hash.sha256. This drops the hash time for new models from minutes down to O(1) milliseconds, achieving true instantaneous lightweight scans.

💄 UX Improvements

  • Gentle Workflow Error Reminder: Removed the overly aggressive background ghost-clicker that attempted to clear Vue side-panel errors by simulating clicks. Replaced it with a clean, bilingual user alert gently reminding them to click the [Refresh] button if the ComfyUI Workflow Overview panel still shows red errors.
  • Documentation Badges: Added quick-access badges to the README header for 1-click navigation to the Changelog and Developer Notes on GitHub.

馃搱 Anomalous Model Browser Changelog

v1.1.1 (Ultimate Model Resolution & Diagnostic Overhaul)

馃殌 Enhancements

  • Lightweight Scan Speed Demon: Rewrote the "Lightweight Scan" incremental skip condition. By recognizing that lightweight mode purposefully omits media (--skip-media), the scanner now skips models instantly if a .info file exists, bypassing the heavy SHA256 computation block. Lightweight scans are now truly lightweight, parsing hundreds of gigabytes in mere seconds instead of minutes.
  • One-Click Visual Residue Eradication: Both the post-scan auto-fix and the "One-Click Fix Workflow" settings button have been supercharged. They now aggressively target node.color, node.bgcolor, and node.has_errors. Even if the string matches perfectly but the frontend dropdown cache is just stale, the script violently resets ComfyUI's native red error highlighting. The workflow immediately visually clears without requiring a browser refresh.

馃悰 Bug Fixes

  • The "Overlapping Directory" Deadlock: Fixed a critical bug in api.py where fallback target_size matching completely aborted if len(size_matches) > 1. If users had extra_model_paths.yaml aliasing checkpoints and diffusion_models to the exact same physical folder, os.walk naturally duplicated the entries. Implemented an os.path.realpath deduplication matrix to fuse these ghosts into a single mathematical truth, restoring size-based missing node resolution to 100% reliability.
  • Silent Scanner Crashing: Fixed a tiny but fatal Python IndentationError in scraper.py (introduced during the skip-media logic update) that caused the lightweight scanner to silently crash before doing anything. The UI DEVNULL suppression hid the error, creating the illusion of the scan "ignoring" models. The indentation is now strictly PEP-8 compliant.

鉁?Major Features

  • Integrated Image Gallery: Added a brand new "Gallery" hub that seamlessly syncs with your ComfyUI output folder. Browse your generation history natively within the plugin!
  • Infinite Lazy Loading: The gallery utilizes IntersectionObserver to automatically load images as you scroll, ensuring zero lag even with thousands of generations.
  • Drag-and-Drop Workflow Import: Every gallery image acts exactly like native ComfyUI assets. You can directly drag any image onto the canvas or a Load Image node to effortlessly extract its metadata and workflow.
  • Foolproof Image Deletion: Built an immersive, full-card confirmation overlay for deleting images, replacing the tiny inline buttons. It drastically increases click accuracy and perfectly follows Fitts's Law.

馃拕 UX & UI Polish

  • "Intent Delay" Hover Mechanics: Fixed "Strobe Effects" where rapid mouse sweeping caused flickering UI. Added a customized 0.35s cubic-bezier curve with a 0.08s delay to all grid cards and notebook items, ensuring items only pop up when you actually mean to look at them.
  • Smart Sidebar Auto-Hide: When clicking the "Gallery" top menu button, the left folder tree now intelligently auto-hides itself, leaving maximum screen space for viewing your images. It automatically restores when returning to the Models page.
  • CSS Grid Refinements: The gallery uses responsive flex layout (minmax(250px, 1fr)), automatically balancing 4 beautiful thumbnails per row in expanded mode.

v1.0.3 (Responsive UI & Critical Hotfixes)

馃殌 Enhancements

  • Settings Panel Redesign: Transformed the raw API Key input field into a clean, dedicated 馃攽 API Key Config modal button. Added detailed, beginner-friendly descriptions for all settings buttons (Scan, Clean, AutoPlay) to clarify their destructive/background behaviors.
  • Top Bar Layout Logic: The header buttons (Models, Settings, etc.) now intelligently hide themselves when the left sidebar folder tree is expanded on narrow screens, automatically reappearing when the tree is collapsed to avoid layout breakage.
  • English Typography Polish: Added specific CSS .anomalous-lang-en scaling to increase the English header buttons to 1.05em with generous padding, perfectly matching the visual weight of the Chinese UI.
  • Pure Icon Narrow Sidebar: The Notebook's internal left sidebar is now extremely responsive. On narrow screens (< 600px), it aggressively collapses to 60px width, hiding all notebook names and displaying only pure document icons for a sleek micro-toolbar feel.
  • Logical Settings Order: Swapped the positions of the language toggle and the Close button in the settings panel. The language toggle now sits proudly at the top with a distinct margin, while the red Close button acts as a final anchor at the bottom.

馃悰 Bug Fixes

  • The "Missing Plugin Button" Trap: Completely eliminated a notorious "old bug" where the floating plugin button would vanish forever if a user resized their window or switched to a smaller monitor (due to localStorage caching out-of-bounds left/top coordinates like 3000px). The button now forces a safe bottom-right fallback if the saved coordinates exceed window.innerWidth.
  • Fatal Vite Preload Crash: Fixed a critical SyntaxError caused by a missing template literal backtick (`) in the translation dictionary. This tiny missing character previously triggered a [vite:preloadError], causing the entire main.js to abort loading before rendering the UI.
  • Double Icon Squashing: Addressed a bug where the top header's "Notebooks" button would turn into a weird, empty dark gray rectangle on narrow screens. Extracted the 馃搼 emoji out of the translation string wrapper so the icon remains fully visible even when the text is responsively hidden.

v1.0.2 (UX & Polish Hotfix)

馃殌 Enhancements

  • Magnetic Matrix Deployment: When sending a Notebook to the canvas, the entire architecture (Checkpoint + Loras + CLIP Encoders) is now mathematically arranged in a clean, linear assembly line instead of clumping together. The entire node group magnetically sticks to your cursor until you click the canvas to drop it.
  • Smart Session Memory: Re-opening the Notebook panel now instantly resumes your exact previous editing session rather than resetting to a blank state.
  • Auto-Focus First Notebook: If no session is active, opening the Notebook modal will automatically open your first existing notebook to prevent "empty screen" fatigue.
  • Instant Save Feedback: Added a satisfying 1.5-second green `鉁卄 transient animation to the notebook save button for psychological assurance.
  • Clearer Documentation: Updated README codebase size estimation to reflect reality (~150KB - 200KB) due to the massive features added, while still maintaining pure Vanilla JS zero-dependency dominance.

馃悰 Bug Fixes

  • Double Icon Glitch: Removed a hardcoded `鉃昤 emoji on the "Apply to Canvas" button that duplicated the icon injected by the translation engine.
  • Localization Override: Fixed a critical bug where scan success dialogs were defaulting to English despite the UI being set to Chinese. This was caused by the plugin improperly reading the host ComfyUI root DOM lang attribute instead of the plugin's internal state.
  • Safer Reboot Advice: Replaced misleading mentions of "Refresh ComfyUI" with strict advice to "Restart ComfyUI backend" after model scans to prevent deep path caching crashes.

v1.0.1 (Notebook System Expansion)

馃専 New Features

  • Notebook System (馃搼 Notebooks): A powerful new drafting space designed for workflow preparation.
    • Bilingual Prompt Editor: A dual-pane translation workspace (English/Chinese) that supports Google and DeepL translation via local Python backend (caching in translations.json).
    • Interactive Tag Engine: Automatically splits prompts by commas into styled tags. Includes hover-sync between English and Chinese tags, individual tag editing, and 1-click clipboard copying.
    • Dynamic Architecture Filtering: The Notebook allows selecting a Base Model directly parsed from your local library (e.g., SDXL, SD 1.5, Pony), strictly omitting unowned default models. Selecting an architecture perfectly filters the Main Model and Lora galleries below it.
    • One-Click Deployment: The "馃殌 Send to Canvas" button seamlessly injects your configured Checkpoint loader, Lora loaders, and CLIP Text Encode nodes directly onto the ComfyUI canvas, fully wired and ready to go.

馃洜锔?Enhancements & UX Tweaks

  • Zero-Wait Delete Actions: The "Delete Notebook" interaction has been overhauled. Instead of a mandatory 3-second wait, it now transforms into an explicit [鈿狅笍 Sure?] and [鉁昡 cancellation button combo, dramatically improving the user experience for accidental clicks.
  • Buttery Smooth Hover Dynamics: Replaced harsh instant hovers on model cards with a cubic-bezier(0.2, 0.8, 0.2, 1) transition and a micro 0.02s delay. This eliminates strobe-flashing when the mouse sweeps quickly across galleries, providing an extremely premium damping feel.
  • Smart Startup Navigation: The plugin no longer opens to an empty root directory by default. It now intelligently scans all loaded trees on startup and auto-focuses the first valid folder containing models, ensuring you dive straight into your library.
  • Deep i18n Integration: Total internationalization coverage extended to all deep-layer UI elements, including Notebook buttons, translation triggers, and dynamic dialogs. Language toggling triggers an instant virtual DOM re-render without page refreshes.

馃悰 Bug Fixes

  • Base Model Metadata Pollution: Fixed an issue where the baseModel dropdown forcefully injected unowned models (like HunyuanVideo or OmniGen) into the UI. The filter now strictly traverses actual local .safetensors headers and .info configurations to provide a 100% accurate reflection of your physical library.
  • Nested Scrolling Traps: Eliminated a severe UX "scroll trap" within the Notebook dual-pane editor by removing inner max-height constraints, allowing natural flex expansion utilizing the modal's primary scrollbar.
  • Model Selection Jumping: Fixed layout shifting caused by variable-length text tags by implementing a rigid CSS grid/flex architecture (.anomalous-nb-tag-row).