diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
index f54c95a..d895a6f 100644
--- a/ARCHITECTURE.md
+++ b/ARCHITECTURE.md
@@ -296,7 +296,7 @@ covered by the `styles.css` manifest.
difference); `activity_log.js` is the client and the words for each entry;
`ui_activity.js` renders the activity page and the home page's recent list.
`ui_settings_hub.js` owns settings and model-card preferences;
- `ui_toolbox.js` owns the tool catalog, the rail's tool buttons, and tool dispatch;
+ `ui_rail_tools.js` owns the rail's tool buttons (scan, doctor, current node);
`ui_browser_navigation.js` owns shared panel hiding/cleanup and workspace return,
including Esc on the workspace panel (`nbPanel`, below the header and right of the
rail; the list column steps aside while it is open).
@@ -315,10 +315,10 @@ covered by the `styles.css` manifest.
shortcuts, their fallback when ComfyUI's keybinding does not fire, and the
settings control that opens ComfyUI's keybinding editor.
- `ui_model_sources.js` owns the Model Sources Hub, managing workflow-model and global-library source detection, Civitai/HuggingFace URL attribution, sidecar persistence, and resilient scope switching between active workflow and full local library (with cached library state preservation and reliable re-rendering).
-- `ui_materials.js`, `ui_material_cards.js`, and `ui_material_application.js` own the Material Library UI, category navigation, card presentation (with grab cursor affordances, explicit drag tooltips, and polymorphic card dragging via `bindPolymorphicMaterialCardDrag`), context-aware drag guidance, relaxed third-party node prompt widget sniffing and injection, and the structured empty state onboarding blueprint guiding users through collection, canvas drag, and prompt studio mixing. Drag precedence prioritizes node hits over blank canvas drops; blank canvas drops auto-instantiate `CLIPTextEncode` nodes for prompt materials with standard colors or open full workflows. `node_material_actions.js` owns prompt envelope extraction (`extractMaterialPromptEnvelope`) shared by detail views, cards and canvas actions.
+- `ui_materials.js`, `ui_material_cards.js`, and `ui_material_application.js` own the Material Library UI, category navigation, card presentation (with grab cursor affordances, explicit drag tooltips, and polymorphic card dragging via `bindPolymorphicMaterialCardDrag`), context-aware drag guidance, prompt drops into the prompt box under the pointer (`prompt_drop.js`), and the structured empty state onboarding blueprint guiding users through collection, canvas drag, and prompt studio mixing. Drag precedence prioritizes node hits over blank canvas drops; blank canvas drops create `CLIPTextEncode` nodes (one per side the prompt has) or open full workflows. `node_material_actions.js` owns prompt envelope extraction (`extractMaterialPromptEnvelope`) shared by detail views, cards and canvas actions.
- `ui_update_guide.js` and `update_guide_data.js` own the non-intrusive update guide modal (accessible via header button `#anomalous-update-notice-btn`, the Help modal and Home's "What's new"; the current guide's ID and steps live in `update_guide_data.js`) with full bilingual localization. `ui_spotlight_tour.js` provides the interactive spotlight mask tour (`startSpotlightTour`), gliding smooth focal box highlights across the rail's pages and tools with directional tooltip cards and keyboard navigation; steps whose target is not on screen are skipped. Other views pass their own `steps` (text from locale keys) and an optional `onClose`; the GPT-SoVITS import window does.
-- `tool_registry.js` holds the tools' names, icons and stable IDs: the catalog tools (including Prompt Notes / 提示词笔记) and the two anchors (Toolbox and Settings).
-- The rail's tool slots (built in `ui_toolbox.js`, fixed) hold scan, doctor and assistant, then the toolbox; settings sits at the rail's bottom. Materials is a rail page. The Toolbox popover lists the remaining catalog tools and opens beside the rail.
+- `tool_registry.js` holds the tool icons shared by the rail and Home.
+- The rail's tool slots (`ui_rail_tools.js`, fixed) hold scan, doctor and current node; settings sits at the rail's bottom. Materials is a rail page. There is no toolbox: the other tools open from their pages (workflow share codes on Workflows, Prompt Studio and Prompt Notes on Materials, Model Sources on Models and in the doctor, translation in Current node).
- `ui_model_types.js` owns the models page's type chips (one per models folder, with its count) and
`owner.modelScope`, what the grid lists: a whole type, or one list folder shown as a crumb. The
grid's cards set `currentType/PathIdx/Subfolder` to their own model's folder (`focusModel`),
@@ -348,7 +348,7 @@ covered by the `styles.css` manifest.
unfolded companion models card with unconstrained multi-column tile flow eliminating nested gallery scrollbars,
prompt composer with dynamic field-sizing and compact inline find & replace toolbar, flat material library archiving card with
clean single-icon feedback, and unified dark slim scrollbar ergonomics with complete bilingual dictionary coverage in `locales.js`), and
- `notebook_canvas.js` owns LiteGraph creation. Prompt Notes are integrated as a standard tool in the Toolbox
+ `notebook_canvas.js` owns LiteGraph creation. Prompt Notes open from the Material Library's top bar
with defensive workspace return state restoration, TDZ-safe summary initialization, and responsive empty-state fallback rendering. `ui_recipe_detail.js`
coordinates the Workflow Recipe detail session and model composition. `ui_recipe_overview.js`
owns the Overview prompt showcase (with `entry.text` fallback, guarded non-shrinking primary action CTA, and floating Popover More dropdown menu), and `ui_recipe_parameters.js`
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 08e4379..17f359c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,7 +22,8 @@
- **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.
-- **Translation moved onto the node (翻译挪到节点上)**: Current node now lists the selected node's prompt boxes, each marked positive or negative by its wiring. A box written in Chinese has **Translate to English**, which writes the English back (the receipt undoes it); an English box has **Show in Chinese**, which shows the meaning underneath and writes nothing. The separate Prompt Translator window is gone; Prompt Studio keeps its own translate buttons.
+- **Translation moved onto the node (翻译挪到节点上)**: Current node now lists the selected node's prompt boxes, each marked positive or negative by its wiring. A box written in Chinese has **Translate to English**, which writes the English back (the receipt undoes it); an English box has **Show in Chinese**, which shows the meaning underneath and writes nothing. The separate Prompt Translator window is gone; Prompt Studio keeps its own translate buttons.
+- **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** and **Prompt Notes** are at the top right of **Materials**; **Model Sources** is at the end of the type chips on **Models**, and Model Doctor has **Where to download** for the open workflow's models; translation is on the prompt boxes in **Current node**. The rail keeps scan, Model Doctor and Current node.
### 🪶 Lighter on memory (更省内存)
- 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.
diff --git a/README.md b/README.md
index c224645..6dd9e45 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ Tools on the rail:
* **Scan** reads your model folders and fetches covers, trigger words and base models from Civitai (by file hash, no extra Python packages).
* **Model Doctor** checks each workflow you open: when models are missing, a bar over the canvas says so and puts back, with one press, the ones you have under another name or folder (recognised by hash and file size); its page lists the rest with what you can do.
* **Current node** (formerly Node Assistant) shows the model of the node you select, lets you swap it from the covers or insert a LoRA, and lists every set of values saved for that kind of node with exactly what applying it would change.
-* **Toolbox** holds the rest: workflow share codes (import / export), Prompt Studio, the prompt translator, Model Sources (where each model can be downloaded) and Prompt Notes.
+* **Each tool on its page**: workflow share codes (import / export) on Workflows, Prompt Studio and Prompt Notes on Materials, Model Sources (where each model can be downloaded) on Models and in Model Doctor, translation on the prompt boxes in Current node.
* **Settings** (at the bottom): language, font size, thumbnails, video covers, which model folders to show, and feedback.
**Light on your computer**: the plugin itself loads no models, so it takes no graphics memory from image generation; the browser shows small thumbnails instead of full images, and its pictures are released a minute and a half after you close it. The voice models of Anomalous_TTS give their graphics memory back whenever ComfyUI needs it for image generation, and all of it on **Unload models**.
@@ -107,7 +107,7 @@ The first time you open it, start on **Home**: **Scan model folders** fills in c
* **扫描**:读取模型文件夹,按文件哈希从 C 站获取封面、触发词和底模。不需要额外安装 Python 包。
* **模型医生**:打开工作流时自动检查,缺模型就在画布上方提示;本地改过名、换过文件夹的同一个文件(按哈希和文件大小认)一键换上,其余的在医生页里自己挑或去 Civitai 找。
* **当前节点**(原“节点助手”):选中画布上的节点,查看它用的模型。可以看图换模型、插入 LoRA;存过的同类节点参数列在一起,每条写明会改哪几项,一键套用。
-* **工具箱**:其余工具都在这里,包括工作流分享码(导入导出)、提示词工坊、翻译助手、模型来源(每个模型去哪下载)和提示词笔记。
+* **工具回到各自的页面**:工作流分享码(导入导出)在“工作流”页,提示词工坊和提示词笔记在“素材”页,模型来源(每个模型去哪下载)在“模型”页和模型医生里,翻译在“当前节点”的提示词框上。
* **设置**(最下面):语言、字号、缩略图、视频封面、显示哪些模型文件夹,以及提交反馈。
**不占你的资源**:
diff --git a/docs/architecture/frontend.md b/docs/architecture/frontend.md
index fff8686..47844b6 100644
--- a/docs/architecture/frontend.md
+++ b/docs/architecture/frontend.md
@@ -6,7 +6,7 @@ localization, media, or explicit canvas mutations.
## Bootstrap and module ownership
The verified AMB0/AMB1 workflow share-code Import / Export Center is available
-from Toolbox through `window.AMB_WorkflowShare.showUnifiedModal()`. Both directions
+from the Workflows page's top bar (⇅) through `window.AMB_WorkflowShare.showUnifiedModal()`. Both directions
are enabled by explicit product decision. It is independent of the paused Recipe
package import/export and closed Material Library file import. Image/workflow hash
injection, host saving, and ordinary image downloads remain unchanged.
@@ -44,7 +44,7 @@ icon rail (`ui_shell_rail.js`), page navigation and the list column's open state
(`ui_shell_nav.js`), the home page (`ui_home.js`) and the window frame
(`ui_shell_frame.js`) are their own modules. Every page change goes through
`owner.goTo(page)`. `ui_settings_hub.js` owns settings and model-card preferences,
-while `ui_toolbox.js` owns the catalog, the rail's tool buttons, and tool dispatch.
+while `ui_rail_tools.js` owns the rail's tool buttons.
The Material Library shortcut remains a native ComfyUI command/keybinding; a
deferred window-key fallback invokes the same command path only when the host
did not bring the library forward, so handled shortcuts are not executed twice.
diff --git a/docs/architecture/material-library.md b/docs/architecture/material-library.md
index 18c07a2..4429d4f 100644
--- a/docs/architecture/material-library.md
+++ b/docs/architecture/material-library.md
@@ -239,7 +239,7 @@ Both containers share the browser's panel area but have separate headers and
lifecycle state; switching restores the appropriate container. Material Library
file import and its transfer-center entry are closed. It has no independent
image-material bundle exporter. The verified workflow share-code Import / Export
-Center lives in Toolbox. Recipe package import/export remains paused, while prompt-plan
+Center opens from the Workflows page's top bar. Recipe package import/export remains paused, while prompt-plan
JSON export has been removed. Local capture/save actions remain available.
Opening the library with exactly one live selected node enables apply mode.
diff --git a/docs/architecture/recipes.md b/docs/architecture/recipes.md
index 76c29c0..4cb2892 100644
--- a/docs/architecture/recipes.md
+++ b/docs/architecture/recipes.md
@@ -21,7 +21,7 @@ local saves are unaffected.
Reopening requires an explicit release decision, package round-trip and failure
validation, then restoring the frontend export action and enabling the backend
gates together. Do not reopen package transfers as a side effect of UX work. Workflow
-share-code import/export is a separate, verified feature available from Toolbox.
+share-code import/export is a separate, verified feature on the Workflows page's top bar (⇅).
## Product and data model
diff --git a/web/modules/browser.js b/web/modules/browser.js
index 3b3a528..61a64a3 100644
--- a/web/modules/browser.js
+++ b/web/modules/browser.js
@@ -19,7 +19,7 @@ import { openPromptStudio } from './ui_prompt_composer.js';
import { closeUpdateGuide } from './ui_update_guide.js';
import { showImageWorkbench } from './ui_gallery_detail.js';
import { openDoctorPage } from './ui_doctor.js';
-import { initAssistantPanel, renderAssistantModelCard, _loadAssistantHistory, diagnoseNode, openLoraInsertionPicker } from './ui_node_assistant.js';
+import { initAssistantPanel, renderAssistantModelCard, _loadAssistantHistory, diagnoseNode, openCurrentNode, openLoraInsertionPicker } from './ui_node_assistant.js';
import { _openGalleryReplacer } from './ui_node_model_picker.js';
import { renderAudioStudio, stopAudioStudioPlayback } from './ui_audio_studio.js';
import { renderAudioGallery, stopGalleryAudio } from './ui_audio_gallery.js';
@@ -138,6 +138,7 @@ export class AnomalousBrowser {
AnomalousBrowser.prototype.openDoctorPage = function () { openDoctorPage(this); };
AnomalousBrowser.prototype.diagnoseNode = diagnoseNode;
+AnomalousBrowser.prototype.openCurrentNode = function () { openCurrentNode(this); };
AnomalousBrowser.prototype.initAssistantPanel = initAssistantPanel;
AnomalousBrowser.prototype.renderAssistantModelCard = renderAssistantModelCard;
AnomalousBrowser.prototype._loadAssistantHistory = _loadAssistantHistory;
diff --git a/web/modules/locales.js b/web/modules/locales.js
index b5f0212..faf57a6 100644
--- a/web/modules/locales.js
+++ b/web/modules/locales.js
@@ -1,11 +1,5 @@
export const i18n = {
zh: {
- actionTools: "工具",
- actionScan: "扫描",
- actionDoctor: "医生",
- actionAssistant: "节点",
- actionMaterials: "素材",
- actionSettings: "设置",
updateGuideTitle: "本次更新",
updateGuideReplay: "查看更新引导",
updateGuideSkip: "跳过",
@@ -418,7 +412,7 @@ export const i18n = {
2. 🔄 先扫描一次 点图标栏的 扫描(或主页的“扫描模型文件夹”)。插件按文件哈希从 C 站获取封面、触发词和底模,需要联网;没匹配上的模型可以在扫描页“重新联网查找”,部分限制级模型需要在扫描页的“高级选项”里填写 C 站 API Key。扫描在后台进行,可以关掉窗口。扫描完成后,其余功能才有完整的模型信息。
🧪 Preview features and your data Workflow recipes, the Material Library and Current node's parameters are still in preview. Before updating the plugin, importing someone else's recipe, restoring a version, deleting a recipe or applying parameters, save your canvas and back up workflows/anomalous_recipes, workflows/anomalous_materials and workflows/anomalous_parameters in your ComfyUI user folder.
-
1. 🧭 The rail on the left One icon per page: Home, Activity, Models, Gallery, Workflows, Materials, then Voices and Audio. Click the current page's icon again, or the button at the far left of the header, to hide or show its list; in a narrow window the list slides in as a drawer. Below the pages are the tools: Scan, Model Doctor, Current node and the Toolbox, with Settings at the bottom.
+
1. 🧭 The rail on the left One icon per page: Home, Activity, Models, Gallery, Workflows, Materials, then Voices and Audio. Click the current page's icon again, or the button at the far left of the header, to hide or show its list; in a narrow window the list slides in as a drawer. Below the pages are the tools: Scan, Model Doctor and Current node, with Settings at the bottom.
2. 🔄 Scan once first Click Scan on the rail (or "Scan model folders" on Home). The plugin fetches covers, trigger words and base models from Civitai by file hash, so it needs the internet; models that were not matched can be looked up again from the scan page, and some restricted models need a Civitai API key, entered under Advanced on the scan page. The scan runs in the background, so you can close the window. Once scanned, every other feature has full model information.
3. 📦 Models The chips at the top switch between types (Checkpoint, LoRA, VAE…) and list the whole type, subfolders included; click a folder in the list to see only that one, and the ✕ at the end of the chips to go back. On a card, + adds a loader node to the canvas, the pencil edits name, notes and cover, and the radar icon scans just that model.
4. 🩺 Model Doctor When someone else's workflow or image opens with red, missing models, click it: it finds your local copy of each model by hash and file size and swaps it in. "View hash" compares them side by side.
@@ -2331,7 +2292,7 @@ export const i18n = {
7. ✨ Materials Open an image's parameter details in the Gallery or a recipe to save the image, its full workflow and its node settings as a material. Drop it on an empty canvas to open the workflow (prompt materials create prompt nodes), or on a node to fill in its settings.
8. 🎙️ Character voices Needs the Anomalous_TTS node pack. Import GPT-SoVITS characters, set emotions and pronunciations, and generate speech in the Script Director; the ! at the top right of the audio page has a step-by-step guide and a spotlight tour.
9. 🕘 Activity What the plugin changed, by day: node settings on the canvas, nodes added or removed, workflows opened, and files such as models, covers, recipes and materials. It records only and undoes nothing; your own edits on the canvas are not listed.
-
10. 🧰 Toolbox Import / export (AMB0/AMB1 workflow share codes), Prompt Studio, the prompt translator, Model Sources and Prompt Notes.
+
10. 🧰 Where the other tools are Workflow share codes (AMB0/AMB1 import / export): ⇅ at the top right of Workflows. Prompt Studio and Prompt Notes: top right of Materials. Model Sources: at the end of the type chips on Models; the sources of the open workflow's models: in Model Doctor. Translation: on the prompt boxes in Current node.
11. ⚙️ Settings Language, font size, thumbnails and video covers. Folder manager hides model folders you do not need and orders them; hidden folders are not read or scanned. 💬 Feedback / report an issue opens GitHub Issues.