• v0.2.0 8031d470d1

    v0.2.0
    Some checks failed
    Publish crates / cargo publish (Forgejo Cargo registry) (push) Successful in 58s
    Check / fmt + clippy + tests (push) Has been cancelled
    Build Linux package / Build vervain-agent and publish generic package (push) Successful in 6m42s
    Stable

    David released this 2026-07-01 00:35:37 +02:00 | 135 commits to main since this release

    Changelog

    8031d47 Merge pull request 'Release v0.2.0' (#95) from release/v0.2.0 into main
    9bb0967 Release v0.2.0
    7082f4a Merge pull request 'feat(agent): report running semver on the control channel (VA-94)' (#94) from feat/VA-94-report-running-semver into main
    11cba48 feat(agent): report running semver on the control channel
    77cdbd9 Merge pull request 'feat(agent): attach to active X11 session for the desktop tab (VA-86)' (#93) from feat/VA-86-x11-session-attach into main
    7f0978e feat(agent): attach to active X11 session for the desktop tab
    9c37bd5 Merge pull request 'feat(kvm): report host display manager in kvm_displays reply' (#92) from feat/VA-91-display-manager-detection into main
    63d3db3 feat(kvm): report host display manager in kvm_displays reply
    20ab582 Merge pull request 'feat(gui): Windows assistance GUI - named-pipe IPC, Session 0 launch, capture exclusion (VA-56)' (#91) from feat/VA-56-windows-assistance-gui into main
    d20e86c feat(gui): Windows assistance GUI - named-pipe IPC, Session 0 launch, capture exclusion (VA-56)
    ca46ca9 Merge pull request 'feat(agent): remote self-uninstall over the control channel (VA-87)' (#90) from feat/VA-87-remote-self-uninstall into main
    d820695 feat(agent): remote self-uninstall over the control channel (VA-87)
    4b8a69c Merge pull request 'feat(agent): run system install as root and attach to active session (VA-84)' (#89) from feat/VA-84-system-root-session-attach into main
    bb58cb3 feat(agent): run system install as root and attach to active session (VA-84)
    8359b0f Merge pull request 'feat(agent): Wayland scroll via portal NotifyPointerAxisDiscrete (VA-83)' (#88) from fix/VA-83-wayland-scroll-axis into main
    28c0cb5 feat(agent): Wayland scroll via portal NotifyPointerAxisDiscrete (VA-83)
    be749fe Merge pull request 'feat(agent): Wayland screen capture via dlopen PipeWire (VA-82)' (#87) from fix/VA-82-pipewire-dlopen into main
    4afdb20 Merge branch 'main' into fix/VA-82-pipewire-dlopen
    e892215 feat(agent): Wayland screen capture via dlopen PipeWire (no hard link)
    0431c4b feat(agent): hand-rolled SPA POD codec for dlopen PipeWire consumer
    addfd09 Merge pull request 'fix(package): stable tracks SemVer releases, latest tracks main' (#85) from fix/VA-78-agent-channels-stable-latest into main
    e4648a0 fix(package): stable tracks SemVer releases, latest tracks main
    041492a Merge pull request 'fix(agent): stop silent black X11 capture fallback on Wayland (VA-80)' (#84) from fix/VA-80-wayland-capture into main
    d5c66a6 Merge pull request 'test(kvm): prove tile stream ships only changed tiles (idle => zero)' (#83) from verify/VA-79-tile-diff-changed-only into main
    7a3b4e1 test(kvm): prove tile stream ships only changed tiles (idle => zero)
    2a7e436 fix(agent): stop silent black X11 capture fallback on Wayland
    eadcd78 Merge pull request 'fix(agent): present client cert on relay dial (relay is mTLS-only) (VA-77)' (#82) from fix/VA-77-relay-mtls-client-cert into main
    89432f1 fix(agent): present client cert on relay dial (relay is mTLS-only)
    52618a9 Merge pull request 'fix(agent): hand-roll wss:// relay dial with pinned-CA TLS (VA-76)' (#81) from fix/VA-76-relay-wss-tls-dial into main
    ebc14c7 fix(agent): hand-roll wss:// relay dial with pinned-CA TLS
    530c4cb Merge pull request 'chore: Sync the checks and justfile recipes' (#80) from chore/sync-checks-justfile into main
    2a2cc26 Merge branch 'main' into chore/sync-checks-justfile
    74cd41e Merge pull request 'feat(agent): wipe spent enrollment material; install bundle via stdin (VA-75)' (#79) from feat/VA-75-enroll-wipe-stdin into main
    4f90782 feat(agent): wipe spent enrollment material; install bundle via stdin
    2561f71 Merge pull request 'feat(dev): mTLS enrollment dev loop; retire dev-insecure plain-WS' (#78) from feat/VA-74-dev-mtls-enroll-bootstrap into main
    28e7094 feat(dev): mTLS enrollment dev loop; retire dev-insecure plain-WS
    989f141 Merge pull request 'feat(agent): token-bootstrapped mTLS enrollment; remove .vagent + handshake (VA-67)' (#77) from feat/VA-67-token-enroll-mtls into main
    2f19ca9 feat(agent): token-enroll mTLS identity; drop .vagent + handshake
    e14b5e5 Merge pull request 'fix(build): install make in release builder for vendored openssl' (#76) from fix/VA-73-builder-install-make into main
    7d3d92e fix(build): install make in release builder for vendored openssl
    3a0df85 Merge pull request 'fix(terminal): skip PTY tests when child spawn fails, not just openpty (VA-71)' (#75) from chore/checks-workflow-776d46a3 into main
    7c14c12 fix(terminal): skip PTY tests when child spawn fails, not just openpty (VA-71)
    776d46a Merge pull request 'feat(store): consolidate config + data + identity into encrypted SQLite (VA-68)' (#74) from feat/VA-68-encrypted-sqlite-store into main
    e89e652 test(netprobe): use reserved address for unreachable-port probe (VA-69)
    32f1c19 feat(store): consolidate config + data + identity into encrypted SQLite (VA-68)
    065e299 Merge pull request 'fix(dev): rename dev seed to .vagent and target /api/v1/agent (VA-66)' (#73) from fix/VA-66-dev-vagent-rename-and-path into main
    5092263 Merge pull request 'fix(dev): complete .vagent rename and point dev seed at /api/v1/agent (VA-66)' (#72) from fix/VA-66-dev-tooling-vagent-rename-cert-pin into main
    b6dd4db fix(dev): rename dev seed to .vagent and target /api/v1/agent
    58662b0 fix(dev): complete .vagent rename and point dev seed at /api/v1/agent (VA-66)
    06bbb76 Merge pull request 'docs(distribution): name real fetcher owner psa-systems-private' (#71) from fix/VA-65-fetcher-owner-doc into main
    d282fa8 docs(distribution): name real fetcher owner psa-systems-private
    3baff72 chore: Sync the checks and justfile recipes
    765bfcf Merge pull request 'fix(ci): derive publish channel from trigger to end 409 race' (#69) from fix/GOV-14-trigger-derived-publish-channels into main
    7373767 Merge branch 'main' into fix/GOV-14-trigger-derived-publish-channels
    4a87812 Merge pull request 'refactor: purge mesh/MeshCentral naming, rename .msh to .vagent (VS-42)' (#70) from feature/refactor-vervain into main
    596b15d refactor: purge mesh/MeshCentral naming, rename .msh to .vagent
    2e8fc0b fix(ci): derive publish channel from trigger to end 409 race
    d958b79 Merge pull request 'fix(terminal): skip PTY tests when no PTY can be allocated (VA-64)' (#68) from fix/VA-64-pty-tests-skip-without-pty into main
    cbc1f2c Merge pull request 'docs(distribution): publish the real agent signing recipient' (#67) from docs/fill-signing-recipient into main
    8c805bc fix(terminal): skip PTY tests when no PTY can be allocated
    592747d docs(distribution): publish the real agent signing recipient
    17a28ff Merge pull request 'feat(signing): sign agent binaries with age key + XEdDSA (VA-62)' (#66) from feat/VA-62-age-xeddsa-signer into main
    f76467b fix(signing): harden secret-key handling from review
    b275e73 feat(signing): sign agent binaries with age key + XEdDSA
    abfcc01 Merge pull request 'VA-60: publish minisign-signed meshagent- matching the server fetcher contract' (#65) from feat/VA-60-publish-meshagent into main
    462f620 docs(fetcher): correct VERVAIN_AGENT_FETCHER_* env names against the server (VA-60)
    1963253 feat(ci): publish meshagent- matching the server fetcher contract (VA-60)
    52cdfcf Merge pull request 'VA-58: architect agent build + minisign signing pipeline (key custody, deployment models, rotation)' (#64) from docs/VA-58-signing-architecture into main
    8a4b59e feat(signing): vervain-agent signing-keygen + rotation runbook (VA-58)
    5c7c7fb docs(signing): architect agent build + minisign signing pipeline (VA-58)
    d14d4d8 Merge pull request 'feat(ci): publish minisign-signed meshagent- to the Forgejo package' (#63) from feat/VA-57-minisign-signed-packages into main
    5cf2260 feat(ci): publish minisign-signed meshagent- to the Forgejo package
    5b5b6dd Merge pull request 'feat(justfile): add dev-clean / dev-clean-all teardown recipes' (#62) from feat/dev-clean-recipes into main
    e7d67b0 feat(justfile): add dev-clean / dev-clean-all teardown recipes
    e5a348f Merge pull request 'VA-24: native assistance-mode GUI in egui (Linux first)' (#61) from feat/VA-24-agent-gui into main
    2f2a921 fix(gui): address VA-24 review findings
    da2f590 feat(gui): native assistance-mode GUI in egui, Linux first (VA-24)
    f830087 Merge pull request 'VA-14: TPM 2.0-backed agent identity (Linux)' (#60) from feat/VA-14-tpm-identity into main
    326e675 fix(identity): address VA-14 TPM review findings
    c054221 feat(identity): TPM 2.0-backed agent key on Linux (VA-14)
    c19462d Merge pull request 'VA-53: idempotent buildx builder setup in build-package.yml' (#59) from fix/VA-53-buildx-idempotent into main
    2eed1fc fix(ci): make the buildx builder setup idempotent across runs
    ef48f99 Merge pull request 'VA-13: apply staged self-update on Windows' (#58) from feat/VA-13-windows-self-update into main
    ede7b46 fix(update): address VA-13 Windows self-update review findings
    0cd08d7 Merge pull request 'VA-11: Windows KVM via DXGI Desktop Duplication + SendInput' (#57) from feat/VA-11-windows-kvm into main
    e4fd54a feat(update): apply staged self-update on Windows (VA-13)
    f736d37 fix(kvm): address VA-11 Windows review findings
    960fb51 docs(roadmap): mark VA-11 Windows KVM implemented
    181b3bd feat(kvm): Windows KVM via DXGI Desktop Duplication + SendInput (VA-11)
    edf1356 Merge pull request 'VA-52: catch a stale Cargo.lock in the PR check (--locked)' (#56) from fix/VA-52-ci-locked-build into main
    280471b fix(ci): build with --locked in the PR check to catch a stale Cargo.lock
    bf96d55 Merge pull request 'VA-10: WebRTC data-channel tunnel upgrade' (#55) from feat/VA-10-webrtc-datachannel into main
    494731f fix(rtc): address VA-10 review findings
    993c3f0 feat(rtc): WebRTC data-channel tunnel upgrade (VA-10)
    f747915 Merge pull request 'VA-9: host the agent as a Windows service (SCM)' (#54) from feat/VA-9-windows-service into main
    59c0a98 fix(windows): address VA-9 service review findings
    b6bfd58 feat(windows): host the agent as a Windows service (SCM)
    573d4a4 Merge pull request 'VA-51: make generic package upload idempotent on 409' (#53) from fix/VA-51-generic-upload-idempotent into main
    6dbc7ad fix(ci): make generic package upload idempotent on 409

    Downloads