Commit Graph

123 Commits

Author SHA1 Message Date
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
lanrtop
f9b02f7a34 chore(blueprint): 本项目应用 AGENTS.md 单一来源结构(规则同步产物) 2026-07-02 20:09:53 +09:00
lanrtop
45ce0ad9be chore: 升级版本号至 0.1.17
All checks were successful
Release / release (push) Successful in 4m33s
2026-07-02 20:06:38 +09:00
lanrtop
f4ff83d94e feat(governance): 规则分发跨工具化——AGENTS.md 成为蓝图工作流单一来源
sync_blueprint_rules 改为双文件写入:
- AGENTS.md:完整蓝图工作流 MANAGED 块(开放标准,Qwen/Cursor/Copilot 均读),
  措辞去 Claude 专属化("Claude 应做的"→"AI 应做的",技能引用改为通用流程描述)
- CLAUDE.md:MANAGED 块瘦身为 @AGENTS.md 薄引用(保留 version marker,
  版本检测不受影响),内容永不分叉
- 抽 upsert_managed_block 公共 helper(created/updated/appended 三态),
  附 tempdir 单元测试;SyncResult 新增 agents_md_action

背景:批量同步后发现所有项目只落 CLAUDE.md,跨工具内容被锁进单一工具
私有文件,违反宪章「跨工具单一来源 = AGENTS.md」。
下次批量同步时全部项目自动迁移到新结构(marker 机制天然幂等)。

Rules-Applied: R01, R07
2026-07-02 19:49:22 +09:00
lanrtop
2074225f79 chore(blueprint): cicd-workflow 注记刷新——Gitea Actions 改造已完成 2026-07-02 19:07:11 +09:00
lanrtop
08986130af chore(onboarding): git-workflow 模板补 Rules-Applied trailer 约定——规则数据源扩展到全部接入项目
- 接入包 git-workflow.md.tmpl 新增 trailer 章节:此前只有炼境自身 commit 携带
  规则命中记录,外部项目无此约定,规则有效性数据源仅覆盖 1 个项目;
  随接入包分发后所有项目的 AI 会话都会回传规则命中
- cicd-workflow 模块注记刷新:Gitea Actions 改造完成(R0 实测)

Rules-Applied: R01
2026-07-02 19:06:21 +09:00
lanrtop
033f556268 chore(blueprint): R0 发版链路完成——v0.1.16 经 Gitea Actions 构建上线 OSS 2026-07-02 18:45:56 +09:00
lanrtop
64a114c221 refactor(ui): 「API 密钥」更名「密钥凭据」——名实一致,承载全部凭据类型 2026-07-02 18:41:17 +09:00
lanrtop
75c3cdd8a9 chore(updater): 更换自动更新签名密钥对
All checks were successful
Release / release (push) Successful in 4m43s
旧钥密码丢失(无任何留痕可寻回),按单人场景换钥方案处理:
新钥密码已双写存储(Gitea Secrets + 炼境密钥库)。
本版本(0.1.16)需手动安装一次以内置新公钥,之后自动更新恢复。
2026-07-02 18:39:28 +09:00
lanrtop
8b7038fd1b chore: 升级版本号至 0.1.16
Some checks failed
Release / release (push) Failing after 3m53s
2026-07-02 17:27:08 +09:00
lanrtop
865cd1b17c chore(cicd): 发版链路迁移至 Gitea Actions——本机 act_runner host 模式
- 新增 .gitea/workflows/release.yml:host 模式精简版(本机工具链直用,
  省去 setup-node/pnpm/rust action 减少故障面),构建+签名+OSS 上传逻辑不变
- 删除 .github/workflows/release.yml 死配置(GitHub 已退役,tag 不再推送触发)
- OSS bucket/endpoint/updater 配置全部不变,存量客户端更新链路无感

Rules-Applied: R01
2026-07-02 17:17:33 +09:00
lanrtop
29ff519627 chore(blueprint): gitea 全链路实测验收通过,销掉 G2-G5 复盘头号遗留 2026-07-02 16:58:21 +09:00
lanrtop
6424c3d033 chore(blueprint): R0 发版链路迁移卡——本机 act_runner 修复自动更新断供 2026-07-02 16:40:57 +09:00
lanrtop
8a64b29445 feat(gitea): G6 远端轮询采集——公网 Gitea + 内网炼境拓扑的观测面方案
- poll_all_repos:后台线程每 10 分钟出站拉取所有绑定仓库最新 commit
  (GET /repos/:owner/:repo/commits),record_commit 幂等写入,与本地
  watcher / 全量导入三路径共存不重复计数
- gitea_poll_now 命令 + GiteaPanel「立即拉取」按钮与拓扑说明
- 决策记录:webhook 仅作同网补充,否决 frp 全端口映射(MCP 路由无鉴权,
  27190 保持零公网暴露);飞轮为统计系统,10 分钟延迟无影响

验证:cargo test 67 passed(新增轮询解析 2 测试)、typecheck 全绿

Rules-Applied: R01, R07
2026-07-02 16:36:18 +09:00
lanrtop
de961d0e95 feat(flywheel): Gitea Actions 模板 + Rules-Applied trailer 自吸——规则有效性闭环接通
Gitea Actions workflow 生成(gitea-integration 收官卡):
- generate_workflow 输出 .gitea/workflows/;tauri_oss 模板去掉 GitHub Release
  步骤(发布走 OSS),构建改 pnpm tauri build + 签名环境变量,runs-on 改
  自建 windows runner 标签;CicdModal Secrets 文案改 Gitea 路径
- 单元测试断言模板无 github.com / GITHUB_TOKEN / gh-release 残留

R1 Rules-Applied trailer 被动自吸(flywheel-intelligence):
- smart-commit 技能:commit message 末尾附 Rules-Applied: R01,R06 trailer
  (仅真实触发的规则,防数据污染)
- commit_metrics 新增 rules_applied 列(增量 migration)+ parse_rules_applied
  解析(token 校验/去重/规范化)+ rule_hit_stats 跨项目"命中×返工"聚合
- 梦核 prompt 新增「规则命中×返工交叉」数据段 + 【规则置信度】分析任务
  (升/降 confidence、按 R11 细化边界)——R01-R10 置信度首次有真实数据来源

验证:cargo test 65 passed(新增 7 测试,其中一个抓到 trailer 解析的
? 提前返回 bug)、typecheck 全绿

Rules-Applied: R01, R05, R06, R07
2026-07-02 15:10:26 +09:00
lanrtop
bf697b5e28 feat(ui): 功能区重构阶段二——洞察页 + 全局/项目层级归位(N3/N4/N5)
N3 洞察页三 tab(飞轮/健康中心/全局治理):
   - FlywheelPanel(版本队列/阻塞/停转归档/Git质量/梦核)整体迁出 BlueprintModal
     ——跨项目内容不再寄生单项目弹窗,BlueprintModal 减重 414 行
   - CONVENTIONS 规则来源 + 应用梦核建议迁至全局治理 tab(影响所有项目的操作归全局层)
   - BlueprintModal 侧板只留单项目内容(模块详情/余票/可派发/项目治理)
N4 Gitea 层级归位:实例管理(全局配置)拆为 GiteaInstancesSection 挂设置页;
   项目绑定+webhook 留治理面板,无实例时提示去设置页添加;共用 queryKey 缓存
N5 仓库注册表并入 项目→管理→仓库 tab(RegistryTab 复用),Sidebar 底部入口
   与弹窗死壳移除;总览页更名对齐"跨项目行动项"定位

至此 ui-restructure N1-N5 全部完成:三条公理(名实一致/层级对齐/频率分层)落地。
零后端变更,typecheck 全绿。
2026-07-02 14:51:43 +09:00
lanrtop
bc07dd41bf feat(ui): 功能区重构阶段一——六组导航 + 资源/工具一级页 + 卡片操作分层
信息架构按三公理重排(名实一致/层级对齐/频率分层,设计见 ui-restructure 模块):
- Sidebar 六组:总览/项目/资源/洞察/工具/设置
- 新增资源页(服务器/软件仓库/云产品/API密钥/源码库 5 tab),从"项目管理"
  拆出寄生的资源类 tabs;新增工具页(开发环境/WSL代理 合并)
- Dashboard 看板只留产品组/独立项目;洞察页阶段一暂挂健康中心(N3 扩充)
- ProjectCard 底部 10 个平铺操作收敛为:🗺️蓝图/🎓导师/编辑/动态 + ⋯更多下拉
  (带文字标签收纳 Claude配置/备忘/服务器/CICD/环境扫描/工具管理)

零后端变更:纯组件挂载点迁移,面板组件与 queryKey 原样复用。
阶段二(N3 洞察页扩充 / N4 Gitea 实例迁设置 / N5 仓库注册表归位)已拆卡待启动。
2026-07-02 14:33:55 +09:00
lanrtop
d14b348845 feat(gitea): G2-G5 全链路——建仓/迁移/绑定 + webhook 收发 + 治理面板
G2 控制面:gitea_create_repo / gitea_migrate_repo / gitea_link_repo,
   upsert 绑定(换绑自动重置 webhook 字段),API 错误提取 Gitea message 可读返回
G3 观测面:MCP Server 新增 POST /webhook/gitea/:project_id——HMAC-SHA256 验签
   (X-Gitea-Signature,兼容 X-Hub-Signature-256)→ 解析 commits → 批量
   record_commit(sha 幂等,与本地 watcher 双路径不重复计数);验签失败记 log_event
G4 webhook 注册:gitea_setup_webhook 生成随机 secret 注册 push hook(重设先删旧)、
   gitea_unlink_repo 解绑顺带清理 Gitea 侧 hook
G5 治理面板:GiteaPanel——实例管理(添加/测试/删除)、当前项目三种绑定方式、
   webhook 注册与可复制回调地址、全部绑定概览

依赖:新增 hmac + sha2;project_id 与 commit_metrics 同源(Project.id),
避免双路径冲突复发;R10 修正设计文档错误签名头

验证:cargo test 58 passed(新增 upsert 换绑重置 + hmac 正反向 + payload 解析 5 测试)、
typecheck 全绿
2026-07-02 14:22:49 +09:00
lanrtop
29a066e7e3 chore(conventions): v1.9.0 自洽体检——规则边界结构 + R11 + 状态词汇统一
- CONVENTIONS 1.9.0:规则新增 boundaries/failure_cases 可选字段(失败定边界,
  经验细化为变体而非推翻);新增 R11 自动执行规则失效时必须记录失败案例;
  模块状态表补 abandoned 定义(何时更新蓝图章节早已引用但表中缺失)
- 状态词汇统一:github-auth/github-publish 的 deprecated(未定义状态)→ abandoned,
  BlueprintModal 状态色表补 abandoned 渲染
- 文档防腐:CLAUDE.md 技术栈改为 Gitea(GitHub 已退役);cicd-workflow 模块
  加改造中指针(单一事实来源指向 gitea-integration 的 Gitea Actions 卡)
- 蓝图:R2 卡完成解锁(分发随下次发版生效)
2026-07-02 14:09:09 +09:00
lanrtop
f4dd0e4ea0 chore(blueprint): 蓝图↔Gitea 分工裁决 + R1/R2 飞轮卡 + Gitea Actions 卡升格可派发 2026-07-02 13:35:07 +09:00
lanrtop
289b558278 refactor(github): GitHub 全面退役——免登录 + 发布/导入/同步链路移除 + 凭据去 GitHub 化
D1 免登录改造:App 启动直接进主界面,删 LoginPage/github.rs/OAuth 全套命令、
   Sidebar 账户区与 GitHub OAuth 设置弹窗、健康检查 GitHub Token 项
D2 移除发布/导入/PR/CI 入口:删 PublishModal/ImportRepoModal、ProjectCard 的
   PR compare 链接与 Actions 状态灯、RepoRegistryModal 同步 tab、CicdModal runs tab、
   publish.rs 的 github_create_repo/git_push_to_github
D3 spacesSync 单机化:删 spacesSync/useSpacesSync/SpacesPage/DiscoveryPanel,
   拆除 App→Dashboard→ProjectCard 的 spacesJson 链
D4 git_ops 凭据链重写:ssh agent → git credential helper → gitea_instances token
   前缀匹配 → default,不再依赖 github_token

保留:server_software GitHub 镜像(Releases 下载加速)、gitea_migrate 迁移入口、
cicd.rs(待 Gitea Actions 改造卡);DB 表不删(R05 migration 兼容)

顺带:修复 servers.rs 两个存量测试的 schema 漂移(测试建表缺 deploy_type 列);
      包含会话前未提交的 agent-infra F3(get_agent_health 健康诊断,与 lib.rs/
      commands.ts 物理耦合无法拆分提交)

验证:cargo test 53 passed / typecheck 全绿 / vitest passWithNoTests
2026-07-02 13:15:56 +09:00
lanrtop
dcbf1f9355 feat(gitea): G1 DB schema + 实例 CRUD + 连接测试
新增 gitea_instances / gitea_repos 两张表(db.rs migrate);
实现 save/list/delete/update/test_connection 命令(ureq 调 GET /api/v1/user 验证 token);
gitea_list_linked_repos / gitea_get_repo_link 查询绑定状态;
前端 commands.ts 完整类型封装;4 个单元测试全绿。
2026-06-30 17:44:39 +09:00