From 8cdff4833a7f6becaba709b7f20451ec2f9ce979 Mon Sep 17 00:00:00 2001 From: DemonGatanjieu <1027066412@qq.com> Date: Sat, 19 Sep 2026 14:59:13 +0800 Subject: [PATCH] feat(guide): rewrite update guide to highlight milestone features over origin/main --- ARCHITECTURE.md | 2 +- tests/update_guide.mjs | 5 +++-- web/modules/locales.js | 16 ++++++++++++++++ web/modules/update_guide_data.js | 9 +++++---- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index edea20c..b8013a0 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -97,7 +97,7 @@ DOM or live LiteGraph state. Scan-wizard launch, single-model precision scans (`triggerDirectModelScan` with strictly factual Civitai vs non-Civitai feedback reporting inferred base-model or match status directly within the bottom-right progress panel and toasts without blocking browser alerts), and polling live in `ui_scan_wizard.js`; folder visibility/order lives in `ui_folder_manager.js`; and help content lives in `ui_help.js`. - `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_update_guide.js` owns the non-intrusive update guide modal (accessible via header icon). +- `ui_update_guide.js` and `update_guide_data.js` own the non-intrusive update guide modal (accessible via header button `#anomalous-update-notice-btn` and Help modal; version ID `2026-09-recipes-and-studios`), presenting a 4-step milestone walkthrough (Workflow Recipe Studio, Material Library & Prompt Studio, Model Sources Hub, and Precision Direct Scan with canvas addition) with full bilingual localization. - `sidebar_actions.js` owns the sidebar bottom action hover-reveal short labels (100ms), singleton dynamic DOM tooltip bubbles (`#anomalous-sidebar-tooltip-bubble`, 600ms), click/pointerdown instant text/tooltip suppression guards, `isBottomModalOpen` tooltip occlusion guards, and anti-flicker pointer stability. - `tool_registry.js` centralizes metadata, SVG icons (enlarged 20px crisp vector outlines with 2px stroke, #cbd5e1 contrast), and stable IDs for the 9 catalog tools (including Prompt Notes / 提示词笔记) and 2 fixed anchors (Toolbox and Settings). - `shortcut_layout.js` provides tool layout utilities and fallbacks. The bottom shortcut bar maintains the clean fixed 4-tool setup (`scan`, `doctor`, `assistant`, `materials`) plus two anchors (`toolbox`, `settings`) housed in prominent 36px buttons with full click/active text suppression and `.is-active` toggled styling. diff --git a/tests/update_guide.mjs b/tests/update_guide.mjs index 3c86f87..569e9f6 100644 --- a/tests/update_guide.mjs +++ b/tests/update_guide.mjs @@ -18,9 +18,10 @@ assert.equal(guide.showUpdateGuide(owner), false, 'no duplicate dialog'); let dialog = f.document.querySelector('dialog'); assert.equal(f.button(dialog, 'Back').disabled, true); await f.button(dialog, 'Next').click(); -assert.match(dialog.textContent, /Workflow sharing/); +assert.match(dialog.textContent, /Material Library/); await f.button(dialog, 'Back').click(); -assert.match(dialog.textContent, /Hover to identify/); +assert.match(dialog.textContent, /Workflow Recipe Studio/); +await f.button(dialog, 'Next').click(); await f.button(dialog, 'Next').click(); await f.button(dialog, 'Next').click(); await f.button(dialog, 'Got it').click(); diff --git a/web/modules/locales.js b/web/modules/locales.js index 062460c..d984ed9 100644 --- a/web/modules/locales.js +++ b/web/modules/locales.js @@ -38,6 +38,14 @@ export const i18n = { updateGuideTransferBody: "已验证的工作流分享码导入导出中心现在位于工具箱。配方包导入导出、素材库文件导入和工坊文件导出暂不提供。保存到本地库、使用已有素材,以及图片和工作流附带的哈希信息不受影响。", updateGuideLibraryTitle: "素材库词卡,自动来到工坊", updateGuideLibraryBody: "打开提示词工坊后,素材库提示词会自动同步,并标注来源。源素材更新或删除时,词卡会随自动刷新变化。它们由素材库管理,不能在工坊删除;加入拼装台的副本仍可自由编辑。", + updateGuideRecipesTitle: "工作流配方工坊:参数预设与模型匹配", + updateGuideRecipesBody: "顶栏新增“工作流”工作室,可保存和管理工作流配方。支持参数预设深度拆解与一键复制、缺失模型智能比对与本地直接替换,并支持版本快照回滚。", + updateGuideMaterialsTitle: "素材库与提示词工坊:选节点自动提取翻译", + updateGuideMaterialsBody: "全新素材库可归档优质图像与工作流片段。提示词工坊提供双分栏工作台,支持素材词卡拖拽拼装;翻译助手选中画布节点即可自动提取词句并实时双语互译。", + updateGuideSourcesTitle: "模型来源中心:工作流模型一键寻源", + updateGuideSourcesBody: "从工具箱打开模型来源中心,自动侦测当前工作流用到的所有模型并匹配 Civitai/HuggingFace 官方页面,支持一键跳转与本地绑定,并可在工作流与全库间自如切换。", + updateGuideScanTitle: "单模型精准雷达直扫,一键发布到画布", + updateGuideScanBody: "鼠标悬浮模型卡片,点击雷达图标即可原地直接扫描该模型获取信息与底模归类,彻底告别繁琐向导与阻断弹窗;点击加号(+)即可一键创建对应节点发布到画布。", promptFullTextEditHint: '修改全文会将当前方向已启用的词块合并为一个词块。', materialNoPromptContent: '这份素材没有已明确分类的提示词,请先在详情中检查提示词角色。', promptDrawerReplace: '替换这组文字', @@ -1245,6 +1253,14 @@ export const i18n = { updateGuideTransferBody: "The verified workflow share-code Import / Export Center now lives in Toolbox. Recipe package transfers, library file import and studio file export are unavailable. Local saves, existing materials and image/workflow hash metadata are unaffected.", updateGuideLibraryTitle: "Library prompts sync automatically", updateGuideLibraryBody: "Open Prompt Studio to sync Material Library prompts automatically, with their source shown. Source edits and deletions appear on refresh. These cards are managed in the library and cannot be deleted in the studio; copies in the mixer remain editable.", + updateGuideRecipesTitle: "Workflow Recipe Studio: Presets & Model Matching", + updateGuideRecipesBody: "Access the new Workflow Studio from the top bar to manage recipes. Inspect deep node parameters in Bento cards with one-click copy, resolve missing models with local replacements, and restore historical snapshots.", + updateGuideMaterialsTitle: "Material Library & Prompt Studio: Node Translation", + updateGuideMaterialsBody: "Archive curated artworks and workflow snippets in the Material Library. Prompt Studio offers a dual-column workbench for assembling prompt cards, plus automatic text extraction and translation for selected canvas nodes.", + updateGuideSourcesTitle: "Model Sources Hub: Attribution & Scope", + updateGuideSourcesBody: "Launch the Sources Hub from Toolbox to detect active workflow models and match their official Civitai/HuggingFace links with local sidecar binding, plus seamless switching between workflow and library views.", + updateGuideScanTitle: "Direct Precision Scan & Instant Canvas Addition", + updateGuideScanBody: "Hover over any model card and click the radar icon to scan it immediately with factual base-model feedback—no wizard modals or blocking alerts. Click the plus icon (+) to add it to the canvas instantly.", promptFullTextEditHint: 'Editing the full text merges the enabled blocks in this direction into one block.', materialNoPromptContent: 'This material has no classified prompts. Check its prompt roles in details first.', promptDrawerReplace: 'Replace this text', diff --git a/web/modules/update_guide_data.js b/web/modules/update_guide_data.js index 3bd0c0f..a2e325c 100644 --- a/web/modules/update_guide_data.js +++ b/web/modules/update_guide_data.js @@ -1,11 +1,12 @@ // Content only. Maintenance checklist: docs/architecture/update-guide.md. // Change the ID only when users should see a new guide, never for typo fixes. export const CURRENT_UPDATE_GUIDE = Object.freeze({ - id: '2026-09-navigation-and-library', + id: '2026-09-recipes-and-studios', steps: Object.freeze([ - { id: 'navigation', icon: '◎', titleKey: 'updateGuideNavigationTitle', bodyKey: 'updateGuideNavigationBody' }, - { id: 'transfers', icon: '⇄', titleKey: 'updateGuideTransferTitle', bodyKey: 'updateGuideTransferBody' }, - { id: 'library', icon: '▧', titleKey: 'updateGuideLibraryTitle', bodyKey: 'updateGuideLibraryBody' }, + { id: 'recipes', icon: '📑', titleKey: 'updateGuideRecipesTitle', bodyKey: 'updateGuideRecipesBody' }, + { id: 'materials', icon: '✨', titleKey: 'updateGuideMaterialsTitle', bodyKey: 'updateGuideMaterialsBody' }, + { id: 'sources', icon: '🌐', titleKey: 'updateGuideSourcesTitle', bodyKey: 'updateGuideSourcesBody' }, + { id: 'precision-scan', icon: '🎯', titleKey: 'updateGuideScanTitle', bodyKey: 'updateGuideScanBody' }, ]), });