Skip to content

feat(taptap-cli): 同步随包手册到 taptap-cli 2026.9.22、开放数据查询、设置页加状态面板 - #130

Merged
GaoWeiLiuXD merged 1 commit into
makecindy:mainfrom
shengyongkang-dot:feat/taptap-cli-sync-upstream
Sep 22, 2026
Merged

GaoWeiLiuXD merged 1 commit into
makecindy:mainfrom
shengyongkang-dot:feat/taptap-cli-sync-upstream

Conversation

@shengyongkang-dot

@shengyongkang-dot shengyongkang-dot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

What / 改了什么

两件事:把随包手册同步到上游最新 + 给设置页加 CLI 状态面板

一、手册同步:9af17092(2026.9.11) → origin/main d454f0effe(2026.9.22)

分两段:先同步到 2026.9.21(53 个提交改了 skills/),上游随后发布 2026.9.22,再补一节增量。

上游契约迁移(DC / OpenAPI)

  • 提审三步改用同一 scope 与 version_id 校验;submit-app-review 只传 release_schedule
  • precheck-app-review 返回 blockers / warnings / preaudit_passed;SCE 协议改走独立的 agree-sce-agreement
  • 删除的操作get-package-overviewingest-image-to-assetsprecheck-qualification
    preview-qualification-withdrawalget-test-plan-overviewcreate-delivery-batch
    update-delivery-batch-quotabatch-search-assets
  • 新增/改用get-available-package-typessearch-assetsget-qualification-status
    list-test-plansget-test-plan-environmentcreate-delivery-plananalyze-app-status
    agree-sce-agreementget-video-detail
  • Windows 默认包(0)退出上传与绑定;Tap 小游戏改由 upload-mini-app-package 上传
  • 版本状态字面量对齐(status="scheduled"last_event);普通字段每批 change 上限 5 → 10;
    expected_digest 退役(每条 change 必须携带 expected,首次写入传 []

能力变更

  • 开放 dashboard-stats(数据查询):worker 的 EXCLUDED_SERVICES 清空,四语言描述去掉数据查询
    排除,whenToUse 补上数据表现与玩家评价(否则能力开了也发现不了),并新增数据查询手册
  • 新增 taptap-player-feedback 手册(只读评价正文检索),保留上游三条门禁:分页硬上限
    page × page_size ≤ 10000(越界返回空列表且 total=0)、score=positive 实为 score >= 3
    省略 start_date 只返回最近一月
  • app-edit 执行细则按上游拆分为 references/app-edit-execution-rules.md
  • 删除已并入 diagnostics 的 package-management-page-paths.md

2026.9.22 增量(6 个 skills 文件,3 处语义变更)

  • 分发状态话术(行为变更):旧口径把「开放下载 / 游玩」的调整留在发布之后;新口径是
    「发布版本不会自动改变分发入口状态,如需开放请在提审前先调整,随本次版本一起审核生效」。
    6 处全部更新(app-edit 执行细则 1 处、MANUAL 2 处、audit-and-history 3 处)。
  • 资质新增「判断事实优先」门禁:报告 8 项前必须先用 app_features(联网 / 内购 / AI /
    IP / 文字剧情)逐项跟用户确认,再由 analyze-app-status 推导必须资质;pending_upload
    的含义从「待补齐」改为「该槽位暂无材料(不一定必须)」。
  • 资质执行步骤按必须性分层:必须资质才叫缺口,非必须空槽只作为可选项 + 一个询问,
    不再平铺「8 项全部未提交」这类全量清单。

未采纳上游一处:app-edit-execution-rules.md 里新增的「维护约束」要求 SKILL.md 保留可命中的
钩子,并提到上游自己的 scripts/skill-catalog-contract-workflows.test.js。本插件没有 SKILL.md
也没有那个契约测试,但它保护的实质规则(资质引导必须有钩子)已随上一节落到 MANUAL.md

二、设置页状态面板

原先装完 CLI 后设置页没有任何反馈——装没装、什么版本、登录没有,都得回对话里问。现在:

  • worker 新增 taptap/cli_status:复用 resolveCli 判定是否装得上(同步,零进程开销),再跑
    versionauth status --offline --json 取版本和登录态。用 --offline 是刻意的:面板在页面
    加载时就会探测,不该依赖网络。两个探测都沿用配置的 cli_path,否则会出现「按配置路径判定已
    安装、却从 PATH 上另一个 taptap-cli 读版本」的不一致。
  • main.jssettings-request / settings-result(同一条 taptap-cli 频道),reqId 去重 +
    结果短时保留,抵御设置页在唤醒竞态下的重复发送。协议照仓内既有先例(qq-mail / taptap-maker)。
  • settings.html / settings.js 加状态面板(CLI / 登录)+「检查状态」按钮,四语言文案。
    不放登录按钮:登录仍走对话里那套编排,手册里的授权链接展示契约零改动。

安装与登录的判定只在 worker 里做一次,main.js 只转发、设置页只渲染——满足仓库
main.jssettings.js 不得各自实现同一状态判定」的规则。

版本 1.0.71.0.8(本 PR 未发布过任何中间版本,只做一次 bump)。

Why / 为什么

插件 worker 按 CLI 的实时目录放行调用。上游新增的操作现在就已经可调,手册落后等于让
agent 绕过插件的执行纪律去盲调 —— 这正是 player-feedback 随包、以及数据查询一并开放的理由。

Review notes / 需要 review 关注

  1. node/worker.cjs 有改动EXCLUDED_SERVICES 清空、dashboard-stats 描述条目、GLOBAL_RULES
    的协议同意口径、注释,以及新增的 cliStatus)。按 .greptile 规则这属于敏感改动。
    cliStatus 没有新增 execFile 调用点,仍复用 runBinary(测试对此有断言)。
  2. 测试里约 5 个断言块从「断言排除」翻成「断言可用」,不是放宽 —— 它们原本编码了排除的理由。
  3. ghost.json 新增 settingsHeight: 480(此前未声明),并新增一个非工具类的 worker 方法。
    状态查询没有做成 tools[],agent 面不变,也不触发四语言 carrier 一致性校验。
  4. 上游 app-edit-audit-and-history.md 自身仍提到 page_path,本 PR 保持与上游一致未动。

Verified / 验证

  • Production Cindy verification / 生产版 Cindy 验证 — 已在本机正式版 Cindy 上安装 1.0.8 包实测:
    手册可读、list_tools / call_tool 正常、dashboard-stats 只读查询端到端可用、写门禁仍生效、
    设置页状态面板正确显示 CLI 版本与登录态(本机 @taptap/cli 2026.9.22)。2026.9.22 手册增量的两处
    行为变更也已实机确认:提审相关回答改为「要开放下载需在提审前调整分发状态,随本次版本一起审核」,
    资质问题先确认 app_features 五项事实再推导必须资质。未发现问题。

本地已通过:plugin-contract 6/6、localization 3/3、provisioning 3/3、publish-workflows 11/11、
taptap-cli 50/50。另外逐项核对:手册内全部链接可解析、无 github.com/taptap/cli 链接、无被拒的
call_tool 调用、无超 64KB 的手册文件。

taptap/cli_status 也已对着真实 CLI 端到端跑过(本机 @taptap/cli 2026.9.21),返回
{installed: true, version: "2026.9.21", logged_in: true}

Worker 审查证据 / Worker review evidence

  • 上游来源taptap/cli 官方仓库;手册派生自其 skills/ 目录,基线 9af17092(2026.9.11)→
    origin/main d454f0effe(2026.9.22)。2026.9.212026.9.22 均已发布到 npm,
    latest 现为 2026.9.22
    随包不含 CLI 本体,执行的是用户自行安装的 @taptap/cli(MIT)。
  • 随包新增的 Node 源码:无。本次未新增 node/ 下任何文件;worker.cjs 为原有手写源码,零第三方依赖。
  • 外联域名:无新增。本次改动不引入任何网络请求;唯一子进程入口仍是 child_process.execFile
    调用本机 CLI(shell:false),网络由 CLI 自身负责。
  • eval / Function / 字符串执行 / base64 大块排查:无命中。代码中只有 require('child_process')
    一处(execFile),无 evalnew FunctionspawnexecSync,无 ≥200 字符的 base64 串。

@shengyongkang-dot shengyongkang-dot changed the title feat(taptap-cli): 同步随包手册到 taptap-cli 2026.9.21 并开放数据查询 feat(taptap-cli): 同步随包手册到 taptap-cli 2026.9.21、开放数据查询、设置页加状态面板 Sep 21, 2026
@shengyongkang-dot
shengyongkang-dot marked this pull request as ready for review September 21, 2026 15:12
@greptile-apps

greptile-apps Bot commented Sep 21, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

未发现新的阻断性代码问题;实现层面可合并,但因 worker 与子进程能力边界属于敏感变更,仍需维护者人工 review。

Summary

敏感变更,需要维护者人工 review:本 PR 修改了 Node worker、CLI 子进程探测边界和可用业务范围;本轮未发现新的代码缺陷。

  • 将随包 TapTap CLI 手册同步到新 OpenAPI、审核、包体、资质和测试计划契约,并新增数据表现与玩家评价手册。
  • 开放 dashboard-stats 只读目录及别名,四语言能力描述与发现文案已同步。
  • 新增设置页 CLI 安装、版本和离线登录状态面板,通过 main.js 转发至 worker 统一判定。
  • 上一轮提出的生命周期状态字面量和探测失败误报问题均已修复。
  • PR 描述提供了 worker 来源、无新增外联域名、无动态字符串执行或大段 base64 内容的核查证据;由于 node/worker.cjs 属敏感路径,仍需维护者确认其可直接维护属性。
Diagram
sequenceDiagram
  participant Page as Settings page
  participant Channel as BroadcastChannel
  participant Entry as main.js
  participant Worker as Node worker
  participant CLI as taptap-cli
  Page->>Channel: settings-request(status, reqId)
  Channel->>Entry: Forward request
  Entry->>Worker: taptap/cli_status(cli_path)
  Worker->>CLI: version
  Worker->>CLI: auth status --offline --json
  CLI-->>Worker: Version and local auth state
  Worker-->>Entry: installed/version/logged_in
  Entry->>Channel: settings-result(reqId)
  Channel-->>Page: Render confirmed state
Loading

Reviews (4) · Last reviewed commit: "feat(taptap-cli): sync the bundled manua..."

Comment thread taptap-cli/settings.js
@greptile-apps

This comment has been minimized.

@shengyongkang-dot

Copy link
Copy Markdown
Contributor Author

关于 taptap-cli/node/worker.cjs 的溯源:vendor-dist-evidence 规则的前提是「第三方或生成物」,本插件的 worker 两者都不是,它是本插件自己的手写源码。

判断依据:

  • taptap-cli/ 目录下没有 package.json、没有 src/、没有任何构建配置node/ 下只有一个 65KB 的 worker.cjs,不存在可推导的生成流程或整体升级来源。
  • 对比本仓同形态的插件:163-mail/package.json 里有 "build": "esbuild src/entry.cjs --bundle ... --outfile=node/worker.cjs",那种才是「随 src/ 重建」的生成物;本插件没有这条链路。
  • 本包 THIRD-PARTY-LICENSES.txt 首句已声明:This plugin bundles no third-party code, no vendored package, and no binary.
  • PR 正文「Worker 审查证据」一节已按规则给出三项证据:上游来源(无 vendor、无上游包)、外联域名(无新增,唯一子进程入口仍是 child_process.execFile 调用本机 CLI)、eval/Function/字符串执行/base64 大块排查结果(无命中)。

本次对 worker.cjs 的改动是四类,均在本插件自己的源码范围内:EXCLUDED_SERVICES 清空以开放数据查询、dashboard-stats 的描述条目、GLOBAL_RULES 的协议同意口径与注释、以及新增 cliStatus。其中 cliStatus 没有新增 execFile 调用点,仍复用既有 runBinary.tests/taptap-cli.test.mjs 对此有断言:execFile 字面量恰好一处)。设置状态探测执行的也是固定的 versionauth status --offline --json 参数,未引入新的命令面或网络调用。

这条与 #108 上的同名 finding 属同一情况,当时的处置同样是在 PR 正文补充溯源证据。如果维护者希望改为在包内声明(例如在 THIRD-PARTY-LICENSES.txt 里显式写明 node/worker.cjs 是手写源码),我可以补,请告知。

@shengyongkang-dot shengyongkang-dot changed the title feat(taptap-cli): 同步随包手册到 taptap-cli 2026.9.21、开放数据查询、设置页加状态面板 feat(taptap-cli): 同步随包手册到 taptap-cli 2026.9.22、开放数据查询、设置页加状态面板 Sep 21, 2026
…d add a CLI status panel

一、手册同步:上游 9af17092(2026.9.11)→ origin/main d454f0effe(2026.9.22)

契约迁移(DC / OpenAPI):
- 提审三步改用同一 scope 与 version_id 校验;submit-app-review 只传 release_schedule
- precheck-app-review 返回 blockers / warnings / preaudit_passed;SCE 协议改走独立的 agree-sce-agreement
- 删除 get-package-overview、ingest-image-to-assets、precheck-qualification、get-test-plan-overview 等,
  改用 get-available-package-types、search-assets、get-qualification-status、list-test-plans
- Windows 默认包 (0) 退出上传与绑定;Tap 小游戏改由 upload-mini-app-package 上传
- 版本状态统一为归一化 status(draft / reviewing / scheduled / online / offline / rejected);
  普通字段每批 change 上限 5 → 10;expected_digest 退役
- 分发状态话术:由「发布后单独调整」改为「提审前先调整,随本次版本一起审核生效」
- 资质新增「判断事实优先」门禁:先确认 app_features 再推导必须资质;pending_upload 不再等同缺口

能力变更:
- 开放 dashboard-stats:worker 的 EXCLUDED_SERVICES 清空,四语言描述去掉排除,新增数据查询手册
- 新增 taptap-player-feedback 手册(只读评价正文检索)
- app-edit 执行细则拆分为 references/app-edit-execution-rules.md
- 删除已并入 diagnostics 的 package-management-page-paths.md

二、设置页加 CLI 状态面板

- worker 新增 taptap/cli_status:复用 resolveCli 判定是否装得上,再跑 version 与
  auth status --offline --json 取版本和登录态。用 --offline 是刻意的:面板在页面加载时就会探测,
  不该依赖网络;两个探测沿用同一个 cli_path,避免判定与读数来自不同 binary。
- main.js 加 settings-request / settings-result 桥(reqId 去重 + 结果短时保留)。
- settings.html / settings.js 加状态面板(CLI / 登录)+「检查状态」按钮,四语言文案。
- 安装与登录判定只在 worker 里做一次,满足仓库「main.js 与 settings.js 不得各自实现同一状态判定」的规则。

版本 1.0.7 → 1.0.8。

Signed-off-by: shengyongkang <shengyongkang@xd.com>
@shengyongkang-dot
shengyongkang-dot force-pushed the feat/taptap-cli-sync-upstream branch from a4579b4 to 854df6a Compare September 22, 2026 01:53

@GaoWeiLiuXD GaoWeiLiuXD left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

针对当前提交 854df6a 完成维护者定向审核:

  • 核查 taptap-cli/ghost.json、main.js、node/worker.cjs、settings.js、四语言文案及相关测试;新增能力与设置页状态探测已由当前提交的测试和 required checks 覆盖。
  • worker.cjs 复用既有单一 execFile 入口,使用固定 CLI 路径与固定参数 version、auth status --offline --json,shell:false;未新增凭证读取、网络域名、eval/Function/字符串执行或 base64 执行边界。
  • dashboard-stats 及玩家反馈能力描述与实现同步,当前 Greptile Review 已对本提交给出 5/5 且无剩余 diff 外 finding;相关 review threads 已解决。
  • 当前提交的 DCO、Repository-wide gates、Test and dry-run packaging for changed plugins、Greptile Review 均成功。

以上证据足以完成本 PR 的维护者审核。

Copy link
Copy Markdown
Collaborator

当前 PR(head 854df6a,目标 main)已完成维护者审核,所需 CI 均已通过。是否需要我帮你合并?请 PR 作者明确回复“同意合并”或“暂不合并”;确认后将在下一轮巡检核对状态并执行合并。

@shengyongkang-dot

Copy link
Copy Markdown
Contributor Author

当前 PR(head 854df6a,目标 main)已完成维护者审核,所需 CI 均已通过。是否需要我帮你合并?请 PR 作者明确回复“同意合并”或“暂不合并”;确认后将在下一轮巡检核对状态并执行合并。

同意合并

@GaoWeiLiuXD
GaoWeiLiuXD merged commit e0ee0b3 into makecindy:main Sep 22, 2026
6 of 8 checks passed

Copy link
Copy Markdown
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants