Commit Graph

8 Commits

Author SHA1 Message Date
38dcd21352 refactor: P2 清理 - 闭环 check_updates 结果回传 + SDK 文档修正 + DeviceResponse 错误留痕
1. service_manager.rs check_plugin_updates: 返回 Vec<(id, cur, new)>,
   调用处通过 Custom { kind: "plugin_updates" } 广播结果,闭环 HTTP
   调用方获取检查结果的链路 (CLAUDE.md:163 第3项, 王浩然风险3 建议)

2. plugin-sdk/src/lib.rs broadcast 文档: 替换误导性的 WifiProvisioned
   示例为 StateChanged (当前真正闭环的消息),并新增 Phase 2 占位消息
   说明,列出 WifiProvisioned/DeviceEvent/CursorVisibility 三个当前无
   生产者的变体,提醒开发者不要为其编写业务逻辑 (CLAUDE.md:163 第1项)

3. src/plugins/device/mod.rs handle_message: DeviceResponse::Error
   转换时补 eprintln 留痕,避免设备层故障完全静默 (CLAUDE.md:163 第4项,
   王浩然风险3 建议: 至少在一处记录 Error 响应)

未处理项:
- 单实例保护 (锁文件/socket 互斥): 需目标机实测锁行为,留给设备端工程师
- unclutter 僵尸 reap: 核查发现 shutdown() 已做 kill+wait+pkill 兜底,
  仅 SIGKILL 极端场景残留,不值得加 SIGCHLD handler (过度工程)
- CursorVisibility 变体: 删除会破坏示例插件和测试,倾向 Phase 2 统一清理

注: Windows 开发环境缺 dbus/pkg-config, 无法本地 cargo check;
改动经 rust-analyzer 类型检查零诊断, 待目标机验证.
2026-07-04 12:27:35 +08:00
showen
d30c111c71 feat: M1.1 完成 + M1.2 启动 — 全量更新
M1.1 收尾:
- 24项 P0/P1/P2 bug 修复 (Rust 107 tests + Flutter 15 tests)
- Flutter App v0.3: cupertino_icons 修复, 单元测试, 调试面板, APK 52.6MB
- 示例插件完善: manifest.json + 请求/响应示范 + 7个测试
- API 文档重写 (以 routes.rs 为唯一权威)
- MILESTONES.md 更新至 100%

M1.2 启动:
- P0: 插件管理 API 闭环 (handle_manager_message Custom 分支 + broadcast_plugin_states)
- ServiceManager 集成测试 8/8 (tests/m1_2_service_manager.rs)
- M1.2 测试计划 (docs/M1.2_TEST_PLAN.md, 18个E2E场景)
- 动态插件系统: auto_rollback + version_manager GC + 路径穿越防护

总计: Rust 115/115 测试, Flutter 15/15 测试, 零 warning

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 18:12:42 +08:00
showen
f0605196fe feat: Phase2 Task1 — DeviceCommand添加SetCursorVisible + DeviceCapability::Cursor 2026-03-13 07:14:44 +08:00
showen
48d1eeb7c4 feat: plugin-sdk同步Device类型 + example-plugin适配新Message变体 2026-03-13 06:58:28 +08:00
showen
086b4600eb test+docs: 新增4个测试(66总计) + SDK API文档 + 员工soul更新 2026-03-13 05:52:26 +08:00
showen
6067c3f0a2 fix: 修复3个P0遗留 — AutoRollback回退/ConfigReloaded序列化/FfiString跨allocator 2026-03-13 05:15:04 +08:00
showen
99ee78984c feat: 插件自动挂载测试机制 — capabilities + self_test + 3阶段启动
- Plugin trait 增加 capabilities() 和 self_test() 方法
- PluginVTable 增加 get_capabilities 和 self_test FFI
- ServiceManager 三阶段启动: init → self_test → start
- SendCallback 改为 ctx 参数传递,消除 thread_local
- export_plugin! 宏所有 FFI 函数包裹 catch_unwind
- PluginManifest 增加 capabilities/required_capabilities/auto_test
- 新增 3 个自测相关测试用例 (共 59 测试)
2026-03-13 04:31:39 +08:00
showen
7135f28545 feat: 实现动态插件系统 (6阶段完成)
- 阶段1: 消息类型序列化 (Serialize/Deserialize, &'static str → String)
- 阶段2: FFI 边界类型 + Plugin SDK (plugin_abi, showen-plugin-sdk crate)
- 阶段3: PluginLoader + DynamicPlugin (libloading 动态加载 .so)
- 阶段4: 版本管理 + 错误策略 (VersionManager, PluginState, 自动回退)
- 阶段5: 远程仓库客户端 (HTTP 下载 + tar.gz 安装)
- 阶段6: 示例插件 + HTTP 管理 API + 全目录 README 文档

54/54 测试通过,0 warnings。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 03:38:08 +08:00