• v0.2.0 d4e3f26bec

    v0.2.0
    All checks were successful
    Check / fmt + clippy + build + tests (push) Successful in 1m36s
    Build OCI container / Build and push image (push) Successful in 7m6s
    Stable

    David released this 2026-07-04 14:32:02 +02:00 | 34 commits to main since this release

    Changelog

    d4e3f26 Merge pull request 'Release v0.2.0' (#104) from release/v0.2.0 into main
    4b21dc8 Release v0.2.0
    7c0b585 Merge pull request 'feat(web): show real server version, accurate relay counts, env-config notice on admin panel' (#103) from feat/VS-85-server-panel-version-config into main
    5fbc1c6 feat(web): show real server version, accurate relay counts, env-config notice on admin panel
    295601e Merge pull request 'feat(web): resolve real client IP behind a trusted reverse proxy' (#102) from feat/VS-83-trusted-proxy-client-ip into main
    b72cc6a feat(web): resolve real client IP behind a trusted reverse proxy
    b816823 Merge pull request 'feat(webrtc): default ICE config to Google STUN so cross-network desktop connects' (#101) from feat/VS-82-webrtc-ice-default-stun into main
    ab6803e feat(webrtc): default ICE config to Google STUN so cross-network desktop connects
    212f559 Merge pull request 'fix(agent): detect dead agent WS via inbound-idle deadline' (#100) from feat/VS-80-agent-ws-idle-deadline into main
    f7eeadf fix(agent): detect dead agent WS via inbound-idle deadline
    43f1577 Merge pull request 'fix(agent): compare-and-clear session teardown on connection generation' (#99) from feat/VS-81-connection-generation-compare-and-clear into main
    975d616 fix(agent): compare-and-clear session teardown on connection generation
    816b21b Merge pull request 'feat(agent): persist coreinfo semver and build info to node doc' (#98) from feat/VS-79-persist-agent-coreinfo-to-node-doc into main
    a1bbbbd feat(agent): persist coreinfo semver and build info to node doc
    b5b3770 Merge pull request 'feat(autoupdate): sweep immediately on channel-binary change' (#97) from feat/VS-75-immediate-autoupdate-on-channel-change into main
    909ed0b feat(autoupdate): sweep immediately on channel-binary change
    febb8c4 Merge pull request 'feat(grouprelay): relay-local relayrtt echo for browser-to-relay RTT' (#96) from feat/VS-78-grouprelay-relayrtt-echo into main
    3a6d0c4 feat(grouprelay): relay-local relayrtt echo for browser-to-relay RTT
    76793b2 Merge pull request 'feat(update): session ids, per-node serialization, progress relay (VS-77)' (#95) from feat/VS-77-update-session-progress into main
    dad08db feat(update): session ids, per-node serialization, progress relay
    c5d69e1 Merge pull request 'fix(release): sync Cargo.lock on version bump (VS-76)' (#94) from fix/VS-76-release-cargo-lock-sync into main
    6abd2da fix(release): sync Cargo.lock on version bump

    Downloads
  • v0.1.0 d632b39d8e

    v0.1.0
    Some checks failed
    Build OCI container / Build and push image (push) Failing after 30s
    Check / fmt + clippy + build + tests (push) Successful in 57s
    Stable

    David released this 2026-06-30 23:58:02 +02:00 | 56 commits to main since this release

    Changelog

    d632b39 Merge pull request 'Release v0.1.0' (#93) from release/v0.1.0 into main
    41cf233 Release v0.1.0
    67c58d0 Merge pull request 'feat(server): scheduled automatic agent updates (VS-74)' (#92) from feat/VS-74-scheduled-agent-autoupdate into main
    37fb264 feat(server): scheduled automatic agent updates (VS-74)
    e7b6c89 Merge pull request 'feat(server): operator-triggered chunked agent update push (VS-73)' (#91) from feat/VS-73-manual-agent-update-push into main
    b8a8116 feat(server): operator-triggered chunked agent update push (VS-73)
    be59f17 Merge pull request 'feat(web): uninstall the agent on device delete, prompt when unreachable (VS-70)' (#90) from feat/VS-70-delete-device-uninstall-agent into main
    66c502c refactor(web): tidy the uninstall-ack helper from VS-70 review
    dee4fba feat(web): uninstall the agent on device delete, prompt when unreachable (VS-70)
    2862c68 Merge pull request 'feat(server): self-contained enrollment bundle + one-time fetch endpoint; drop legacy .vagent minting' (#89) from feat/VS-69-enroll-bundle-fetch into main
    9a0a4d5 feat(server): self-contained enrollment bundle + one-time fetch endpoint; drop legacy .vagent minting
    6a2fcc8 Merge pull request 'feat(server): server-owned agent config pushed at enrollment and on connect (VS-67)' (#88) from feat/VS-67-server-pushes-agent-config into main
    5801304 feat(server): server-owned agent config pushed at enrollment and on connect (VS-67)
    3c86419 Merge pull request 'feat(server): enroll agents over the mTLS port via a dedicated enrollment sub-CA (VS-68)' (#87) from feat/VS-68-enroll-over-mtls into main
    22c74fb feat(server): enroll agents over the mTLS port via a dedicated enrollment sub-CA (VS-68)
    740e56d Merge pull request 'feat(server): mTLS client-cert agent identity, remove agentcore.c handshake (VS-63)' (#86) from fix/VS-63-remove-agent-handshake into main
    28ad893 feat(server): mTLS client-cert agent identity, remove agentcore.c handshake (VS-63 AC5)
    60ddf9a Merge pull request 'refactor(server): remove AMT support entirely (VS-64)' (#85) from feat/VS-64-remove-amt into main
    4fe9825 refactor(server): remove AMT support entirely (VS-64)
    8a137a7 Merge pull request 'feat(server): split agent mTLS and browser HTTP listeners (VS-62)' (#84) from feat/VS-62-two-listener-agent-mtls-browser-http into main
    07be55f feat(server): split agent mTLS and browser HTTP listeners (VS-62)
    55121fb Merge pull request 'feat(server): agent CA, enrollment token, CSR-signing endpoint (VS-63)' (#83) from feat/VS-63-agent-ca-enrollment into main
    f552281 feat(server): agent CA, enrollment token, CSR-signing endpoint (VS-63)
    27b2e78 Merge pull request 'chore: Sync .gitignore' (#82) from chore/sync-gitignore into main
    88e713f Merge branch 'main' into chore/sync-gitignore
    ca0c65f Merge pull request 'Derive OCI publish mode from trigger, not git describe' (#75) from fix/GOV-15-twin-trigger-publish-mode into main
    1ed6bfe Merge branch 'main' into fix/GOV-15-twin-trigger-publish-mode
    d3562e6 Merge pull request 'test(web): end-to-end enrollment install-token integration test (VS-60)' (#81) from test/VS-60-enrollment-e2e into main
    b9a9d96 test(web): end-to-end enrollment install-token integration test
    c4f09a4 Merge pull request 'feat(web): mint scoped agent-binary install token, gate download endpoint (VS-60)' (#79) from feat/VS-60-agent-install-token-endpoint into main
    c51fbd0 feat(web): mint scoped agent-binary install token, gate download endpoint (VS-60)
    12a10af Merge pull request 'feat(web): add public agent-binary download endpoint that proxy-streams from Forgejo (VS-56)' (#74) from feat/VS-56-public-agent-binary-download into main
    02e2e8d ci: compile-check with cargo check, not the disk-bombing build --all-targets
    760cc4a Merge pull request 'feat(server): resolve external_base_url from VERVAIN_BASE_URL env var (VS-55)' (#78) from feat/VS-55-vervain-base-url-env into main
    706b12a feat(server): resolve external_base_url from VERVAIN_BASE_URL env var (VS-55)
    9f70770 fix(ci): derive OCI publish mode from trigger, not git describe
    e713628 feat(web): add public agent-binary download endpoint that proxy-streams from Forgejo (VS-56)
    42c910a Merge pull request 'ci(oci): switch build cache from registry to runner gha cache' (#73) from feat/VS-53-oci-cache-gha into main
    8dbd5d0 ci(oci): switch build cache from registry to runner gha cache
    40c740e Merge pull request 'ci(oci): tolerate cache export failures with ignore-error' (#72) from fix/VS-52-cache-export-ignore-error into main
    a937862 ci(oci): tolerate cache export failures with ignore-error
    89ce935 Merge pull request 'fix(fetcher): fall back to env token when overlay token absent' (#71) from fix/VS-51-fetcher-env-token-fallback into main
    088cdb9 fix(fetcher): fall back to env token when overlay token absent
    aab520f Merge pull request 'fix(fetcher): include generic segment in Forgejo package URL' (#70) from fix/VS-49-fetcher-generic-segment into main
    b27d70a fix(fetcher): include generic segment in Forgejo package URL
    14e936b Merge pull request 'docs(fetcher): name real agent package owner psa-systems-private' (#69) from fix/VS-47-fetcher-owner-examples into main
    1ed794d docs(fetcher): name real agent package owner psa-systems-private
    58765c3 Merge pull request 'fix(web): log settingsupdate validation/apply failures server-side' (#68) from fix/VS-44-log-settingsupdate-failures into main
    6d2cf22 fix(web): log settingsupdate validation/apply failures server-side
    2363509 Merge pull request 'chore: Sync the checks and justfile recipes' (#67) from chore/sync-checks-justfile into main
    015f77c chore: Sync the checks and justfile recipes
    6254e64 Merge pull request 'fix(deploy): add canonical production compose.yml (VS-43)' (#66) from fix/VS-43-canonical-prod-compose into main
    94b8400 fix(deploy): add canonical production compose.yml
    36d4ef4 Merge pull request 'fix(build): drop COPY of deleted views/public from Dockerfiles' (#65) from fix/dockerfile-drop-deleted-spa-copies into main
    6382b9a fix(build): drop COPY of deleted views/public from Dockerfiles
    4d07dde Merge pull request 'refactor!: rebrand MeshCentral to Vervain across the workspace' (#64) from feature/refactor-vervain into main
    906e176 refactor!: rebrand MeshCentral to Vervain across the workspace
    e833d4b Merge pull request 'docs(readme): correct stale minisign references to the age scheme' (#63) from feat/VS-41-age-xeddsa-verifier into main
    3ba120f docs(readme): correct stale minisign references to the age scheme
    548501c Merge pull request 'feat(agent-fetch): verify agent binaries with age key + XEdDSA (VS-41)' (#62) from feat/VS-41-age-xeddsa-verifier into main
    45f53db feat(agent-fetch): verify agent binaries with age key + XEdDSA
    22c4cc8 Merge pull request 'feat(ci): cap native check.yml parallelism at nproc/2' (#61) from feat/GOV-10-native-check-nproc-cap into main
    e0591c9 feat(ci): cap native check.yml parallelism at nproc/2
    1557f1e Merge pull request 'feat(boot): warn when agent catalog empty and fetcher unconfigured' (#60) from feat/VS-39-diagnose-unconfigured-fetcher into main
    caf3151 feat(boot): warn when agent catalog empty and fetcher unconfigured
    e37c5ad Merge pull request 'feat(boot): seed agentbinaryfetcher from env on first run' (#59) from feat/VS-38-env-seed-agent-fetcher into main
    0cff9f2 feat(boot): seed agentbinaryfetcher from env on first run
    6a5cd30 Merge pull request 'feat(settings): runtime-editable settings overlay + live agent fetcher edit' (#58) from feat/VS-37-runtime-settings-overlay into main
    2dbe7ca feat(settings): runtime-editable settings overlay + live agent fetcher edit
    82940ab Merge pull request 'feat(justfile): add dev-clean / dev-clean-all teardown recipes' (#57) from feat/dev-clean-recipes into main
    1b1b2f8 feat(justfile): add dev-clean / dev-clean-all teardown recipes
    beed3df Merge pull request 'VA-10: push WebRTC ICE config to agent + browser' (#56) from feat/VA-10-webrtc-ice-push into main
    f1f5930 fix(webrtc): resolve agent ICE config by its own domain
    66a90fd feat(webrtc): push ICE config to agent + browser for data-channel upgrade
    d03a6d4 Merge pull request 'VS-16: correct stale amtsetupbin handler docstring' (#55) from docs/amtsetupbin-docstring-vs-16 into main
    5dcd7ee docs(web): correct stale amtsetupbin handler docstring
    e0b4ff9 Merge pull request 'VS-15: scaffold meshcentral-amt-redirect crate' (#54) from feat/amt-redirect-scaffold-vs-15 into main
    3b5c9cc style(amt): rustfmt wrap in amt-redirect session stub
    824ad2b feat(amt): scaffold meshcentral-amt-redirect crate
    0fa6fb9 Merge pull request 'VS-34: refresh plugin catalog at runtime on install/remove' (#53) from feat/plugin-catalog-runtime-refresh-vs-34 into main
    eeee68e feat(web): refresh plugin catalog at runtime on install/remove
    3a8de42 Merge pull request 'VS-33: expose plugin lifecycle status and normalize installplugin ack' (#52) from feat/plugin-lifecycle-status-vs-33 into main
    6c72d83 feat(web): expose plugin lifecycle status and normalize installplugin ack
    5ef237b Merge pull request 'VS-17: full XML-DSig SAML signature verification' (#50) from feat/saml-signature-verification-vs-17 into main
    6758163 Merge branch 'main' into feat/saml-signature-verification-vs-17
    5e95113 Merge pull request 'feat(web): per-relay listing control action + meshctrl list-relays (VS-31)' (#51) from feat/relay-listing-vs-31 into main
    fd98712 feat(web): per-relay listing via relays control action + meshctrl verb
    739b8a6 Merge pull request 'feat(web): token-authenticated control.ashx upgrade (VS-32)' (#47) from feat/control-token-upgrade-vs-32 into main
    ae735cf Merge branch 'main' into feat/control-token-upgrade-vs-32
    2867355 Merge pull request 'feat(codesign): Authenticode RSA-SHA256 PE signer (VS-18)' (#48) from feat/authenticode-pe-signer-vs-18 into main
    0501832 Merge branch 'main' into feat/authenticode-pe-signer-vs-18
    b3509af Merge pull request 'docs(roadmap): record 2026-06-06 parity review and filed issues' (#46) from docs/roadmap-webapp-parity into main
    1d00114 Merge origin/main into docs/roadmap-webapp-parity
    3bbfaac Merge pull request 'VS-29: sync ROADMAP.md after VS-3 file-tunnel landed' (#49) from chore/roadmap-sync-vs3-done-vs-29 into main
    0986f90 feat(auth): full XML-DSig SAML signature verification
    4e3b4a7 docs(roadmap): mark VS-3 Done and refresh file refs after file-tunnel landed
    6fad095 feat(codesign): implement Authenticode RSA-SHA256 PE signer
    8519be9 feat(web): token-authenticated control.ashx upgrade for cross-origin browsers
    9ef061e chore: Sync .gitignore
    a29f6f2 docs(roadmap): record 2026-06-06 full-parity review and filed issues
    040dd21 Merge pull request 'feat(web): per-device file tunnel for devicefile/uploadnodefile/uploadfilebatch (VS-3)' (#45) from feat/device-file-tunnel-vs-3 into main
    375e534 feat(web): per-device file tunnel powers devicefile + upload ashx routes
    e74ce1c Merge pull request 'docs(roadmap): sync remaining-work tables with verified YouTrack state' (#44) from chore/roadmap-youtrack-sync-vs-29 into main
    a5cc159 docs(roadmap): sync remaining-work tables with verified YouTrack state
    6c61d99 Merge pull request 'feat(meshcentral): restrict admin bootstrap and .env loading to debug builds (VS-28)' (#43) from feat/restrict-admin-bootstrap-debug-builds into main
    f8b31ee feat(meshcentral): gate admin bootstrap and .env loading to debug builds
    4706d2f Merge pull request 'feat(setup): VERVAIN_SETUP_SCHEME/HOST/PORT/BIND_IP listener overrides' (#42) from feat/setup-listener-env into main
    903f343 feat(setup): VERVAIN_SETUP_SCHEME/HOST/PORT/BIND_IP listener overrides
    8948b87 Merge pull request 'fix(ci): apply rustfmt so the Check workflow passes again' (#41) from fix/ci-cargo-fmt into main
    cc657b9 fix(ci): apply rustfmt so the Check workflow passes again
    7614133 Merge pull request 'feat(web): tighten setup-mode gating and add settings.tls connection config' (#40) from feat/setup-gate-and-tls-config into main
    103a84e feat(web): tighten setup-mode gating and add settings.tls connection config
    349088b Merge pull request 'feat(web): TLS offload via VERVAIN_CERT_URL reverse-proxy cert fetch (VS-27)' (#39) from feat/tls-offload-cert-url-VS-27 into main
    8ac485d feat(web): accept reverse-proxy cert hash in agent handshake (VERVAIN_CERT_URL)
    17b9604 Merge pull request 'feat(setup): setup mode for first-user registration (VS-26)' (#38) from feat/setup-mode-first-user-VS-26 into main
    1b1b9d9 feat(setup): setup mode for first-user registration (VS-26)
    7fc7806 Merge pull request 'fix(ci): generate release notes from commits since previous tag' (#37) from fix/release-notes-since-prev-tag into main
    9a5ca5e fix(ci): generate release notes from commits since previous tag
    f8a8f35 Merge pull request 'docs: refresh README + ROADMAP for VS-21/22/23/24 (VS-25)' (#36) from chore/docs-refresh-VS-25 into main
    c1b4113 docs: refresh README + ROADMAP for VS-21/22/23/24 (VS-25)
    b997736 Merge pull request 'feat(admin): Leptos admin UI foundation served at /admin (VS-21)' (#35) from feat/vervain-admin-leptos-scaffold-VS-21 into main
    98d31e4 refactor(admin): apply review nits (widen mesh_type, branch over Show, escaping test)
    f7a5ec0 feat(admin): Leptos admin UI foundation served at /admin (VS-21)
    961ecce Merge pull request 'chore(rebrand): rename agent + relay URL paths to /api/v1/* (VS-24)' (#34) from chore/rebrand-url-paths-VS-24 into main
    ce6367d docs(mcp): finish stale wire-param wording in relay module doc
    66a4ef4 docs(mcp): fix stale nodeid wording in relay scope-check comment
    3616db7 chore(rebrand): rename agent + relay URL paths to /api/v1/* (VS-24)
    65dfb37 Merge pull request 'feat(mcp): consent broker + per-call audit + coarse ACL (VS-23)' (#33) from feat/mcp-consent-broker-acl-audit-VS-23 into main
    906fa08 refactor(mcp): cap drained noise frames; rename digest var
    8bb4764 fix(mcp): address VS-23 consent broker review findings
    701e376 feat(mcp): consent broker + per-call audit + coarse ACL (VS-23)
    a90698a Merge pull request 'feat(justfile): fj-driven create-release + group attrs (DEV-331)' (#32) from feat/justfile-fj-pr-create-DEV-331 into main
    a2e70b4 feat(justfile): fj-driven create-release + group attrs (DEV-331)
    431c6b7 Merge pull request 'feat: Add JetBraind .idea' (#31) from feat/jetbrains-idea into main
    74f2c3b Merge branch 'main' into feat/jetbrains-idea
    65c758c feat: Add JetBraind .idea
    e6d3b81 Merge pull request 'feat(mcp): per-agent MCP gateway endpoint (VS-22)' (#30) from feat/mcp-gateway-vs-22 into main
    a16ac1f feat(mcp): per-agent MCP gateway endpoint (VS-22)
    afd0aef Merge pull request 'feat(agent-fetch): signed binary fetcher + hot-swap (VS-20)' (#29) from feat/agent-binary-fetcher-vs-20 into main
    4ed162d feat(agent-fetch): signed binary fetcher + hot-swap (VS-20)
    eefa12b Merge pull request 'feat(boot): config-driven agent binary path (VS-19)' (#28) from feat/agent-binaries-config-path-vs-19 into main
    60d8883 feat(boot): config-driven agent binary path (VS-19)
    92305a9 Merge pull request 'fix(checks): wire error_buffer into test ServerConfigs + silence too-many-args' (#27) from fix/server-tests-and-clippy into main
    28bed49 fix(checks): wire error_buffer into test ServerConfigs + silence clippy too-many-args
    acd0fe2 Merge pull request 'feat(error-log): bounded in-memory WARN/ERROR ring buffer (VS-7)' (#19) from feat/error-log-buffer-vs-7 into main
    ae33371 Merge branch 'main' into feat/error-log-buffer-vs-7
    31e93e9 Merge pull request 'feat(user-session): record satellite capability bitmap on slot (VS-13)' (#16) from feat/user-capability-metadata-vs-13 into main
    9a500e1 Merge branch 'main' into feat/user-capability-metadata-vs-13
    85fb159 Merge pull request 'docs(user-session): refresh stale GetSysInfo/PowerTimeline/UpdateAgents doc comments (VS-9, VS-10)' (#17) from feat/sysinfo-cache-vs-10 into main
    639c2f1 Merge branch 'main' into feat/sysinfo-cache-vs-10
    85c3b78 Merge pull request 'feat(amt-scan): cap concurrency on AMT LAN probe (VS-11)' (#18) from feat/amt-lan-probe-vs-11 into main
    3c2061f Merge branch 'main' into feat/amt-lan-probe-vs-11
    cff04cb Merge pull request 'feat(plugin-perms): enforce per-user plugin permissions on dispatch (VS-6)' (#20) from feat/plugin-permissions-vs-6 into main
    9288ffd Merge branch 'main' into feat/plugin-permissions-vs-6
    f2949c0 Merge pull request 'feat(login): tokenUser:tokenPass Basic auth + meshctrl --token (VS-1)' (#21) from feat/meshctrl-token-vs-1 into main
    b906f3f Merge branch 'main' into feat/meshctrl-token-vs-1
    edc2d84 Merge pull request 'feat(plugins): wire real db_get/db_put/dispatch_event host imports (VS-14)' (#22) from feat/wasm-host-imports-vs-14 into main
    a6f61dd Merge branch 'main' into feat/wasm-host-imports-vs-14
    47f0ad9 Merge pull request 'feat(ssh): /sshfilesrelay.ashx SFTP subsystem bridge (VS-2)' (#23) from feat/sshfilesrelay-vs-2 into main
    99e4e35 Merge branch 'main' into feat/sshfilesrelay-vs-2
    9157dbd Merge pull request 'feat(events): wire tag filter into Events query (VS-8)' (#24) from feat/event-store-vs-8 into main
    097efa6 Merge branch 'main' into feat/event-store-vs-8
    a224b7e Merge pull request 'docs(plugins): refresh stale Stub doc comments on lifecycle variants (VS-5)' (#25) from feat/plugin-lifecycle-vs-5 into main
    ce10b49 Merge branch 'main' into feat/plugin-lifecycle-vs-5
    9992982 Merge pull request 'feat(recording): tap meshrelay pump and write .mcrec files (VS-4)' (#26) from feat/recording-capture-vs-4 into main
    7f9f836 feat(recording): tap meshrelay pump and write .mcrec files (VS-4)
    46be8a5 docs(plugins): refresh stale Stub doc comments on lifecycle ControlIn variants (VS-5)
    6f86ce9 feat(events): wire tag filter into Events query + refresh stale doc (VS-8)
    fd8ca19 feat(ssh): /sshfilesrelay.ashx SFTP subsystem bridge (VS-2)
    d5fe6d8 feat(plugins): wire real db_get/db_put/dispatch_event host imports (VS-14)
    f10082d feat(login): accept tokenUser:tokenPass Basic auth on /login + wire meshctrl --token (VS-1)
    297b251 feat(plugin-perms): enforce per-user plugin permissions on Plugin dispatch (VS-6)
    e3f3381 feat(error-log): bounded in-memory WARN/ERROR ring buffer (VS-7)
    8b2f09e feat(amt-scan): cap concurrency + overall timeout on AMT LAN probe (VS-11)
    a175cbc docs(user-session): refresh stale GetSysInfo/GetNetworkInfo/PowerTimeline/UpdateAgents comments (VS-10, VS-9)
    b1f7838 feat(user-session): record satellite capability bitmap on slot (VS-13)
    5361326 Merge pull request 'docs: refresh ROADMAP and file outstanding work (VS-1..18)' (#15) from docs/roadmap-refresh-2026-05-16 into main
    207b209 docs: refresh ROADMAP for 2026-05-16 snapshot
    be95d51 Merge pull request 'chore: cargo fmt + fix clippy warnings' (#14) from chore/fmt-clippy into main
    744d9f1 chore: cargo fmt + fix clippy warnings
    16f020a Merge pull request 'chore: sync .gitignore with other repos' (#13) from chore/sync-gitignore into main
    7ab9141 chore: sync .gitignore with other repos
    56e8d6a Merge pull request 'chore: add check workflow and pre-commit recipes' (#12) from chore/checks-and-pre-commit into main
    b2a1644 chore: add check workflow and pre-commit recipes
    5e6d2d3 Merge pull request 'ci: build from rust-builder-* (rust 1.94)' (#11) from chore/rust-builder-1.94 into main
    60747b8 ci: build from rust-builder-* (rust 1.94)
    c2c1cc2 Merge pull request 'ci: bump actions/checkout to v5' (#10) from chore/checkout-v5 into main
    84e9da7 ci: bump actions/checkout to v5
    0517b7e Merge pull request 'feat(build-info): embed version, git hash, and build date in binaries' (#9) from feat/build-info-version into main
    57849fc feat(build-info): embed version, git hash, and build date in binaries
    b817bfe Merge pull request 'fix(oci-build): install openssl-dev for the openssl-sys transitive dep' (#8) from fix/oci-build-openssl-deps into main
    a39bdf7 fix(oci-build): install openssl-dev for the openssl-sys transitive dep
    790c776 Merge pull request 'chore: commit Cargo.lock so the OCI build has a lockfile' (#7) from chore/oci-build-dockerfile into main
    a6d74fa chore: commit Cargo.lock so the OCI build has a lockfile
    f256509 Merge pull request 'chore: add oci-build/Dockerfile + .dockerignore for CI image build' (#6) from chore/oci-build-dockerfile into main
    2903602 chore: add oci-build/Dockerfile + .dockerignore for CI image build
    1f9187c Merge pull request 'feat/tunnel-dialer' (#5) from feat/tunnel-dialer into main
    1422ec6 docs: ROADMAP + RMM update for wasm meshcore
    567bad7 feat: server-side meshcore catalog + pushMeshCore action + /meshcores/:name route
    fdcc445 chore: drop server systemd subcommands + refresh ROADMAP.md
    4844f48 feat: meshsettings.ashx + 48-byte mesh IDs for installer flow
    3113a6e feat(P12-followup): real restoreserver.ashx + refined hints for the rest
    6369003 feat(P7-followup): flip PKI to RSA so oobupdate signatures verify
    2563a0b feat(P12): wire remaining ashx 404 routes (alias + 501 hints)
    bfafca9 feat(P10): BSD service install + MPS flow-control comment refresh
    609e0ba feat(P9): real ScanAmtDevice + AMT specialty route stubs
    6f1e5af feat(P8): SSH terminal proxy + sshterminalrelay.ashx
    fac13ca feat(P7): wire updateAgents push + /meshagents/:id binary route
    6e7d918 feat(P6): wire plugin runtime dispatch + pluginadmin.ashx
    c076853 feat(P5): wire session-recording read path (list + download + delete)
    8fd9c20 feat(P4): wire Duo Push 2FA (Yubico already wired)
    5c405ca feat(P3): wire chat poster + msguser / verifyMessaging / confirmMessaging
    098bae7 feat(P2): wire SMS gateway + verifyPhone / confirmPhone / smsuser handlers
    66ef7bd feat(P1): wire SMTP mailer + verifyemail / otpemail / emailuser handlers
    3ecd3a4 test(uploadfile): cover write_one happy + traversal + bad-name paths
    c37c230 feat(meshctrl): add 7 more subcommands (admin actions + events)
    b20f530 feat(power): per-device power-event log + powertimeline + devicepowerevents.ashx
    42fe094 chore: silence dead-code warnings on parse-only ControlIn fields
    2b15650 feat(routes): wire uploadfile.ashx multipart-form file upload
    304c29d feat(routes): wire downloadfile.ashx legacy file-dialog shim
    942b99a feat(events): broadcast deviceShareUpdate after create / remove share link
    a56dca7 test: change_email + clear_user_field_pair coverage
    b786152 feat(control): real removePhone + removeMessaging handlers
    e08e6dd feat(control): real changeemail self-service handler
    53361f0 feat(routes): wire serverpic.ashx + refresh.ashx
    7f1fadf feat(events): emit sysinfohash + ifchange when agent pushes fresh data
    ede2962 feat(avatars): wire updateUserImage end-to-end + userimage.ashx route
    96b5c16 feat(events): emit loginTokenAdded / loginTokenChanged on token mint / revoke
    d3c4dbc feat(control): real adduserbatch handler (CSV/JSON bulk import)
    4925033 feat(meshctrl): add 14 subcommands beyond list-meshes
    473afb0 feat(events): broadcast changenode after add_device_user / remove_device_user
    cbb3b7e feat(events): broadcast meshchange after add_mesh_user / remove_mesh_user
    b7946c0 feat(events): broadcast nodemeshchange + user-group CRUD events
    c93e0b3 feat(events): broadcast addnode on first agent connect, accountchange on edituser
    d1a7430 feat(events): broadcast change events for live device-tab updates
    e1dabc7 Update .forgejo/workflows/build-oci-image.yml
    159bd91 feat(control): real adddeviceuser handler (per-device ACL)
    8052807 feat(control): wire serverclearerrorlog / servertimelinestats / report / intersession
    d51b803 feat(control): real serverconfig / serverconsole / servererrors handlers
    717d5c3 feat: server caches msg/sysinfo replies; getsysinfo/getnetworkinfo serve from cache
    481f398 feat: bulk-stub 24 SPA control actions + real changelang handler
    8ffea14 feat: lastconnect/lastconnects/agentdisconnect/getsysinfo/getnetworkinfo/powertimeline/updateAgents
    02b4089 fix: register_agent_in_db tracks hostname changes when name is uncustomised
    5abb28c feat: authcookie renewal handler
    e49445b fix: meshrelay eats per-tunnel protocol byte; terminal panel renders cleanly
    57b8cb5 feat: meshrelay rendezvous handshake + text/binary frame preservation
    0012cff Merge pull request 'feat/event-store' (#4) from feat/event-store into main
    e486114 feat: meshrelay rendezvous + auth/rauth cookie minting (server side of tunnel)
    7975cb3 feat: server event log
    65f24fe Merge pull request 'feat: wire server side of agent JSON text-frame protocol' (#3) from feat/agent-comms-protocol into main
    410905a feat: wire server side of agent JSON text-frame protocol
    54622c7 Merge pull request 'chore: set dev port to 4302' (#2) from chore/dev-port-4302 into main
    68b226f merge from main and resolve conflicts
    128be1e chore: set dev port to 4302
    7a73320 Merge pull request 'feat: roadmap deferred items batch (per-domain config, handshake rewrite, plugin v2, mTLS pinning, AMT setup.bin, XML-C14N, meshctrl, satellite, addplugin, yubico, serverstats, branding, CSRF design)' (#1) from feat/roadmap-deferred-items into main
    164aa48 feat: roadmap deferred items batch (per-domain config, handshake rewrite, plugin v2, mTLS pinning, AMT setup.bin, XML-C14N, meshctrl, satellite, addplugin, yubico, serverstats, branding, CSRF design)
    082b250 feat: Initial commit

    Downloads