Skip to content

Releases

v1.9.0

Choose a tag to compare

@SenZh SenZh released this 27 Oct 06:44

[1.9.0] - 2026-10-27

自 v1.8.1 起共计 61 个提交、32 个源码文件变更(+2724 / −121 行)。


新增功能 (New Features)

  • 图片手势查看器 (Image Viewer):全面替换原静态 expo-image 组件。支持 1x–5x 双指捏合缩放(带 0.7x 橡皮筋阻尼回弹)、单指拖动平移(按解码像素与视口溢出精确夹取边界,杜绝拖出黑底)、双击切换预设倍率(1x / 2.5x),以及单击唤起沉浸式透明全屏 Modal(遮蔽系统状态栏与标题栏,拦截系统返回键)。图片按原始长宽比自适应铺满可用视口,彻底移除原 aspectRatio: 1 造成的无效留白。
  • 全屏文档查看器 (Document Viewer):聊天上下文中的文件附件直接唤起全屏查看器。支持原生 Markdown 富文本渲染、超宽表格独立横向平移、跨段落连续长按文本选区复制、语法高亮代码块(集成单键复制),并自动将服务端输出的 MEDIA: 路径指令转换为可直接打开的交互式卡片。
  • 后台自动更新机制与版本弹窗 (Auto-Updater & Version Modal):应用启动及后台按 1 小时轮询调度检索 GitHub Releases 最新资产。侧边栏底部停靠区新增版本入口,当检测到新版本时动态切换为向上更新角标;点击唤起独立版本弹窗,展示当前构建信息、更新日志摘要及手动检查更新指令。
  • 存储访问框架物理落盘管道 (SAF Download Pipeline):重构文件落盘机制,通过原生 FileChannel 直接将流式数据写入用户选定的 SAF 目录。引入前置目录选择器、实时吞吐速率/字节进度计算、同名冲突防御(支持原子性覆盖与自动重命名序列),并持久化真实文档 URI,使已完成任务在回访时直接呈现为「打开文件」与「打开所在目录」。
  • 国产定制系统后台保活引导 (Vendor-ROM Keep-Alive):「关于」页新增保活配置板块,针对国内主流发行版(小米 HyperOS、华为/荣耀 EMUI/MagicOS、OPPO ColorOS、vivo OriginOS、三星 OneUI)进行适配。集成运行时 PowerManager.isIgnoringBatteryOptimizations 真实状态探活与豁免请求,并按厂商签名精准路由至各系统自启动配置 Activity,未知机型优雅回落至应用详情页。
  • 系统级文件调度分发 (Native File Dispatch):基于原生 ACTION_VIEW 封装 openFile 接口,赋予 FLAG_GRANT_READ_URI_PERMISSION,结合严格 MIME 类型推导将 .apk 资产直接分发至系统安装器;封装 openFolder 并实现四级平滑降级(MIME_TYPE_DIR 隐式约束 -> DocumentsUI 显式调用 -> 厂商定制文件管理器 -> OPEN_DOCUMENT_TREE),防止系统默认意图被通用浏览应用抢占。

体验优化与界面重排 (Improvements)

  • 全局导航紧凑化:废弃侧边栏底部双行常驻版本条,压缩提炼为 5 键紧凑底部停靠栏(会话列表、Agent 配置、自动化任务、系统设置、版本与更新)。
  • 输入面板栅格重整 (Composer Layout):重构输入框底部功能区,左侧固化模型规格切换甲板,右侧紧密停靠智能审批盾牌,将附件、语音及投递按钮统一收敛至 24×24 规格,消除键盘弹出时的视口抖动;独立解耦子代理运行状态胶囊,防止布局挤压。
  • 消息元数据单行压缩 (Message Metrics):将单轮推理耗时(分秒格式)与 Token 吞吐生成速率(tps)合流至消息底部操作栏,全路径约束为单行显示并配置 flexShrink 弹性收缩,彻底解决小屏设备上的截断与非预期换行。
  • 审批安全盾三态化:重构工具调用授权控制(全自动批准 / 需用户确认 / 全部阻断),以状态色区分并移除多余展开折叠箭头。
  • 超宽数据表格横向滑动:富文本渲染中提取超宽表格并套用独立横向滚动容器,保留多列完整数据结构,避免文字纵向堆叠变形。
  • 跨段落自由文本选区:引入全局选择模态层,支持跨气泡、跨段落拖拽选区并保留原生剪贴板交互。
  • 多语言完整性覆盖 (i18n):全量补齐中文资源键,将推理强度及新增界面文本完全本地化,并在 CI 管道中加入自动化校验门禁(check-i18n)。
  • 前台唤醒状态探活:监听 AppState 前台变更,恢复聚焦时自动执行网关心跳并重新校准通知服务活跃度。

缺陷修复 (Bug Fixes)

  • 下载链路堆内存溢出 (OOM Fix):根治针对大文件(如 82MB 安装包)在 JS 运行时内触发 .base64() 导致瞬间申请 227MB 连续内存并抛出 OutOfMemoryError 的崩溃问题。重构为私有缓存落盘后经由底层通道直写 SAF,二进制数据完全不经过 JS 堆内存。
  • SAF 虚拟子路径解析失效:修复此前以 new File(treeUri, name) 方式构造目标时,因 AOSP getTreeDocumentId 仅截取根标识、直接丢弃后续路径段,导致目标文件被解析为所选目录本身、覆盖写直接抛错或清空整目录的致命缺陷;改为复制至目录对象后由系统生成凭据并回查认领真实 URI。
  • 跨应用分享协议崩溃:废弃此前依赖 expo-sharing 的打开机制,彻底解决其底层源码硬编码要求 file:// 协议从而在面对 SAF content:// 协议时抛出 IllegalArgumentException 的系统异常。
  • 通用意图拦截异常:解决此前无类型广播 Linking.openURL(treeUri) 导致部分机型系统过滤表命中 Google 等通用浏览应用、弹出跨应用请求授权提示的问题。
  • 前台服务 5 秒超时崩溃:解决 Android 14+ 下因未及时提升前台而抛出的 ForegroundServiceDidNotStartInTimeException。在 onStartCommand 首行强制执行 startForeground(),增加通知渠道前置校验,并在启动生命周期窗口内以带 TTL 的状态标记延后处理停止请求,避免被系统记账拦截。
  • 应用包可见性声明 (Package Visibility):针对 targetSdk >= 30 规范,在 AndroidManifest.xml 中补全 <queries> 标签,声明各厂商文件管理器与自启动包名,避免 resolveActivity 在高版本安卓上因权限隔离恒定返回 null 导致降级链断裂。
  • 系统安装器权限补全:在应用清单及 app.json 中补齐 REQUEST_INSTALL_PACKAGES 声明,确保 APK 资产可被系统 PackageInstaller 正常接管。
  • 构建版本号单一真源 (Build Version SSOT):修复此前因 android/ 目录被 .gitignore 忽略导致在 Gradle 中手动修改版本号在 CI prebuild 阶段被反复覆写、安装包 versionCode 长期被锁定在 13 的问题;统一将 app.json 确立为构建版本号的唯一源头。
  • 排他性维护锁异常:修复删除历史会话时调用离线 bulk-delete 接口与在线网关持有独占锁冲突(Exclusive maintenance refused)的问题,改走在线长连接 RPC 事务。
  • 模型提供商过滤异常:修复未配置鉴权凭证的模型提供商依然混入选择器列表的问题。
  • Reanimated UI 线程崩溃:解决因 worklet 函数默认参数引用模块级常量而在 UI 线程求值抛出 Property 'RUBBER_BAND_FLOOR' doesn't exist 导致手势初次触摸直接闪退的问题,将纯计算函数收敛为自包含字面量,并建立对应变异测试防线。

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 05:01
Hermes Android 1.8.1