Commit Graph

194 Commits

Author SHA1 Message Date
lanrtop
f68d172687 fix(onboarding): Windows PATH 兜底补 lefthook.cmd shim 解析
All checks were successful
Push & PR Check / check (push) Successful in 48s
pnpm add -g lefthook 安装的是 .cmd shim,CreateProcess 对裸名
"lefthook" 只解析 .exe,导致 PATH 兜底永远 missing_binary
(批量接入 6 项目实测踩坑)。兜底顺序改为逐候选尝试:
本地 .bin → 全局 lefthook → 全局 lefthook.cmd(仅 Windows)。

Rules-Applied: R10
2026-07-04 11:33:11 +09:00
lanrtop
85c79631b9 fix(dashboard): mappedIds 限定在当前空间项目,修复跨空间计数偏高
All checks were successful
Push & PR Check / check (push) Successful in 50s
2026-07-04 11:25:16 +09:00
lanrtop
b9f77e75a2 fix(dashboard): 看板 Tab 命名自洽 — 已加入产品组 / 未加入产品组
All checks were successful
Push & PR Check / check (push) Successful in 49s
2026-07-04 11:17:26 +09:00
lanrtop
16556e1dcc fix(manage): 产品组概览项目 tag 补 × 移除入口,与 detail 视图自洽
All checks were successful
Push & PR Check / check (push) Successful in 49s
2026-07-04 10:40:49 +09:00
lanrtop
aeacb9dcf9 feat(manage): 产品组概览「项目数量」改为罗列项目名称
All checks were successful
Push & PR Check / check (push) Successful in 47s
2026-07-04 10:34:44 +09:00
lanrtop
1229d1b579 chore(blueprint): onboarding-pack 新立 T2 任务卡 — git-workflow 分支策略升级为复杂度感知 2026-07-04 10:20:08 +09:00
lanrtop
8e9c53f182 chore(git-workflow): 炼境自身分支策略 — complexity-gated feat/* + PR CI 覆盖
All checks were successful
Push & PR Check / check (push) Successful in 46s
2026-07-04 09:45:40 +09:00
lanrtop
9881b568b6 feat(manage): 项目/产品组多视图 — 全览/分组/概览/健康度四视图
All checks were successful
Push Check / check (push) Successful in 46s
2026-07-04 09:26:17 +09:00
lanrtop
bc7bcb2fe1 docs(agent-button): 接入包简化为单档,去除最小接入方案 2026-07-04 09:26:04 +09:00
lanrtop
ccf87ae09a feat(onboarding): V1 接入生效验收——lefthook 分发即激活 + verify_onboarding 六项检查链
All checks were successful
Push Check / check (push) Successful in 45s
分发成功 ≠ 功能生效:接入包此前只写 lefthook.yml 从不激活,
文件在 hook 死 → conventional 不强制 → 飞轮数据脏。

- apply_onboarding_pack 分发后自动 lefthook install(本地 .bin 优先/
  PATH 兜底/静默),OnboardingReport 新增 hook 三态
- 新 MCP 工具 verify_onboarding:管理块版本/hook 真挂/origin 命中
  Gitea 实例/CI workflow 存在/近 30 天飞轮数据 六项检查链 JSON
- 判定纯函数化 5 条单测 + in-memory DB 全链集成测试
- commands.ts 补 TemplateResult 缺失的 updated/appended 态(T1 旧债)
- AGENTS.md 去掉写死的工具计数(防腐:以 tools_list_result 自省为准)

Rules-Applied: R01,R06,R07,R13
2026-07-04 08:27:39 +09:00
lanrtop
2da50890ea chore(blueprint): onboarding-pack 新立 V1 接入生效验收卡
All checks were successful
Push Check / check (push) Successful in 45s
lefthook 分发后从不激活 + verify_onboarding 消费者角色验证,
acceptance 按可执行验证路径格式拆好,供下轮直接开工。
2026-07-04 08:13:53 +09:00
lanrtop
dc501f74e2 fix(cicd): PR CI 模板同款 lint 语法雷,防止复制到子项目
All checks were successful
Push Check / check (push) Successful in 51s
炼境自身 pr-check.yml 刚踩的 pnpm lint --if-present 必挂 bug,
源头就是 build_pr_ci_workflow 模板——每个经炼境生成 CI 的子项目
都会领到坏 workflow。改为 pnpm run --if-present 语法(本地实测
exit 0),并在 pr_ci_template_is_correct 加回归断言驻军。

Rules-Applied: R07,R10
2026-07-04 08:08:01 +09:00
lanrtop
a1a4748c58 fix(ci): pr-check lint 步骤语法错误导致必挂
All checks were successful
Push Check / check (push) Successful in 2m15s
pnpm 的 --if-present 只对 run 子命令有效,pnpm lint --if-present 把 lint
当外部命令执行报 ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL(本地已复现)。
项目无 lint script,删除该步骤;补 pnpm test 对齐基线档定义
(push CI = typecheck + vitest),tsc --noEmit 改用 typecheck script。
2026-07-04 07:58:16 +09:00
lanrtop
1aa26966f4 docs(agent-button): 体系文档层补全
Some checks failed
Push Check / check (push) Failing after 54s
- docs/ai-context/agent-button-system.md: 新建,agent 按钮体系完整设计文档(四层体系 + 载体选择 + 自验失败降级)
- docs/templates/agents-meta-rules.md: v1.1.0,新增 Agent 按钮体系章节 + Acceptance 写法规范(可分发)
- .blueprint/CONVENTIONS.md: 新增 Acceptance 写法规范章节(引用 agent-button-system.md)
- AGENTS.md: ONBOARDING_MANAGED 块补充炼境自己的 Agent 按钮清单 + 自验失败降级约定
2026-07-03 21:48:38 +09:00
lanrtop
3b9de9a23c refactor(mcp)+fix(ci)+fix(test): 三项优化
Some checks failed
Push Check / check (push) Failing after 1m7s
- CI: pr-check 改为 push master 触发 + tsc --noEmit(原 branches: [main] 永不触发)
- mcp_server.rs 拆分:mcp_tools.rs(工具schema+dispatch+实现)+ mcp_webhook.rs(webhook+测试)
  mcp_server.rs 从 1385 行瘦身至 145 行(纯协议路由层)
- mcp_tools 新增工具 schema 完整性测试(73 passed,较之前 +2 条)
- onboarding 测试版本号跟进 v1.1.0 → v1.2.0(模板版本升级后断言未同步)
2026-07-03 21:38:20 +09:00
lanrtop
d8bd4a23e0 chore(blueprint): 同步 gitea-integration/onboarding-pack 状态
- gitea-integration: done 100%(/ship MCP 化闭环)
- onboarding-pack: in_progress 98%(B3 完成,B4 后置)
2026-07-03 21:12:37 +09:00
lanrtop
731fa11456 feat(onboarding+skill): B3 acceptance 可执行化 + template v1.2.0 + skill 升级
- AGENTS.md.tmpl: v1.2.0,新增 rule#5 acceptance 可执行化([载体] 调用→断言)
- 炼境 AGENTS.md: ONBOARDING_MANAGED 同步至 v1.2.0
- /architect: 新增 Step 3.5 声明验证路径载体(Tauri/HTTP/CLI/Playwright 优先级表)
- /splitter: acceptance 格式升级为可执行验证路径,含三类示例
2026-07-03 21:12:22 +09:00
lanrtop
def53d739c fix(gitea)+feat(mcp): PR 409 容错 + apply_onboarding_pack/list_all_projects agent 按钮
- gitea_api_create_pull_request: 409 时自动查 open PR 列表,返回已存在的 PR
- MCP 新增 apply_onboarding_pack(接入包分发 UI 按钮的 agent 投影)
- MCP 新增 list_all_projects(绕过 group 限制,列出全库项目及注入状态)
2026-07-03 21:12:06 +09:00
lanrtop
dccca234b5 fix(mcp): get_ci_status 兼容 Gitea 1.22 的 status 字段(非 state) 2026-07-03 19:59:00 +09:00
lanrtop
14fe02ec7d feat(mcp): 补全 agent 按钮体系——5 个新工具关闭三项结构性缺口
P0 PR 生命周期闭环:
- get_ci_status(project_id, commit_sha):查 Gitea CI pass/fail/pending
- merge_pull_request(project_id, pr_number):CI 绿灯后合并 PR
至此 /ship 流程全自主:推送→开 PR→查 CI→合并→poll_now

P1 飞轮数据对子项目透明:
- get_pr_events(project_id, limit?):读 pr_events 表,PR 生命周期历史
- get_commit_metrics(project_id, days?):读 commit_metrics,提交类型/返工分布

P2 分发层 agent 可自修复:
- distribute_cicd(project_id, workflow_type):写入 CI 模板,无需预存配置
2026-07-03 19:55:12 +09:00
lanrtop
d4cb236ace fix(mcp): SSE 消息端点立即返回 202,后台异步处理工具调用
poll_now 等耗时工具(发出 HTTP 请求到 Gitea)阻塞了 handle_sse_message,
导致客户端 POST 超时。改为 tokio::spawn 在后台处理 + SSE 推回结果,
HTTP 握手立即完成,符合 MCP SSE 传输规范。

另:新增 docs/ai-context/git-workflow.md(分支策略 + Conventional Commits),
.gitignore 排除炼境实例数据(.claude/liangjing.json / dev_manager.db)。
2026-07-03 19:17:25 +09:00
lanrtop
6d10c71d15 feat(gitea+mcp): PR 状态轮询 + poll_now agent 按钮(公网 Gitea webhook 不可达降级方案) 2026-07-03 18:59:19 +09:00
lanrtop
97b116857f feat(mcp): 新增 setup_webhook + inject_mcp agent 按钮(UI 操作的 MCP 投影) 2026-07-03 18:52:30 +09:00
lanrtop
35a8212472 fix(cicd): 模板默认 runner 改为 windows,deepseek_review 加 shell: bash 2026-07-03 18:11:44 +09:00
lanrtop
69183fb06c fix(cicd): 将 GITEA_TOKEN/URL 重命名为 LJ_TOKEN/URL(GITEA_ 前缀被 Gitea 保留) 2026-07-03 17:54:12 +09:00
lanrtop
8432aa4f45 feat(cicd+mcp): PR 事件追踪 + create_pull_request MCP 工具 + CI/AI 审查模板 + bypassPermissions 注入
炼境子项目工作流全链路打通:
- mcp_server: 新增 create_pull_request MCP 工具(凭证代理,子项目无需持有 token)
- mcp_server: webhook 路由拆分 push/pull_request,PR 事件写入 pr_events 表
- mcp_inject: 注入 bypassPermissions + 写入 liangjing.json(project_id + mcp_port)
- db: 新增 pr_events 表 + idx_pr_events_project 索引
- gitea.rs: gitea_api_create_pull_request() pub 函数;webhook 订阅补 pull_request 事件
- onboarding/git-workflow: v1.2.0,新增 PR 创建通过炼境 MCP 的说明与禁止条款
- cicd: 新增 pr_ci(PR 质量检查)+ deepseek_review(AI 代码审查)模板 + 4 项测试
- CicdModal: 类型选择器扩展为 4 项,deepseek_review 加 Secrets 提示面板
2026-07-03 16:57:36 +09:00
lanrtop
bcdcad7f27 chore(blueprint): T1 实测证据回填——两项目 appended 三态走通,五态 UI 修复记录 2026-07-03 13:43:25 +09:00
lanrtop
c4a6600134 fix(onboarding): 模板分发报告识别 appended/updated 五态,不再误显 ✗
noteapp 实测追加管理块成功但 UI 渲染成红叉——前端映射只认旧三态,
新增 action 落入 failed 默认分支。改映射表覆盖五态,
updated/appended 展示后端 detail(含版本信息)。

Rules-Applied: R12
2026-07-03 13:37:22 +09:00
lanrtop
965d095820 chore(release): v0.1.18
All checks were successful
Release / release (push) Successful in 4m18s
2026-07-03 13:24:32 +09:00
lanrtop
6efde66c42 feat(onboarding): T1 模板版本化三态分发 + B1 CONVENTIONS 1.10.0(R12/R13) + B2 agent 按钮章节
- dispatch_versioned:不存在写全新 / 有标记同版本跳过 / 版本不同原位升级块 / 无标记末尾追加块,块外用户内容永不触碰
- AGENTS.md.tmpl 重写为三分区:用户 TODO 区 + ONBOARDING_MANAGED v1.1.0 块(含 agent 按钮与验证路径章节)+ 四支柱防腐元规则
- git-workflow.md.tmpl 全文入管理块 v1.1.0
- CONVENTIONS 升 1.10.0:R12 边界单点实现、R13 验收路径须真实走通(含载体就近选择表)
- lefthook.yml 保持存在即跳过(用户深度定制不适用块机制)

Rules-Applied: R05-skip, R12, R13
2026-07-03 13:23:41 +09:00
lanrtop
e6eb64b21b chore(blueprint): 体系分发落地拆卡——T1 模板版本化升格可派发,B 系列 planned 2026-07-03 13:03:40 +09:00
lanrtop
f1533133f6 chore(blueprint): 体系分发补版本化闭环要求——分发即养殖,模板版本化为前置 2026-07-03 12:57:34 +09:00
lanrtop
4d73c94f09 chore(blueprint): agent 按钮体系分发 concept——四管道四资产,子项目出厂即带范式 2026-07-03 12:47:19 +09:00
lanrtop
177bbdc782 chore(blueprint): 能力双投影补侦察驻军原则与双消费者洞察 2026-07-03 12:38:35 +09:00
lanrtop
b01084c628 chore(blueprint): 能力双投影补载体选择原则——子项目不需要 MCP 2026-07-03 12:26:24 +09:00
lanrtop
ef7c7a4645 chore(blueprint): 能力双投影补工具预算约束——防 tool bloat 的准入分级 2026-07-03 12:19:02 +09:00
lanrtop
8c8423e0a4 feat(mcp): 治理三件套的 agent 投影——能力双投影首次实践
get_blueprint_status / generate_blueprint_prompt / sync_blueprint_rules
注册为 MCP 工具,与 UI 治理按钮共享同一后端函数(统一验证路径空间)。
工具描述声明对应 UI 按钮与使用约束。agent 从此可走正规流程完成
"拿提示词 → 子项目执行 → 验证蓝图"闭环,不再绕道。

Rules-Applied: R01, R10
2026-07-03 11:29:28 +09:00
lanrtop
7b0f8e60bb chore(blueprint): 能力双投影 concept 卡——UI 按钮↔MCP 工具对齐(R12 候选) 2026-07-03 11:21:04 +09:00
lanrtop
d4cb3c0567 fix(blueprint): 提示词嵌入 manifest 硬约束骨架——防子项目 AI 产出非法格式
noteapp 事故:新导入项目执行"更新蓝图描绘"后 manifest 解析失败
(missing field area)——子项目 AI 写出 project:/stable/in-progress/
depends_on 等自造格式。根因:CONVENTIONS 全文 900+ 行随提示词下发,
manifest 规范埋在中间被忽略,且无"现有文件不合法必须重写"指令。

init/sync 双模板注入就近的严格 schema 骨架:合法字段清单、status 枚举、
非法示例点名、强制重写指令。

Rules-Applied: R02, R10
2026-07-03 10:37:18 +09:00
lanrtop
5e2e899075 chore(blueprint): G7 实战复盘——scope/参数命名/大文件三坑与检测盲区 2026-07-03 10:21:01 +09:00
lanrtop
4cd941c975 feat(gitea): G7 一键接线——新建仓库后本地 init/origin/首推一键完成
绑定完成但本地未连通时(无 .git 或无 origin),Gitea 绑定区显示接线引导:
- 无 git → init + 首次提交 + 关联 origin + 推送
- 有 git 无 origin → 关联 origin + 推送当前分支
复用 publish.rs 存量命令(git_init_and_commit/git_remote_set/git_push),
补齐 GitHub 退役时遗落的"本地接线"半程(接线/放风筝边界裁决的落地)。

Rules-Applied: R01
2026-07-03 10:04:31 +09:00
lanrtop
09410cc35f chore(blueprint): 建仓边界裁决(接线/放风筝)+ G7 一键接线卡 2026-07-03 09:56:19 +09:00
lanrtop
a9805f70f9 fix(gitea): giteaUpdateInstance 参数命名不匹配——更新静默失效
前端展开 snake_case 字段(access_token),Tauri 命令层按 camelCase
(accessToken)匹配,参数被静默丢弃,后端视为未提供而跳过更新且返回
成功——UI 显示"已更新"但 DB 未变(改 Token 实测 401 暴露)。
显式映射为 camelCase 修复。

Rules-Applied: R08, R10
2026-07-03 09:45:01 +09:00
lanrtop
b7008a132e fix(gitea): 建仓需 write:user scope——实例支持改 Token + 权限提示补全
- Gitea 的 POST /user/repos 归 write:user scope(403 实测,R10:以实际
  行为为准),此前权限指导只给了 read:user 导致新建仓库失败
- GiteaInstancesSection 新增「改 Token」内联编辑(此前无入口,删除实例
  重建会级联丢失全部仓库绑定)
- 添加实例的 placeholder 补权限要求说明

Rules-Applied: R08, R10
2026-07-03 09:38:31 +09:00
lanrtop
1d068d188c fix(agent-infra): 空契约项目点击生成三件套无反馈——移除静默 return
UI 承诺"未检测到框架特征,可直接生成空模板",但 handleGenerate 遇到
空契约列表直接静默 return,点击无任何反馈(autoforphone 项目实测)。
后端本就支持空 contracts 生成空模板骨架,删除前端多余 guard 即可。

Rules-Applied: R08
2026-07-03 09:31:57 +09:00
lanrtop
3692b00480 chore(blueprint): 双工作区诊断错误复盘——用户纠错,git 同源取证,sha 主键边界记录 2026-07-03 09:10:40 +09:00
lanrtop
23de433ee4 fix(agent-infra): 生成结果补 commit 提示 + 合并 enterprise 双 project_id 数据
- AgentInfraPanel 生成结果区新增提示:文件需 git commit 后腐化评分才生效
  (与诊断指引死循环修复同源,闭合最后一处引导缺口)
- 数据修复:enterprise-system 废弃工作区(无路径的重复注册)的 50 条
  commit_metrics 迁移到真实 project_id,跨项目聚合不再把它算成两个项目

Rules-Applied: R11
2026-07-03 09:02:46 +09:00
lanrtop
4f5cf431f6 fix(agent-infra): 腐化诊断修复指引死循环——明示评分基于 git 提交时间
用户按指引"重新生成三件套"两轮无法清除红色诊断:生成只改工作区文件,
而评分比较的是 git 提交时间戳。修复指引现明确要求 commit。
enterprise-system 实测:commit project-context.yaml 后诊断转绿。

Rules-Applied: R11
2026-07-03 08:55:15 +09:00
lanrtop
f3b45d55a3 chore(blueprint): 接入包模板演进分发 concept 卡——存量项目触达缺口 2026-07-03 00:34:46 +09:00
lanrtop
03a430fc78 chore(blueprint): 工作流两档制裁决——/ship 按项目画像分档投放,选择进入置信度体系 2026-07-02 23:01:59 +09:00