Skip to content

v0.6.0rc7

Pre-release
Pre-release

Choose a tag to compare

@xiaosuawa xiaosuawa released this 16 Jun 15:56
· 4 commits to master since this release

What's New in v0.6.0rc7

This is likely the last release candidate before v0.6.0 stable.

✨ New Features

  • 🧩 Enums — PageLoadEvent, NewWindowResponse, DragDropEvent are now proper Python Enum types (re-exported from wryview). No more magic strings in callbacks.
  • 🔒 https_scheme (Windows, default True) — custom protocol pages are now secure contexts by default. Service Workers, Geolocation, Web Crypto all work out of the box.
  • 📥 Download handlers — download_started_handler(url, suggested_path) → bool|str and download_completed_handler(url, saved_path, success: bool).
  • 🖱️ context_menus — enable/disable native right-click context menu (Windows).
  • 🌐 proxy — {"type": "http"|"socks5", "host": "...", "port": "..."}.
  • 📜 initialization_script — three states: default (injects JS bridge + fullscreen), None (skip all injected scripts), str (custom script). Use with caution — setting to None or custom breaks the JS bridge and fullscreen handling.
  • 🔧 wsgi_port — specify a fixed TCP port for wsgi_scheme="localhost" mode.
  • 🔍 is_devtools_open() — check if DevTools is currently open.
  • back_forward_gestures gesture navigation (cross-platform, not macOS only).

⚠️ Breaking Changes

  • Callback return types now use enums:
    • new_window_handler → NewWindowResponse (was str)
    • page_loaded signal → (PageLoadEvent, url) (was (str, str))
    • drag_drop_handler → (DragDropEvent, paths, position) (was (str, ...))
  • initialization_done signal no longer carries (success, error_msg) — just ().
  • domContentLoaded signal removed — use page_loaded (event PageLoadEvent.Finished) instead.
  • user_data_folder default changed to sentinel-based tri-state: omit = auto-generate, None = skip, str = custom path.
  • incognito and user_data_folder are now independent — incognito no longer overrides the data directory.

🐛 Fixes

  • JS Bridge: error responses no longer misrouted to the wrong pending Promise.
  • JS Bridge: window.qtwebview.api.call("funcName", ...) meta-call now handled in JS, no Python round-trip.
  • web_message_received signal no longer emitted twice for non-JSON IPC messages.
  • GDI resource leak: _AnchorWindow now cleans up DIB section, DC, and bitmap on close.
  • Hide & show: DWM layered surface restored via WM_SHOWWINDOW (more robust than showEvent).
  • closeEvent order documented — child HWND dropped before parent anchor.

📦 Dependencies

  • wryview bumped to ~=0.4.0.

🪶 v0.6.0rc7 更新内容

这很可能是 v0.6.0 正式版前的最后一个候选版本。

✨ 新特性

  • 🧩 枚举类型 — PageLoadEvent、NewWindowResponse、DragDropEvent 替代了所有魔术字符串(从 wryview 转发)。
  • 🔒 https_scheme(Windows,默认 True)— 自定义协议页面默认已是安全上下文,Service Worker 等开箱即用。
  • 📥 下载回调 — download_started_handler / download_completed_handler。
  • 🖱️ context_menus — 原生右键菜单开关(Windows)。
  • 🌐 proxy — 代理配置 {"type": "http"|"socks5", "host": "...", "port": "..."}。
  • 📜 initialization_script — 三态:默认注入桥接+全屏 / None 跳过 / 字符串自定义。设 None 或自定义会破坏 JS 桥接和全屏,需手动重实现。
  • 🔧 wsgi_port — localhost 模式下指定固定端口。
  • 🔍 is_devtools_open() — 查询 DevTools 是否打开。
  • back_forward_gestures 手势导航(跨平台,不仅 macOS)。

⚠️ 破坏性变更

  • 回调改用枚举:
    • new_window_handler → NewWindowResponse
    • page_loaded 信号 → (PageLoadEvent, url)
    • drag_drop_handler → (DragDropEvent, paths, position)
  • initialization_done 信号不再携带 (success, error_msg)。
  • domContentLoaded 信号已移除,用 page_loaded(PageLoadEvent.Finished)替代。
  • user_data_folder 改为三态(不传=自动生成 / None=跳过 / 字符串=自定义路径)。
  • incognito 与 user_data_folder 解耦——incognito 不再覆盖数据目录。

🐛 修复

  • JS Bridge:错误响应不再路由到错误的 Promise。
  • JS Bridge:api.call("funcName") 元调用改为 JS 侧处理。
  • web_message_received 信号不再重复发射。
  • _AnchorWindow GDI 泄漏:关闭时正确释放 DIB、DC 和位图。
  • 隐藏/恢复:改用 WM_SHOWWINDOW 恢复 DWM 分层表面。
  • closeEvent 顺序注释。

📦 依赖

  • wryview 升级至 ~=0.4.0。