Skip to content

Releases

v1.1.5

Choose a tag to compare

@github-actions github-actions released this 14 Nov 10:59

1.1.4 已发布;以下是 1.1.4 之后的累计改动。

修复

  • 设置里点「清理」黑屏:系统设置调用的是 navTo('falcon://<appid>/cleanUp')(页名 cleanUp),
    而本应用先前只注册了 cleanup,找不到页面即空白。现已按系统页名注册,产物为 cleanUp.js.bin;
    同时确认打包器按【文件名】生成模块名,页名与文件名必须严格一致(共用同一 .vue 会被改名成 cleanUp2.js 而取不到)。
  • 数据清理页无法滚动:正文由普通容器改为可滚动容器并取满剩余高度,内容超出屏高时可上下滑动。
  • 竖屏机型显示不全:全屏容器与宽列不再写死像素,改用百分比与弹性布局并允许换行,
    横条屏(960×266)与竖屏全面屏(如 4.4 英寸 1210×568)都不再被裁切;视口宽度仍取自固件配置。
  • 凭据无法正常保存:保存账号 / 密码 / 认证服务器改为等待写入完成并【回读校验】,日志记录校验结果;
    同时原生 KV 调用加 1.5s 超时与多形态尝试,避免固件 Promise 挂起把写入卡死。「记住密码」默认开启。
  • 兼容性检测误判:原生扩展以 ES 模块注册(import { Panet } from 'panet'),不会挂到
    globalThis / $falcon.jsapi 上,旧判据会误报「原生扩展未加载」;改为读取平台层自报的实际传输通道。
  • 功能检测页进入卡顿:进页先出首帧,存储回环 / 网络实测 / 迁移检查 / 兼容性判定延后到下一轮事件循环执行。
  • 功能检测页报 r/L is not defined:报告拼装函数缺少局部变量声明与空值保护,已补。
  • 检测页真实系统信息全显示 -:报告层在调用方未传取值函数时会静默返回空对象,
    现缺省直接调用平台层 systemInfo(),读取失败写日志而非吞掉。
  • 关于页二维码在设备上黑屏:Weex 的图片组件对相对路径不可靠,打包器也不收集 src/assets;
    改为把二维码转成 data URI 随 JS 打包(services/qq-qr.js),并裁掉邀请卡多余部分只保留码本身。
  • 关于页弹层按钮超出屏幕:二维码与卡片尺寸按横条屏高度重排(码 140×140、卡片自适应)。
  • 反馈页文字重叠 / 按钮点不动:按钮尺寸原先挂在组合选择器上,而 Weex 只支持单类名,
    导致按钮无宽高且样式整体丢失;另 padding: 8px 10px 这类简写在 Weex 不生效。
    现已全部改为单类名 + 完整尺寸 + 单属性内边距,并给文本加行高。
  • 反馈页输入框调不出键盘:此前调用的是不存在的方法名;改用输入法封装的 open({ text, placeholder, maxlength })。
  • 反馈提交失败(原生层 5 处):
    1. 请求封装只接受对象参数,原先按位置参数调用导致 url=undefined,请求根本没发出;
    2. 自研网络库只实现 POSIX socket、不支持 TLS,反馈服务地址由 https 改为 http 直连(实测该域名 http 可达且不跳转);
    3. 原生 POST 请求体上限 64KB,装不下整份日志 → 放宽到 512KB,客户端日志上限同步收到 40KB;
    4. 读取响应只等对端关闭,而反代返回 keep-alive 不断连 → 改为按 HTTP 语义判断读完(Content-Length / chunked 终止块);
    5. 响应体按 latin1 逐字节解码且解析时取了字节数组字段,中文乱码致 JSON 解析失败 → 改为 UTF-8 解码并优先取解码后的文本。
      原生请求失败现在都会写日志(此前异常被吞掉,只能看到状态码 0)。

新增

  • 兼容性检测:启动时对存储(写—读回环)/ 页面基类 / 传输通道 / 网络逐项真实调用,
    给出「兼容 / 兼容(降级)/ 不兼容」三档判定,写日志并在主页与「功能检测」页展示;
    判据是能力实测而非机型白名单,新机型无需改代码即可得到结论。

  • H3C iMC Portal 认证适配器(ui/src/services/portal-adapters/h3c-imc.js):
    适配 http://<门户>:8080/portal/?userip=…&userurl=… 的校园 / 企业网页认证;
    登录 pws?t=li(密码 base64 后再 URL 编码),响应 base64→percent→JSON,
    630xx 业务码本地映射中文;按 heartBeatCyc 发送 doHeartBeat.jsp 保活(keepAlive),
    支持 pws?t=lo 下线。传输层(native/panet)同步支持 POST 表单 body 与自定义请求头,
    并对请求头做注入校验(拒绝 CR/LF、过滤逐跳头)。协议取证见 docs/h3c-imc-portal.md。
    (PR #2)

  • CVI 机型真机适配(固件 1.6.3 / api=1):net-cvi 改用固件原生
    $falcon.jsapi.http.request({url, method, timeout, headers:['K: v']})(实测唯一可用形态),
    并把返回翻译成统一形态:成功 {result} → 200、errorMessage.resCode → 对应状态码(204 即空包体),
    其余 error → 失败;detect 增加 portalProxyIP / portalProxyPort 兜底,
    适配器与门户判定无需为 CVI 开特例。实测记录见 docs/cvi-jsapi-http.md。
    (PR #2)

  • 问题反馈页(新页面,主页顶栏「反馈」进入):用户用系统输入法填写「问题描述」与「详细情况」
    (均为必填)与「联系方式」(QQ / 邮箱,选填),提交时自动附带机型 SKU、词典笔系统版本、
    运行日志(上限 40KB)与能力探测报告;页面顶部固定标注网页反馈入口(没网时可用电脑 / 手机打开),
    勾选《用户条款》后方可提交,条款逐条列明收集与不收集的信息;可一键跳到「关于」页查看用户群二维码。

  • 真实系统信息读取:新增原生 systemInfo(),直接读 /Version(词典笔 OS 版本)、
    /etc/os-release、/proc/version、device-tree 板型、/proc/cpuinfo 与 sys_config sku;
    「功能检测」页按「SKU / 主机名 / PCBA / 词典笔 OS / 固件 / 编译时间 / 系统底座 / 内核 / 架构 / 板型 / SoC」
    展示,框架版本单独一组,不再把框架版本当成系统与型号。

变更

  • 六个页面全部重写,统一设计语言并彻底自适应:主页(状态卡 + 登录面板 + 认证类型 + 手动服务器)、
    设备管理(摘要 + 设备卡片 + 确认弹层)、功能检测(结论条 + 六个分组卡片)、数据清理、迁移提示、关于;
    宽度一律百分比 + flex-wrap,横条屏(960×266)与竖屏全面屏(1210×568)都完整显示。

  • README 全量重写:功能 / 机型与产物 / 安装 / 使用 / 连通性判定 / 兼容性检测 / 外部调用 /
    开发与测试 / 常见问题 / 许可 / 公开参考项目,事实与当前实现对齐。

  • 门户识别补充 userurl / userip / basip 特征与跳转参数提取,提高 iMC 类门户的识别率。

  • 版本号升至 1.1.5(ui/package.json 与 ui/src/services/version.js 同步)。

待真机 / 真网复核

  • CVI 上 http.request 的 POST body 字段固件文档未定义,本版同时传 body / data 并保留
    query 双写兜底;真实校园网(H3C iMC)需复核一次 POST 是否被接受。
  • 真实门户页的 portalProxyIP 解析建议在目标校园网复测(本地已用 mock 页覆盖)。
  • H3C iMC 真网登录 / 心跳 / 下线全流程仍需在目标校园网走一遍。

贡献者

  • H3C iMC Portal 认证适配器、CVI 机型真机适配:PR #2(@wanfeng74)

v1.1.3

Choose a tag to compare

@github-actions github-actions released this 01 Nov 01:06

v1.1.3

修复

  • 不再误报「无需登入」: 部分网关会对连网检测端点免认证放行(探测源能通、通用网络不通), 旧版本
    据此显示「无需登入」并隐藏登录表单, 用户实际仍上不了网。现在 204 只算证据, 必须再用非探测源
    站点复核通过才报「无需登入」; 复核被拦截判需要认证, 复核不通则如实提示「无网络连接」并给出原因。
  • 门户证据优先: 任一探测源被拦截即判需要认证, 不再按「谁先返回」决定结果(判定不再被响应时序左右)。
  • 异常响应不再当作已连通: 无有效状态码、非 204 的空包体等一律不计入「已连通」。
  • 不再卡在「正在检测…」: 复核请求增加硬超时兜底, 请求挂起也会给出结论。
  • 认证服务器按网络隔离: 换到其它网络时不再沿用上一个网络记住的门户服务器, 避免在无关网络上
    出现「已通过认证 / 设备管理 / 下线」等内容。
  • 设备管理入口更严谨: 即使服务器挂在同一网络名下, 也必须确认它在当前网络真的可用, 否则不显示
    设备管理/下线, 也不会自动跳入管理页。
  • 网络名称读不到时不再串网: 读取不到当前网络名称时, 账号与认证服务器不会再写进其它网络的槽位;
    原生模块增加多种方式读取当前网络名称, 降低读不到的概率。
  • 外部调用登录也会正确归档凭据: 被其它小程序直接拉起登录时, 会先取当前网络名称再保存账号。

变更

  • 主页「连通性测试」行、运行日志与 status.json 增加复核依据 (confirm / freeCount), 排查时能直接
    看出「无需登入」是经哪个站点复核得到的。
  • 版本号升至 1.1.3 (ui/package.json 与 ui/src/services/version.js 同步)。

文档

  • README 重构: 徽章、真机截图、连通性判定说明(为什么会显示「无需登入」)、常见问题、开发与测试。
  • docs/external-api.md 与 README 的示例地址改用通用占位, 避免读者误当成真实部署地址。
  • 本文件改为按 Keep a Changelog 维护, 未发布内容统一归档到「未发布」段落。

由 GitHub Actions 自动发布 · commit 5b4984a

v1.1.2

Choose a tag to compare

@github-actions github-actions released this 19 Sep 05:48

v1.1.2

新增

  • CVI (CVITEK / RISC-V C906) 机型适配: 服务层新增平台实现层
    (ui/src/services/platform/), CVI 平台使用固件原生 $jsapi/http (网络请求) 与
    $jsapi/system_kv (账号存储) 模块替代自研 panet 原生库, 页面/UI/适配器代码完全复用;
    依据官方引擎库 yocop/iot_miniapp_sdk 分析实现,
    尚无 CVI 真机验证
  • Release 产物按平台区分: ...-rk.amr (RK3562 / X6PRO) 与 ...-cvi.amr
    (CVITEK / RISC-V 机型), CI 一次构建同时产出两个平台

变更

  • 检测状态写盘与日志页改为经平台服务层调用 (页面不再直接依赖 panet), 多平台复用的必要重构;
    RK 版功能与行为不变

已知限制 (CVI 版)

  • 无文件 JS 模块: 运行日志为内存缓冲 (应用内可看, 重启清空), 不写 status.json
  • 无"当前连接 SSID"查询接口: 记忆密码回退"最近使用"槽位 (按 WiFi 隔离的粒度降低)
  • 详见 README「设备兼容性与平台」


由 GitHub Actions 自动发布 · commit 3d5abb4

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 19 Sep 01:40

v1.1.1

修复

  • 检测命中门户后不出现登录表单 (issue #1): 检测回调内误用 this 调用
    afterPortal (回调内 this 不是 Vue 实例), 抛出的异常被静默吞掉, 导致界面
    卡在"正在检测…"且日志无 [适配器]/[配置] 行; 现改用实例引用, 并给
    afterPortal 增加异常兜底 (出错时提示手动选择认证类型或输入服务器地址)
  • 检测在网络请求挂起时永久卡住: net.js 请求层增加 JS 超时兜底 (原生
    request 挂起也能返回失败, 检测/登录/列表/心跳全部受益); detect.js 增加
    全局兜底判决与 abort 轮询 (取消后立即结束); 单源超时 5s → 3.5s
  • 网络直连时进设备管理页误报"该认证类型不支持设备管理": 回填 adapterId
    (该 WiFi 记住的适配器 / 第一个注册的)
  • 点击主页状态区会触发重新检测: 状态区 (屏幕中部大片区域) 此前绑定了点击重检,
    容易误触; 现仅顶栏「重新检测」按钮触发检测 (切后台回来与从设备管理页返回的
    自动重检保持不变)

验证

  • 本地模拟 (注入桩): 检测挂起/部分挂起/abort/超时兜底 7 场景 + 原有 5 套测试全过
  • 真机模拟认证网络 (DNS + 302 劫持 + mock Panabit 服务端) 跑通全链路:
    检测 → 劫持解析 → 自动识别适配器 → 登录表单 → 登录成功 → 复查放行 → 自动进设备管理页


由 GitHub Actions 自动发布 · commit 2552e9f

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 02:04

v1.1.0

新增

  • 认证框架化: 本体只提供通用框架 (连通性检测、认证页类型自动识别、适配器注册表、UI、
    账号存储、日志), 认证协议由可插拔适配器模块实现 (ui/src/services/portal-adapters/),
    内置 Panabit 适配器作为默认适配器与演示模板
  • 认证页类型自动识别: 检测到被强制门户拦截后, 各适配器按页面特征 (跳转 URL 参数 /
    页面标题 / 内容 / 响应头) 评分取最高; 识别不出回退该 WiFi 上次成功登录所用的适配器,
    再不行界面「认证类型」选择行由用户手动选择 (选完可手动输入服务器地址);
    登录成功按 WiFi 记住所用适配器, 下次同 WiFi 优先复用
  • 适配器能力化: 设备管理入口按适配器能力显示 (提供 listDevices 才显示);
    外部调用支持 adapter=<id> 强制指定适配器
  • 适配器开发指南: 仓库根目录 ADAPTER.md (接口契约 + 全流程) 与配套 SKILL.md
    (前端代码来源询问 / 设备加密能力探查 / 阻塞情形告知 / 问题主动报告)

优化

  • 界面美化: 四页统一设计语言 (状态色点、分隔线、消息色条、顶栏对齐、Wi 徽标、
    日志按 tag 着色、版本徽章), 配色改为纯黑主题
  • 渲染/解码性能: 日志页内容未变跳过整列表重渲染; 管理页设备列表对比更新并以
    在线 IP 作列表 key (下线单台不整列重渲); base64 解码预建查找表 (每字符 O(1))

由 GitHub Actions 自动发布 · commit 2c06f9b

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 13:26

v1.0.0

首个正式版。运行在有道词典笔(960×266 横条屏)上的
Panabit 网页认证登录工具,用于替代笔上打不开的认证网页。

软件功能

连通性检测

  • 使用小米 / vivo / 华为三个国内探测源,并发竞速:同时发起,首个给出确定结论的
    直接采纳(正常网络下约 35ms 出结果,而非逐个串行等待);单源失败不判决,全部失败才判无网络
  • 被强制门户劫持时,解析出跳转页面(支持 302 Location、meta refresh、location.href、
    带 wlanuserip / paip 参数的链接),展示 Portal 服务器地址与跳转 URL
  • 网络直连正常时提示"无需登入",已认证则自动进入设备管理页

登录与凭据

  • Panabit webauth/user_login 账号密码登录,密码经 AES-128-ECB/ZeroPadding 加密
    (密钥 Panabit@1024_key,与网页端 pa_aes_encode 一致)
  • 记住密码按 WiFi 隔离:每个 WiFi 各存各的账号,换网络不会串用上一个网络的密码
    (存储结构 { accounts: { "<ssid>": {...} } },WiFi 名称由原生 panet.wifiSsid() 读取)
  • 密码不显明文:已记住的密码只显示圆点掩码;新输入的密码明文显示 3 秒便于核对
  • 账号 / 密码通过 global.startTextEdit 唤起系统级"有道输入法"输入

设备管理

  • 在线设备列表(ucenter/load_user_list):设备名 / 在线 IP / MAC / 在线时长,自动标记「本机」
  • 单设备下线(ucenter/user_offone):每台设备一个下线按钮 + 自绘确认弹层
  • 全部下线(ucenter/user_offall):下线后自动返回主页重新检测
  • 列表 15 秒自动刷新

会话与稳定性

  • 会话保活:认证页停留期间 30 秒心跳,避免 token 过期;会话过期类失败自动刷新重试一次
    (密码错误 / 锁定 / 需改密不重试)
  • 前后台切换不冲突:每次重检会取消上一次在途探测,迟到结果不再覆盖新状态;
    输入法面板引起的 onHide/onShow 被识别并抑制,不会冲掉登录表单
  • 服务器不可达时行为收敛:管理页拿不到数据会自动退回主页,并进入 3 分钟冷却,
    不会在主页与管理页之间反复跳转
  • 运行日志写入 /userdisk/xiro/wifi.log(自动建目录、超过 512KB 轮转),
    应用内「日志页」可直接查看最近 120 行
  • 支持手动指定认证服务器(探测失败或无响应时)

外部调用接口

  • 其他小程序可通过 navTo('falcon://8001865309000001/index', {...}) 调用:
    action=login|log|check、预填 server / username / password、auto=1 自动提交
  • action=check 的检测结果经事件回传给调用方,callback 名可指定

安装

adb push 8001865309000001.1_0_0.amr /data/local/tmp/
adb shell miniapp_cli install /data/local/tmp/8001865309000001.1_0_0.amr
adb shell miniapp_cli start 8001865309000001

设备兼容性

  • 仅在有道词典笔 X6PRO 上完成真机验证,其他机型未做适配测试
  • 其他机型如遇到问题,欢迎提交 Issues(附机型、固件版本与 wifi.log)或提交 PR
  • PR 合并前提:不得影响 X6PRO 上已验证的现有功能;
    机型差异请用能力探测做分支处理,不要直接改掉通用逻辑

已知限制

  • 认证服务器不可达时管理页不可用,此时主页会提示并停止自动进入(3 分钟冷却)
  • 设备 IP 无法从固件查询(jsapi 无 nm 模块),Portal 参数以服务器下发的跳转参数为准
  • 服务端 GB2312 中文无法转 UTF-8(固件无 misc 模块),错误信息用错误码本地映射代替

由 GitHub Actions 自动发布 · commit a394607