butubb
|
4d4f0ae666
|
fix: OCR 文字点击落点精度——命中文本块较长时(一行含多段文字)按关键词在文本中的位置比例估算 x,避免点整块中心偏离关键词(tap_text 与任务 OCR 条件共用受益)
|
2026-09-04 14:33:28 +08:00 |
|
butubb
|
44a9dafcd8
|
fix: AI 点击精度优化——①坐标吸附:/api/screen/tap 加 snap=1,MCP de_tap 固定开启(dump UI 树找包含点击点的最小可点击元素点中心,模型坐标偏 20-50px 也点得准,大屏触控不带 snap 行为不变);②新 de_tap_text 语义点击:按屏幕可见文字一次完成找+点(UI 树 textContains/descriptionContains → OCR 中心兜底,WebView/图片文字也能点);③de_tap_element 支持 text_contains/desc_contains 模糊匹配;④de_ui_tree 可点击元素优先 + limit 参数防 token 膨胀;⑤agent 提示词重写:文字语义点击优先、坐标仅纯图形兜底且自动吸附、点击后无变化禁止重复同坐标
|
2026-09-04 14:29:17 +08:00 |
|
butubb
|
e5018c4e45
|
fix: de_foreground_app fallback mFocusedApp(MIUI 过渡期 mCurrentFocus=null 时前台解析为空)
|
2026-09-04 13:52:34 +08:00 |
|
butubb
|
fab7e2b11a
|
feat: MCP 工具补全(9→18)——de_open_app(adb monkey 直启,省 token)/de_stop_app/de_foreground_app/de_type_text(中文直接输入)/de_set_clipboard/de_sleep/de_ocr(屏幕文字识别)/de_list_apps/de_list_tasks;direct_ops 直连封装(adb/u2/OCR/剪贴板轻量通道)
|
2026-09-04 13:48:55 +08:00 |
|
butubb
|
1560a13d86
|
fix: tool_calls 流中断自愈——400 配对错误时移除不完整段重试一次;加消息结构诊断日志
|
2026-09-04 13:43:20 +08:00 |
|
butubb
|
c0c1be05f8
|
fix: 经验保存缺 app context(后台线程 db 报错被吞)——register_blueprints 注入 app,线程内 db 操作包 app_context
|
2026-09-04 13:37:33 +08:00 |
|
butubb
|
1ada51a7f6
|
feat: 自进化经验记忆——任务成功后用模型把工具序列提炼成「操作配方」存入 agent_experience 表;下次相似任务(bigram 相似度检索 top2)自动注入 system prompt 参考,AI 越用越聪明(同类操作不再摸索)
|
2026-09-04 13:33:30 +08:00 |
|
butubb
|
5145f83f06
|
feat: AI 控制台增强——①de_read_clipboard 剪贴板回读工具;②任务可中断(stop_event 循环检查点 + API stop + 前端■停止按钮);③智能滚动(回看历史不被打断,贴底才跟随);④右侧实时画面(MJPEG 流自动跟随操作设备,可手动选择)
|
2026-09-04 13:32:35 +08:00 |
|
butubb
|
44cab88546
|
fix: Agent 步骤上限优化——max_steps 20→40(多步任务如打开抖音搜索),system prompt 加收敛规范(无进展 6 步主动停止总结),超限时无工具收尾请求让模型给有意义总结(不再机械提示);web 超时 600→900s
|
2026-09-04 13:23:04 +08:00 |
|
butubb
|
ce4e5464b9
|
feat: AI 控制台会话化 + 视觉优化——①多轮对话连续性(后端 history 持久化 12 轮,Agent 注入历史上下文,DeepSeek 式会话:新建会话才清空);②聊天区改浅色(DeepSeek 风格,图片文字清晰);③截图点击放大查看
|
2026-09-04 13:18:36 +08:00 |
|
butubb
|
e24458a085
|
feat: AI 控制台升级为顶级 Tab——DeepSeek 风格聊天界面(气泡+流式渲染+思考折叠),实时 MCP 步骤卡片(工具/参数/截图缩略),SSE 流式输出(delta/step/done/error 事件),配置模态(模型/Key/设备前端可配);工具页旧子栏移除
|
2026-09-04 13:09:34 +08:00 |
|
butubb
|
25ef7e7746
|
fix: agent_api 同步 dev(事务/_execute 遮蔽/600s 超时)
|
2026-09-04 13:04:44 +08:00 |
|
butubb
|
19126d1a59
|
fix: Agent MCP 连接短超时(10s 快速失败)+ web 600s 兜底
|
2026-09-04 12:59:32 +08:00 |
|
butubb
|
fea5a57fc3
|
feat(M2): Web AI 控制台——工具页新增子分栏:模型/Key/设备前端可配置(app_meta 存储,key 打码回显),指令执行 + 步骤流轮询(含截图缩略)+ 回答展示;Agent 加 on_step 回调、后台线程单实例运行
|
2026-09-04 12:54:17 +08:00 |
|
butubb
|
02776b12b8
|
feat(M2): 语义层工具 de_ui_tree/de_tap_element——UI 树元素定位点击(text/id/desc,多命中 index),无需坐标更可靠;坐标 tap 保留兜底(WebView/画布元素)
|
2026-09-04 12:52:55 +08:00 |
|
butubb
|
7017ff3315
|
feat(M1): 补 de_wake/de_press_key 工具(Agent 熄屏可自唤醒);修复 MCP SDK v2 input_schema 字段警告
|
2026-09-04 12:50:55 +08:00 |
|
butubb
|
937a87b36c
|
feat(M1): Agent 编排层(OpenAI 兼容)——DeepSeek 等第三方模型经 MCP 工具控制手机:工具桥转 function schema、截图图像转 image_url 多模态流、工具循环、CLI 入口(mock 验证通过)
|
2026-09-04 12:47:09 +08:00 |
|
butubb
|
d7b6d83cd8
|
feat(M1): MCP 截图坐标空间统一——de_screenshot 附 native_size,de_tap/de_swipe 接受截图坐标由 server 按比例换算原生(模型只感知截图坐标系)
|
2026-09-04 12:47:09 +08:00 |
|
butubb
|
084ed59ad5
|
feat: 平台新增只读端点 /api/screen/size——返回设备屏幕原生分辨率(u2 window_size),供 MCP 截图坐标换算(截图是缩放图,操作需原生坐标)
|
2026-09-04 12:47:09 +08:00 |
|
butubb
|
2ba9f0c239
|
feat(M0): MCP 手机控制 Server 骨架——FastMCP HTTP 传输(8033),平台登录会话+CSRF 封装,de_list_devices/de_screenshot(图像块)/de_tap/de_swipe,写门控/白名单/审计,实测全链路通过
|
2026-09-04 12:42:16 +08:00 |
|
butubb
|
c304996c7b
|
docs: MCP 手机控制设计文档——架构(复用平台 REST/core 能力薄封装)、L1感知/L2操作/L3语义三层 tools 规格、图像链路(screenshot→image block)、安全(写门控/白名单/占用互斥/审计)、220 部署与 M0-M3 里程碑
|
2026-09-04 10:29:03 +08:00 |
|
butubb
|
441ff7c7da
|
feat: 设备分组移入工具页(原顶级 tab 删除)——工具页新增「设备分组」子分栏,分组管理入口与其他设备工具聚合
|
2026-09-04 10:15:44 +08:00 |
|
butubb
|
0b6b000b01
|
feat: 剪贴板注入面板只显示在线设备(pool/离线条目无注入意义);adb 终端面板保留全部供重连
|
2026-09-04 10:12:17 +08:00 |
|
butubb
|
d3ccc4a7a8
|
chore: users.db 为运行时数据库(容器实时写入导致 git pull 一直冲突),移除 git 跟踪并加入 .gitignore
|
2026-09-04 00:11:14 +00:00 |
|
butubb
|
88f4d09d4c
|
chore: 清理 DataEase 误解压残留;users.db 移除跟踪(运行时数据),.gitignore 忽略 data/ logs/
|
2026-09-04 08:11:05 +08:00 |
|
butubb
|
7276cfe585
|
fix: 待连接池后端过滤离线设备——list_pending 只返回当前在线设备(离线候选不可确认),不依赖前端 JS 缓存版本,任何客户端都拿不到离线条目
|
2026-09-04 08:08:52 +08:00 |
|
butubb
|
1a74372ad9
|
fix: 任务调度限定设备池——preempt 抢占模式的 all 目标原用 list_online()(含待连接/未入池设备,自动发现验证连上的设备会被任务误跑);改为设备池内在线设备;group 模式同样过滤未入池设备(serial 模式保留显式指定)
|
2026-09-01 09:07:12 +08:00 |
|
butubb
|
22ba9272bd
|
feat: 全站默认只看在线——监控页/大屏/待连接池同步过滤离线设备(可切换查看全部);18051 main 旧实例已停止(STF 已删,旧代码无保留意义)
|
2026-09-01 08:58:21 +08:00 |
|
butubb
|
ac7997176d
|
feat: 设备池默认只看在线——离线旧条目(IP 已变的幽灵设备)默认隐藏,在线优先排序;「只看在线」开关可切换查看全部(含离线/停用)
|
2026-09-01 08:54:06 +08:00 |
|
butubb
|
b9fab1999d
|
fix: 自动发现按钮引号转义语法错误——onclick 内嵌单引号拼接在生成时丢一层转义(Unexpected string 导致整个 tools.js 不执行,设备池/发现全不渲染);改为 dataset 传参彻底绕开嵌套引号
|
2026-08-31 15:38:33 +08:00 |
|
butubb
|
4efe17c1c9
|
feat: 设备自动发现——定时扫描局域网+Tailscale 网段开放 adb 5555 的设备进入待连接池,用户确认后才加入正式设备池(不自动连接);socket 并发探测+adb 短超时验证(state=device 过滤 unauthorized),配置存 app_meta 可前端调整;配套:adb_connect_light 验证短超时、DISABLE_SCHEDULER 回归开关
|
2026-08-30 10:57:07 +08:00 |
|
butubb
|
1e39f5490a
|
fix: 大屏触控优化——①点击错位:ctrl-img object-fit:contain 时图片绘制区小于盒子(居中黑边),坐标换算改为按实际绘制区域,黑边点击忽略;②滑动卡顿:tap/swipe/key/text 每次 u2.connect 重建连接(1-3s 握手),加 60s 连接缓存,失败自动清缓存重建(实测点击 2.97s→1.13s)
|
2026-08-20 13:22:21 +08:00 |
|
butubb
|
31a2ae911e
|
fix: uiautodev 自动启动失败 name sys is not defined——_ensure_uiauto_running 用 sys.platform 但 web_server.py 未 import sys;补 import,元素抓取/动作编辑器设备列表恢复
|
2026-08-20 11:09:25 +08:00 |
|
butubb
|
90ca2c2100
|
fix: 任务动作编辑器剪贴板注入改用 ClipInject 通道——u2 set_clipboard 在 Android 10+ 静默失效(粘贴模式必抛 UiAutomationError);提取 core/clipboard_helper 公共模块供工具页与任务执行端共用,粘贴模式 atx-agent pasteClipboard + set_text 兜底
|
2026-08-20 10:51:54 +08:00 |
|
butubb
|
2a3c748964
|
fix: 工具页剪贴板注入无反应——injectClipboard 函数在阶段3清理时被误删,点击按钮 JS 报错;补全函数(校验→ClipInject 通道 API→逐台结果表+toast 汇总),帮助文案同步更新
|
2026-08-20 10:40:49 +08:00 |
|
butubb
|
5d637bd4f5
|
fix: 剪贴板注入改用 ClipInject 通道——u2.set_clipboard 在 Android 10+ 被系统静默丢弃(atx-agent 后台身份写剪贴板受限),改为 am start 透明 Activity(shell 身份启动不受后台限制),注入后 u2 读回比对验证,未装 APK 明确报错
|
2026-08-20 10:34:53 +08:00 |
|
butubb
|
81a99e007b
|
feat: 启动时后台并发预连接设备池——adb server 重启后设备全掉线,adb 命令排队卡几分钟;预连接(并发 connect IP:5555)把恢复时间降到秒级
|
2026-08-20 09:33:24 +08:00 |
|
butubb
|
f78955f119
|
fix: start.sh 增加 cv2 空壳兜底——pip 24.0 解压 abi3 wheel 偶发丢根文件(cv2.abi3.so/__init__.py 缺失致 OCR 全挂),检测后 pip download + zipfile 手动解压(幂等)
|
2026-08-20 08:51:02 +08:00 |
|
butubb
|
27530ff5ac
|
fix: 手动执行不再受运行窗口限制(窗口只约束定时触发)——立即执行按钮在窗口外也可触发任务
|
2026-08-20 08:36:29 +08:00 |
|
butubb
|
0fab6f4de8
|
fix: opencv-python-headless 锁 4.x——清华源 5.0.0.93 wheel 打包异常(site-packages 无 cv2 模块),OCR 仍不可用
|
2026-08-19 16:23:36 +08:00 |
|
butubb
|
5de87465bc
|
fix: start.sh 修复顺序——rapidocr 依赖声明 opencv-python 会被 pip 强制装回 GUI 版,uninstall 必须在 pip install 之后最后执行
|
2026-08-19 16:17:28 +08:00 |
|
butubb
|
b33ff17c26
|
feat: 容器启动脚本 scripts/start.sh——幂等卸载 opencv-python(GUI 版缺 X11 库致 OCR 崩)并装 headless,compose 指向本脚本后环境修复全走 git
|
2026-08-19 16:14:15 +08:00 |
|
butubb
|
c0667c5959
|
fix: 容器环境 OCR 不可用——opencv-python 依赖 X11(libxcb)在 slim 容器 import 崩溃致条件判断 OCR 步骤任务退出,改为 opencv-python-headless(本地 Mac 不受影响)
|
2026-08-19 16:11:20 +08:00 |
|
butubb
|
d0cb531c20
|
fix: 未登录访问 500——login_view 蓝图化后未更新为 auth.login,flask_login 重定向 url_for('login') BuildError
|
2026-08-19 16:02:47 +08:00 |
|
butubb
|
42c2820180
|
docs: requirements 注释清理(STF 时代描述 → 当前架构)
|
2026-08-19 15:51:57 +08:00 |
|
butubb
|
a9720e8b81
|
fix: 抢占归还丢失——preempted_job 在重试循环内被重置为 None,关键字任务一旦重试(attempt≥2)被抢占的养号任务永不恢复;提升到循环外+已有值不覆盖+归还时被抢占任务停用/删除也打日志
|
2026-08-19 15:46:18 +08:00 |
|
butubb
|
e0c3373dd1
|
feat: 全量路由回归测试脚本 scripts/regression_test.py(GET 全量 + 写操作空 body 探测抓 import 遗漏 + 关键业务 POST,500=缺陷 502/503=业务提示)+ fix: clear_all_worker_errors 缺导入(回归脚本首跑即抓到)
|
2026-08-19 15:24:11 +08:00 |
|
butubb
|
2adc54b512
|
fix: adb 相关功能全挂——tools_api 缺 ADB_PATH/_ADB_BLOCKED_PATTERNS 导入(模块拆分遗漏),应用版本/adb终端/剪贴板恢复,全量 28 个 GET 路由回归通过
|
2026-08-19 15:12:42 +08:00 |
|
butubb
|
a0916ebda2
|
fix: 抓取元素回填垃圾选择器——无属性元素生成 //*[N](匹配任意节点点不到),改为 invalid 标记前端提示不可选;结构路径跳过无 class 层消除 //*[N] 前缀污染;模块拆分遗漏修复(get_all_worker_status/list_installed_apps 致 summary/设备已装应用 500)
|
2026-08-19 15:10:26 +08:00 |
|
butubb
|
265e47a1f4
|
fix: 测试此步骤弹窗全链路修复——closeTestModal 恢复(阶段3误删导致关不掉)、test-overlay 层级 1200(高于编辑器/元素抓取弹窗)、tasks_api 补 _log(后端500)、GenericStepsWorker 旧签名调用修复(测试执行失败)
|
2026-08-19 15:00:27 +08:00 |
|
butubb
|
ce47a5b83d
|
refactor: web_server 模块化拆分(web/ 蓝图包 auth/monitor/tasks/admin/tools/devices/apks/tailscale + context/common,web_server 1796→193 行仅留装配与启动)+ 大屏优化(网格 5s 轮询、弹窗独占缩略图、流支持 q/fps)+ 三修复(MIUI 屏幕状态检测改 dumpsys power、补 ADB_PATH 导入修复一键亮屏、renderGrid 增量渲染不重载缩略图)
|
2026-08-19 14:55:29 +08:00 |
|
butubb
|
e07b339a51
|
feat: 大屏增强——一键亮屏按钮、卡片显示设备名+IP+熄屏状态(thumb 响应头 X-Screen-State)、点击卡片进入设备操作弹窗(实时流+触控+按键+文字),工具页远程看屏子分栏移除并入大屏
|
2026-08-19 14:17:33 +08:00 |
|
butubb
|
c78f17d72f
|
feat: 监控大屏(/wall 全屏深色控制室风格:设备卡片网格+缩略图轮询+统计+时钟,缩略图 360px/q55 每 2.5s 一帧 20 台仅 ~0.2 核 CPU)+ /api/screen/thumb 接口 + 导航栏大屏入口
|
2026-08-19 14:13:15 +08:00 |
|
butubb
|
5543bad0e6
|
docs: 全面更新——README/API/DEVELOPMENT 摘除 STF 章节(设备池/型号/看屏/新端点文档,技术红线改为共享 transport 表述)
|
2026-08-19 14:07:53 +08:00 |
|
butubb
|
83ba489f57
|
feat: 前端整体改版(仪表控制台主题:自托管 Bricolage Grotesque+IBM Plex Mono 字体、暖纸底+墨色+深青主色、卡片/表格/徽章/模态框/Toast 全面细化、Tab 切换动画)+ fix: showTab 硬编码 tab 列表移除维护后索引错位、tools 分支调用已删的 loadStfDevMgmt、导航移除失效维护Tab
|
2026-08-19 14:03:02 +08:00 |
|
butubb
|
2d1b10c7f3
|
fix: 全选勾选不显示(renderDevices 签名缺选中状态导致防抖跳过渲染)+ 亮屏/息屏支持勾选设备(未勾选则全部在线,离线自动过滤)
|
2026-08-19 13:57:07 +08:00 |
|
butubb
|
6f6093842c
|
feat: 设备型号采集展示(devices 表 model 列+getprop 采集+管理页型号列/采集按钮+监控页兜底)+ fix: 监控页设备列错位(离线标签残留 td)、appver 端点误删恢复、appver 只查在线设备用轻量连接防挂起
|
2026-08-19 13:53:27 +08:00 |
|
butubb
|
eda71c8e5f
|
fix: USB 设备双路径——优先本机 adb 直连,其次 220 远程 adb server(原实现只查远程,本机 USB 会被误判不在 server)
|
2026-08-19 08:08:40 +08:00 |
|
butubb
|
1573e82653
|
阶段3: 文档更新(ARCHITECTURE/DEPLOY 摘除 STF 章节,STF_REMOVAL 标记代码完成+220 停容器待确认)
|
2026-08-18 08:11:00 +08:00 |
|
butubb
|
a5ce57b6fd
|
阶段3: 摘除 STF——删除 stf_client/stf_device_mgmt 与全部引用(STF 容器重启/设备管理/强制释放占用/agent 按钮/占用列),调度与设备管理完全基于本地设备池+adb;错误类迁入 device_worker,create_worker 去 stf 参数
|
2026-08-18 08:08:32 +08:00 |
|
butubb
|
98244d8161
|
feat: 设备池管理面板(新增/停用/删除/一键重连,调度数据源规范化入口)+ STF 设备管理增删桥接同步设备池(迁移期)
|
2026-08-18 08:02:13 +08:00 |
|
butubb
|
645938b305
|
阶段2: USB 远程 adb server 打通(220 host 网络 5037 全接口监听,无需改 220)+ 自建远程看屏(MJPEG 流 + u2 触控 tap/swipe/key/text,ws-scrcpy 不在 npm 改自建)
|
2026-08-17 16:50:12 +08:00 |
|
butubb
|
5354fe6379
|
阶段1: 调度/生命周期切换 device_pool——task_manager 设备解析与状态查询、STFDevice 去 occupy/release、web_server 端点换数据源(USB 桥接保留到阶段 2)
|
2026-08-17 11:16:13 +08:00 |
|
butubb
|
52c4d3aab4
|
阶段0: 设备池(SQLite devices 表 + core/device_pool.py 清单/在线状态/CRUD,首次启动自动从 STF 导入)+ STF 摘除迁移计划文档
|
2026-08-17 11:11:08 +08:00 |
|
butubb
|
c111cb9a5e
|
fix: STF未就绪设备纳入维护终端列表(adb可达但agent启动失败,标记stf_not_ready)+ 卸载/检查agent自动先connect
|
2026-08-17 11:02:43 +08:00 |
|
butubb
|
e48eeef49b
|
feat: 任务抢占+归还(抢占任务结束后自动重启被抢占任务)+ 修复抢占死锁(stop_device 移出锁块)+ wait 步骤可中断 + 循环块新增一直循环模式(配合定时启动+停止实现全天候养号)
|
2026-08-16 08:12:05 +08:00 |
|
butubb
|
a51857d143
|
feat: 步骤新增剪贴板注入(可注入+粘贴,批量发链接场景)+ adb终端快捷命令 tcpip 5555 转网络调试
|
2026-08-15 15:53:31 +08:00 |
|
butubb
|
17f849f723
|
feat: STF设备管理彻底删除(脚本+断开+STF API清记录)+ 一键重连(后台跑connect脚本)+ 跳过原因日志区分离线/未就绪 + SSH超时错误分类
|
2026-08-15 15:22:55 +08:00 |
|
butubb
|
e12219c979
|
feat: 强制安装APK(推送+pm install 绕过厂商弹窗)+ 定位设备(亮屏+大字定位页,结束定位关闭浏览器含后台)+ 一键亮屏/息屏(并发全部设备)
|
2026-08-15 15:03:01 +08:00 |
|
butubb
|
21d3aa8268
|
feat: 任务离线设备自动跳过(serial/分组模式触发时过滤 STF 池离线设备,默认开启,任务编辑器可勾选关闭)
|
2026-08-14 09:16:54 +08:00 |
|
butubb
|
060157ea1a
|
refactor: 前端JS拆分为8个模块(base/list/monitor/editor/tasks/tools/apps/admin,按依赖顺序加载)+ 删除废弃文件(start_web.bat/main.py/fix_web.bat/cleanup.py,web已全覆盖)+ 文档同步 + 修复/api/summary缺导入
|
2026-08-11 14:53:04 +08:00 |
|
butubb
|
2e491b19e2
|
feat: SSH 改纯密码认证(paramiko,禁用密钥/agent 不弹授权框,密码放 .env)+ 部署配置全迁 .env(config.py 不再内置 STF/SSH/Tailscale 值,.env.example 补全 11 项)
|
2026-08-11 14:12:52 +08:00 |
|
butubb
|
136613bc12
|
refactor: 列表统一为 setListPager 搜索+分页+排序(_lpSort 升序/降序/取消,中文数字感知,空值排后);监控设备表并入统一排序;STF设备管理/应用版本管理接入统一列表
|
2026-08-11 14:12:52 +08:00 |
|
butubb
|
3bd56b4f59
|
feat: 工具Tab新增应用版本管理(按包名并发查询所有设备安装版本)+ 文档同步更新(README/API/ARCHITECTURE/DEPLOY:工具Tab各工具、条件判断if_el+OCR、STF设备管理、.env密钥配置)
|
2026-08-11 10:57:14 +08:00 |
|
butubb
|
5dd605e3a0
|
feat: 工具Tab新增STF设备管理(读写220脚本DEVICES列表+docker adb connect/disconnect,220侧timeout兜底防卡死)+ 修复设备列表:5555重复显示
|
2026-08-11 10:50:41 +08:00 |
|
butubb
|
8e23541380
|
refactor: 应用Tab整体并入工具Tab(应用管理/设备已装应用成为工具子分栏),移除独立应用导航
|
2026-08-11 10:42:32 +08:00 |
|
butubb
|
2f2d8cc184
|
feat: 条件判断步骤(if_el 双分支:找到/未找到各执行独立步骤,可嵌套循环/条件;OCR识别选择器匹配图片文字,RapidOCR 跨平台实现含命中点击)+ 动作编辑器布局优化(操作库分组/加宽、任务弹窗加宽)
|
2026-08-11 10:38:47 +08:00 |
|
butubb
|
159649b6a0
|
refactor: adb远程终端与Tailscale管理从维护页移至工具Tab(维护仅保留STF服务),设备列表共享缓存+复用esc
|
2026-08-11 10:00:15 +08:00 |
|
butubb
|
2f1003bf1f
|
feat: 新增工具Tab - 剪贴板注入(多选本地adb/STF设备批量注入文字,u2 setClipboard 实现,实测支持中文/引号/换行)
|
2026-08-11 09:53:32 +08:00 |
|
butubb
|
cff0fc6a79
|
feat: 任务/应用/维护页统一页内子分栏(showSubTab 泛化),维护页首拆子分栏;模板自动重载(TEMPLATES_AUTO_RELOAD)
|
2026-08-11 09:38:29 +08:00 |
|
butubb
|
6051c5c2fd
|
fix: Tailscale 设备表接入统一分页/搜索逻辑(setListPager),修正 IP 可修改的过时提示文案
|
2026-08-11 09:19:41 +08:00 |
|
butubb
|
de66c6194b
|
feat: 维护页 Tailscale 管理(设备列表/改名/授权/密钥不过期/设置IP/auth key,独立模块 core/tailscale_client.py)+ 密钥迁移 .env(STF_TOKEN/WEB_SECRET_KEY/TAILSCALE_API_KEY 不再入库)+ 修复设备更新端点(/device/{id} 405,改用 /name /authorized /key 专属端点)+ auth key description 仅 ASCII
|
2026-08-11 09:06:59 +08:00 |
|
butubb
|
a48032da23
|
chore: 移除已废弃的一次性脚本 create_task.py(任务创建已由 Web 界面覆盖),README 同步清理引用
|
2026-08-11 08:34:38 +08:00 |
|
butubb
|
608df50acb
|
chore: 开发数据库更新(用户权限 schema 迁移 + 任务/自定义动作数据)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
06a9df111a
|
feat: 用户权限系统(权限位/管理员全权限/前端隐藏/最后管理员保护)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
a0d1a533c6
|
docs: 文档同步(README/API/架构/部署)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
5ccf622942
|
fix: 删除任务/分组持久化(重启不再复活)+ feat: APK 安装支持本机 USB 设备
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
794f40a880
|
feat: 调度简单设置(频率选择器)+ 运行窗口 + 下次运行列
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
c37290e8e3
|
feat: 步骤测试(在设备上单步试执行验证选择器)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
003cb42cb1
|
feat: 通用步骤新增动作(屏幕控制/按键/滑动直到元素/点击坐标/长按/等待元素/输入前清空)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
3320035c9e
|
feat: 维护 Tab(STF 容器一键重启 + adb 远程终端,含设备快捷选择/卸载 agent/重连)
|
2026-08-11 08:27:33 +08:00 |
|
butubb
|
26c908f04c
|
feat: 抓取元素选择器精度优化 + 设备列表补全 + 刷新同步
|
2026-08-11 08:27:32 +08:00 |
|
butubb
|
e3acb5739c
|
fix: 动作编辑器修复(toast 未定义/CSRF 缺失/嵌套选中打包/跨层级拖拽/步骤 id 冲突)
|
2026-08-11 08:27:32 +08:00 |
|
butubb
|
8a3cd67a97
|
fix: 设备异常状态清除(清除异常/一键清除,检查与更新原子化防竞态)
|
2026-08-11 08:22:24 +08:00 |
|
butubb
|
5f914c4fe4
|
fix: 已删除设备残留失败记录不再出现在异常汇总
- _merge_status 清理不在 STF 设备池且无运行 worker 的陈旧状态
- /api/summary 按当前设备池过滤,STF 异常时不隐藏任何记录
|
2026-08-09 08:04:57 +08:00 |
|
butubb
|
0c4f586ae5
|
feat: 选择器健康检测 - 连续未命中自动上报,暴露"静默空转"
通用任务 click 步骤连续 10 次找不到元素时判定选择器可能失效(App 改版),
记录 last_warning 并日志 ERROR,监控页设备行显示 ⚠ 警告。
解决"选择器失效但任务仍显示成功"的静默空转问题。
|
2026-08-08 21:35:21 +08:00 |
|
butubb
|
8a675923cd
|
feat: 失败任务汇总 - /api/summary + 监控页异常面板
- 新增 /api/summary:各状态计数 + 异常设备列表(last_error/任务/重试次数/时间)
- 监控页新增"异常汇总"面板:显示失败/异常设备及错误信息,方便长期运行观察健康度
|
2026-08-08 21:33:35 +08:00 |
|
butubb
|
02016b7b85
|
feat: 悬空设备自愈 - 启动可选自动释放残留 STF 占用
崩溃/强杀后设备残留占用需手动清理。新增 AUTO_RELEASE_STALE_OCCUPY 配置
(默认关):单实例部署设为 true 时,web_server 启动自动释放本账户残留占用;
多实例共用 STF 账户时勿开(会误放另一实例任务)。默认仅启动提示。
|
2026-08-08 21:31:53 +08:00 |
|
butubb
|
838886e043
|
security: 环境变量密钥、密码加盐哈希、CSRF 防护
- config.py/web_server.py 支持环境变量注入 STF_TOKEN/WEB_SECRET_KEY,新增 .env 加载和 .env.example;.env 加入 gitignore
- 用户密码从裸 SHA-256 改为 werkzeug 加盐哈希(scrypt),旧哈希登录时自动升级
- CSRF:session token + X-CSRF-Token 请求头校验非 GET 请求,前端自动携带
|
2026-08-08 21:29:39 +08:00 |
|
butubb
|
afeb0902a1
|
feat: 进程守护 supervise.sh,崩溃自动重启;DEPLOY 补 docker healthcheck
- scripts/supervise.sh:web_server 崩溃自动重启,带 2s 退避和 300s 窗口内重启上限(10次)防死循环
- doc/DEPLOY.md 补充通用守护用法 + python-app 容器 healthcheck 配置
|
2026-08-08 21:23:36 +08:00 |
|