From b927554875de96f8b175de06ad0af65a516a2458 Mon Sep 17 00:00:00 2001 From: Tian Date: Mon, 5 Oct 2026 21:08:26 +0800 Subject: [PATCH 01/17] =?UTF-8?q?feat(marketplace):=20D19=E3=80=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=B6=E4=BB=96=E8=B4=A6=E6=88=B7=E3=80=8D?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E6=AD=BB=E6=8C=89=E9=92=AE=20=E2=80=94?= =?UTF-8?q?=E2=80=94=20=E6=8C=89=E5=AE=98=E6=96=B9=E9=80=90=E5=AD=97?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=86=85=E8=81=94=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原先点它毫无反应。根因不是缺功能,是**取证取错了对象**:探测时账户区处于折叠态, 而官方要点了才展开,于是被读成「点了什么也不发生」。更糟的是这条错结论被写成了一条 守卫(assert.ok(!/addEventListener/.test(addAccount), "has no destination in 0.66")), 反过来挡住任何正确实现。同款错误在本仓库已连着错两次。 重新取证(产物 + 实机双向,逐字): - 官方只有**一条**提交路径。chunk-view-BudImuR0.js 逐字: onAddAccount = $ => de($.serverId, $.label) onAuthenticate = $ => de($.serverId, $.accountKey) 两者是**同一个 de**,只有第二个实参名不同 ⇒ 标签即 accountKey。 这推翻了 EVIDENCE §29 里「桥缺 addAccount、需新桥契约、三处设计判断待拍板」—— preload.ts:175 早已暴露 authenticate(serverId, accountKey?),accountKey 原样透传、 无「槽位须预先存在」前置检查。**不需要新桥,也不需要拍板。** - 提交语义逐条移植官方 P:标签 trim().toLowerCase();空 / 与源账户同名 / === "grok" (常量 dPe)三条**只收起不提交**;否则先收起再按是否命中已有账户键分流。 Enter 等价「授权」、Escape 等价「取消」。 - 类名不靠猜:在浏览器里对两枚按钮的 class 集合求差(授权 54 / 取消 55 / 交集 51), 查出「授权」与列表行尾「添加/连接」按钮逐字同一配方,故直接复用既有常量; 「取消」= 去掉 3 个 variant 类 + 4 个 ghost 类。7 个 0.18 缺的类对应声明 **早已在 LIFTED_OFFICIAL_RULES 里**,无需新增。 - 顺带修掉一处结构错位:createAccountEditForm 里那个「新账户标签」输入框不属于编辑 表单(属本块),已删除 ⇒ 编辑表单回到官方那**一个**输入框(ve() 全文也只有一个 )。当初的验收基准「点开后可见输入框 1→2」就是这么错的。 - 按钮与表单是同一三元的两支、互斥兄弟、中间无包裹层 —— 不额外造 slot div。 守卫反转(判词写成可被证伪的断言,不是把布尔取反):必须接到 createAddAccountForm、 两条回调都必须走 mcp.authenticate、必须互斥兄弟无包裹层,并保留「不得停在 if (false) 后」的可达性检查。删掉编辑表单归属错误那段注释与验收表里据其立论的结论。 测试 tests/marketplace-add-account-form.test.mjs 12/12,跑真函数、真点真敲(非文本断言); 变异 5/5 全红(删哨兵分支 / 去 toLowerCase / 不分流 / 颠倒收起顺序 / 少 4 个 ghost 类)。 npm test 989/989,两个 typecheck 干净。 部署态:asar 68,663,146 B,sha256 eaaa97f0…,与 dist 逐字节一致;验签通过, DR = identifier "com.anysphere.sand.reconstructed";部署 asar 里 101 个 renderer chunk 逐个 node --check 全过,坏 i18n 形状 '"(RLocT(' 0 次。 --- docs/MARKETPLACE-066-EVIDENCE.md | 28 ++ docs/MARKETPLACE-066-PORT.md | 9 +- .../src/extensions/marketplace/detail-cta.ts | 166 ++++++++- frontend/src/extensions/marketplace/model.ts | 9 + .../extensions/marketplace/official-styles.ts | 69 ++++ frontend/src/extensions/marketplace/view.ts | 42 ++- tests/marketplace-add-account-form.test.mjs | 336 ++++++++++++++++++ tests/marketplace-detail-cta-render.test.mjs | 6 +- ...lugins-marketplace-renderer-patch.test.mjs | 66 +++- 9 files changed, 703 insertions(+), 28 deletions(-) create mode 100644 tests/marketplace-add-account-form.test.mjs diff --git a/docs/MARKETPLACE-066-EVIDENCE.md b/docs/MARKETPLACE-066-EVIDENCE.md index 59e4b39..2bd6db7 100644 --- a/docs/MARKETPLACE-066-EVIDENCE.md +++ b/docs/MARKETPLACE-066-EVIDENCE.md @@ -1439,6 +1439,34 @@ k && !as ?