{
  "version": "2.0.1",
  "build_date": "2026-10-14",
  "base_url": "http://38.76.174.67:8899/",
  "volumes": {
    "code": {
      "file": "master-code-2.0.1.zip",
      "size": 458122,
      "sha256": "6ca9417f613b7ac5623796c250534c72c082fd3cd022a0672c339e6125b81981"
    },
    "avd": {
      "file": "master-avd-2.0.0.zip",
      "size": 7068289358,
      "sha256": "c89b3e2130c72a94171ed674e16709a21ad178f4bda5bb9df66163e463563a3a",
      "note": "out-of-band (USB/disk)"
    }
  },
  "sdk": {
    "mode": "online",
    "doc": "deployment machine installs via sdk_install_deploy.py"
  },
  "panel": {
    "version": "3.0.39",
    "installer": "panel-installer.bat",
    "installer_url": "http://38.76.174.67:8899/panel-installer.bat",
    "installer_zip_url": "http://38.76.174.67:8899/panel-installer.zip",
    "code_zip": "master-code-3.0.39.zip",
    "code_url": "http://38.76.174.67:8899/master-code-3.0.39.zip",
    "size_mb": 15.57,
    "sha256": "14a94769a32ca0b1819af5cfe60c8cec11c90ab258ebec5d9aef1a29d07f8956",
    "date": "2026-10-19 18:23",
    "note": "全量包含 assets/api28_devices.json；热更打不开请用此包重装。重启走 start_panel.bat"
  },
  "history": [
    {
      "version": "3.0.39",
      "date": "2026-10-19 18:23",
      "what": "全量包含 assets/api28_devices.json；热更打不开请用此包重装。重启走 start_panel.bat"
    },
    {
      "version": "3.0.37",
      "date": "2026-10-18 19:56",
      "what": "修复检查更新弹窗：跨线程信号替代 QTimer.singleShot（手动+定时检查都能弹窗）；定时检查同修"
    },
    {
      "version": "3.0.36",
      "date": "2026-10-18 14:49",
      "what": "面板删除实例彻底化：remove 不静默、运行中先 quit、删除后验证生效；全量包/安装器对齐 3.0.36"
    },
    {
      "version": "3.0.35",
      "date": "2026-10-18 13:07",
      "what": "热更新检查修复（无代理直连+失败显示真实原因）；全量代码包与安装器对齐 3.0.35"
    },
    {
      "version": "3.0.34",
      "date": "2026-10-18 11:34",
      "what": "3.0.34 fingerprint pool: 9 regions x 11-14 models (68 unique Android devices), resolution table completed, 1000-profile (10x100) zero-collision verified"
    },
    {
      "version": "3.0.33",
      "date": "2026-10-17 23:33",
      "what": "3.0.33 (CRLF bat): panel-installer.bat converted to CRLF line endings for reliable cmd parsing"
    },
    {
      "version": "3.0.33",
      "date": "2026-10-17 23:27",
      "what": "3.0.33 (re-pack): python setup excluded from code volumes (uploaded separately); same installer logic"
    },
    {
      "version": "3.0.33",
      "date": "2026-10-17 23:24",
      "what": "3.0.33: installer python reliability - Python 3.12.10 setup mirrored on our server (fast for CN deploys, python.org fallback); per-user silent install (no admin) -> C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312 detected by fixed path; version hard-check rejects MS Store python stubs and stale old PATH pythons"
    },
    {
      "version": "3.0.32",
      "date": "2026-10-17 22:38",
      "what": "3.0.32: window arrange fix - find LDPlayer9 windows via dnplayer process (qemu-system-x86_64 never matched), restore minimized windows before grid placement"
    },
    {
      "version": "3.0.31",
      "date": "2026-10-17 22:34",
      "what": "3.0.31 re-publish: installer python fix - after silent 3.12 install use C:\\Program Files\\Python312\\python.exe (not where python, PATH stale old python won); install_master rebuilds .venv when existing interpreter <3.10"
    },
    {
      "version": "3.0.31",
      "date": "2026-10-17 19:24",
      "what": "3.0.31: panel port-forwarding fallback when pxd fails - per-instance adb reverse (18000+id) maps guest 127.0.0.1:port to host gateway, then settings http_proxy 127.0.0.1:<guest_port> (via TAG 7890 -> bound SOCKS5). NAT-alias http_proxy kept as last resort."
    },
    {
      "version": "3.0.30",
      "date": "2026-10-17 19:09",
      "what": "3.0.30: if pxd fails, fallback settings put global http_proxy to 172.16.1.2:gateway (still via TAG 7890). LDPlayer NIC bridge is NOT used (that is host LAN IP)."
    },
    {
      "version": "3.0.29",
      "date": "2026-10-17 18:59",
      "what": "3.0.29: pxd start via /data/local/tmp/pxd-start.sh; status ps via adb shell not Magisk su. Do not restore builtin su (5 apps would see root). Rebind after panel restart."
    },
    {
      "version": "3.0.28",
      "date": "2026-10-17 18:50",
      "what": "3.0.28: pxd size check via adb shell not Magisk su (3.0.27 wc -c path still empty). Watchdog can then finish guest=proxy."
    },
    {
      "version": "3.0.27",
      "date": "2026-10-17 18:41",
      "what": "3.0.27: Magisk su swallows wc -c < file (empty remote size vs 617104). Verify with wc -c path. Rebind after update."
    },
    {
      "version": "3.0.26",
      "date": "2026-10-17 18:29",
      "what": "3.0.26: Magisk su rc=1 no longer aborts pxd bootstrap (bound IP looked saved, guest had no net). apply_instance_proxy surfaces CommandError. Live serial still from list2."
    },
    {
      "version": "3.0.25",
      "date": "2026-10-17 18:23",
      "what": "3.0.25: live adb serial from ldconsole list2 index (DB adb_serial goes stale). Bind/watchdog/Mask use live serial and rewrite DB. Fixes AI 'ADB serial mismatch'."
    },
    {
      "version": "3.0.24",
      "date": "2026-10-17 17:20",
      "what": "3.0.24: bound instance DNS no longer DNATs to Clash 1053 (7890 HK hop kept). Proxy tab OK + instance no-net was 1053 blackhole. Watchdog autostart. Magisk su fallback. Bind shows guest apply result."
    },
    {
      "version": "3.0.23",
      "date": "2026-10-17 15:54",
      "what": "3.0.23: after Direct Install skip adb root (it hung wait-for-device on new machine at Remove built-in su). Use /sbin/magisk su to remount+rm su+INSERT policy. UTF-8 log so checklist is readable."
    },
    {
      "version": "3.0.22",
      "date": "2026-10-17 15:22",
      "what": "3.0.22: fresh-instance Mask install proven on mask-test5 (all checks green). Auto WMI launch if stopped; serial from list2 index; PID-kill VM restart; remount rw; grant Superuser prompt; wait after Magisk reboot; auto-download full Kitsune APK from farm server if missing/stub"
    },
    {
      "version": "3.0.21",
      "date": "2026-10-17 13:38",
      "what": "3.0.21: Mask install step checklist (resume missing steps); PID-kill VM restart + remount rw before Direct Install; grant LDPlayer Superuser prompt; Magisk Manager show/hide via magisk su (pm unhide/hide); panel toolbar+context menu"
    },
    {
      "version": "3.0.20",
      "date": "2026-10-17 11:41",
      "what": "3.0.20: TikTok package corrected to com.zhiliaoapp.musically (wizard 5-App check + install list); installer re-downloads code pack (no stale cache); installer hard-gates on version match; panel-installer.zip rebuilt from current bat; proxy bind-instance counts + full proxy status in bind dialog + horizontally scrollable tables"
    },
    {
      "version": "3.0.19",
      "date": "2026-10-17 11:10",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.18",
      "date": "2026-10-16 21:37",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.11",
      "date": "2026-10-14 19:33",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.10",
      "date": "2026-10-14 19:31",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.9",
      "date": "2026-10-14 19:25",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.8",
      "date": "2026-10-14 19:20",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.7",
      "date": "2026-10-14 19:14",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.7",
      "date": "2026-10-14 19:10",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.6",
      "date": "2026-10-14 18:59",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.5",
      "date": "2026-10-14 18:47",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.5",
      "date": "2026-10-14 18:47",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.4",
      "date": "2026-10-14 18:39",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.4",
      "date": "2026-10-14 18:38",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.2",
      "date": "2026-10-14 18:15",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.1",
      "date": "2026-10-14 17:59",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.1",
      "date": "2026-10-14 17:58",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.0",
      "date": "2026-10-14 17:43",
      "what": "panel installer + code volume (server-distributable)"
    },
    {
      "version": "3.0.0",
      "date": "2026-10-14 17:42",
      "what": "panel installer + code volume (server-distributable)"
    }
  ]
}