Skip to content

Specola v0.2.5-beta

Latest

Choose a tag to compare

@getspecola getspecola released this 04 Oct 10:16
· 2 commits to main since this release
a8b26d3

Specola v0.2.5-beta

Beta prerelease. Core and the desktop client must come from the same release. The RPC protocol is not compatible with 0.2.4 or earlier.

This release rewrites the whole RPC layer as a small, typed, streaming MessagePack-RPC stack and rebuilds the desktop client on top of it. The Qt Quick client gets History, a traffic map, gateway management and license activation. On Windows, Core now runs as a service that the UI starts and stops for you.

Highlights

  • New RPC framework. A lightweight MessagePack-RPC runtime with versioned contracts, streaming, notifications and flow control. The Core API is defined once in api/*.toml, and the server and the C++, C# and Swift clients are generated from it.
  • Live updates. Core pushes lifecycle, profile and telemetry changes instead of waiting to be polled, and attributes connections to processes for routing and rule matching.
  • New Qt Quick pages. History charts and analytics backed by local SQLite, an observed traffic map, gateway status and device management, and license activation.
  • Windows Core service. The UI starts Core as a service and stops it when you quit, so it no longer outlives the UI. The service starts on demand, and TUN works without running the UI elevated.
  • Native client previews. WinUI 3 (Windows) and SwiftUI (macOS) clients are included in the source tree. They are work in progress and are not in the release package.

Core

  • Connections, DNS, Overview and Routing are served by dedicated Core services.
  • Core exits within 10 seconds of starting shutdown.
  • Core starts without a valid license instead of failing.
  • Named pipe listeners on Windows are secured.
  • JSON handling moved from nlohmann json to cJSON.

Desktop client

  • A single coordinator now owns the application shell and Core lifecycle, so startup is faster. Core also has its own independent window.
  • Proxy node, proxy group, rule and DNS editing, profile import, SSH credentials, server deployment and log inspection have been refined.
  • Quitting from the tray or the Core error screen now exits the whole program.
  • A release UI only uses the Core installed beside it, and Core starts without a console window.
  • Platform-native tray backends have been added.

Windows installer and portable copy

  • The installer stops both editions' services, offers to close a running Specola, and sets the service up so a normal user can start and stop it.
  • Fixed a fresh install aborting with Windows error 80 instead of treating "service not installed" as normal.
  • A portable copy (--data-dir) registers its own specola-portable-service with a single UAC prompt. It refuses to start while the installed edition's Core is running.

Packaging

  • This release publishes the Windows x64 installer only. The portable ZIP is opt-in (SPECOLA_PACKAGE_PORTABLE=1) until its service registration no longer conflicts with the installed edition.
  • macOS arm64 (DMG) and Linux x64 (AppImage) packaging is in place, but those packages are not published with this release. Linux arm64 is no longer built; it stays a Core-only test target for eBPF in virtual machines.
  • The privacy scan no longer flags Qt's own build paths, the CI runner account, or bundled third-party documentation. The macOS portability check ignores a dylib's own install name, and macOS Release Core keeps its LC_UUID after stripping.

Known limitations

  • Release archives do not include GeoIP / GeoSite datasets. Put them in the Specola configuration directory if your routing rules need them.
  • Remote Core connections from an older client must be updated together with the Core.
  • The portable edition and the installed edition share one machine-wide Core, so only one can run at a time.