Skip to content

Releases: zjs105910/workbuddy-market

WorkBuddy Market v2.35.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:07

2.35.0 — 2026-10-14(修复:真实用户反馈安装链路 P0 三连坑 + 社区安装可见性 P1)

用户实测两轮反馈驱动的修复轮:

  • P0「点一键安装零反应」(探索 GitHub / 精选市场全中招):同链路堆叠
    三个前端 bug —— ① install.js 的 const note 后两处 note +=,
    ES Modules 严格模式下点即 TypeError,确认弹窗都不出现;②
    usePkg/known/regEntry 缩在 if(isAdd){} 块内,块外路由选择引用 →
    ReferenceError 被 try/catch 吞掉;③ utils.js 的 errorBox 从来没有
    classList.add("show") —— 错误弹窗从不显示,await 它的调用方全部静默
    挂起,v2.24 的结构化错误自此形同虚设。三处修复 + ui_smoke 三条回归。
  • P1「装完看不到装在哪」(审计缺口 D1):精选市场工件链 / 探索
    GitHub ghpm 链装进来的技能此前无任何 UI 出口。修复五件套:
    ① uninstaller.py 卸载计划按所有权回退(pid 不在 localPlugins 时还原
    虚拟插件;classify_skill 逐项校验 owner/哈希,fail-closed 不放宽);
    ② state.py 本机技能页新增「社区安装」分区(按来源仓库分组,两条链路
    同框)+「本机技能一览(只读)」全量清单(来源标注)+ 收录源 via=artifact;
    ③ market_server.py 把工件安装记录合并进 installedRepos —— 精选市场
    的「已装 / 已装好筛选」对工件安装同样如实(用户实测二报的根因之一,
    后端字段需重启服务才生效);④ 新增 POST /api/remote/remove:ghpm 源码
    链装的仓库经 ghpm remove 移除(自带备份与回滚;所有权不在本市场,
    市场卸载不代删,fail-closed);⑤ jobs.js 安装完成 toast 说明落盘位置。
  • 「社区安装」分类 chip:在任何 tab 点击都落到本机技能页的社区安装
    分区(原先在精选/探索页按分类过滤必然空结果)。
  • 状态检查告警修正:application.py 所有权残留检查把仓库形态 pid
    (含「/」且 owner=本市场)的社区安装误报为「指向已不存在的插件」;
    现按社区安装口径豁免,其余形态照旧报。
  • ghpm 仓库全量展示,不再整卡去重隐形(用户实测四报):技能与收录的
    本机插件重叠的 ghpm 仓库(如 zenstory-ai/oh-story-claudecode,13 个
    技能与「网页创作套件 + 浏览器自动化」是同一批文件)此前在社区安装里
    整卡消失——「下载过的仓库看不到」。现全量展示,重叠技能在卡片上如实
    标注「已收录为本机插件」,meta 注明「其中 N 个已收录为本机插件」;
    管理归属不变(ghpm 链市场不卸载,fail-closed 不变)。
  • 顶部统计如实纳入社区安装(用户实测三报):指标条新增
    「社区安装 N 个 · 已装 X / Y skill」,与「已装 14 / 14」的本机口径
    分开并列——装了的插件不再统计隐形。
  • 已装收录源移至本机页管理(用户实测三报/四报):探索 GitHub 页
    任何筛选下都不显示已安装的收录源(探索 = 发现新源;四修:选
    「已装好」时也不再回显,只留移管提示 + 跳转按钮)——已装的统一在
    本机技能页社区安装分区管理,更新中心与本机卡片的「检查更新」入口不变。
  • 社区安装卡片用收录源展示名(用户实测六报):卡片标题从仓库 id
    (anthropics/skills)改为收录源中文展示名(「Anthropic 官方技能集」),
    仓库 id 小字并列——跨页名字对得上;显示名按 收录源 displayName →
    ghpm 记录名 → 仓库 id 兜底解析。
  • doctor 三态 + 空态两语义(NEXT_STEPS 任务2):doctor 新增
    「△ 待初始化」(未初始化不算故障,渲染四态 ✓/!/△/✗,CLI/网页/诊断
    报告同口径);UI 空态区分「搜索无命中」与「市场真空」(后者明示
    「未收录 ≠ 已删除」+ 两步引导),精选市场区分「目录还没数据」与
    「没有匹配的条目」。
  • 注册表工件日期显式化(NEXT_STEPS 任务3,零协议变更):从
    packageUrl 的发布 tag 解析「工件构建日期」,详情弹窗与 CLI list/search
    输出;pushedAt 晚于工件日期时如实提示「上游有更新,此工件未包含」。
  • GitHub 搜索翻页 + pkg=N 引导(NEXT_STEPS 任务5):/api/gh/search
    接受 page(上限 50,坏值回退),前端「加载更多」按页追加、不满页
    如实显示「没有更多了」;14 个无成套产物条目:卡片挂「无固定产物」
    灰标,安装确认框事前说清「走 ghpm 源码路线、装的是当前上游版本、
    无法逐包哈希对账」。
  • 打包瘦身 + 体积闸门(NEXT_STEPS 任务4,影响评估后落地):评估
    实锤重量全在 skill 目录内的内容资产(两大巨头 246MB/179MB),内容级
    剔除会破坏 skill——故 ① stage_clean 瘦身暂存(只带声明的 skills +
    剔除 VCS/缓存/系统垃圾;node_modules/.venv 刻意不剔),剔除量记进
    report;② 体积闸门 ARTIFACT_MAX_BYTES=64MB,超限条目拒发固定工件、
    注册表拔指针、安装回落 ghpm 路线;artifacts.yml 头注修订(内容哈希
    vs zip 字节口径,REPORT.md D5)。
  • 弹窗焦点管理 + ARIA + 测试扩面(NEXT_STEPS 任务6):三个弹窗
    入口共用焦点管理(打开进主按钮/关闭归还触发者/Tab 焦点锁);#cfm
    补 role=dialog + aria-modal;筛选 chip aria-pressed 同步;
    pytest 80→90(tests/unit/test_pack_slimming.py);mypy 渐进评估因
    本机 pip→PyPI 通路受限暂缓(ruff 门禁不变)。

验证:selftest 804 项全绿(789→804:doctor 三态 ×3 / 工件日期 ×3 /
搜索翻页 ×5 / 打包瘦身 ×4);pytest 90 全过(80→90);
ui_smoke 49 项(26→49:P0 链路 ×3 / 工件全旅程与移管 ×6 / 任务2
空态与 doctor ×2 / 任务3 工件日期 ×1 / 任务5 翻页 ×2 / 任务6 可访问性
×4 等);ruff / privacy-audit / dup-sync 门禁全绿。前端 /static 逐
请求读盘刷新即生效;后端字段需重启市场服务。


Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.

WorkBuddy Market v2.34.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 07:10

2.34.0 — 2026-10-13(工程质量轮:静态分析门禁 + 自检拆包 + 拷贝一致性)

全仓审计("有什么可以优化的")驱动的工程整改,无产品行为变化:

  • ruff 静态分析门禁:pyproject.toml 的 [tool.ruff.lint] 钉死规则集
    E4/E7/E9/F(未用导入/变量、未定义名、裸 except、分号语句、单字母变量名)。
    刻意不收 I(机械排序会破坏 market_core 的迁移史排序与函数内懒加载分组)、
    BLE001/S/PL(防御性宽捕获是本项目既定设计,豁免点已就地 noqa 声明)、
    UP(显式 encoding="utf-8" 等是编码纪律)——理由写 in-config 防后来者
    顺手扩大。ci.yml 新增独立 lint job(ruff==0.17.0 pin,路径与
    py_compile 同口径)。同期修复 34 处存量问题:10 处死导入(含
    application.py R6 收尾遗留的 prune_trash/register/unregister 死再导出名)、
    5 处死变量/死代码(market_server 的 reg_ok 双份死赋值、record_demo 的
    video_ref、ui_smoke 的 toasts2、selftest 的 r_up 与 if False 死行)、
    3 处 E741 改名、14 处 E702 分号拆行、1 处 F541;每处改动前均人工核实。
  • selftest.py 拆包:5603 行单体 → selftest.py 薄入口(100 行,保留
    全部节索引 docstring,补齐缺失的第 41 节索引)+ selftest/ 包 14 个模块
    (init 共享设施 / runner 编排 / core_flow 第 1-15 节 / faults 第 16-18
    节 / 9 个 roundNN 轮次模块,最大 669 行)。逐字搬迁 + 守恒校验(除
    __file__ 变换外零行丢失)。迁移陷阱:16 处
    Path(__file__).resolve().parent 拆包后会指向 selftest/(round18 的
    core shim 防膨胀检查等会全挂),统一改挂 kit 的 REPO_ROOT = parents[1]。
    python selftest.py 与 python -m selftest 等价;789 项计数与逐项
    结果不变。
  • 拷贝一致性门禁:新增 scripts/check_dup_sync.py,管两组协议约束下的
    必然重复——A 组 bundled 共享助手脚本(tracking_commit /
    author_memory_commit / wordcount_core:安装粒度是 per-skill,SKILL.md
    写的都是「本 skill 自带 scripts/」,跨技能共享目录不可行);B 组
    plugins/(个人编辑面)↔ bundled/(分发副本)三个自有插件。接入 ci.yml
    的 lint job(B 组在干净 clone 无 plugins/ 时自动跳过并明说)。修复实测
    漂移 1 处:test_ghpm.py 的 # pa:allow 回灌 plugins/ 侧,两棵树恢复一致。
  • selftest 三平台硬门槛:隔离 selftest 从 Windows 独占扩为
    Windows/Linux/macOS 全量硬门槛。内核本就是平台抽象的(locking 的
    msvcrt/fcntl 双分支、进程树 taskkill/killpg 双分支、_find_port 的
    SO_EXCLUSIVEADDRUSE 条件、_drop_link 的 lstat 判型——其 POSIX ENOTDIR
    处理本就是为 Linux 写的),实测扩闸后三平台全绿;唯一需放宽的是
    20 万行 tail 的计时界(0.5s → 2s,真正的守卫是 19J 的 I/O 计数断言,
    原界在 CI 共享 runner 冷缓存下会偶发误红)。平台矩阵文档(README 中英 /
    ADVANCED_GUIDE)与 pyproject classifier 注释同步更新——仍如实标注:
    通过 Python 测试 ≠ WorkBuddy 宿主集成已验证。
  • 验证:selftest 789 项全绿 0 失败(拆分前后逐项一致,三平台 CI 实跑);
    pytest 80 全过;ruff/privacy-audit/dup-sync/registry 契约四门禁全绿;
    ADVANCED_GUIDE 目录树、CONTRIBUTING 验证清单同步。


三方一致见证(Release Consistency)

本工程的发版链是 git tag = 源码版本号 = PyPI 版本 三方一致,每次发布都可复现核验:

见证面 v2.34.0
Git tag v2.34.0 → commit 032b263(三平台 CI 全绿后打标;其后 main 仅有 docs 提交)
源码 src/workbuddy_market/version.py → MARKET_VERSION = "2.34.0"(全项目唯一版本号来源,selftest 24C/25B 设版本漂移盯防)
PyPI pypi.org/project/workbuddy-market/2.34.0(wheel 与 sdist 的 SHA-256 与本 Release 的 SHA256SUMS.txt 逐一相符)

PyPI 项目页:workbuddy-market 2.34.0

GitHub Release:WorkBuddy Market v2.34.0

复现命令:

git ls-remote origin refs/tags/v2.34.0                                    # ① tag → commit
python -c "from workbuddy_market.version import MARKET_VERSION; print(MARKET_VERSION)"  # ② 2.34.0
pip index versions workbuddy-market                                       # ③ Available versions: ... 2.34.0

Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.

Registry artifacts 2026-10-13

Pre-release

Choose a tag to compare

按 registry/plugins.json 的 sourceCommit 构建的不可变产物。packageHash 见 report.json;安装端(v2.16+)逐包校验;*.attestation.json 为构建证明(v2.20,可与注册表固定值对账)。Pre-release:仅为避免抢占 /releases/latest 指针,资产照常可下载。

WorkBuddy Market v2.33.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:11

2.33.0 — 2026-10-12(改进:真实用户测试反馈三连修)

用户端实测(docs/first-run-walkthrough.md)反馈的三处体验问题:

  • GitHub 搜索只显示 8 条:/api/gh/search 新增可选 limit 参数
    (坏值回退默认,上限仍 SEARCH_LIMIT_MAX=20),前端改传满档 20;
    缺省行为不变,API 向后兼容;
  • 「本机技能 0」引发消失误会:空态文案改为明确说明「首次安装默认
    收录 0 个是安全设计,skills 都完好保存在 ~/.workbuddy/skills」+
    收录方法(编辑 localPlugins → 重新打包);
  • install.cmd 的 doctor 在向导初始化前显示 ✗:脚本加两行说明
    (首次运行时 ✗ 属正常,向导初始化后自动消失)。

同期入库:docs/first-run-walkthrough.md(真实用户首装全流程实录,
含安全警告、下载兜底、doctor 误读、localPlugins 收录方法与卸载恢复)。
selftest 789 项不变;pytest 75 不变。


Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.

WorkBuddy Market v2.32.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 08:35

2.32.0 — 2026-10-12(新增:单文件一键安装器)

  • install.cmd(仓库根):下载这一个文件双击即得完整版——自动检测/
    安装 Python 3.10+(winget 兜底)→ 装 pipx → pipx 安装/升级 workbuddy-market
    CLI → 下载市场本体(main 分支 zip)到 %USERPROFILE%\workbuddy-market →
    doctor 体检 → 启动首次向导(回车=浏览,2=注册)。全部步骤幂等,可重复运行
    顺带升级;--no-launch 只装不启。README(中英)快速上手设为首选入口,
    FAQ 第八节升为五种路径(一键安装=完整版的全自动形态)。
  • 三个 Windows 批处理坑(实测):① if (...) 块内引号里的 (3,10) 会
    截断块解析——全文件改写为 goto 流程、零括号块;② cmd 里裸 tar 可能解析到
    Git 的 GNU tar(把 C:\... 当远程主机 "Cannot connect to C:")——必须用
    绝对路径 %SystemRoot%\System32\tar.exe(bsdtar);③ cd 会重置
    errorlevel——先取 set "TARERR=%errorlevel%" 再 cd 回。
  • 本机实测三轮走通全流程(pipx 1.17.14 + CLI + 市场根下载解压 + doctor)。
  • selftest 789 项不变;pytest 75 不变;根清单 version 字段同步 2.32.0。

Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.

WorkBuddy Market v2.31.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 07:48

2.31.0 — 2026-10-12(新增:短命令自带市场 + README 收录清单)

参考社区实践(blatwo/workbuddy-marketplace)的第二轮安装体验优化:

  • 短命令自带市场:仓库根入库 .codebuddy-plugin/marketplace.json
    (相对路径引用 bundled/ 目录),/plugin marketplace add zjs105910/workbuddy-market 一条命令即装仓库自带的 3 个插件
    (browser-cdp / github-project-manager / novel-writing-suite,共 6.6MB
    随仓库分发,零漂移);完整 25+ 社区目录仍走 #marketplace 分支长命令
    ——官方 marketplace.json 的 github source 不支持 pin commit,完整目录
    入库不现实、引 HEAD 违背供应链口径(取舍说明见 FAQ 第八节);
  • README 收录清单表格:scripts/render_registry_readme.py 从人工审核
    的注册表渲染「已收录插件」表格进两份 README 的标记区间(只读静态字段,
    动态数据不进 README,避免 daily refresh 产生无意义 diff);
    registry.yml 在每日刷新的同一 PR 里顺带更新;
  • 贡献入口:README(中英)新增「收录你的插件」三步指引;
  • bundled/ 目录:三个自带插件从 gitignore 的 plugins/ 拆出一份随仓库
    分发(原 plugins/ 仍是本机个人数据语义,不变);根清单与本地运行时清单
    同路径两用的冲突用 --skip-worktree(开发机)与文档说明消化;
  • 门禁:新增 tests/unit/test_core_marketplace.py 6 例(bundled 完整性 /
    清单-目录一致性 / README 标记成对 / 渲染脚本幂等冒烟);审计规则豁免
    GitHub 机器地址(git@ / noreply@ / actions@github.com,非个人邮箱)并加
    3 例防搭车测试;selftest 789 项不变;pytest 67 → 75。

Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.

WorkBuddy Market v2.30.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 07:13

2.30.0 — 2026-10-12(新增:原生市场一键接入渠道)

参考社区实践(blatwo/workbuddy-marketplace)补上安装体验的最大缺口:
精选市场此前只有「下载 112MB zip → 面板导入」一条路,现在多了一条
一条命令的原生 git 市场入口:

/plugin marketplace add https://github.com/zjs105910/workbuddy-market.git#marketplace
  • marketplace 分支:每日 CI 在构建 zip 的同一个 job 里,把同一份
    审核快照(sourceCommit 固定)原样发布到本仓库 marketplace 分支——
    它就是一个标准的 CodeBuddy/WorkBuddy 原生市场仓库(根放
    .codebuddy-plugin/marketplace.json),支持 marketplace update
    刷新与自动更新;

  • 供应链口径不变:插件条目用相对路径引用分支内快照(每插件自带
    plugin.json),不用 github-source 引上游 HEAD——那会让安装漂移
    出审核固定的 commit,违背本市场的供应链承诺;

  • 幂等发布:scripts/publish_marketplace_branch.py 先比对 tree
    hash,内容没变不推,避免每日空转;PAT 缺失时如实失败不静默跳过;

  • README(中英)快速上手增加「一条命令接入」为首选入口,zip 导入
    降级为备选;两种轻量入口的取舍说明(无四问/回收站)同步保留。

  • selftest 789 项不变;pytest 59 → 67(新增
    test_publish_marketplace_branch.py 8 例:zip 校验/剥包/损坏拒绝、
    幂等判定三分支 + 首次发布无旧分支回归、分支 README 必含一键命令与
    取舍说明)。


Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.

WorkBuddy Market v2.29.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 06:17

2.29.0 — 2026-10-12(修复:多实例 marketId 撞车 + 发行链路加固)

用户可见修复

  • 多实例 marketId 撞车(P1,真实验收实测发现):首次启动向导过去给每个
    新 clone 恒用模板默认 marketId=wb-local-market,多个市场实例在
    known_marketplaces.json 里共用同一个 key——后注册的覆盖先注册的
    installLocation,注销任意一个都会删掉共享 key(卸载 A 毁掉 B 的注册;
    第三方条目不受影响)。两层修复,fail-closed:
    • 向导 init_config() 从模板创建配置时给 marketId 追加 MARKET_ROOT
      路径哈希后缀(sha256 前 12 位,与状态桶同口径),clone 级唯一;
      已存在的配置一个字节都不会被动;
    • 注册 register() 新增冲突守卫:key 已被另一位置的市场占用时拒绝
      写入并给出人话提示,绝不静默覆盖。
  • 历史隐私审计误报修复:GitHub Windows runner 的 8.3 短路径
    RUNNER~1(机器占位名,非真人)被 USER-PATH 规则误报——根因是
    _WIN_PATH 放行名单缺 runner、_POSIX_PATH 大小写敏感挡不住大写形态。
    两规则放行 runner / RUNNER~1 / runneradmin 占位名,真实用户名仍报红;
    新增 tests/unit/test_privacy_audit.py 钉死两个方向。

发行链路(不进包,工程侧)

  • 新增 release-smoke 工作流:正式 Release(仅 v* 非 prerelease)发布
    时在 ubuntu / windows / macos 三平台各跑一遍「下载全部附件 → SHA256SUMS
    逐件校验 → 干净 venv 装 wheel → 入口点 doctor --help → 包版本对 tag →
    doctor 体检报告校验」,把「CI 通过」升级为「用户下载到的发行包可用」;

  • 全部 workflow 的 action SHA 固定升级到 node24 代(checkout v5.1.0 /
    setup-python v6.3.0 / upload-artifact v5.0.0),消除 hosted runner 的
    Node 20 弃用警告;

  • 自动化 PR 改用 secrets.REGISTRY_PAT 创建(GITHUB_TOKEN 建的 PR 其
    pull_request CI 永远挂 action_required),并加「建新 PR 后自动关闭
    同类旧 PR」的收敛逻辑。

  • selftest 789 项不变(本轮修复由 pytest 钉死:37 → 59 项,
    新增 marketId 唯一性 10 例 + 审计规则 10 例)。


Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.

Registry artifacts 2026-10-12

Pre-release

Choose a tag to compare

按 registry/plugins.json 的 sourceCommit 构建的不可变产物。packageHash 见 report.json;安装端(v2.16+)逐包校验;*.attestation.json 为构建证明(v2.20,可与注册表固定值对账)。Pre-release:仅为避免抢占 /releases/latest 指针,资产照常可下载。

WorkBuddy Market v2.28.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 15:48

2.28.0 — 2026-10-12(使用与宣发审计修复轮)

对项目做了一轮「用户怎么用 / 怎么被看到」视角的审计,4 个用户可见问题的落地:

  • CLI 口径诚实化:list / search 头部从「search 4 条」改为
    「社区目录匹配 4 / 共 28 条」—— 命中数与总数同框,不再被误读成
    数据源只有 4 条(评审 #3 的误判已在当轮深挖澄清:原输出本就正确,
    此处把口径做自解释);

  • CLI 英文名行:注册表条目自带 displayNameEn / descriptionEn 时
    顺手输出一行原文名,英文用户不必等完整 i18n(渐进路线第一步);

  • zip 市场构建清单:build_marketplace_zip.py 的失败记录改结构化
    {repo, reason},marketplace.json 与 manifest 自带 included /
    excluded 字段 —— 用户能对上「注册表收录 N 条,zip 里怎么只有 M 个」,
    CI 构建摘要也更可审计;

  • 卸载提示补全:Web 安装四问中 ghpm 源码链路与不可变产物两分支
    明确告知「此来源不由本市场卸载管理,移除请用 ghpm remove 项目名」
    (P1 缺口 artifacts 无法卸载的诚实化过渡);

  • README zip 市场小节补充收录子集说明(超 30MB / 含符号链接 /
    非标准 skill 结构的条目不进包)。

  • selftest 781 → 789 项(第 41 节 7 项:CLI 头部口径 / 英文名行 /
    zip 清单结构 / 体积闸门拒发空市场)。


Try WorkBuddy Market

If this helps your WorkBuddy workflow, consider starring the project and sharing a reproducible issue or pull request.