Skip to content

v2.5.5

Choose a tag to compare

@shiaho777 shiaho777 released this 31 Aug 04:00
999b4bf

Added

  • Page zoom in settings: initial page zoom is now a per-app build-time setting (Advanced Settings → Content Display) applied on every start, so changing it no longer means leaving fullscreen to reach the toolbar (#654, #662).
  • Find in page: the keyboard now rises automatically when the find bar opens (#652, #658).
  • Measured GitHub routing: runtime downloads (Node, PHP, Python, Composer) no longer rely on two hard-coded accelerators in declaration order. Every available route — thirteen prefix accelerators plus direct — is probed concurrently on a real release asset, anything slower than 1000 ms is dropped, and the rest are ordered fastest-first. Results cache for five minutes, and a probe round that loses every channel is never cached, so a failed measurement cannot leave a download with nowhere to go. A pinned GitHub IP table resolves first with the system resolver kept behind it (#687).
  • Update checks and the module market now use the same measured pool: release metadata (api.github.com) and the catalogue (raw.githubusercontent.com) try every routed candidate instead of one fixed accelerator, with the plain URL always kept as the last fallback (#691).
  • Activation: a deployable Cloudflare Worker reference server ships under examples/ for self-hosting activation (#688).

Changed

  • Toolbar: the inverted "hide toolbar" switch is replaced by a positive Toolbar master toggle — on enables all seven items, off disables them, and the item switches now sit flat in the card with no expand step (#654, #666).
  • Documentation site: action buttons render in neutral black, the homepage glow is gone, emoji icons are replaced with SVG icons, and the hero and getting-started download buttons auto-detect the latest release (#676, #678, #680, #682, #685).
  • Docs: :app Gradle tasks are qualified with the standard flavor — bare :app:compileDebugKotlin and friends are ambiguous now that the repo ships two flavors (#669, #671).

Fixed

  • AI model fallbacks: new model generations no longer fall through to the 8192-token, text-only default. claude-5, glm-5 and grok-4 were each losing a 200k context window and multimodal support because the fallback matched on individual generation numbers — it now matches on family prefix, so the next generation inherits the floor. GLM was worst hit: Zhipu is absent from the models.dev catalogue, so GLM always resolves through these fallbacks. The Gemini API key also moves from the ?key= query parameter to the recommended x-goog-api-key header, keeping it out of request logs and intermediaries (#690).
  • Rebuild over an installed package: rebuilding an installed app no longer produces an APK that refuses to install. The versionCode bump existed but was gated on a custom package name and duplicated across three places, so the export screen could not find the installed app. It now lives at the build entry point (covering agent tools and batch export, not just the screen) and runs before the incremental cache computes its fingerprint, so a bumped version is never served from a cached APK built with the old one. An explicitly higher version set by the user is left alone, and non-numeric suffixes such as 1.0.0-beta are not mangled. Absolute activation expiry is honoured (#686).
  • GeckoView file picking: picked content:// files are materialized before FilePrompt.confirm, so uploads stop failing (#657).
  • BGM: library lyrics and tags now persist, non-MP3 downloads are surfaced, and the dialog toolbar color is unified (#656).
  • Keyboard: the push-up (RESIZE) mode keeps input fields visible on Android 10 and below again (#651).
  • Find bar: backspace is no longer swallowed by the WebView (#649), and the preview find button now respects the slim-toolbar configuration (#665).
  • Editor: enabling the toolbar no longer defaults every item off (#664); the toolbar card follows the standard card grammar (#667); the app-name field matches the URL field's outlined style (#670).
  • CI: merge pushes no longer cancel in-progress packaging runs (#646).

新增

  • 设置中的页面缩放:初始缩放改为每个应用的构建期设置(高级设置 → 内容显示),每次启动自动应用——调整缩放不再需要退出全屏去点工具栏(#654#662)。
  • 页内查找:查找栏打开时自动弹出输入法(#652#658)。
  • GitHub 线路实测选路:运行时下载(Node、PHP、Python、Composer)不再依赖两个硬编码加速器的声明顺序。现在会并发探测全部可用线路(13 个前缀加速 + 直连)在真实 release 资源上的首字节延迟,丢弃超过 1000 ms 的线路,其余按最快优先排序;结果缓存 5 分钟,且全部探测失败的那一轮不写入缓存——测量失败绝不会让下载无路可走。同时内置 GitHub IP 直连表,pinned IP 优先、系统 DNS 结果兜底(#687)。
  • 更新检查与模块市场接入同一套实测线路池:api.github.com 的 release 元数据与 raw.githubusercontent.com 的模块目录,现在会逐个尝试所有候选线路而非单一固定加速器,并始终把原始 URL 保留为最后一个兜底(#691)。
  • 激活服务examples/ 下新增可直接部署的 Cloudflare Worker 参考服务端,便于自托管激活(#688)。

调整

  • 工具栏:反直觉的"隐藏工具栏"开关改为正向的工具栏总开关——开启即全部启用、关闭即全部关闭,七个子项开关平铺在卡片里,不再需要额外展开一步(#654#666)。
  • 文档站:操作按钮改为中性黑色,首页光晕移除,emoji 图标替换为 SVG 图标,首页与快速开始的下载按钮现在自动识别最新 release(#676#678#680#682#685)。
  • 文档:app 的 Gradle 任务统一加上 standard flavor 限定——仓库现在有两个 flavor,裸任务名(如 :app:compileDebugKotlin)会产生歧义(#669#671)。

修复

  • AI 模型兜底:新一代模型不再掉进 8192 token、纯文本的默认值。claude-5glm-5grok-4 此前都会丢失 200k 上下文与多模态能力,原因是兜底逻辑按具体代次数字匹配;现在改为按模型家族前缀匹配,后续新代次自动继承。GLM 受影响最严重——智谱不在 models.dev 目录中,GLM 系列始终走兜底路径,200k 被截断成 8192。另外 Gemini 的 API Key 从 ?key= 查询参数改为官方推荐的 x-goog-api-key 请求头,避免密钥进入请求日志和中间节点(#690)。
  • 覆盖已安装包的重新构建:重新构建已安装的应用不再产出装不上的 APK。原本的版本号递增存在但被"用户填了自定义包名"这个条件挡住,且包名推导规则在三处重复,导致导出界面找不到已安装的应用。现在递增逻辑前移到构建入口(覆盖 Agent 工具与批量导出,不只是导出界面),并在增量缓存计算指纹之前执行,避免用旧版本号构建的缓存 APK 被复用。用户显式设置的更高版本号保持不变,1.0.0-beta 这类非数字后缀也不会被改写。绝对过期时间的激活码现在被正确识别(#686)。
  • GeckoView 文件选择:在 FilePrompt.confirm 之前先把选中的 content:// 文件落地,上传不再失败(#657)。
  • 背景音乐:曲库的歌词与标签现在能持久化,非 MP3 下载会正常显示,弹窗工具栏配色统一(#656)。
  • 键盘:Android 10 及以下设备上"向上顶起"(RESIZE)模式重新保证输入框可见(#651)。
  • 查找栏:退格键不再被 WebView 吞掉(#649);预览态的查找按钮现在遵循精简工具栏配置(#665)。
  • 编辑器:首次启用工具栏不再把所有子项默认关掉(#664);工具栏卡片遵循统一卡片语法(#667);应用名称输入框改为与 URL 输入框一致的描边样式(#670)。
  • CI:main 上的合并推送不再取消正在进行的打包任务(#646)。