100 Commits

Author SHA1 Message Date
LukeMackin
c1a9e40d0a feat: 离线APK—Android Bridge本地执行(exec/listFiles/sysinfo) 2026-07-22 21:32:40 +08:00
LukeMackin
323fd62ed4 fix: 审查—删除shell.html+MainApplication+清理manifest 2026-07-22 21:23:21 +08:00
LukeMackin
5cf0cf40e3 fix: allowUniversalAccessFromFileURLs(CORS审查) 2026-07-22 21:13:39 +08:00
LukeMackin
d851c25edf fix: MainActivity→ReactActivity(AS中MakeProject即可运行) 2026-07-22 21:04:02 +08:00
LukeMackin
b04238892d feat: shell.html—本地HTML加载Expo web bundle(safe) 2026-07-22 21:02:06 +08:00
LukeMackin
d75ed790cc fix: WebView加载index.bundle(Expo bundle URL替代manifest JSON) 2026-07-22 20:58:05 +08:00
LukeMackin
09457ed730 fix: exec命令正则放宽—允许全部ASCII可打印字符(引号/管道等) 2026-07-22 20:55:57 +08:00
LukeMackin
cd62fd8fe4 fix: UTF-16→UTF-8编码修复+BOM清除→BUILD SUCCESSFUL 2026-07-22 20:48:54 +08:00
LukeMackin
c6ab70aaca feat: 恢复RN prebuild配置—MainActivity+MainApplication+Gradle
→AS中File→Open android/→Sync Project→Make Project
→APK内嵌ReactActivity+App.tsx(Chat+Terminal)
2026-07-22 20:38:41 +08:00
LukeMackin
282bc79510 fix: exec默认cwd也走safePath(审查) 2026-07-22 20:30:04 +08:00
LukeMackin
37c6605582 fix: 完全重写tools.ts—safePath全部到位+命令净化+启动验证通过 2026-07-22 20:24:05 +08:00
LukeMackin
fcfedf1ae0 fix: 安全CRITICAL—exec用净化命令+file_read/write/move全加safePath 2026-07-22 20:19:20 +08:00
LukeMackin
12e00bf683 fix: 安全—路径沙箱+命令字符过滤+移除unused spire
- safePath(): resolve→startsWith(BASE_DIR)防路径遍历
- sanitizeCommand(): 拒绝;&|$(){}等shell元字符
- 移除unused import(spawn,DeviceIdentity)
2026-07-22 20:12:05 +08:00
LukeMackin
9f912da9fd feat: MCP Server运行成功—stdio传输+7个Tool+Zod schema
- StdioServerTransport(stdin/stdout标准MCP协议)
- Zod schema注册(file_list/read/write/move/exec/process_list/sysinfo)
- pnpm install完成+SDK依赖解析
- 添加zod依赖
2026-07-22 20:06:40 +08:00
LukeMackin
3d82964075 chore: 清理未用import 2026-07-22 19:39:31 +08:00
LukeMackin
490201f0d4 fix: 审查阻断—移除MainApplication引用+cleartext+SYSTEM_ALERT_WINDOW 2026-07-22 19:37:51 +08:00
LukeMackin
e29e0f7e36 fix: dependencies语法修复+移除重复includeBuild(审查阻断) 2026-07-22 19:23:53 +08:00
LukeMackin
ffb74262e9 chore: 移除expo-updates依赖+清理BOM 2026-07-22 18:25:20 +08:00
LukeMackin
4db4b6c0f3 fix: 移除expo-updates插件(已用WebView OTA取代) 2026-07-22 18:21:53 +08:00
LukeMackin
09fde0501f fix: 审查修复—cleartext+package.json main+dead HTML+comment 2026-07-22 18:21:42 +08:00
LukeMackin
ce7204b016 fix: Rules of Hooks — Terminal state提升到App顶层
- 移除JSX内IIFE(违反Rules of Hooks)
- termCmd/termOut/termRunning→App顶层useState
- 切换标签不再触发hook数量变化
2026-07-22 17:56:15 +08:00
LukeMackin
02967ae5c3 fix: Terminal阻塞修复—cmd state+onPress+fetch /tools/exec
- IIFE内useState: cmd/out/running
- Run按钮→POST /tools/exec→显示stdout/stderr
- onSubmitEditing键盘发送
- loading disabled反馈
2026-07-22 17:53:44 +08:00
LukeMackin
c407f6c483 feat: Terminal Tab — 远程exec命令执行界面
- Terminal标签: 命令输入+Run按钮+输出区域
- 等宽字体+绿字黑底终端风格
- 5个Tab: Chat/Term/Gateway/Device/Connection
2026-07-22 17:51:49 +08:00
LukeMackin
aa45b258b2 feat: Android客户端—Chat聊天界面+状态指示器
- Chat Tab: 消息列表+输入框+发送按钮
- POST /chat 与Gateway通信(支持Error显示)
- 右上角连接状态圆点(绿/黄/红/灰)
- 底部Connection Tab独立状态管理
- KeyboardAvoidingView键盘适配
2026-07-22 17:50:33 +08:00
LukeMackin
93ca593f1b fix: 审查阻断 — BOM+信号时序+unused import+exit前等待 2026-07-22 17:33:52 +08:00
LukeMackin
bca14ebe7b feat: U-001 设置页面 — Gateway/Device/Connection三标签
- Gateway标签: URL配置+心跳间隔+日志级别+自动连接
- Device标签: 设备名称+信息卡片
- Connection标签: 状态指示器+连接/断开按钮
- 引用@yuzu-gca/shared的DEFAULT_GATEWAY_CONFIG
2026-07-22 17:30:18 +08:00
LukeMackin
34ead6e471 feat: C-015+P-006/008/009 Gateway连接生命周期
- connection.ts: ConnectionManager(注册/心跳/重连)
- checkConnectivity+P-006: /health HEAD探测
- registerWithGateway: POST /devices/register
- sendHeartbeat+P-008: 15s心跳 POST /devices/:id/heartbeat
- backoffDelay+P-009: 指数退避+30%抖动
- main.ts: bootstrap后启动ConnectionManager
- SIGINT/SIGTERM优雅关闭
2026-07-22 17:29:21 +08:00
LukeMackin
8c1ba243b5 chore: server包package.json+tsconfig 2026-07-22 17:24:52 +08:00
LukeMackin
8d8d99acdd fix: 审查修复 — import清理+capabilities匹配+placeholder加required 2026-07-22 17:24:08 +08:00
LukeMackin
f85ce9aa43 feat: P0 — MCP Tool类型(36) + Server框架 + 7个核心Tool实现
S-001: packages/shared/src/mcp/tools.ts — 36 Tool接口定义(10模块)
S-002: packages/shared/src/mcp/config.ts — DeviceConfig/Gateway类型
C-001: packages/server/src/index.ts — MCP Server框架+SSE传输
C-002~011: packages/server/src/tools.ts — 7个P0核心Tool
  - file_list, file_read, file_write, file_move
  - exec, process_list, sysinfo
packages/server/src/main.ts — 入口, 环境变量配置
2026-07-22 17:20:38 +08:00
LukeMackin
a98d35cb1c fix: versionCode match失败时跳过(避免curCode=0误报) 2026-07-22 16:50:59 +08:00
LukeMackin
e209db6be8 fix: APK阈值动态提取ver span末尾数字(审查建议) 2026-07-22 16:48:29 +08:00
LukeMackin
c41a3ad9d9 feat: frame.html 加入 APK 版本检测
- checkUpdate 读取 j.apk.versionCode
- 如果>5(当前版本),显示Download APK链接
- apkLink div在下载按钮下方
- BUILD SUCCESSFUL
2026-07-22 16:46:17 +08:00
LukeMackin
7e2f2ebfbd fix: body overflow-x:hidden 修复错位+SHA256同步 2026-07-22 12:30:43 +08:00
LukeMackin
3a1058d10c chore: 清理tmp_js.js 2026-07-22 01:09:42 +08:00
LukeMackin
b5bcf8e9c0 fix: UTF-8 BOM+loadDataWithBaseURL(utf-8)修复乱码
- frame.html/index.html 添加 UTF-8 BOM (EF BB BF)
- loadDataWithBaseURL 显式设置 utf-8 编码
- WebView 以此识别中文内容
2026-07-22 00:59:03 +08:00
LukeMackin
337c49f1f9 fix: 改回loadUrl(file://frame.html) - loadDataWithBaseURL导致乱码
- 框架APK始用loadUrl,避免MIME/编码问题
- 缓存HTML仍用loadDataWithBaseURL
- 恢复<!DOCTYPE html>
2026-07-22 00:53:39 +08:00
LukeMackin
db0bc85609 fix: 移除DOCTYPE(loadDataWithBaseURL兼容) 2026-07-22 00:49:41 +08:00
LukeMackin
7f7b75c0fc fix: 审查阻断修复 — cache加载+TBD校验+路径安全
1. 恢复cacheFile.exists()→加载缓存HTML(OTA链路修复)
2. TBD/零哈希双重拒绝(/^(0{64}|TBD)/)
3. fetchText双次替换..防止绕过
4. BUILD SUCCESSFUL
2026-07-22 00:46:55 +08:00
LukeMackin
e9bcb7d804 fix: MainActivity精简+frame.html骨架页[V5]标记
- 移除cacheFile逻辑,始终加载frame.html
- loadDataWithBaseURL避免WebView缓存
- frame.html添加[V5]标记区分版本
- Bridge保留(manifest/fetchText/sha256)
2026-07-22 00:43:06 +08:00
LukeMackin
4b4103cf06 fix: 审查阻塞修复 — SHA256 TBD占位+beta/nightly→stable+硬编码channel+路径校验
- manifest.json: beta/nightly h5.url → index-stable.html
- SHA256: TBD占位(build后push-hotfix.sh更新)
- index-stable: ver元素用channel变量, match?.[1]防御
- fetchText: 过滤..防止路径遍历
2026-07-22 00:25:40 +08:00
LukeMackin
439c9066e2 feat: OTA四层架构 — manifest.json统一+渠道默认stable
- manifest.json: stable/beta/nightly三渠道H5+APK统一
- version.txt: 指向manifest.json URL
- v5嵌入页: channel默认stable, localStorage.channel可切换
- Bridge.fetchManifest: 自动读manifest.json解析对应渠道
- index-stable/beta/nightly: 业务页(开发期beta/nightly→stable)
- 删除旧版index-v6/v7
- 构建成功
2026-07-22 00:22:12 +08:00
LukeMackin
a4fa268b9f refactor: ota目录优化 — h5-manifest-*.json移至根+更新Bridge URL
- ota/h5/manifest-*.json → ota/h5-manifest-*.json
- MainActivity.kt: fetchManifest URL更新
- APK manifest + h5 manifest命名冲突消除
2026-07-21 23:13:57 +08:00
LukeMackin
39d7e82a55 fix: v6页checkUpdate+applyUpdate全用Bridge(移除fetch+CSP误伤) 2026-07-21 23:07:45 +08:00
LukeMackin
f56024f7c0 fix: v5页checkUpdate改用Bridge.fetchText(移除fetch) 2026-07-21 23:05:04 +08:00
LukeMackin
b88311a2d0 security: Bridge代理fetch+移除跨域设置+CSP头限制
CRITICAL修复:
- 移除allowFileAccessFromFileURLs/allowUniversalAccessFromFileURLs
- 移除mixedContentMode=ALWAYS_ALLOW
- WebViewClient注入CSP: default-src 'none';script-src 'unsafe-inline';connect-src 'none'
- 新增Bridge.fetchManifest(channel)/Bridge.fetchText(path)原生HTTP代理
- manifest JSON + version.txt通过Bridge读取,无需WebView跨域
2026-07-21 23:02:00 +08:00
LukeMackin
db8cfdf6e3 fix: loadDataWithBaseURL改回file:///android_asset/基址 2026-07-21 22:52:15 +08:00
LukeMackin
bb1e9ede2a fix: loadDataWithBaseURL base null→about:blank允许fetch跨域 2026-07-21 22:50:29 +08:00
LukeMackin
f9d5d32785 security: SHA256强制+dlUrl域名校验+缓存大小限制(500KB)
- saveCache: >500KB拒绝写入
- index.html: SHA256缺失时拒绝(不再静默跳过)
- index.html: dlUrl域名校验(dlUrl.indexOf(BASE)===0)
- 审查建议全部修复
2026-07-21 20:39:47 +08:00
LukeMackin
67adde25a4 security: SHA256校验通过Android Bridge(Java侧计算)
- Bridge.sha256() 用 MessageDigest 计算
- JS下载后 Android.sha256(t) 比对 version.txt 哈希
- version.txt 恢复三列: ver|url|sha256
- 避免 Web Crypto API 在 file:// 域不可用问题
2026-07-21 20:30:55 +08:00