saucer

πŸ›Έ A modern, cross-platform C++ webview library

MIT License

Stars
166
Committers
4

Bot releases are visible (Hide)

saucer - saucer v3.0.0

Published by Curve about 2 months ago

saucer v3.0.0

πŸ›Έ New Features

  • 🍎 Native MacOS support!

    New Cocoa & WebKit backend πŸŽ‰

  • [🧨 BREAKING] New default backend for linux based on GTK4 & webkitgtk (As decided by poll in #26)

    Using libadwaita!

  • πŸš€ New Java-Script function call syntax saucer.exposed.func(10)

    Instead of saucer.call("func", [10])

  • βŒ› Executor support

    Allows to manually resolve / reject, i.e.

    smartview.expose("func", [](const saucer::executor<int> &exec)
    {
        const auto &[resolve, reject] = exec;
        // ....
    }
    
  • [🧨 BREAKING] Use saucer::launch for exposing async functions

    smartview.expose("func", [](...) { ... }, saucer::launch::async);
    
  • 🌊 Use Thread-Pool internally for async exposed functions

  • πŸ“‚ Add webview::set_file

  • 🌐 User-defined custom schemes (webview::register_scheme, webview::handle_scheme, ...)

  • πŸ¦₯ Support for Lazy-Loading embedded files

  • ⚑ Improve Serializer- and overall performance

  • ✍️ Add Drag and Resize HTML attributes (data-webview-drag, data-webview-resize="br", ...)

  • ⭐ Favicon and window icon support

  • πŸ“„ Page-Title support (document.title)

  • πŸŽ‰ C-Bindings, allows for FFI Usage

  • πŸŒ• Add Force-Dark-Mode

  • πŸ–ΌοΈ New window_event::decorated event

  • [🧨 BREAKING] Renamed options::chrome_flags to options::browser_flags

  • [🧨 BREAKING] Refactored modules

    • Modules are no longer required to inherit from saucer::module (which was also removed)
    • Natives are now passed via a saucer::natives object, and the natives can also be accessed without modules via webview::natives()
    • The smartview no longer inherits from the given modules, instead they should be accessed via smartview.module<T>()
  • [🧨 BREAKING] webview::inject now takes a saucer::script

    • Allows to specify frame (top-frame, all-frames)
    • Can be permanent (Permanent scripts will not be cleared by webview::clear_scripts())
  • 🧭 Added webview::reload, webview::back and webview::forward

🦐 Minor Changes

  • πŸ’₯ Remove exception usage (support for -fno-exceptions builds)

🍡 Fixes

  • βš–οΈ Various stability improvements

  • πŸ› Various bug fixes (#24, #23, and many more!)

saucer - saucer v3.0.0 Latest Release

Published by Curve 2 months ago

saucer v3.0.0

[!NOTE]
Feedback on this discussion would be greatly appreciated :)

πŸ›Έ New Features

  • πŸš€ New Java-Script function call syntax saucer.exposed.func(10)

    Instead of saucer.call("func", [10])

  • βŒ› Executor support

    Allows to manually resolve / reject, i.e.

    smartview.expose("func", [](const saucer::executor<int> &exec)
    {
        const auto &[resolve, reject] = exec;
        // ....
    }
    
  • [🧨 BREAKING] Use saucer::launch for exposing async functions

    smartview.expose("func", [](...) { ... }, saucer::launch::async);
    
  • 🌊 Use Thread-Pool internally for async exposed functions

  • πŸ“‚ Add webview::set_file

  • 🌐 User-defined custom schemes (webview::register_scheme, webview::handle_scheme, ...)

  • πŸ¦₯ Support for Lazy-Loading embedded files

  • ⚑ Improve Serializer- and overall performance

  • ✍️ Add Drag and Resize html attributes (data-webview-drag, data-webview-resize="br", ...)

  • ⭐ Favicon and window icon support

  • πŸ“„ Page-Title support (document.title)

  • πŸŽ‰ C-Bindings, allows for FFI Usage

  • πŸŒ• Add Force-Dark-Mode

  • πŸš€ New GTK4 & webkitgtk-6 backend

    • Using libadwaita!
  • [🧨 BREAKING] Renamed options::chrome_flags to options::browser_flags

  • πŸ§ͺ Allow to specify frame for script injection (Top-Frame, All-Frames)

🍡 Fixes

  • βš–οΈ Various stability improvements

  • πŸ› Various bug fixes (#24, #23, and many more!)

saucer - saucer v2.3.0

Published by Curve 7 months ago

saucer v2.3.0

πŸ›Έ New Features

  • πŸ“‹ Allow to specify chrome-flags

🍡 Fixes

  • πŸͺŸ Workaround confusing IntelliSense error until Microsoft fixes underlying issue (#12)
saucer - saucer v2.2.0

Published by Curve 10 months ago

saucer v2.2.0

πŸ›Έ New Features

  • πŸ” Improved Error Messages!

    The JavaScript errors are now much more detailed. In case of a type-mismatch they now also include the expected native type (using compile time reflection)

🍡 Fixes

  • Typo in windows error messages
saucer - saucer v2.1.1

Published by Curve 11 months ago

saucer v2.1.1

[!NOTE]
This is a bug fix release

🍡 Fixes

  • Issues with custom-scheme on WebView2

πŸ“– Minor Changes

  • Code de-duplication for explicit template instantiations
  • Default to Qt6 on Linux
  • Update glaze
saucer - saucer v2.1.0

Published by Curve 12 months ago

saucer v2.1.0

πŸ›Έ New Features

  • Add support for dragging & resizing frameless windows

🍡 Fixes

  • Minor Windows related fixes
saucer - saucer v2.0.1

Published by Curve 12 months ago

saucer v2.0.1

[!NOTE]
This is a bug fix release

🍡 Fixes

  • Modules
    • πŸ€– Add native webview2 header
saucer - saucer v2.0.0

Published by Curve 12 months ago

saucer v2.0.0

πŸ›Έ New Features

  • 🚀 Allow to control Hardware-Acceleration

  • πŸͺ Persistent Cookies & Support for custom storage directories

  • πŸ›Έ Module Support

  • πŸͺŸ Window

    • Add focused() and focus()

      Checks whether the window is focused and allows to focus the window

    • Add minimized() / minimized() and set_minimized() / set_maximized()

      Checks whether the window is maximized / minimized and allows to maximize / minimize it.

  • ♻️ Add once

    Removes the registered event after it has fired once

  • πŸŽ‰ New Events

    • window_event::maximize

      Fired when the window is maximized

    • window_event::minimize

      Fired when the window is minimized

    • window_event::focus

      Fired when the window gains or loses focus

    • web_event::load_finished

      Fired when a page finishes loading

    • web_event::load_started

      Fired when a page starts loading

    • web_event::dom_ready

      Equivalent to the DOMContentLoaded event

🧨 Breaking Changes

  • webview::run_java_script has been renamed to webview::execute
  • The default serializer has been changed to glaze
  • Dropped official vcpkg port

    If you are a good at packaging feel free to update the existing port!

🍡 Fixes

  • πŸ“¦ Full Package Artifact

  • Windows

    • inject now works as expected
    • Resource Management
  • ... and many more!