diff --git a/.changeset/forty-items-report.md b/.changeset/forty-items-report.md
new file mode 100644
index 00000000..a7b11165
--- /dev/null
+++ b/.changeset/forty-items-report.md
@@ -0,0 +1,7 @@
+---
+'@inkcre/ext-twitter': patch
+---
+
+Twitter 设置向导的步骤编号采用共同设计的直角轮廓,保持当前与已完成步骤的状态区分。
+
+向导宽度同时受宿主容器约束,避免窄屏弹层的内边距使内容和关闭按钮被裁剪。
diff --git a/.changeset/i4-graph-read-errors.md b/.changeset/i4-graph-read-errors.md
new file mode 100644
index 00000000..335831d3
--- /dev/null
+++ b/.changeset/i4-graph-read-errors.md
@@ -0,0 +1,5 @@
+---
+'@inkcre/core': patch
+---
+
+Block.find 传播数据库读取错误,避免 Graph 与 inspector 将读取失败误报为对象缺失。成功读取但没有匹配对象时仍返回 null。
diff --git a/.changeset/i4-graph.md b/.changeset/i4-graph.md
new file mode 100644
index 00000000..c4f59d80
--- /dev/null
+++ b/.changeset/i4-graph.md
@@ -0,0 +1,5 @@
+---
+'@inkcre/client-web': patch
+---
+
+重组 Graph 上下文、按需视图选项、节点与关系操作,移除重复表达焦点状态的 Current 标签,补齐键盘聚焦、可读的方向弱化和原地址错误重试。
diff --git a/.changeset/i4-mail.md b/.changeset/i4-mail.md
new file mode 100644
index 00000000..ac288e1d
--- /dev/null
+++ b/.changeset/i4-mail.md
@@ -0,0 +1,5 @@
+---
+'@inkcre/ext-mail': patch
+---
+
+重组邮件阅读、信头、附件与内嵌内容,统一文件下载条目和事实摘要;在保留 HTML 隔离的前提下提供基础排印。
diff --git a/.changeset/i4-twitter.md b/.changeset/i4-twitter.md
new file mode 100644
index 00000000..00eab29b
--- /dev/null
+++ b/.changeset/i4-twitter.md
@@ -0,0 +1,5 @@
+---
+'@inkcre/ext-twitter': patch
+---
+
+重组 Twitter 配置步骤与已配置摘要,将应用设置按需展开,保留授权等待、失败草稿、来源调度与明确启动的操作边界。
diff --git a/.changeset/jolly-times-fry.md b/.changeset/jolly-times-fry.md
new file mode 100644
index 00000000..7c209886
--- /dev/null
+++ b/.changeset/jolly-times-fry.md
@@ -0,0 +1,15 @@
+---
+'@inkcre/client-web': patch
+'@inkcre/ext-mail': patch
+'@inkcre/ext-twitter': patch
+'@inkcre/ext-dev-utils': patch
+'@inkcre/core': patch
+---
+
+迁移至正式 @inkcre/ui-web 2.0.0,统一 Vue 最低版本、Token 角色、按钮提交与加载态、JSON 草稿保存和日期确认行为;维护 Agent 从安装包读取同版本 DESIGN.md 与 Skill。
+
+Peer 保存现在传播数据库错误,配置保存失败时保留草稿与弹窗,阻止无效或尚在验证中的内容提交,并在持久化期间禁止重复操作。
+
+Host 与扩展共享 UI 运行时以继承 i18n、路由和表单上下文;Info-Base 浮层与 Mail 附件操作适应窄视口。
+
+移除普通业务容器的旧圆角,按正文/标题/元数据职责使用字体角色,调整 Sources、Extensions 和 Job 详情的布局以适应容器宽度。打开的 Text、HTML 文本和 Tweet 内容不再沿用摘要截断。
diff --git a/.changeset/quiet-sources-read.md b/.changeset/quiet-sources-read.md
new file mode 100644
index 00000000..4c967d68
--- /dev/null
+++ b/.changeset/quiet-sources-read.md
@@ -0,0 +1,13 @@
+---
+'@inkcre/client-web': patch
+'@inkcre/core': patch
+'@inkcre/ext-twitter': patch
+---
+
+来源列表集中展示名称、类型、ID 与当前采集入口;完整配置和删除集中到详情,创建来源与定时采集表单由明确动作打开。配置使用独立草稿,读取失败、schema 不可用、保存/删除等待和失败均有对应反馈,离开前保护未保存修改。
+
+Source、SourceType 和来源页使用的 Job/Cron 数据库边界传播请求错误,避免把失败显示成空结果或删除成功。普通任务状态与例行保存采用中性表达,失败与超时继续强调。
+
+Twitter 设置向导在来源切换读取失败时保留之前的来源与时间草稿,并显示错误,避免选项与实际采集目标不一致。
+
+Web 注册同版本 UI Uno preset,让已有语义反馈工具类实际生效;来源创建与任务配置弹层的宽度受视口和宿主容器共同约束。
diff --git a/.changeset/quiet-ui-patch.md b/.changeset/quiet-ui-patch.md
new file mode 100644
index 00000000..0cb51ee5
--- /dev/null
+++ b/.changeset/quiet-ui-patch.md
@@ -0,0 +1,10 @@
+---
+'@inkcre/client-web': patch
+'@inkcre/ext-mail': patch
+'@inkcre/ext-twitter': patch
+'@inkcre/ext-dev-utils': patch
+---
+
+升级正式 @inkcre/ui-web 至 2.0.1,采用更新的设计指南、字体与中性色彩,并修复默认 Header 菜单图标不可见的问题。Web 与两个 Module Federation 扩展使用同一精确 UI 版本,不添加本地主题覆盖或图标 safelist 补丁。
+
+侧栏宽度计入内边距与边框;移动端打开时覆盖主内容,避免裁切导航或将主内容挤成竖列。
diff --git a/.github/preview/extensions.json b/.github/preview/extensions.json
index e207b88e..d9e48f73 100644
--- a/.github/preview/extensions.json
+++ b/.github/preview/extensions.json
@@ -5,6 +5,11 @@
"kind": "module_federation",
"producer": "../../extensions/twitter/package.json",
"artifact": "../../extensions/twitter/dist/client-web"
+ },
+ {
+ "kind": "module_federation",
+ "producer": "../../extensions/mail/package.json",
+ "artifact": "../../extensions/mail/dist/client-web"
}
]
}
diff --git a/AGENTS.md b/AGENTS.md
index ff0afdb3..4e3045e7 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -14,6 +14,10 @@ Reason in English. Communicate with humans in Chinese.
- Physical-subtree hazards: the nearest local `AGENTS.md`.
- Volatile work state: the active packet under `tasks/`.
+UI 工作先读取 `apps/client-web/node_modules/@inkcre/ui-web/DESIGN.md` 与 `skills/ui-web/SKILL.md`,按所用组件进入同版本参考和迁移说明。扩展单独工作时使用其自身 node_modules 中的同一版本。包拥有设计与 API 规则,本仓库拥有业务流程和布局;纯后端任务无需加载这些 UI 文档。
+
+当前 UI 2.0 迁移入口为 [task packet](tasks/ui-v2-migration/packet.md)。
+
## Working Protocol
- Run `svc status . --json`, then use `svc lookup --keyword` and `svc lookup --path` only for guidance required by the current pressure.
diff --git a/apps/client-web/package.json b/apps/client-web/package.json
index 88013ef5..82f0b48f 100644
--- a/apps/client-web/package.json
+++ b/apps/client-web/package.json
@@ -11,26 +11,17 @@
"type-check": "vue-tsc --build"
},
"dependencies": {
- "@codemirror/autocomplete": "^6.20.0",
- "@codemirror/commands": "^6.10.0",
- "@codemirror/lang-json": "^6.0.2",
- "@codemirror/lint": "^6.9.2",
- "@codemirror/state": "^6.5.2",
- "@codemirror/view": "^6.38.8",
"@inkcre/core": "workspace:*",
"@inkcre/extension-runtime-client-web": "https://github.com/InKCre/ext-reg/releases/download/runtime-client-web-v0.1.0/inkcre-extension-runtime-client-web-0.1.0.tgz",
- "@inkcre/ui-web": "1.4.0",
+ "@inkcre/ui-web": "2.0.1",
"@module-federation/runtime": "^0.21.4",
"@supabase/postgrest-js": "^2.84.0",
- "@vue-flow/background": "^1.3.2",
"@vue-flow/core": "^1.48.1",
"@vueuse/core": "^14.0.0",
"dayjs": "^1.11.19",
"jose": "^6.1.2",
"pinia": "^3.0.3",
- "vscode-json-languageservice": "^5.6.4",
- "vscode-languageserver-textdocument": "^1.0.12",
- "vue": "^3.5.18",
+ "vue": "^3.5.25",
"vue-i18n": "^11.2.8",
"vue-router": "^4.5.1",
"zod": "^4.1.12",
@@ -56,5 +47,10 @@
"vite": "^7.2.4",
"vite-plugin-vue-devtools": "^8.0.0",
"vue-tsc": "catalog:"
+ },
+ "intent": {
+ "skills": [
+ "@inkcre/ui-web"
+ ]
}
}
diff --git a/apps/client-web/src/App.vue b/apps/client-web/src/App.vue
index d58aa6c6..5cd6be21 100644
--- a/apps/client-web/src/App.vue
+++ b/apps/client-web/src/App.vue
@@ -38,6 +38,7 @@ const sidebarExpanded = ref(false)
}
.app-content {
+ position: relative;
flex: 1;
overflow: hidden;
display: flex;
@@ -47,7 +48,12 @@ const sidebarExpanded = ref(false)
diff --git a/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.md b/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.md
index 2aa75297..ec996799 100644
--- a/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.md
+++ b/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.md
@@ -1,39 +1,9 @@
# AppSidePanel
-Application-specific sidebar panel component that displays the main navigation menu (Managing section).
+应用导航由 Header 的 Menu 按钮控制,`expanded` 默认为 `false`。侧栏提供 Sources、Extensions、Settings 和 Info-Base 导航,切换路由时通过 `update:expanded(false)` 通知父组件关闭。
-## Features
-
-- Integrates SidePanel for expand/collapse functionality
-- Displays Managing menu with Sources, Extensions, and Settings buttons
-- Handles navigation internally (Sources, Extensions, Settings)
-- Automatically expands on start view, collapses on other routes
-- Manages its own expanded state
-
-## Usage
+桌面端与页面并排显示,宽度包含内边距和边框。移动断点内覆盖 `.app-content`,避免压缩主内容;Header 保持可见,用户可再次激活 Menu 关闭侧栏。
```vue
-
-
-
+
```
-
-## Props
-
-| Prop | Type | Default | Description |
-| ---------- | --------- | ------- | --------------------------------------------------- |
-| `expanded` | `boolean` | `false` | Controls whether the panel is expanded or collapsed |
-
-## Emits
-
-| Event | Payload | Description |
-| ----------------- | --------- | ------------------------------------------------------ |
-| `update:expanded` | `boolean` | Emitted when the expanded state changes based on route |
-
-## Behavior
-
-- **On Start View (`/`)**: Panel expands by default
-- **On Other Routes**: Panel collapses by default
-- **Sources Button**: Navigates to `/sources`
-- **Extensions Button**: Placeholder for future navigation
-- **Settings Button**: Placeholder for future navigation
diff --git a/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.scss b/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.scss
index 334f9c28..62db1e4e 100644
--- a/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.scss
+++ b/apps/client-web/src/components/common/AppSidePanel/AppSidePanel.scss
@@ -1,4 +1,5 @@
.app-side-panel {
+ box-sizing: border-box;
width: 25%;
min-width: 320px;
max-width: 400px;
@@ -10,9 +11,19 @@
gap: sys-var(space, md);
background-color: sys-var(color, surface, base);
+ @include mobile {
+ position: absolute;
+ inset: 0;
+ width: 100%;
+ min-width: 0;
+ max-width: none;
+ z-index: 10;
+ border-left: 0;
+ }
+
&__content {
background-color: sys-var(color, surface, subtle);
- border: 1px solid sys-var(color, border, muted);
+ border: 1px solid sys-var(color, border, subtle);
padding: sys-var(space, md);
display: flex;
flex-direction: column;
diff --git a/apps/client-web/src/components/extension/extensionCard/extensionCard.scss b/apps/client-web/src/components/extension/extensionCard/extensionCard.scss
index 45b64151..b0a792cd 100644
--- a/apps/client-web/src/components/extension/extensionCard/extensionCard.scss
+++ b/apps/client-web/src/components/extension/extensionCard/extensionCard.scss
@@ -7,10 +7,13 @@
background-color: sys-var(color, surface, base);
box-sizing: border-box;
width: 100%;
- min-width: 280px;
+ min-width: 0;
+ overflow-wrap: anywhere;
&__header {
display: flex;
+ flex-wrap: wrap;
+ gap: sys-var(space, sm);
justify-content: space-between;
align-items: center;
}
@@ -20,7 +23,7 @@
}
&__version {
- @include apply-font(label-lg, mono);
+ @include apply-font(label-lg, $mono: true);
color: sys-var(color, text, subtle);
}
@@ -31,6 +34,7 @@
&__actions {
display: flex;
+ flex-wrap: wrap;
gap: sys-var(space, sm);
}
@@ -42,7 +46,7 @@
&__error {
@include apply-font(body-sm);
- color: sys-var(color, danger, base);
+ color: sys-var(color, feedback, error);
margin: 0;
}
}
@@ -55,6 +59,7 @@
&__actions {
display: flex;
+ flex-wrap: wrap;
gap: sys-var(space, sm);
justify-content: flex-end;
margin-top: sys-var(space, md);
diff --git a/apps/client-web/src/components/extension/extensionCard/extensionCard.vue b/apps/client-web/src/components/extension/extensionCard/extensionCard.vue
index ae5aab33..91beb137 100644
--- a/apps/client-web/src/components/extension/extensionCard/extensionCard.vue
+++ b/apps/client-web/src/components/extension/extensionCard/extensionCard.vue
@@ -1,7 +1,14 @@
-
+