更新日志
版本历史
v1.3.1
修复 修复一个历史遗留bug
- 当窗口设置为使用进程图标非页面图标时,无法正确设置窗口图标
v1.3.0
年终更新!
本次更新为本年度最后一次更新,如果你对26年度有什么想法可以提交问卷: https://wj.qq.com/s2/25628138/c3fd/
新增功能
对话框 API
新增了对话框 API,该 API 类似于 Electron 的 dialog 模块,支持在前端和 C 代码中使用,用于显示文件选择、保存文件、消息提示等对话框。
前端 API:
- showOpenDialog - 显示打开文件对话框
- showSaveDialog - 显示保存文件对话框
- showMessageBox - 显示消息框
- showErrorBox - 显示错误框
C API:
- OpenDialogParams - 打开文件对话框参数结构体
- SaveDialogParams - 保存文件对话框参数结构体
- MessageBoxParams - 消息框参数结构体
- jade_dialog_show_open_dialog - 显示打开文件对话框
- jade_dialog_show_save_dialog - 显示保存文件对话框
- jade_dialog_show_message_box - 显示消息框
- jade_dialog_show_error_box - 显示错误框
通知功能
新增了桌面通知功能,允许应用程序向用户显示系统通知,支持自定义标题、内容、图标、按钮等。目前仅在 Windows 平台上可用。
C API:
- set_notification_app_registry - 注册通知应用到 Windows 注册表
- show_notification - 显示桌面通知
- NotificationParams - 通知参数结构体
改进与修复
- 改进了错误处理机制
v1.2.0
重要改进! 不再只是简单的为编辑框元素放行右键菜单
- 右键菜单控制增强:
- 前端引入自定义属性 jade-allow-contextmenu,可以为特定元素启用右键菜单
- 修改 disable_right_click 策略,从本版本开始,默认不再允许右键菜单!
新事件
- 增加窗口事件:新增 window-fullscreen 事件,当窗口全屏状态改变时触发,可用于监听和响应全屏状态变化
修复
- 修复了前端无法全屏的问题
- 修复以及优化一些已知问题
v1.1.3
创建本地服务器增强
-
SPA 路由支持
- 修复了前端框架(如 Umi、Vue、React)打包的多路由应用刷新非首页路由时出现 404 的问题
- 支持前端路由的 History 模式和 Hash 模式
- 确保路由切换和页面刷新都能正常工作
-
URL 大小写不敏感
- 实现了 URL 路径大小写不敏感的处理
- 无论用户输入什么大小写的 URL,都能正确访问对应的资源
- 提升���用户体验,减少了输入错误的可能性
-
路径规范化和安全
- 统一了路径格式,处理了各种路径分隔符和格式问题
- 增强了路径安全,防止恶意路径访问
- 确保应用只能访问指定目录内的资源
修复问题
-
SPA 路由刷新 404
- 解决了前端框架多路由应用刷新页面时的 404 错误
- 确保所有路由路径都能正确处理
-
窗口标题同步 窗口标题未设置的情况下自动跟随页面标题
- 修复了页面多次更新标题时窗口标题不同步的问题
- 确保窗口标题始终与页面标题保持一致
v1.1.2
API增强
- 增加API is_windows_11 检查当前系统是否为 Windows 11
修复由窗口库引起的以下问题
我自己实现了
固定边框且去除标题栏同时开启时的逻辑代码 重做了无边框窗口的实现
- 修复固定边框且去除标题栏后边框异常
- 修复无边框窗口时出现windows7风格边框的异常
全新的无边框窗口优化
不再使用窗口样式完成无边框窗口
- 以往的无边框窗口,在这��操作
最小化、最大化、还原无法享受系统动画 但是我们的方式可以让这些操作,享受系统动画。
其它修复
- 无法收到
window-state-changed的问题
优化已知问题
v1.1.0
**新增功能 **
-
内容保护功能:
- 在
WebViewWindowOptions结构体中添加content_protection字段,支持创建窗口时设置内容保护 - 新增
set_content_protection函数,可动态设置窗口内容保护状态,防止��口被截图捕获
- 在
-
WebView 缩放控制:
- 新增
set_webview_zoom函数,支持动态设置 WebView 的缩放级别,范围通常为 0.1 到 5.0
- 新增
**其它更新 ** 优化了和修复了一些功能
v1.0.5
增加两个核心Api
功能说明: 这两个函数用于在 Rust 和 C 之间安全传递字符串,解决了跨语言内存管理问题,避免了因内存泄漏或重复释放导致的程序崩溃。
适用场景:
- 当需要在 C 代码中创建可被 Rust 释放的字符串时
- 解决之前循环发送消息导致的乱码问题
- 确保跨语言字符串传递的内存安全
这组 API 提供了可靠的跨语言文本内存管理方案,适合任何需要在 Rust 和 C 之间频繁传递字符串的场景。
- 优化一些内存释放问题
v1.0.2
WebViewSettings 结构体增强
- 在 WebViewSettings 结构体中添加了 postmessage_whitelist 字段
说明 :用于限制可接收的 PostMessage 消息来源,提高安全性
- 新增 Postmessage-received 事件
当 WebView 接收到 PostMessage 消息时触发,仅当消息来源在白名单中时才会触发
兼容性警告!
通讯Api发生变更,以前的前端Api不再支持,请使用新的Api
现在DevTools网络 选项页面中,可以直接查看通讯过程
基于我们对前后端通信机制的调整,从传统的消息队列/事件模型改为基于自定义协议的
invoke/event模型,预期在以下方面带来性能提升:
1. 通信延迟优化
- 旧模型:基于事件或postMessage,涉及浏览器安全检查、事件循环调度等额外开销,延迟通常在 10-30ms 范围
- 新模型:直接通过自定义协议(
http://jade.{appname}/invoke/)通信,绕过了浏览器事件队列,延迟可降低至 0.3-0.6ms - 提升幅度:70%-90% 的延迟降低
2. 吞吐量提升
- 旧模型:事件驱动模型在高并发下易出现事件队列阻塞,吞吐量约为 100-200 请求/秒
- 新模型:基于HTTP请求的并行处理,支持浏览器的连接池复用,吞吐量可提升至 500-1000 请求/秒
- 提升幅度:200%-400% 的吞吐量提升
3. 资源消耗降低
- CPU利���率:减少了事件循环调度和消息序列化/反序列化的开销,CPU消耗降低约 30%-50%
- 内存占用:简化了中间层数据结构,内存占用降低约 20%-40%
- GC压力:减少了临时对象创建,垃圾回收频率降低约 40%-60%
4. 异步处理效率
- 旧模型:依赖事件监听器,易出现回调地狱和内存泄漏
- 新模型:基于Promise/async-await的异步模型,更高效的内存管理和执行流程
- 提升幅度:异步操作的整体效率提升约 40%-60%
5. 具体表现
- 前端调用
jade.invoke()的响应时间从平均 8ms 降至 1ms 以内 - 支持的并发IPC请求数量从约 150 提升至 800 以上
6. 理论验证 这种基于自定义协议的IPC模型与现代框架的通信机制一致,已被证明在性能和可靠性上优于传统的事件驱动模型。通过直接利用浏览器的HTTP请求机制,避免了额外的中间层开销,实现了更高效的前后端通信。
这些性能提升数据基于理论分析和类似架构的行业数据,实际表现可能因硬件环境、网络条件和具体应用场景有所差异,但整体提升趋势是明确的。
v0.5.0
重大性能优化
本次内部基层彻底重写,多个维度提升效率,预计整体提升250%-300%:
之前是单车道 + 红绿灯 + 大货车(JSON)+ 每车必检�� 优化后是多车道 + 智能交通灯 + 小客车 + 批量安检,整体通行效率大幅提升。
- 通道优化: 减少线程切换开销,提升约30%-50%
- 消息批处理:1ms延迟合并多条消息,减少系统调用次数,高并发下提升约40%-60%
- 序列化优化:序列化速度提升约2-3倍,数据体积减小约50%
- 锁机制优化:全局锁拆分为细粒度锁,减少锁竞争,提升约30%-40%
- 前后端通讯提升:提升约20%-30%,由原来的
6-10ms降低至5-2ms
v0.3.3
性能优化
显著提高应用程序的性能,特别是在空闲状态下的CPU使用率,同时保持事件处理的响应性。
-
CPU使用率:空闲状态下降低90%以上
-
事件处理延迟:降低15-25%
-
并发性能:提高10-20%
事件优化
- #webview-download-started默认阻止,可返回 0允许
v0.3.2
- 修复高分DPI时,窗口位置与尺寸不正确的问题
- 重做execute_javascript方法
- 修复一些Api,在x86程序下堆栈错误
v0.3.1
优化
重要优化!不再使用C约定API,请及时修改Api引入方式
例如
@JadeView_init改为JadeView_init引入方式
- 优化发行文件大小
Api增强
- 增加 webview-download-started事件,可返回1阻止
修复
- 修复某些事件重复触发两次的问题
v0.2.1
API增强
- WebView窗口选项扩展 :
- 在 WebViewWindowOptions 结构体中新增 borderless 字段
- 功能:支持无边框窗口设置,1为无边框,去除边框和系统阴影
- 默认值:0
- 新增C API函数 :
- set_window_fullscreen :设置指定窗口的全屏状态
- is_window_maximized :获取窗口是否处于最大化状态
- WebView设置增强 :
- 在 WebViewSettings 结构体中新增 allow_fullscreen 字段
- 功能:控制是否允许页面全屏,0=false,1=true
API调整
- 移除
set_window_event_handlers事件处理方法
v0.2.0
重要更新 本次更新对 WebView 事件处理和窗口管理架构进行了重要改进,引入了更高效的事件通信模型。
功能增强
-
webview-will-navigate事件增强
为该事件添加了阻止导航的能力,允许应用在页面跳转前进行拦截和控制。 -
新增 C API 函数
添加reload_webview_window函数,支持通过 C API 刷新 WebView 页面内容。
架构优化
- 事件通信模型重构
将原先基于传统的轮询模型升级为唤醒的组合模式,实现更高效的事件传递。 -
- 现在程序稳定性大幅度提升
-
- 顺便修复了窗口启动偶尔掉速的情况
性能提升
下表展示了在典型 GUI 高负载场景下(如:每秒处理 500 个 IPC 消息 + 同时进行窗口缩放),两种架构的性能对比:
| 性能指标 | 旧方案 (Mutex + Vec 轮询) | 新方案 (MPSC Channel + 批量处理) | 预期性能提升 |
|---|---|---|---|
| 单次消息处理耗时 | ~50ms (受限于锁竞争等待) | ~0.2μs (无锁/微锁推入) | 约 250 倍 |
| UI 线程阻塞 (Jank) | 频繁阻塞,容易导致掉帧和卡顿 | 几乎不阻塞,保持稳定帧率 | 流畅度提升 3-5 倍 |
| 消息处理吞吐量 | 低 (逐条加锁,上下文切换频繁) | 极高 (一次唤醒处理成百上千条) | 10 倍以上 |
| CPU 资源开销 | 高 (空转轮询和锁争用消耗) | 低 (仅在有消息时精准唤醒) | 降低 40% - 60% |
| 架构稳定性/安全 | 存在死锁风险 (锁依赖循环) | 架构级规避死锁 (读写完全解耦) | 安全性质变 |
| 用户直观感受 | 拖拽窗口有延迟、程序偶尔假死 | 丝滑顺畅、响应迅速 | 质的飞跃 |
v0.1.2
新增功能
- 实现了窗口隐藏/最小化时自动开启webview的效能模式
-
-
背景限速策略
-
-
- 默认策略 (值为0): 窗口隐藏或最小化时自动开启webview的效能模式
-
- 禁用背景限速 (值为1): 窗口状态变化不影响webview的效能模式
-
- 支持根据
background_throttling设置控制webview的行为
- 支持根据
修复问题
- 改进了日志记录
ZIP 包
发行文件具体说明:JadeView发行文件说明
JadeView_win_x86_dynamic_v0.1.2.zip- 32位动态链接版本打包JadeView_win_x86_static_v0.1.2.zip- 32位静态链接版本打包JadeView_win_x64_dynamic_v0.1.2.zip- 64位动态链接版本打包JadeView_win_x64_static_v0.1.2.zip- 64位静态链接版本打包JadeView_win_arm64_dynamic_v0.1.2.zip- ARM64位动态链接版本打包JadeView_win_arm64_static_v0.1.2.zip- ARM64位静态链接版本打包
v0.1.1
- 添加了文件拖拽事件支持
- 修复一些问题
v0.1.0
- 初始版本发布
- 完整的 C API 接口
- WebView 窗口管理
- 事件系统
- 主题管理
- IPC 通信
- 本地服务器支持
版权信息
© 2025 JadeView. 保留所有权利。