lanrtop
97578b2261
feat(onboard/parity): 一键接入 MCP 与 Tauri 投影、Codex 信任计 pending_user 与仓库布局说明(P8e)
...
Push & PR Check / check (push) Successful in 1m27s
Push & PR Check / check (pull_request) Successful in 1m6s
- MCP 新增 plan_onboarding(readOnly)与 onboard_project(幂等写操作):schema 各自单独成函数,
dispatch 一行委托到 mcp_inject 生产入口(中间只做 JSON 类型解析);全局与项目路由都可见,
项目路由强制本项目、跨项目返回 scope_violation;onboard_project required 含 expected_digest
与 confirmed;共用可选选项 bypass_permissions / skip_targets;进 STRUCTURED_TOOLS 并给一行摘要
- Tauri 新增同名 async 命令(async fn + spawn_blocking),commands.ts 同步 OnboardOptions、
OnboardingPlan、OnboardReport 类型与 planOnboarding / onboardProject 封装
- 统筹决定(P8d 审查 ⑩):L1 Codex 列仅因 codex_project_untrusted 未就绪的格不计入 done,
completion 单列「Codex 信任」(pending_user),next_actions 保留 codex_trust;仓库子目录与
worktree 补 next_action repo_layout 说明为何到不了 done;非 git 维持不能 done
- 契约同步:project-context.yaml、agent-button-system.md、AGENTS.md 架构速查;P8d 卡记统筹决定落地
- cargo test 413 passed / 0 failed / 6 ignored;pnpm typecheck、pnpm test 通过;三轮 10 处变异全部被杀
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 19:50:21 +09:00
lanrtop
5b804bb967
feat(onboard/parity): L1 零模型三端检查 probe_client_parity(P4a)
...
Push & PR Check / check (push) Successful in 1m3s
新增 onboard::probe_l1:不调用模型、零额度,按 Claude Code、Codex、DSH
各自实际生效的配置给出 A–F × 三端矩阵,每格带状态、证据等级与归因。
- 客户端自省:Claude 在项目目录 claude mcp get 取生效条目,再以坏模型名
跑 claude -p(只挂该条目、读到 system/init 即止)取 skills/工具/连接状态;
Codex 用 codex mcp get --json(看不到条目而项目有配置 → codex_project_untrusted);
DSH 读托管块白名单并核对会话插件 sha256,版本读安装包 app.asar。
- 认证链重放:按客户端方式执行稳定 shim 取认证头(只在进程内使用),
在该端配置的地址上 initialize(clientInfo=lian-jing-l1-probe)、tools/list
(与 tools_list_result_for_project 比对)、get_diagnostics、
list_project_dev_variables、read_project_test_account(LJ_PROBE_<nonce>)。
归因 shim_missing / helper_failed / auth_failed / unreachable / route_global 等;
未安装记 not_installed,控制面 Claude 与 DSH 记 not_applicable,均不计失败。
- 进程、HTTP、客户端定位经 ProcessRunner / McpHttp / ClientLocator 注入;
ClientAdapter 新增 l1_facts;本体入口 mcp_inject::probe_client_parity。
- 投影:MCP probe_client_parity(仅全局路由,readOnly)、Tauri async command、
commands.ts 类型与封装;mcp_server 不把 l1 探针计入真实客户端初始化。
- T1:project-context.yaml 补 MCP 工具与 Tauri command 契约;蓝图 P4a 记实现与验证。
cargo test 349 passed / 0 failed / 6 ignored;pnpm typecheck 通过;
实机冒烟 enterprise 三端 18 格 ready(1.4–1.6 秒)。
Rules-Applied: R01
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:29:56 +09:00
lanrtop
479f4ac2cd
fix(onboard/parity): 处置 P8c 独立审查——Codex 信任改进 next_actions、存在即跳过只判存在、token 步区分 needs_repair(P8c)
...
- Codex 未信任不再并入 blocked:计划新增 codex_trust 与 next_actions 字段,未信任或读不出
Codex 配置只进 next_actions,不阻断、不进 digest;「本机步骤 → 阻断项」抽成纯函数 machine_step_blocker。
- WriteSink 新增 exists():dispatch_one 只判存在,已存在的非 UTF-8 文件(UTF-16 lefthook.yml 等)
恢复为 skipped(修复 apply_onboarding_pack 回归);全托管文件读不出仍记 failed。
- token 步改用只读 mcp_auth_token_state 区分 Present / Missing / NeedsRepair,needs_repair 记 needs_human,
与 get_or_create_mcp_auth_token 的分支一一对应;is_project_injected 仍只作「已接入」判据。
- Codex 信任去掉未验证的祖先目录规则,候选为项目根 + git 主仓库根(worktree 继承主仓库信任);
键解析按 TOML 规则处理字面量键、基本字符串转义、[projects] 内联表与点号键;删掉非法 TOML 的假阳性用例。
- 写入序列只留一份:抽出 write_project_identity_files_with,inject 与 plan 共用;删除 write_project_mcp_files_with。
- digest 绑定 update 文件的写入前哈希(before_sha256),模块文档写明准确语义。
- 新增 WriteFailure,阻断项指向真正出错的文件;本机 codex 步指向 .codex/config.toml,blocked 按(target, reason)去重。
cargo test 318 passed / 0 failed / 5 ignored(新增 7 条),cargo check 0 warning;两轮变异验证均被对应用例捕获。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:53:41 +09:00
lanrtop
ef2c7fd593
feat(onboard/parity): 写入汇 WriteSink 与写入前计划 plan_onboarding(P8c,待独立审查)
...
Push & PR Check / check (push) Successful in 1m2s
一键接入改写子项目受版本管理的文件,人在确认前必须看得到改什么;计划与 apply 走同一段
分发代码、只换写入汇,所以「看到的」就是「将写的」。
- lib.rs:WriteSink trait(read/write,内容忽略行尾未变不写)与 DiskSink
- 接入包模板分发、蓝图规则同步、项目身份与 MCP 投影(context、settings 兼容条目、
liangjing、Codex 托管块)全部改经写入汇;原入口改为 DiskSink 薄包装,行为不变
- onboard/plan.rs:PlanSink 只记录不落盘、后续步骤读到前面步骤的待写内容;
write_project_files 为 plan 与 apply 共用的写入序列;plan_onboarding 给出逐文件
create/update/noop、有上限的 diff、混合文件预警(P10 前移到写入前)、身份冲突、
手写条目与共享项目键阻断项,并对计划算 digest
- mcp_inject:plan_onboarding 生产入口与本机侧预计动作(token、稳定入口、三端只读
状态、Codex 信任),只读、不起子进程
- 新增测试:空仓库全 create 且目录快照字节不变、apply 后两次计划全 noop 且 digest
相同、CRLF 判 noop、内容/本机状态变化 digest 变化、混合文件与身份冲突阻断、
手写 Codex 条目与共享键阻断、记录汇覆盖与撤销、diff 截断、Codex 信任解析;
cargo test 307 passed
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:35:24 +09:00
lanrtop
d1b9b0564e
feat(onboard/parity): 客户端适配器注册表与三端结构化注入结果,onboard 模块投影无关适应度测试(P8b、A1a)
...
Push & PR Check / check (push) Successful in 1m2s
Push & PR Check / check (pull_request) Successful in 59s
一键接入(P8)编排前置:Claude local 与 DSH 托管块的成败原来只写日志,inject_mcp
笼统回「已配置 Codex 与 Claude」,失败会被报成成功(R4)。
- 新增 src-tauri/src/onboard/:ClientId、ClientOutcome(converged/applied/refreshed/
removed/manual_kept/other_project/not_installed/skipped/missing/unavailable/
needs_human/failed)、ClientAdapter(detect/static_status/apply)与 registry();
适应度测试 onboard_module_is_projection_free 机器校验本体不依赖投影层
- 三端适配器实现在 mcp_inject,注册表反向接入;注入经 registry() 逐端 apply,
新增 inject_project_mcp_report,inject_project_mcp 签名与「Codex 失败即整体失败」
语义不变
- sync_claude_local / ensure_dsh_patch 抽出依赖注入版,每条分支返回结构化结果,
日志类别与文案不变;upsert_codex_mcp_config 返回 converged/applied/manual_kept
- verify_onboarding(MCP)附加 clients 只读三端状态,不计入 checks、不影响 pass;
inject_mcp 回执逐端列出实际结果
- 行为变化(有意):Codex 手写同名 server 改记 manual_kept 不再阻断 Claude/DSH;
WSL 项目 Claude local 记 skipped 不再起 CLI
- 新增 9 条测试(假 CLI 覆盖 Claude 全部分支、临时 DSH 目录四态);cargo test
295 passed;契约同步 project-context.yaml,AGENTS.md 架构速查补 onboard/
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:25:04 +09:00
lanrtop
3095df3d2a
feat(mcp/envoy): 使者回传闭环——回执 + 三端回传入口
...
回传只进不出:list_envoy_returns 无处置状态、LIMIT 50 把更早的回传静默挤掉;
入口只有 Claude /envoy,08-23 后 enterprise 主力转 DSH/Codex 即零回传。
- envoy.rs 业务本体(连接注入)+ envoy_dispositions 回执表(migrate 补表)
- report_envoy_return(项目级,Claude/Codex/DSH 在项目地址均可用):字段枚举校验、
内容压单行限长、兜底拒绝明显凭据;同项目 1 天内同内容未处置幂等返回原编号
(IMMEDIATE 事务防并发重复);复用 append_project_note 的档案双写
- resolve_envoy_return(控制面):landed/carded 必填落点、reason 必填、允许更正
- list_envoy_returns 默认只列未处置(带编号),附已处置计数,超出展示上限明说;
LEFT JOIN 不再丢掉登记已删项目的回传;include_resolved 可审计回执
- lian-jing skill 新增「遇到摩擦时回传炼境」;/envoy 改为指向该入口的薄指引
(保留扫描与分类硬门槛,炼境分发物出错免门槛,身份改读 .lian-jing/context.json);
AGENTS 托管块加一行指路(1.9.0→1.10.0),能力包 base-onboarding 1.6.0→1.7.0
- 删除炼境仓库内 Codex 迁移遗留的 source-command-envoy 技能(读旧身份文件、走旧写入路径)
- 契约与架构文档同步:project-context.yaml、project-brief.md、AGENTS.md、agents-meta-rules.md
Rules-Applied: R05,R06,R12
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 01:15:40 +09:00
lanrtop
019d81c60e
fix(onboarding): 审查修复——JSON 按语义比较,CI workflow 与生成文件同内容不重写
...
Push & PR Check / check (pull_request) Successful in 1m3s
对抗审查(9 个 agent,2 条成立):
- settings.json / context.json 改为按 JSON 语义比较:Claude Code 改写后键序与末尾换行不同,
按文本比较仍会让每次注入整文件重排
- plan_cicd_workflow 忽略行尾判 noop:原按字节比较,autocrlf 检出的同内容 workflow 会被判 update,
并请用户确认一次无变化的写入;apply 与 generate_workflow 只在内容变化时落盘
- 同类遗漏统一改用 write_if_content_changed:agent_infra 生成文件(未变时报 skipped)、notes-archive 回填
- lib.rs 抽出 same_text_ignoring_eol,与 write_if_content_changed 共用同一比较规则
验证:cargo test 245 passed / 5 ignored(新增 JSON 语义与 CI CRLF 回归断言)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:51:33 +09:00
lanrtop
d098905f28
fix(onboarding): 接入写入幂等——内容不变不重写,Codex 托管块不再累积空行
...
enterprise 未提交改动归属梳理发现两处炼境侧缺陷:
- Codex 托管块自带结尾换行,又原样保留 END 之后的换行,每次注入多一个空行(enterprise 已累积 16 行)
- sync_blueprint_rules 与注入在内容不变时也用 LF 重写文件:子项目开 core.autocrlf,CRLF 检出的
同内容文件被 git status 误报为改动,修改时间也被刷新,干扰改动归属判断
修复:
- lib.rs 新增 write_if_content_changed(忽略行尾比较,内容不变不写)
- sync_blueprint_rules 的 CONVENTIONS 与 AGENTS/CLAUDE 托管块、context.json、.claude/settings.json、
Codex 托管块统一改用它;托管块未变时返回 unchanged
- Codex 托管块写入吸收 END 之后的空行,块外后续内容以一个空行分隔
- 蓝图记 P3b(本修复)、P10(接入包升级前检测块外未提交改动,待做),P9 补可行性实测记录
验证:cargo test 246 passed;实测 enterprise 注入后 .codex/config.toml 末尾空行 16→0,
再次注入四个托管文件修改时间均不变。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:35:18 +09:00
lanrtop
e4214cd839
fix(mcp/parity): 第二轮审查修复——串行同步队列、白名单持久剔除、诊断分类
...
- Claude local 同步统一投递到单个后台串行队列(注册与移除同队列、按提交顺序),
消除并发 claude CLI 竞态与「注入后立即移除」留下孤儿条目;移除路径不再阻塞界面
- DSH 白名单只收有项目 token 的项目,退组/移除后剔除持久;控制面项目写 null 停止哨兵,
不再越过它匹配到已登记的上级目录;Rust 与 JS 两端键规范化对齐(重复分隔符、盘符根、UNC)
- 客户端侧同步日志改为 mcp_client_sync 分类,不覆盖诊断中每个项目的注入结果
- 批量重注入只在末尾刷新一次 DSH;启动刷新移到后台线程
- 项目根目录/平台变更时迁移客户端配置(清旧根 Claude 条目,已接入项目在新根重新注入)
- SSE 消息路由仅在会话属于该项目时才移除;注入模块的进程调用统一 silent_cmd
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:39:23 +09:00
lanrtop
0c40e1a5c9
fix(mcp/parity): 对抗审查 9 项修复——控制面保留全局、DSH 改登记白名单
...
- 控制面项目(context.json mcp_scope=global,炼境自身已声明)不写 Claude local 条目、
不入 DSH 白名单,避免遮蔽全局注册与跨项目工具(审查 high)
- DSH 托管块内嵌炼境登记的「项目根目录→project_id」白名单,不再以任意目录里的
context.json 作为取 token 依据;LOCALAPPDATA/SystemRoot 须为绝对路径
- remove_project_mcp 同步清理 Claude local 条目并剔除 DSH 白名单;SSE 消息路由复核登记
- Claude local 只替换炼境托管条目,手写不覆盖,替换失败回滚;改走 silent_cmd 并移至后台线程
- 手写 DSH 条目改用 serde_yaml 检测(引号/注释/流式写法),无法解析时保守拒绝
- shim 中 exe 路径的 % 转义为 %%;注入日志 context 统一为 JSON,诊断查询防御非 JSON 行
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:48:41 +09:00
lanrtop
ebf43d71c0
feat(mcp/parity): 三端经稳定 helper 入口连项目专用地址
...
- P3:炼境启动写 %LOCALAPPDATA%\lian-jing\bin\lianjing-mcp-header.cmd 指向当前 exe;
Codex 项目配置改为引用该入口,不再写本机 exe 绝对路径;verify_onboarding 对旧写法报可升级
- P1:inject_mcp 以 local scope 为 Claude 注册项目专用地址 + headersHelper(不进仓库);
DSH 机器级补丁写托管块,!!js 按启动目录选项目地址并经 cmd 调用同一入口,项目外回退全局
- 服务端:scoped route 拒绝未登记的 project_id(404,数据库不可用同样拒绝)
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:40:08 +09:00
lanrtop
663a723b3b
feat(dev-variables): 修改时显式查看原值,并提示 agent 先查炼境测试账户
...
Push & PR Check / check (push) Successful in 1m5s
Push & PR Check / check (pull_request) Successful in 1m9s
- V12:新增人用 Tauri command reveal_project_dev_variable(不进 MCP),
点「修改」预填原账号与密码,密码默认遮罩可切换显示
- V13:lian-jing skill 新增第 8 步——需要测试账号先 list/read,
没有则登记并请用户在 UI 填写;禁止对话索要明文;base-onboarding 升至 1.5.0
- 契约同步 project-context.yaml;materialize 提案顺延为 V14–V16
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 14:22:54 +09:00
lanrtop
d926591ace
feat(dev-variables/ui): 一张卡填写测试账号和密码
...
项目面板一次提交两个字段到同一 Tauri 本体,列表与 React Query 仅保留非秘密状态。
Rules-Applied: R01,R08
Feature-Confirmed: true
2026-09-28 01:45:49 +09:00
lanrtop
2b65c18193
feat(resource/dev-variables): add protected project variable core and scoped MCP
...
Keep values in Windows Credential Manager, require a project bearer for single-value reads, and preserve existing non-secret MCP behavior.
Feature-Confirmed: true
Rules-Applied: R01,R03,R05,R06,R07,R10,R12,R13
2026-09-26 16:46:55 +09:00
lanrtop
3a560f149e
feat(resource/broker): 实现受保护凭证代办与项目 readiness
...
Gitea、webhook 与 API Key 以受保护引用替代常态明文输出;旧值先备份并校验后可恢复迁移,MCP 仅提供项目只读状态。
Rules-Applied: R01,R05,R06,R07,R10
Feature-Confirmed: true
2026-09-23 18:45:30 +09:00
lanrtop
327f3d78ab
feat(agent/access): 强化项目级运行态接入
...
MCP 改为 loopback 并绑定项目 scope,补齐越界拒绝、风险元数据和结构化状态。
新增分层 readiness、配置迁移与设置页投影;正式安装版可选择登录自启动,debug 与非安装路径明确拒绝。
Feature-Confirmed: true
Rules-Applied: R01,R06,R07,R08,R10,R12,R13
2026-09-23 03:21:38 +09:00
lanrtop
806205b8b0
feat(cicd): add safe agent workflow projection
...
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 58s
Add preview-and-apply workflow commands with digest confirmation, project boundary checks, and MCP/Tauri projections. Sync onboarding capability packs and Codex skill guidance.
Feature-Confirmed: true
Rules-Applied: R01,R02,R06,R07,R12,R13
2026-09-22 23:27:34 +09:00
lanrtop
ead35ad12a
feat(toolchain): 增加项目级运行时能力包
...
以 .nvmrc 与 packageManager 作为 Node/pnpm 版本事实,新增 Windows-only 的状态诊断、受控 mise 准备、MCP/Tauri/UI 双投影及 onboarding 自检。
Feature-Confirmed: true
Rules-Applied: R01,R04,R06,R07,R08,R10,R12
2026-09-22 01:08:31 +09:00
lanrtop
6e5d3d89bc
chore(rust): format backend sources
2026-09-21 12:52:37 +09:00
lanrtop
a41161f7d1
feat(mcp): 单一全局 lian-jing 服务器——组级挂载收敛(T1-T3+T5)
...
Push & PR Check / check (push) Successful in 1m4s
T1 服务器层:新增全局 /mcp + /mcp/messages 路由,process_rpc 组上下文
Option 化;旧 /mcp/group/:gid 路由保留过渡,T6 移除。驻军测试 2 条。
T2 工具层:resolve_project_root 按 project_id 直查 project_workspaces,
删除 3 处组归属校验(实测无隔离价值);list_group_projects 改显式传参。
T3 注入层:settings.json 收敛为单 "lian-jing" key(URL /mcp),注入时
清理旧 lian-jing:group-* key;liangjing.json 主动删除 group_id;
启动时一次性迁移(重注入全量 + 清理旧全局注册两种命名格式,标记位防重)。
T5 同步:git-workflow 文档/模板、retro-catchup 技能 Python 兜底、
设置页 URL 展示、mcp-config-inject 模块取代注记。
收益:MCP 客户端配置成本 O(N组)→O(1),授权一次永久生效;
group_id 缺失/过期/移组同步一整类问题从根上消失。
2026-07-06 19:30:01 +09:00
lanrtop
a5cb30734d
feat(flywheel): 返工热区 UI + get_high_risk_scopes 命令,阶段三收官
...
Push & PR Check / check (push) Successful in 50s
Push & PR Check / check (pull_request) Successful in 50s
- risk.rs 新增 Tauri command get_high_risk_scopes(薄包装)+ lib.rs 注册
- commands.ts 封装 HighRiskScope 类型与调用(R01)
- FlywheelPanel 新增「返工热区」块:跨项目返工率降序,
分级配色与 classify_risk 阈值一致(≥35% 红 / ≥15% 琥珀)
- 蓝图:P3-A~E 五卡全部 done,附 L 级复盘笔记,模块 progress 98
Rules-Applied: R01,R13
2026-07-04 14:22:52 +09:00
lanrtop
3b9de9a23c
refactor(mcp)+fix(ci)+fix(test): 三项优化
...
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
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
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
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
lanrtop
d41e0f1707
fix(flywheel): 修复 commit_metrics project_id 双路径冲突,表格能显示所有项目
...
blueprint_buffs 用 UUID 写 commit_metrics,全量导入用名称字符串写,
同一 sha 在 sha PRIMARY KEY 约束下只能存一条,导致全量导入被 INSERT OR IGNORE 全部跳过,
表格无法查到 UUID 格式的历史数据。
修复点:
- ingest_full_git_history 自动查 blueprint_buffs,若该路径已有 UUID project_id 则优先用 UUID
- 新增 get_all_commit_health 命令,SQL 关联 blueprint_buffs / projects 解析名称,不需要前端传 project_ids
- FlywheelPanel 切换到 getAllCommitHealth,表格直接用后端返回的 project_name,无需前端 lookup
2026-06-29 21:21:23 +09:00
lanrtop
9c2064e3d0
feat(flywheel-L0): F1 全量历史导入 + 跨项目 Git 健康度聚合
...
- ingest_full_git_history: 最多 500 条历史,INSERT OR IGNORE 幂等,事务批量写入
- get_project_commit_health: 直接聚合 commit_metrics,返回规范化率/返工率/top_scopes
- 前端 commands.ts 补 IngestResult/ProjectCommitHealth/ScopeActivity 封装
- 新增 4 个单元测试(空项目排除、聚合正确性、scope 排序、写入幂等)
2026-06-29 20:55:11 +09:00
lanrtop
0c5730381d
feat(agent-infra): 卡C——文档腐化评分 + doc_freshness_cache 表
...
scan_doc_freshness():git log 读取契约路径 vs project-context.yaml
时间戳差值,project-context.yaml 不存在直接 RED;结果写入 DB 缓存。
get_doc_freshness_cache():看板读缓存不触发扫描。
10 条单元测试全过。
2026-06-29 18:26:47 +09:00
lanrtop
5e824027e5
feat(agent-infra): 卡B——三件套文件生成
...
generate_agent_infra_files():
- 生成 docs/ai-context/project-context.yaml(含确认后的契约路径)
- 注入 AGENTS.md 元规则段落(已有则跳过,幂等)
- 生成 .claude/rules/doc-freshness.md(含项目特定 globs)
7 条单元测试全过(含生成+幂等验证)
2026-06-29 18:11:30 +09:00
lanrtop
2246df8e2a
feat(agent-infra): 卡A——框架层扫描 + 契约路径推断
...
新增 agent_infra.rs:从 package.json(serde_json)和 Cargo.toml
识别 Drizzle/Prisma/Hono/Axum/tRPC/pnpm-monorepo 等框架,
返回带 confidence 的 DetectedContract 列表;6 条单元测试全过。
前端封装:scanAgentInfraStack(projectPath)
2026-06-29 18:07:40 +09:00
lanrtop
58d2c79c74
feat(onboarding): 接入包数据可信度提示(commit 规范化比例)
...
get_commit_stats 暴露项目 commit 规范化统计(total/conventional/rework);治理面板常驻展示规范化比例 + 返工数,比例 <60% 提示种 lefthook。接入包 A/B/C1/C2/D 全部完成。
2026-06-19 13:52:09 +09:00
lanrtop
5f8b2e8bec
feat(onboarding): 接入包模板分发 + apply_onboarding_pack 后端
...
dispatch_templates 向项目种入 AGENTS.md/lefthook.yml/git-workflow.md 标准模板(蓝本取自 enterprise-system,已通用化),不存在才写、绝不覆盖用户已有;apply_onboarding_pack 组合模板分发 + apply_blueprint_buff 返回 OnboardingReport。含 3 内嵌模板 + 不覆盖单测 + commands.ts 封装。前端 UI 待接。
2026-06-19 13:00:22 +09:00
lanrtop
9660bcbc48
feat: 服务器管理体系 + 云产品扩展 + 源码库 + API密钥管理
...
新增多个核心功能模块(后端 Rust 命令 + 前端 Panel 全部接线完成):
- 服务器注册表:servers.rs + ServerManagerPanel、ProjectServerPanel(项目关联服务器)
- SSH Config 自动同步:ssh_config.rs
- 服务器软件管理:server_software.rs + ServerSoftwareBlock
- 宿主机应用管理:host_apps.rs + HostAppsPanel
- 服务配置管理:service_config.rs + ServiceConfigBlock
- 项目部署信息:deploy_info.rs + DeployInfoPanel
- API密钥管理:api_keys.rs + ApiKeysPanel
- 云产品管理:cloud_products.rs + CloudProductsPanel(含 Docker应用、云数据库实例子模块)
- 源码库:source_library.rs + SourceLibraryPage(分类管理 + 项目详情)
导航栏新增「源码库」入口;蓝图 manifest 同步补录 7 个新模块
2026-04-17 22:25:06 +09:00
lanrtop
6162533c77
feat: 飞轮阶段一 + 项目个人备忘功能
...
飞轮智能成长阶段一:
- 梦核 prompt 注入跨项目复盘笔记,新增【高频陷阱】分析节
- 修复 collect_flywheel_notes 查错表 bug(projects → project_workspaces)
- MCP append_project_note 描述内嵌【复盘】结构化格式,引导 Claude 写标准笔记
- FlywheelStats 新增 project_notes 字段,支持 win_path/wsl_path 两种路径匹配
项目个人备忘(user_project_todos):
- 新表 + 4 个 Rust command,依赖注入写法,6 个单元测试全绿
- UserTodoPanel 组件,📝 按钮展开,支持新增/勾选/删除
CONVENTIONS v1.4.4:新增 Rust 可测试性规范(依赖注入强制要求)
2026-04-11 17:21:47 +09:00
lanrtop
b6e4fbe3fa
feat: 新增 Claude 自主性状态面板,炼境感知 Beast 运行状态
...
- 新增 get_beast_global_status 命令读取全局 Beast 状态(安装情况、当前模式、bash 规则)
- ClaudeConfigModal 改为只读状态展示 + CLI 操作引导,炼境不再写入任何 Claude 配置
- 项目卡片新增 🤖 按钮,对所有项目可见(Beast 是全局状态)
- .claude/settings.json 补充 permissions.defaultMode: acceptEdits
2026-04-11 00:32:07 +09:00
lanrtop
56536effff
feat: P2 CONVENTIONS 动态化——梦核建议可直接写入并分发
...
- 新增用户版 CONVENTIONS 存储层(app_data_dir/conventions/CONVENTIONS.md)
- OnceLock 初始化目录,effective_conventions_content() 用户版优先 fallback 内置
- invalidate_effective_cache() 写入/重置后清除缓存
- 新增三个 Tauri command
- get_user_conventions_status:返回来源(builtin/user)、版本、内容
- save_user_conventions:解析 frontmatter version,写入用户版,自动同步所有项目
- reset_conventions_to_builtin:删除用户版,自动同步回内置版
- sync_blueprint_rules / build_init_prompt / build_sync_prompt / generate_muhe_prompt
全部切换为 effective_conventions_content(),规则更新无需发版
- GovernancePanel 新增规则编辑器 UI
- 来源 badge(内置基线 / 用户自定义)
- 「应用梦核建议」区域:粘贴新内容 + 确认写入 + 同步进度提示
- 「重置为基线」按钮(仅用户版存在时显示)
2026-04-08 03:27:04 +09:00
lanrtop
0065866f6b
fix: 消除 Windows 子进程黑框闪烁,修复 DB 外键迁移
...
- 新增 silent_cmd() 辅助函数,统一添加 CREATE_NO_WINDOW 标志,全量替换 commands/ 中的裸 std::process::Command::new 调用
- 补充 project_tools / activity_log / project_env_tools 外键从 projects 迁移到 project_workspaces 的 migrate 逻辑
- CONVENTIONS.md v1.4.2:补充 files 回填规则和批量执行完整性检查规则
2026-04-08 01:13:53 +09:00
lanrtop
fea43b0b8a
feat: 仪表盘全局快启栏
...
新增 global_tools 表及 CRUD 命令,Dashboard 顶部增加独立的「快启」工具栏,
可配置与项目无关的日常应用。ProjectToolsModal 重构为通用组件,支持注入
自定义 commands / queryKey;ProjectCard 快启行始终显示并内联添加按钮。
2026-04-07 00:46:13 +09:00
lanrtop
30d6823a1f
feat: 蓝图 Buff 系统 v0.1.12
...
炼境可向任意被管理项目施加「蓝图 Buff」,git 提交自动同步任务进度,与 AI 工具热插拔解耦。
- 后端:blueprint_buffs 数据表 + 生命周期命令(apply/remove/get/list)
- 后端:每 5 秒轮询 git HEAD,文件路径匹配任务卡 files 字段,自动标记 📋 →🔵
- 后端:sync 时 Buff 触发飞轮快照,emit blueprint://changed 事件
- 前端:ProjectCard 显示 ⚡ Buff 激活徽章
- 前端:GovernancePanel 新增施加/撤销 Buff 按钮,无蓝图时附带 init prompt
- 前端:BlueprintModal 监听 blueprint://changed,自动刷新并显示「刚刚更新」提示
- 修复:sync prompt 新增 🔵 状态保护规则,防止 Claude 更新时降级炼境自动标记的进度
2026-04-05 01:56:40 +09:00
lanrtop
af88408669
feat: complete project mentor feature with WSL path fix
...
- 新增 project_notes 数据层(T5):DB 迁移 + get/add 命令
- MCP 新增 append_project_note 工具,含 group 归属校验(T6)
- MentorPanel 底部展示 AI 笔记区域(T7)
- 后端全组巡检命令 get_group_mentor_report(T8)
- ManagePage 产品组卡片新增「巡检全组」按钮(T9)
- 启动健康扫描 + App.tsx 顶部告警 Banner(T10)
- 修复 WSL 项目路径检测:wsl_path 为 UNC 格式时
用 unc_to_distro_and_linux() 转换后再调用 wsl 子命令
2026-04-04 23:20:09 +09:00
lanrtop
eb346ae1fd
feat: add runtime diagnostics, health center, and project mentor
...
运行时可观测性:
- 新增 runtime_logs SQLite 表,提供全局 log_event 写入函数(保留最近 500 条)
- mcp_server/mcp_inject/groups 关键路径接入结构化日志
- MCP 新增 get_diagnostics 工具,返回注入摘要与近期错误
- add_group_member 注入失败时前端显示黄色 toast 警告
健康中心:
- 新增 run_health_check 命令(6 项并行检查:MCP/Git 路径/项目路径/GitHub Token/编辑器/DB 延迟)
- 新增质量指标聚合(休眠项目/孤立项目/注入异常组/无路径项目)
- 侧边栏新增健康中心页面,支持手动刷新和诊断报告复制
- 设置页 MCP 状态改为真实 HTTP ping 检测
项目导师:
- 新增 get_mentor_context 后端命令,聚合健康状态/蓝图摘要/近期错误
- MCP 新增 get_project_mentor_context 工具(含产品组归属校验)
- 项目卡片底部新增 🎓 导师按钮,面板支持复制结构化 Markdown 报告
- 修复 WSL 项目路径识别:wsl_path 存 UNC 格式时自动提取 distro 和 Linux 路径,改用 wsl 命令检查路径存在性(规避 Path::exists() 对 \wsl.localhost\... 不可靠的问题)
AI 工作流:
- 新增 AI-WORKFLOW.md、.claude/skills/ 技能体系配置
- 更新 CLAUDE.md 补充蓝图驱动开发规范
2026-04-04 19:58:49 +09:00
lanrtop
c598c9b05b
feat: add BlueprintPromptModal for blueprint management and sync functionality
...
- Implemented BlueprintPromptModal component to handle blueprint prompt generation and rule synchronization.
- Added BlueprintStatusBadge to display the current status of blueprints in ProjectCard.
- Integrated blueprint status fetching and synchronization in ProjectCard.
- Enhanced SettingsPage with a new section for MCP service configuration and batch sync for blueprint rules.
- Updated commands to include new blueprint-related functionalities and types.
- Changed application name from "Dev Manager" to "炼境" in various components.
2026-04-04 10:47:27 +09:00
lanrtop
0cdaa3678c
feat: add Blueprint feature to ProjectCard and commands
...
- Introduced BlueprintModal in ProjectCard for project blueprint visualization.
- Added state management for displaying the BlueprintModal.
- Implemented Blueprint-related interfaces and functions in commands.ts for handling blueprint data.
2026-04-02 19:12:53 +09:00
lanrtop
533c069e43
feat: add WSL editor launch modes and update checking functionality
...
- Introduced WSL editor launch modes in SettingsPage with options for internal, remote, and UNC path launches.
- Enhanced settings saving to include the new WSL launch mode.
- Added an update section to check for application updates, download, and install them with progress tracking.
- Updated Toast component to handle error messages with a copy button for convenience.
- Expanded commands to include project tags and templates management, along with WSL proxy synchronization features.
2026-04-01 23:12:23 +09:00
lanrtop
0baa304fbe
feat: WSL路径支持、项目发布到GitHub、三灯状态指示
...
- 新增发布到GitHub功能(scan/init/commit/push/register全流程)
- 新增WSL发行版检测与UNC路径自动转换,路径存储改为Windows可访问格式
- 修复libgit2访问WSL UNC路径的owner验证问题(启动时全局禁用)
- ProjectCard新增本地项目/本地仓库/远程仓库三灯状态指示
- ProjectModal重构为基本信息+部署信息双标签页,固定高度稳定切换
- 添加项目支持顶部快速选择文件夹并自动填充ID和名称
- 设置页WSL区块改为下拉检测选择发行版
- Dialog组件支持fixedHeight固定高度模式
2026-04-01 01:36:21 +09:00