-
v0.2.0
StableAll checks were successfulCheck / fmt + clippy + build + tests (push) Successful in 1m41sBuild desktop (Linux) / Build desktop (Linux x86_64) (release) Successful in 6m12sBuild desktop (Windows) / Build desktop (Windows x86_64) (release) Successful in 6m32sBuild OCI container / Build and push vervain-web (push) Successful in 11m15sBuild desktop (Linux) / Build desktop (Linux x86_64) (push) Successful in 17m32sBuild desktop (Windows) / Build desktop (Windows x86_64) (push) Successful in 19m56sreleased this
2026-07-04 14:33:02 +02:00 | 47 commits to main since this releaseChangelog
39d091fMerge pull request 'Release v0.2.0' (#79) from release/v0.2.0 into main
5edbd38Release v0.2.0
078595eMerge pull request 'fix(desktop): pin pointer-capture hint box size so it is not stretched to 100vh' (#78) from fix/VAPP-68-hint-pill-height into main
9831175fix(desktop): pin pointer-capture hint box size so it is not stretched to 100vh
a376846Merge pull request 'fix(desktop): build browser RtcPeerConnection with domain ICE servers' (#77) from fix/VAPP-67-browser-ice-config into main
7e8d703fix(desktop): build browser RtcPeerConnection with domain ICE servers
b52bfd3Merge pull request 'fix(live): heartbeat the control channel so "live" reflects a reachable server' (#76) from feat/VAPP-66-control-heartbeat into main
d540ed8fix(live): heartbeat the control channel so "live" reflects a reachable server
f3c22bdMerge pull request 'feat(devices): show agent release semver and build info in AGENT card' (#75) from feat/VAPP-64-agent-card-release-version into main
e778e84feat(devices): show agent release semver and build info in AGENT card
e637517Merge pull request 'feat(devices): live agent-update progress in the Update agent dialog (VAPP-62)' (#74) from feat/VAPP-62-live-update-progress into main
94a7dd7Merge branch 'main' into feat/VAPP-62-live-update-progress
7073ab7feat(devices): live agent-update progress in the Update agent dialog
fd65f99Merge pull request 'feat(desktop): browser WebRTC data channel with Direct/Relayed transport' (#73) from feat/VAPP-63-desktop-webrtc-data-channel into main
591d812feat(desktop): browser WebRTC data channel with Direct/Relayed transport
073db45Merge pull request 'feat(desktop): clearly labeled Close connection control in ribbon' (#72) from feat/VAPP-57-desktop-close-connection-ribbon into main
c3dd66cfeat(desktop): clearly labeled Close connection control in ribbon
12c4c58Merge pull request 'fix(desktop): silence wasm dead_code warning on DesktopServerConfig' (#71) from feat/VAPP-58-desktop-server-url-prompt into main
385f651fix(desktop): silence wasm dead_code warning on DesktopServerConfig
7bbca4bfeat(desktop): prompt for server URL on first run, support baked branded builds
6571aabMerge pull request 'feat(devices): show current vs target agent version in Update agent dialog' (#70) from feat/VAPP-61-update-agent-version-display into main
6764411feat(devices): show current vs target agent version in Update agent dialog
4baa9feMerge pull request 'feat(devices): add "Update agent" control to device detail (VAPP-60)' (#69) from feat/VAPP-60-update-agent-button into main
09a7c1dfeat(devices): add "Update agent" control to device detailDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.1.0
StableAll checks were successfulCheck / fmt + clippy + build + tests (push) Successful in 1m48sBuild desktop (Windows) / Build desktop (Windows x86_64) (release) Successful in 5m28sBuild desktop (Linux) / Build desktop (Linux x86_64) (release) Successful in 5m28sBuild OCI container / Build and push vervain-web (push) Successful in 10m11sBuild desktop (Windows) / Build desktop (Windows x86_64) (push) Successful in 15m5sBuild desktop (Linux) / Build desktop (Linux x86_64) (push) Successful in 15m23sreleased this
2026-07-01 00:01:10 +02:00 | 71 commits to main since this releaseChangelog
579baaeMerge pull request 'Release v0.1.0' (#68) from release/v0.1.0 into main
b073195Release v0.1.0
71e3b67Merge pull request 'fix(ci): per-target locked cargo cache mounts for the desktop/web builds (VAPP-59)' (#67) from fix/VAPP-59-desktop-cargo-cache-race into main
77331a2fix(ci): move the syntax directive to line 1 so the frontend pin applies (VAPP-59 review)
cb5e0dffix(ci): give each desktop/web build its own locked cargo cache mount (VAPP-59)
4042ba4Merge pull request 'feat(devices): uninstall the agent on delete, prompt to force when unreachable (VAPP-55)' (#66) from feat/VAPP-55-delete-uninstall-agent-prompt into main
b20b251fix(devices): wait longer than the server's uninstall timeout for the delete ack (VAPP-55 review)
f34c5fafeat(devices): uninstall the agent on delete, prompt to force when unreachable (VAPP-55)
3abf01eMerge pull request 'feat(desktop): let the user set and persist the server URL' (#65) from feat/VAPP-54-desktop-server-url-config into main
5d5d28efeat(desktop): let the user set and persist the server URL
eccf5e6Merge pull request 'fix(desktop): embed and serve CSS/JS assets so the wry build renders styled' (#64) from fix/VAPP-53-desktop-embedded-css-assets into main
41a689efix(desktop): embed and serve CSS/JS assets so the wry build renders styled
a51f880Merge pull request 'feat(ci): cross-compile and publish a Windows desktop build' (#63) from feat/VAPP-56-desktop-windows-build into main
518760efeat(ci): cross-compile and publish a Windows desktop build
fe72256Merge pull request 'feat(desktop): detach viewer into a Document Picture-in-Picture window' (#62) from feat/VAPP-50-desktop-detach-pip into main
8e987f6feat(desktop): detach viewer into a Document Picture-in-Picture window
3ffa9cfMerge pull request 'fix(desktop): apply tiles in arrival order so drags never jump back' (#61) from fix/VAPP-48-ordered-tile-blit into main
7de3227fix(desktop): apply tiles in arrival order so drags never jump back
b083d7aMerge pull request 'feat(desktop): optional pointer capture (Pointer Lock) with Esc-to-release hint' (#60) from feat/VAPP-49-desktop-pointer-capture into main
6d64ee2feat(desktop): optional pointer capture (Pointer Lock) with Esc-to-release hint
a96bfcdMerge pull request 'feat(desktop): add Fit / Full size / Scaled viewport modes' (#59) from feat/VAPP-52-desktop-view-modes into main
e4e696dfeat(desktop): add Fit / Full size / Scaled viewport modes
b8421f5Merge pull request 'fix(apps): instrument desktop render path to localize blank-screen (VAPP-47)' (#58) from fix/VAPP-47-desktop-render-diagnostics into main
8da2363Merge branch 'main' into fix/VAPP-47-desktop-render-diagnostics
39abd5bfix(apps): instrument desktop render path to localize blank-screen
387cd4eMerge pull request 'fix(statusbar): show public origin, never the internal server address' (#57) from fix/VAPP-44-statusbar-public-origin into main
aebc5b9fix(statusbar): show public origin, never the internal server address
829b9ffMerge pull request 'fix(live): surface control WebSocket construction failure' (#56) from fix/VAPP-45-surface-control-ws-error into main
3e2a5e3fix(live): surface control WebSocket construction failure
66affbcMerge pull request 'fix(terminal): hand xterm an owned Uint8Array copy, not a wasm-memory view' (#55) from fix/VAPP-46-xterm-write-owned-copy into main
8101f54fix(terminal): hand xterm an owned Uint8Array copy, not a wasm-memory view
54eab85Merge pull request 'feat(about): add About page showing component versions' (#54) from feat/VAPP-43-about-page-versions into main
90a9409feat(about): add About page showing component versions
81c6ecbMerge pull request 'fix(apps): surface relay/control WebSocket construction errors (VAPP-42)' (#53) from fix/VAPP-42-surface-ws-errors into main
e465b94fix(apps): surface relay/control WebSocket construction errors
240d061Merge pull request 'fix(apps): build browser relay/control URLs from public origin (VAPP-41)' (#52) from fix/VAPP-41-split-internal-public-url into main
e31a7a7fix(apps): build browser relay/control URLs from public origin
a7f602bMerge pull request 'feat(new-device): mint mTLS enrollment bundle, drop legacy .vagent UI' (#51) from feat/vapp-38-mtls-enrollment-bundle-ui into main
4abbbacfeat(new-device): mint mTLS enrollment bundle, drop legacy .vagent UI
9b8c4ddMerge pull request 'Derive OCI publish mode from trigger to end twin-publish race' (#48) from fix/GOV-15-twin-trigger-publish-mode into main
6c5b32dMerge branch 'main' into fix/GOV-15-twin-trigger-publish-mode
7d34a28Merge pull request 'feat(install): download the agent from the API endpoint, drop the proxy (VAPP-35)' (#50) from feat/vapp-35-repoint-download-to-api into main
0d6711afeat(install): download the agent from the API endpoint, drop the proxy
c00e4bbMerge pull request 'fix(install): pass backend GroupServer through, never rewrite to frontend (VAPP-34)' (#49) from fix/vapp-34-no-loopback-rewrite-to-frontend into main
2b3b2c4fix(install): pass backend GroupServer through, never rewrite to frontend (VAPP-34)
6576e15fix(ci): derive OCI publish mode from trigger to end twin-publish race
fe256a9Merge pull request 'ci(oci): switch build cache from type=registry to type=gha' (#47) from fix/vapp-36-oci-gha-cache into main
77c704fci(oci): switch build cache from type=registry to type=gha
e734f72Merge pull request 'fix(settings): send agent fetcher ids as numbers, not strings' (#46) from fix/vapp-33-agent-ids-u32 into main
77ebf78fix(settings): send agent fetcher ids as numbers, not strings
6a2e76cMerge pull request 'chore: Sync the checks and justfile recipes' (#45) from chore/sync-checks-justfile into main
4a8ad23chore: Sync the checks and justfile recipes
67858b5Merge pull request 'fix(settings): align agent-fetcher config to the VS-37 wire contract' (#44) from fix/vapp-agent-fetcher-settings-contract into main
ab602d3fix(settings): align agent-fetcher config to the VS-37 wire contract
a2dd154Merge pull request 'fix(ci): derive desktop publish version from trigger to kill twin-publish race' (#42) from fix/desktop-twin-trigger-publish into main
2a581c0Merge branch 'main' into fix/desktop-twin-trigger-publish
d0956b5Merge pull request 'refactor(apps): rename Mesh to Group and MeshCentral to Vervain' (#43) from feature/refactor-vervain into main
b69d715chore(apps): restore justfile separator comments changed by accident
71478e7docs(apps): reword "legacy" comments to reference the original SPA
7ba2d38refactor(apps): rename Mesh to Group and MeshCentral to Vervain
7ae94b7fix(ci): derive desktop publish version from trigger, not git describe
cb26b92Merge pull request 'feat(ci): cap native check.yml parallelism at nproc/2' (#41) from feat/GOV-10-native-check-nproc-cap into main
78f5c8ffeat(ci): cap native check.yml parallelism at nproc/2
1dce76bMerge pull request 'fix(hooks): mount cargo target outside bind mount via CARGO_TARGET_DIR' (#40) from fix/dev-371-precommit-host-owned-target into main
1ead376fix(hooks): mount cargo target outside bind mount via CARGO_TARGET_DIR
22ef2d8Merge pull request 'feat(enroll): proxy agent binary download through the apps origin' (#39) from feat/proxy-agent-download-vapp-31 into main
736a377Merge branch 'main' into feat/proxy-agent-download-vapp-31
68fa0a9Merge pull request 'feat(settings): agent binary asset source card (view, edit, refresh)' (#38) from feat/settings-agent-binaries-vapp-30 into main
8239ebafeat(enroll): proxy agent binary download through the apps origin
17f86ecfeat(settings): agent binary asset source card (view, edit, refresh)
71d44ecMerge pull request 'feat(ui): rename user-facing "Mesh" to "Device Group"' (#37) from feat/rename-mesh-to-device-group-vapp-28 into main
333fbbaMerge origin/main into feat/rename-mesh-to-device-group-vapp-28
6687c2fMerge pull request 'build(css): run Tailwind build in Docker so host bun is not required' (#36) from feat/dockerize-build-css-vapp-27 into main
31e3d54Merge origin/main into feat/dockerize-build-css-vapp-27
5fd125bMerge pull request 'fix(enroll): rewrite loopback server host to the browser-facing host' (#35) from fix/enroll-loopback-host-vapp-29 into main
cc0677bfeat(ui): rename user-facing "Mesh" to "Device Group"
14b3ab8build(css): run Tailwind build in Docker so host bun is not required
9f07645fix(enroll): rewrite loopback server host to the browser-facing host
e6ac94fMerge pull request 'chore: add pre-commit hook recipes' (#32) from chore/pre-commit-hooks into main
09d9721Merge branch 'main' into chore/pre-commit-hooks
457fc37Merge pull request 'VAPP-7: Per-device file browser tab' (#34) from feat/file-browser-tab-vapp-7 into main
a9ba3cafix(files): cancel agent-side upload on local read failure
cfc1942feat(device): per-device file browser tab (Files tunnel)
d321987Merge pull request 'VAPP-6: Remote desktop viewer (KVM tile stream to canvas)' (#33) from feat/remote-desktop-viewer-vapp-6 into main
67758a6feat(device): remote desktop viewer (KVM tile stream to canvas)
3afb99cchore: add install-hooks and pre-commit just recipes
d5d84a2Merge pull request 'VAPP-18: Settings read-only server URL; statusbar shows real server URL' (#31) from feat/settings-server-url-vapp-18 into main
effc33eMerge remote-tracking branch 'origin/main' into feat/settings-server-url-vapp-18
c919e56Merge pull request 'VAPP-17: Plugin management: add, install, enable/disable, remove, reload' (#30) from feat/plugin-management-vapp-17 into main
5e56faeMerge remote-tracking branch 'origin/main' into feat/plugin-management-vapp-17
ecf8027Merge pull request 'VAPP-23: Run one-shot commands on a device from the detail page' (#28) from feat/run-device-command-vapp-23 into main
4803b0fMerge remote-tracking branch 'origin/main' into feat/run-device-command-vapp-23
0b26e92Merge pull request 'VAPP-20: Security settings: list and remove passkeys, TOTP backup codes' (#25) from feat/security-passkeys-backup-codes-vapp-20 into main
b8c1745Merge remote-tracking branch 'origin/main' into feat/security-passkeys-backup-codes-vapp-20
301e7d9Merge pull request 'VAPP-25: User groups: list, create, edit, delete, manage members' (#29) from feat/user-groups-vapp-25 into main
63ca7acMerge branch 'main' into feat/user-groups-vapp-25
7e2e405Merge pull request 'VAPP-24: Dashboard: replace hardcoded Alerts KPI with real error count' (#27) from feat/dashboard-alerts-kpi-vapp-24 into main
b134279Merge branch 'main' into feat/dashboard-alerts-kpi-vapp-24
c42bf2bMerge pull request 'VAPP-21: User editing: real name, email, site admin toggle, clear 2FA, force password change' (#26) from feat/user-editing-vapp-21 into main
40ba411Merge branch 'main' into feat/user-editing-vapp-21
4b2d777Merge pull request 'VAPP-22: Device notes: view and edit per-device notes on the detail page' (#24) from feat/device-notes-vapp-22 into main
4f33f85Merge branch 'main' into feat/device-notes-vapp-22
e2152e0Merge pull request 'VAPP-19: Settings Diagnostics: wire log level to traceinfo and add server errors viewer' (#23) from feat/settings-diagnostics-vapp-19 into main
592e96dMerge branch 'main' into feat/settings-diagnostics-vapp-19
d05519dMerge pull request 'VAPP-26: Server administration page: version, config view, backup, server console' (#22) from feat/server-admin-page-vapp-26 into main
3fc720efeat(settings): read-only server URL in Settings and statusbar
80ae541feat(plugins): manage full plugin lifecycle from the Plugins page
c7e4ab0feat(users): user-group management (list, CRUD, members)
2f1693ffeat(devices): run one-shot commands from the detail page
a81733efeat(dashboard): derive Alerts KPI from real error events
42b3336feat(users): edit profile, site-admin, clear 2FA, force password change
44b352cfeat(security): list/remove passkeys and mint TOTP backup codes
0651548feat(device-detail): view and edit per-device notes
c1ad819feat(settings): wire diagnostics to traceinfo and server errors
7742cdafeat(admin): server administration page
93e61e4Merge pull request 'VAPP-12: Logout and own-password change' (#18) from feat/logout-password-change-vapp-12 into main
820cf23Merge remote-tracking branch 'origin/main' into feat/logout-password-change-vapp-12
5156dd3Merge pull request 'VAPP-10: Mesh management: create, edit, delete' (#19) from feat/mesh-management-vapp-10 into main
ff945caMerge branch 'main' into feat/mesh-management-vapp-10
0b7ea81Merge pull request 'VAPP-14: Live updates: persistent control connection with server push' (#20) from feat/live-control-connection-vapp-14 into main
dc39a1cMerge branch 'main' into feat/live-control-connection-vapp-14
c47cdb4Merge pull request 'chore(build): bump rust-builder-glibc to v1.0.1' (#21) from chore/bump-rust-builder-glibc-v1.0.1 into main
4eccd89chore(build): bump rust-builder-glibc to v1.0.1
0516278feat(live): persistent control connection with server push
289751bfeat(meshes): create, edit, delete device groups (VAPP-10)
7309f0afeat(auth): logout and own-password change
10a30d5Merge pull request 'VAPP-13: 2FA enrollment UI: TOTP and WebAuthn passkeys' (#11) from feat/2fa-enrollment-ui-vapp-13 into main
2aaf111Merge remote-tracking branch 'origin/main' into feat/2fa-enrollment-ui-vapp-13
a133e7cMerge pull request 'VAPP-5: Browser terminal for devices over the agent relay' (#12) from feat/browser-terminal-vapp-5 into main
1609cb9Merge branch 'main' into feat/browser-terminal-vapp-5
946d0f4Merge pull request 'feat(lists): wire dead list controls (VAPP-15)' (#13) from feat/wire-list-controls into main
ea19589Merge branch 'main' into feat/wire-list-controls
07278e2Merge pull request 'VAPP-16: Agent install flow behind "+ New Device"' (#14) from feat/new-device-install-flow-vapp-16 into main
f7d1a6dfix(new-device): emit ServerURL/GroupID so the sealed config boots
0beac0bMerge branch 'main' into feat/new-device-install-flow-vapp-16
a4de0e7Merge pull request 'feat(device-detail): rename, delete, move devices (VAPP-9)' (#15) from feat/device-management-actions into main
e431a84Merge branch 'main' into feat/device-management-actions
e97c777Merge pull request 'feat(users): admin user lifecycle (VAPP-11)' (#16) from feat/user-management into main
5248394Merge branch 'main' into feat/user-management
31d0e9aMerge pull request 'feat(device-detail): wire device power actions (VAPP-8)' (#17) from feat/device-power-actions into main
5eec8d6feat(device-detail): wire device power actions
87d8913feat(users): admin user lifecycle (create, reset, mesh, remove)
f77d661feat(device-detail): rename, delete, and move devices from the UI
24ffccffeat(new-device): agent install flow behind "+ New Device"
424b15bfeat(lists): wire device/event filters, search, CSV export
123b446feat(device-detail): browser terminal over the agent relay
93f7c4bfeat(settings): 2FA enrollment UI for TOTP and WebAuthn passkeys
990b0f2Merge pull request 'chore: Sync .gitignore' (#10) from chore/sync-gitignore into main
5765ceechore: Sync .gitignore
8f71481Merge pull request 'feat(device-detail): wire tabs to live per-device data' (#9) from feat/device-detail-tabs into main
6f5d034feat(device-detail): wire tabs to live per-device data
d4d6958Merge pull request 'feat(server-fns): wire pages to live vervain-server data' (#8) from feat/wire-live-server-data into main
795c9fdfeat(server-fns): wire pages to live vervain-server data
6ddb5acMerge pull request 'VAPP-4: Replace router debug route dump with friendly 404 page for unmatched paths' (#7) from feat/not-found-page-vapp-4 into main
153a0d7feat(router): friendly 404 page for unmatched paths
e413130Merge pull request 'VAPP-3: /setup onboarding drives first-user creation against VERVAIN_SERVER_URL' (#6) from feat/setup-onboarding-vapp-3 into main
459ec86feat(setup): /setup onboarding for first-user creation
66f6fdbMerge pull request 'fix(ci): point web image ENTRYPOINT at /app/server' (#5) from fix/web-entrypoint-server-binary into main
1f22450fix(ci): point web image ENTRYPOINT at /app/server
1b97d5fMerge pull request 'fix(ui): wire the Density toggle into the layout' (#4) from iterate/make-functional into main
2893a5aMerge branch 'main' into iterate/make-functional
8af456bMerge pull request 'fix(ci): generate release notes from commits since previous tag' (#3) from fix/release-notes-since-prev-tag into main
3e135a0fix(ci): generate release notes from commits since previous tag
ab289e8fix(ui): wire the Density toggle into the layout
7a4946fMerge pull request 'feat(justfile): scaffold fj-driven create-release + group attrs (DEV-331)' (#2) from feat/justfile-fj-pr-create-DEV-331 into main
116b46ffeat(justfile): scaffold fj-driven create-release + group attrs (DEV-331)
a5d7693Merge pull request 'ci: build Tailwind CSS in Check workflow so asset! resolves (VAPP-1)' (#1) from fix/ci-tailwind-build into main
96c4d74ci: build Tailwind CSS in Check workflow so asset! resolves
15f8663rename: binary -> vervain-app, image -> vervain-web
4febccdci: add Check + desktop + OCI workflows per governance
b70fe70feat: initial Dioxus 0.7 console skeletonDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)