`,index.html:160;app.css 无任何 `:hover`/`:active`/`:focus` 规则),**非输入链路问题**。
+
+`--input-probe` 模式(页面注入 mousedown 监听 → `SendInput` 级真实 OS 点击,`dumps/click-probe.ps1`):
+
+| 构建 | 点击落点(屏幕) | 页面收到 mousedown(客户区) | 结论 |
+|------|------------------|------------------------------|------|
+| Debug JIT | 客户区 1440x900 中心 | **(720,450) 精确一致**,往返 818ms | ✅ 输入可达 |
+| Release AOT | 客户区 1440x900 中心 | **(720,450) 精确一致**,往返 682ms | ✅ 输入可达 |
+
+**待办(webui CSS/JS 工作项,非宿主问题)**:补 `:hover`/`:active`/`:focus` 状态与真实 `input` 元素、交互 JS;归属 P1 场景矩阵扩展(新增"交互态"场景:hover/active/focus 样式需先 Capture DSH 对应状态)。
+
+## 备注
+
+- DSH 暗色激活机制:playwright context colorScheme=dark;webui 侧对应 `prefers-color-scheme`
+- 字体:若参考物用非系统字体,差异计入文本掩膜范围(L3 指标只看非文本区)
+- 所有截屏/对比脚本归 `non_deliverables_tools/dsh_parity/`(捕获与对比同源)
+- WebView2 user data folder:spike 用 `%TEMP%\jcc-webview2-spike`;产品接入时改为用户级目录(如 `%LOCALAPPDATA%\JoinCode\webview2`)
+- `Chrome_WidgetWin_0` unregister 错误 1412 = WebView2 退出期已知噪音日志,无影响
+- 产品 GUI 接入时同样需要四件套(TFM 平台化/投影开关/x64/清单条目),届时由 ADR 0138 落地章节承接
diff --git a/modules/apps/engine/adapters/SessionController.cs b/modules/apps/engine/adapters/SessionController.cs
index b8d8dff7a0..05ce251f42 100644
--- a/modules/apps/engine/adapters/SessionController.cs
+++ b/modules/apps/engine/adapters/SessionController.cs
@@ -56,7 +56,6 @@ public SessionController(
///
/// 流式处理用户输入 — 统一的事件消费逻辑
- /// PermissionPendingConfirmationException 不会被捕获,会向上传播供调用方处理
///
public async Task
StreamResponseAsync(string input, CancellationToken cancellationToken) {
if (_consumer is IResettableEventConsumer resettable)
@@ -125,9 +124,6 @@ public async Task StreamResponseAsync(string input, Cancellat
LastResponse = fullResponse.ToString();
await StoreThinkingIfAnyAsync(thinkingContent, lastModelId, CancellationToken.None).ConfigureAwait(false);
return SessionTurnResult.FromCancellation(LastResponse);
- } catch (PermissionPendingConfirmationException) {
- LastResponse = fullResponse.ToString();
- throw;
} catch (Exception ex) {
LastResponse = fullResponse.ToString();
await StoreThinkingIfAnyAsync(thinkingContent, lastModelId, CancellationToken.None).ConfigureAwait(false);
diff --git a/modules/apps/gui/App.axaml b/modules/apps/gui/App.axaml
index 0afcda4423..81df1b2e8e 100644
--- a/modules/apps/gui/App.axaml
+++ b/modules/apps/gui/App.axaml
@@ -1,166 +1,7 @@
-
-
-
-
-
-
-
-
- Left
- Left
-
-
-
-
-
-
-
-
-
- #FFFAFAFA
- #E2E2E2
-
-
- #FF212121
- #1F1F1F
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/modules/apps/gui/JoinCodeGui.csproj b/modules/apps/gui/JoinCodeGui.csproj
index 1c2967388e..349749235d 100644
--- a/modules/apps/gui/JoinCodeGui.csproj
+++ b/modules/apps/gui/JoinCodeGui.csproj
@@ -10,11 +10,29 @@
app.manifest
true
$(NoWarn);JCC9001;JCC10001;JCC10002;CS8604;CS1573;CS1587;NU1903;CS0618
+
+ net10.0-windows10.0.26100.0
+ x64
+ true
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -22,16 +40,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -43,6 +51,11 @@
+
+
+
+
+
diff --git a/modules/apps/gui/app.manifest b/modules/apps/gui/app.manifest
index 0a87d8e63d..eba417e15c 100644
--- a/modules/apps/gui/app.manifest
+++ b/modules/apps/gui/app.manifest
@@ -15,4 +15,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/apps/gui/assets/ChatHighlighting.xshd b/modules/apps/gui/assets/ChatHighlighting.xshd
deleted file mode 100644
index 250c909ff1..0000000000
--- a/modules/apps/gui/assets/ChatHighlighting.xshd
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- \[你[^\]]*\]
-
-
- \[AI[^\]]*\]
-
-
- \[系统[^\]]*\]
-
-
- 🧠 思考
-
-
- 🛠 工具调用
-
-
- ✅ 工具结果
-
-
- ^\+.*
-
-
- ^-.*
-
-
-
diff --git a/modules/apps/gui/assets/provider_icons/agnes.svg b/modules/apps/gui/assets/provider_icons/agnes.svg
deleted file mode 100644
index 89e1ddd300..0000000000
--- a/modules/apps/gui/assets/provider_icons/agnes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/apps/gui/assets/provider_icons/anthropic.svg b/modules/apps/gui/assets/provider_icons/anthropic.svg
deleted file mode 100644
index c917480d32..0000000000
--- a/modules/apps/gui/assets/provider_icons/anthropic.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/apps/gui/assets/provider_icons/deepseek.svg b/modules/apps/gui/assets/provider_icons/deepseek.svg
deleted file mode 100644
index 652a7191d1..0000000000
--- a/modules/apps/gui/assets/provider_icons/deepseek.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/apps/gui/assets/provider_icons/openai.svg b/modules/apps/gui/assets/provider_icons/openai.svg
deleted file mode 100644
index ebbdab0ecf..0000000000
--- a/modules/apps/gui/assets/provider_icons/openai.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/apps/gui/assets/provider_icons/sensenova.svg b/modules/apps/gui/assets/provider_icons/sensenova.svg
deleted file mode 100644
index c3912c0545..0000000000
--- a/modules/apps/gui/assets/provider_icons/sensenova.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/apps/gui/assets/provider_icons/zhipu.svg b/modules/apps/gui/assets/provider_icons/zhipu.svg
deleted file mode 100644
index 4ed6c1c292..0000000000
--- a/modules/apps/gui/assets/provider_icons/zhipu.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/apps/gui/converters/UiConverters.cs b/modules/apps/gui/converters/UiConverters.cs
deleted file mode 100644
index 7702ea73f5..0000000000
--- a/modules/apps/gui/converters/UiConverters.cs
+++ /dev/null
@@ -1,262 +0,0 @@
-namespace JoinCode.Gui.Converters;
-
-///
-/// (IsUser, Kind) → 消息卡片色条/角色名颜色:工具消息用工具色、思考用紫色、其余按角色蓝/淡青。
-/// 取自身份配色,随主题切换。
-///
-public sealed class MsgBarBrushConverter : IMultiValueConverter {
- /// 转换值
- public object Convert(IList