Changelog
v0.5.1-alpha
Fixed
- SNI 生命周期导出边界:豁免
SPECIAL_METHOD_WRAPPERS的生命周期导出边界检查,避免特殊方法包装器被错误拦截。 - SNI GC 安全:在 JS 引用释放前清除原生指针,防止 GC 扫描阶段出现 use-after-free。
- SNI 空指针防护:确保事件描述符在释放后被清零,防止潜在的野指针解引用。
- 脚本引擎诊断增强:始终启用错误消息和回溯信息,新增诊断输出,提升问题排查效率。
v0.5.0-alpha
Added
- 音频子系统:支持扬声器/麦克风、音频效果和解码器流水线,实现完整的音频播放与录音能力。
- LVGL 图像缓存模块:新增通用图像缓存模块,支持 PSRAM,优化图像加载性能。
- 气泡网格增强:新增
eos_bubble_set_icon_colorAPI,支持纯色气泡(无需图像源)。 - Kconfig 配置系统:引入基于 Kconfig 的系统配置框架,替换选择布尔值为配套整数配置,提供更灵活的配置管理。
- TTF 字体模式:切换为 TTF 字体模式,提供子集化中文字体支持。
- 传感器服务增强:新增操作系统模式、按模式采样策略和类型化订阅回调系统。
- 锁屏系统:新增锁屏功能、设置应用、SHA256 加密库及滚动焦点修复。
- 权限系统:新增权限系统及 4 层 UI Overlay 架构,增强应用隔离和安全性。
- 脚本引擎恢复:支持 JerryScript 致命错误后引擎重启,提升容错能力。
- 表盘列表自动定位:表盘列表自动滚动到当前表盘位置。
- SDK 版本管理:引入
minApiLevel/targetApiLevelSDK 版本控制系统。 - 代码质量框架:新增统一代码质量检查框架,引入格式化规则和 CI 检查流程。
- 构建系统增强:启用
JERRY_ERROR_MESSAGES以获取详细 JS 错误信息。 - 快照性能测试:新增快照性能和动画基准测试套件。
Changed
- LVGL 版本升级:所有 LVGL v8 API 替换为 v9 等价 API,全面升级 LVGL 版本。
- 错误码统一:统一内核、脚本引擎和文件系统端口的错误码体系。
- 缓存模块重命名:
eos_cache→eos_service_cache,清理配置和命名规范。 - 音频系统重构:移除 VAR 音频效果,修复 TTF 字体系统,统一音频路径前缀,替换音频专用测试框架为通用测试框架。
- 测试框架统一:替换音频专用测试框架为通用测试框架,统一测试基础设施。
- 代码注释英文化:将中文注释翻译为英文,提升国际化可维护性。
- 代码格式化规范化:采用统一代码格式化规则,所有源文件按
.clang-format格式化,迁移到eos_malloc/eos_free统一内存接口。 - CI 流程简化:代码质量工作流简化为单 Linux 任务。
- 内存优化:用栈缓冲区替代不必要的堆分配路径,减少内存碎片。
- 应用图标尺寸更新。
Fixed
- 修复 boot logo 因文件系统驱动未注册而导致不显示的问题。
- 应用列表转场优化:使用 RGB565 快照格式,以图像快照缩放替代 widget 变换缩放,动画时长缩短至 350ms,大幅提升转场性能。
- 修复应用标题动画与 activity 转场同步问题。
- 使用专用缓存分配器分配大绘制/画布缓冲区。
- 交换 include 顺序,使平台覆盖配置优先。
- MinGW 平台兼容性修复:
__GNUC__分支匹配及EOS_WEAK弱符号链接失败问题。 - 修复 Overlay 层级、触摸可见性和侧按钮关闭逻辑。
- 侧按钮和数字表冠不再误关闭权限对话框。
- 锁屏解除时尊重 activity header 可见性。
- SNI 注销顺序调整,防止 GC 后 use-after-free。
- 标题变化动画移出快照窗口,防止动画错乱。
- 权限回调在正确程序上下文中运行(通过
spm_call)。 - V-001 安全漏洞修复(memcpy 边界检查错误)。
- SNI 强制生命周期导出边界,修复整数宽度不匹配,支持子资源级联销毁。
v0.4.0-alpha
Breaking Changes
- 脚本引擎分层架构重构:引入脚本程序管理器 (SPM) 作为核心引擎与上层框架之间的中间层,分离程序生命周期与 JS 执行。
- Activity Root 模式:采用 Root Activity 模式替代原有的 watchface-activity 单例,生命周期结构体替代指针方式管理。
- 服务模块重构:移除
eos_misc模块,使用eos_service_*系列服务替代原有功能。 - 项目分层架构重组:重构项目布局为 kernel、services、framework、ui、apps 分层结构。
Changed
-
脚本引擎:
- 重构生命周期管理,支持上下文保存/恢复(SUSPEND → IDLE,新增 SUSPENDED 状态)
- 添加 per-program realm 隔离助手
- 从异常对象改进错误回溯提取
- 统一 SNI handle 类型,用单一托管资源范围替代 LC_EXTERNAL/LC_REALM 分离
-
Overlay 架构:
- 实现统一的 overlay 管理器,通过
get_foreground_obj()接口分离 Z-order 管理和 Crown scrollable targets - 修复 Z-order bug:关闭后控制中心阻塞消息列表
- 移除硬编码的 crown 依赖,使用接口查询
- 实现统一的 overlay 管理器,通过
-
Radio 组件:用
eos_radio_page替代eos_radio_list,改进单选功能 -
代码规范:
- 重命名全局变量为下划线前缀,提高封装性
- 更新脚本引擎核心注释,提高清晰度和一致性
Added
- 新增
eos_chrome_manager:集中式 overlay 管理器 - 新增通用脚本错误处理和
eos_fault_panel故障面板 - 新增
eos_accordion手风琴组件,用于错误回溯显示 - 新增脚本执行超时和状态感知函数调用
- 新增错误位置和回溯处理
- 新增容器删除回调 (
eos_container_delete_cb_t),支持自动内存管理 - 新增
eos_input_page输入页面功能 - 新增
clock_hand组件的attach()和center_style()函数 - 新增基于监听器的日志系统 (
eos_log) 及标准输出支持 - 新增启动信息日志增强,显示构建时间和模式详情
- 新增国际化默认语言配置
- 新增 FIFO 环缓冲区实现
- 新增临界区管理 (
eos_critical) - 新增传感器服务 (
eos_service_sensor) 及状态管理 - 新增时间服务和设备 (
eos_service_time) - 新增双链表实现 (
eos_dlist) - 新增事件注册功能和用户事件范围定义
- 新增测试应用支持 (
eos_test),包含音频播放功能
Fixed
- 清理 Activity 快照和 teardown 泄漏
- 修复卸载应用时动画未停止的问题
- 修复 LVGL 事件回调签名问题(WASM 函数签名不匹配)
- 解决
eos_virtual_display中的 typedef 警告 - 为临界区函数添加
EOS_WEAK属性,确保正确链接 - 修复
slide_widget_move中冗余的 slide_change toggle 与 chrome manager 的冲突
v0.3.0-alpha.1
Added
- 新增中文说明文档(README.zh-CN),补充中英文文档一致性。
- 新增应用列表气泡网格能力(
bubble_grid)及相关组件 API。 - 新增应用管理与脚本热重载相关函数,增强运行时管理能力。
- 新增部分资源素材(如应用图标与设计资源)用于界面与示例完善。
- 在文档中新增在线模拟器入口,提升体验与验证效率。
Changed
- 项目命名由 ElenaOS 统一调整为 ElenixOS,并完成大规模命名与路径迁移(含核心模块、接口、头文件与脚本)。
- 构建系统重构:优化 CMake 源文件/头文件收集逻辑,规范 CMakeLists.txt 命名与平台根目录处理。
- 核心初始化流程调整:将
eos_run重命名为eos_init,并同步更新相关原型与调用语义。 - 精简核心逻辑:移除 logo 动画处理路径,简化处理流程与生命周期中的状态切换逻辑。
- README 与文档结构持续整理,格式统一并补充演示说明。
Fixed
- 修复 Activity 生命周期中目标视图短暂闪现问题(进入/切换时的瞬时显示异常)。
- 修复 README 中快速开始与文档链接错误问题。
- 修复 Windows 环境下
mkdir兼容性问题。 - 修复 CMake 中
uthash头文件包含路径错误。 - 修复 .gitignore 漏配构建目录的问题,避免构建产物误入版本控制。
v0.2.0-alpha.1
Changed
- 重构了脚本接口架构,
lv_bindings被重构为 SNI 层。 - 重构了页面管理架构,
nav、screen_mgr、scene被整合为 Activity 概念。 - 优化了 CardPager 和 SlideWidget。
- 重构了语言接口,
current_lang私有化,避免越界访问。 - 优化了列表转场动画。
- 优化了活动切换时控制中心和消息列表的面板收回逻辑。
- 优化了闪光灯显示逻辑。
- 优化了应用列表动画参数。
- 优化了时钟更新回调中的空指针检查和显示逻辑。
- 优化了活动切换和动画处理。
- 优化了可滚动对象的回调移除逻辑。
- 优化了定时器自动删除功能。
- 优化了调试条位置管理,增加全局位置同步与恢复功能。
- 优化了滚动对象查找逻辑。
- 优化了滚动条显示与隐藏逻辑。
- 优化了脚本路径解析与图像源设置。
- 优化了通用句柄解析能力。
- 优化了属性设置。
- 优化了动画变量管理。
- 优化了内存清理与颜色类型桥接支持。
- 优化了文件目录结构。
- 优化了动画属性配置、自定义回调及 JS 动画路径集成。
- 优化了源文件和头文件的动态更新。
- 优化了脚本引擎初始化和退出回调。
- 优化了 LVGL 对象创建函数的参数检查和类型转换。
Added
- 新增了 Activity 生命周期管理功能,支持 Activity 的创建、销毁、暂停、恢复等操作。
- 新增了页面管理模块,页面统一使用栈管理,且引入了 Activity 概念。
- 新增了 SNI 模块,提供更清晰的脚本接口定义,支持面向对象的 LVGL 操作。
- 新增了 LVGL 组件的 SNI 封装,包括:
- image 组件
- dropdown 组件
- checkbox 组件
- canvas 组件
- button matrix 组件
- calendar 组件
- 新增了 Activity 页面切换动画支持,包括开始和结束回调。
- 新增了应用头逻辑和标题变化动画支持。
- 新增了 OPEN 滑动面板状态并完善状态流转。
- 新增了内置备用表盘支持。
- 新增了模块导入功能,支持 JS 模块导入。
- 新增了获取前一个 Activity 的接口。
- 新增了系统初始化错误处理和获取表盘活动的功能。
- 新增了主题主色调的定义。
- 新增了设备信息视图中添加 LOGO 显示。
- 新增了字符图标颜色的 Toast 提示功能。
- 新增了编码器目标设置为 Activity View,添加滑动组件打开和关闭事件。
- 新增了滑动组件的状态管理和动画过渡功能。
- 新增了图表组件及相关 API。
- 新增了图像按钮支持。
- 新增了脚本应用 Debug 页面。
- 新增了 float 类型桥接支持。
- 新增了全局常数的导出功能。
- 新增了新的颜色类型和相关方法。
- 新增了蛇形命名转驼峰命名的转换函数。
- 新增了别名回退功能以支持类型映射。
- 新增了控制台日志功能,添加不同日志级别的支持。
- 新增了 ElenixOS API 的初始化和挂载功能。
Fixed
- 修复了表盘列表无法触摸表盘图片滑动的问题。
- 修复了内存泄漏问题。
- 修复了脚本引擎的问题,防止正常运行时进入错误状态。
- 修复了可滚动对象的回调管理,优化了滚动条显示与隐藏逻辑,解决了滚动条闪烁问题。
- 修复了时钟更新回调中的空指针检查。
- 防止在表盘活动显示应用标题栏。
- 修复了控制中心自动回弹时滚动对象丢失的问题。
- 修复了返回 Activity 时无法获取 scrollable 对象的问题。
- 修复了活动创建时根屏幕为空的处理逻辑。
- 修复了构造函数参数类型检查,确保只接受对象或 null。
- 修复了滚动对象有效性检查。
- 修复了方法名可能为空的问题。
v0.1.0-alpha.1
Added
- 提供智能手表系统的基础功能框架。
- 提供 JavaScript 脚本运行与生命周期管理能力。
- 提供 JavaScript API 支持,包括:
- 部分 LVGL Widget 功能;
- LVGL 事件系统的注册与删除;
- LVGL 动画的创建与运行;
- LVGL 定时器相关功能。
- 提供虚拟显示器,用于 PC 端模拟运行与调试。
- 提供初步的硬件抽象与可移植接口设计,用于支持多平台适配。
- 建立工程与开发文档的基础结构。
- 提供了开发者工具脚本,用于快速生成项目结构。
- 提供模块化系统架构,支持核心功能按模块组合与扩展。
- 提供脚本与系统核心之间的隔离机制,提升系统稳定性与安全性。
- 提供基础调试与开发支持能力,提升桌面端开发与调试效率。