refactor(knowledge+wiki): 合并 Catalog 与 Wiki 为统一管理入口 + negentropy-wiki 站点视觉四阶段升级 - #556
Merged
Merged
Conversation
将 knowledge/catalog 和 knowledge/wiki 两个独立页面合并为单一 `/knowledge/wiki` 路由, 左栏始终显示 Catalog 树(含拖拽排序、右键菜单、搜索),右栏通过 ModeToggle 在 edit(节点编辑) 和 publish(发布管理)间切换。旧 `/knowledge/catalog` 自动重定向到 `/knowledge/wiki?mode=edit`。 消除 useSingletonCatalog 重复调用和 CatalogNodeSelectorDialog 的二次拉树冗余。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
阶段 1:CSS 模块拆分 — 将 836 行 globals.css 拆为 14 个模块文件(tokens/themes/base/typography/layout/components); 阶段 2:主题切换 UI — 新增 ThemePreference 组件(三主题+明暗切换),layout.tsx 注入 FOUC-free 初始化脚本; 阶段 3:Markdown 增强 + 首页升级 — CodeBlock(语言徽章+复制按钮)、AnchorHeading(hover 锚点链接)、 ResponsiveTable(斑马纹)、Callout、MarkdownRenderer;首页添加 KPI 条和彩色 dot avatar; WikiBreadcrumb/WikiPager/WikiReadingMeta/reading-time 新组件; 阶段 4:a11y + 移动端 — Skip link、WikiNavTree ARIA roles(tree/treeitem/group)、 WikiMobileNav 抽屉式侧边栏、统一 focus-visible 焦点环。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- themes.css: 将无效的 `[data-color-scheme="dark"], @media(...)` 逗号分隔语法 拆分为两条独立规则,恢复深色模式变量生效 - ThemePreference: 添加 pointerdown 事件监听实现 click-outside 关闭下拉菜单 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PR #556 中 commit 01f5a37 将 catalog 组件迁移至 wiki/_components/catalog/, 但 catalog-create-node-dialog 与 catalog-tree-node-icons 两个单测的 import 路径未同步更新,导致 ui-quality 工作流的 UI Type Checks 与 UI Unit And Integration Tests 双 Job 失败。 - catalog-create-node-dialog.test.tsx: CreateNodeDialog 路径 @/app/knowledge/catalog/_components/ → @/app/knowledge/wiki/_components/catalog/ - catalog-tree-node-icons.test.tsx: CatalogTreeNode 路径同上调整 本地验证:pnpm typecheck、pnpm typecheck:test、目标两测试 7/7 通过。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
This was referenced May 17, 2026
Merged
ThreeFish-AI
added a commit
that referenced
this pull request
May 19, 2026
* refactor(wiki): Catalog 与 Publish 子视图合并为单页一体化发布工作台; PR #556 引入的 ModeToggle 把发布相关 UI 折叠到第二个视图后,发布入口的发现性显著下降——用户在默认 Catalog 视图下找不到「把编排好的 Wiki 发布到 negentropy-wiki 站点」的操作入口。本次彻底去除「模式」概念,改为单页一体化:顶部粘性发布工具栏(Publication 选择器 + 状态徽章 + 操作按钮组 + Pipeline 状态条)+ 左栏 Catalog 树 + 右栏节点详情 + 底部可折叠的条目预览。后端 API、ISR webhook 链路、数据模型零改动。 - 新增 WikiPublishToolbar 承载 publish/unpublish/sync/delete 全部 handlers + Pipeline 透传;切换发布对象时 useEffect([pubId]) 复位 Pipeline 状态避免上次回执遗留 - 新增 WikiEntriesPreview 作为底部折叠区,forwardRef + useImperativeHandle 暴露 refresh(),从 Catalog 同步成功后由 LibraryShell 触发刷新 - 重构 LibraryShell 移除 viewMode/handleModeChange/ModeToggle,主区固定为 NodeDetailPanel - 删除 ModeToggle/WikiPublicationDetail/WikiPublicationList 三个已被替代的组件 - 简化 page.tsx 去掉 ?mode 参数与 Suspense+useSearchParams 间接层,旧 URL ?mode=publish 仍可正常打开(参数被忽略) - KnowledgeNav 移除 dead prop modeToggle 与对应渲染分支,同步移除 KnowledgeNav.test.tsx 中相关 case - 新增 WikiPublishToolbar.test.tsx 7 例覆盖 disabled 态/状态切换/publishWiki/unpublishWiki/deleteWikiPublication/同步并发布/仅同步双路径 - docs/wiki/user-guide/publishing.md 新增 §8.2.1 实操指南,覆盖前置条件/第一次发布 5 步/日常增量发布/取消发布与回滚/配置说明/FAQ,交叉引用 docs/wiki/ops.md §8 与 §12.3 - CHANGELOG 在 [Unreleased]/Changed 顶部新增条目,详尽记录改动半径与契约 本地静态验证:typecheck/typecheck:test/lint 全绿,vitest 730 例全通过,Next.js build 成功且 /knowledge/wiki 路由保持 Static 预渲染。浏览器实机回归留作 PR 阶段人工验收清单。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com> * fix(wiki): 评审修复:清理死查询串、补回 description 回显、修正文档死链; - catalog/page.tsx 移除 ?mode=edit 死查询串(wiki/page.tsx 已不再读取该参数) - WikiPublishToolbar 状态徽章区补回 publication.description 截断显示,闭环信息回显 - publishing.md §8.2.1 死链占位符替换为指向 CHANGELOG.md 的相对链接 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
useSingletonCatalog数据源但各自独立调用导致冗余。negentropy-wiki 公共站点存在 836 行单一globals.css、三套主题无切换 UI、a11y 不完整等体验短板。核心变更
/knowledge/wiki路由,左栏始终显示 Catalog 树(含拖拽排序、右键菜单、搜索),右栏通过ModeToggle在 edit(节点编辑)和 publish(发布管理)间切换。旧/knowledge/catalog自动重定向到/knowledge/wiki?mode=edit。catalog 组件通过git mv移入 wiki 目录,消除useSingletonCatalog重复调用。globals.css拆为 14 个模块文件(tokens/themes/base/typography/layout/components),零观感变化。ThemePreference组件(三主题 + 明暗模式),layout.tsx 注入 FOUC-free 初始化脚本避免闪烁。CodeBlock(语言徽章 + 复制按钮)、AnchorHeading(hover 锚点链接)、ResponsiveTable(斑马纹)、Callout、MarkdownRenderer。WikiBreadcrumb、WikiPager、WikiReadingMeta、reading-time纯函数。WikiNavTreeARIA roles(tree/treeitem/group)、WikiMobileNav抽屉式侧边栏、统一focus-visible焦点环。风险与回滚
useCatalogTree实例在模式切换时不 remount 以保留选中状态;旧 URL deep link 通过 redirect +?mode=透传。--wiki-*变量名作 alias;Wiki 站点路由结构未变。验证证据
tsc --noEmit零错误通过;negentropy-wikipnpm build成功(7 个页面静态生成)。影响范围
apps/negentropy-uiknowledge 模块(wiki + catalog 页面 + KnowledgeNav);apps/negentropy-wiki全站样式、组件、布局。Next Best Action
/knowledge/wiki页面的 Catalog 树拖拽、右键菜单、edit/publish 模式切换。🤖 Generated with Claude Code