refactor(apps): rename Mesh to Group and MeshCentral to Vervain #43

Merged
David merged 3 commits from feature/refactor-vervain into main 2026-06-21 04:22:03 +02:00
Owner

What

Renames every mesh / meshcentral reference in the apps client to its group / vervain equivalent so the word "mesh" (and the leftover msh config stem) no longer appears anywhere in the repo. Done in lockstep with vervain-server, which was renamed on the same feature/refactor-vervain branch; all new names were read from the live server source, so the client stays wire-compatible.

Wire protocol (matches the renamed server handlers)

Control-channel actions become creategroup / editgroup / deletegroup / groups, fields become groupname / grouptype / groupid / groupadmin, plus addgroupuser / removegroupuser / changeDeviceGroup. The device-group doc-id prefix moves from mesh/ to group/.

Contract fixes the rename surfaced

These were already broken against the renamed server, not just cosmetic:

  • Agent-binary download route /meshagents/<id> becomes /vervainagents/<id> (server route is vervainagents, generic-package name vervainagent, not "groupagents").
  • Per-group config route /meshsettings.ashx becomes /groupsettings.ashx.
  • The session cookie forwarded to the server changes from mc_session to vervain_session; the server now both sets and reads vervain_session, so the old name no longer authenticated.
  • The downloadable per-group agent config moves from the .msh extension to .vagent to match vervain-server's new groupsettings output. Parsed keys are GroupServer= / GroupID=, and augment_vagent_for_agent now only derives the agent-required ServerURL= from GroupServer= (the server emits GroupID= directly).

Internal Rust and UI

Types Mesh / MeshMembership / MeshInstall become Group / GroupMembership / GroupInstall; server fns list_meshes / create_mesh / edit_mesh / delete_mesh become the *_group forms; page file meshes.rs becomes groups.rs and route /meshes becomes /groups; the nav and breadcrumb label becomes "Device Groups".

Verification

just check passes: fmt, clippy, server build, wasm build, and all 21 unit tests. grep -ri mesh over the tree returns zero hits (the .msh extension is gone too).

Closes VS-42.

## What Renames every `mesh` / `meshcentral` reference in the apps client to its `group` / `vervain` equivalent so the word "mesh" (and the leftover `msh` config stem) no longer appears anywhere in the repo. Done in lockstep with vervain-server, which was renamed on the same `feature/refactor-vervain` branch; all new names were read from the live server source, so the client stays wire-compatible. ## Wire protocol (matches the renamed server handlers) Control-channel actions become `creategroup` / `editgroup` / `deletegroup` / `groups`, fields become `groupname` / `grouptype` / `groupid` / `groupadmin`, plus `addgroupuser` / `removegroupuser` / `changeDeviceGroup`. The device-group doc-id prefix moves from `mesh/` to `group/`. ## Contract fixes the rename surfaced These were already broken against the renamed server, not just cosmetic: - Agent-binary download route `/meshagents/<id>` becomes `/vervainagents/<id>` (server route is `vervainagents`, generic-package name `vervainagent`, not "groupagents"). - Per-group config route `/meshsettings.ashx` becomes `/groupsettings.ashx`. - The session cookie forwarded to the server changes from `mc_session` to `vervain_session`; the server now both sets and reads `vervain_session`, so the old name no longer authenticated. - The downloadable per-group agent config moves from the `.msh` extension to `.vagent` to match vervain-server's new `groupsettings` output. Parsed keys are `GroupServer=` / `GroupID=`, and `augment_vagent_for_agent` now only derives the agent-required `ServerURL=` from `GroupServer=` (the server emits `GroupID=` directly). ## Internal Rust and UI Types `Mesh` / `MeshMembership` / `MeshInstall` become `Group` / `GroupMembership` / `GroupInstall`; server fns `list_meshes` / `create_mesh` / `edit_mesh` / `delete_mesh` become the `*_group` forms; page file `meshes.rs` becomes `groups.rs` and route `/meshes` becomes `/groups`; the nav and breadcrumb label becomes "Device Groups". ## Verification `just check` passes: fmt, clippy, server build, wasm build, and all 21 unit tests. `grep -ri mesh` over the tree returns zero hits (the `.msh` extension is gone too). Closes VS-42.
refactor(apps): rename Mesh to Group and MeshCentral to Vervain
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m6s
7ba2d38ec8
Rename every "mesh" identifier, wire string, route, config key, and user-facing label to its "group" / "vervain" equivalent so the word "mesh" no longer appears anywhere in the repo. Done in lockstep with vervain-server, which was renamed on the same branch; all new names were taken from the live server source rather than guessed, so the apps client stays wire-compatible.

Wire protocol (control channel) now matches the renamed server handlers: actions creategroup / editgroup / deletegroup / groups, fields groupname / grouptype / groupid / groupadmin, plus addgroupuser / removegroupuser / changeDeviceGroup; the device-group doc-id prefix moves from mesh/ to group/.

Contract fixes the rename surfaced (these would already be broken against the renamed server, not just cosmetic): the agent-binary download route moves from /meshagents/<id> to /vervainagents/<id> (server route is vervainagents, generic-package name vervainagent), the per-group config route moves from /meshsettings.ashx to /groupsettings.ashx, and the session cookie forwarded to the server changes from mc_session to vervain_session (the server now both sets and reads vervain_session).

The downloadable per-group agent config moves from the .msh extension to .vagent to match vervain-server's new groupsettings output; the parsed keys are GroupServer= / GroupID=, and augment_vagent_for_agent now only derives the agent-required ServerURL= from GroupServer= (the server emits GroupID= directly).

Internal Rust: types Mesh / MeshMembership / MeshInstall become Group / GroupMembership / GroupInstall; server fns list_meshes / create_mesh / edit_mesh / delete_mesh become the *_group forms; page file meshes.rs becomes groups.rs and the route /meshes becomes /groups; the nav and breadcrumb label becomes "Device Groups".

just check passes: fmt, clippy, server build, wasm build, and all 21 unit tests.

#VS-42
docs(apps): reword "legacy" comments to reference the original SPA
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m6s
71478e7405
The original Vervain SPA was replaced by this repo (Vervain Apps), so drop the "legacy" framing from the doc comments. SPA / UI / login-flow references now read "the original SPA", older-data-shape references read "older imports" / "older versions", and the few spots where "legacy" added nothing (the mouse-button byte, the agent actiontype, the poweraction numeric type, the handlebars views) just drop the word. Comment-only change; no behavior, types, or wire strings touched.

#VS-42
chore(apps): restore justfile separator comments changed by accident
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m6s
Create release / Create release from merged PR (pull_request) Has been skipped
b69d71529e
The previous commit swept an unintended justfile edit (two section-separator comments had their box-drawing rules rewritten to ASCII hyphens) into the docs change via `git add -A`. It was not part of the rename or the comment reword, and the other source files keep their box-drawing separators, so restore the justfile to its prior form to keep the change focused.

#VS-42
David merged commit d0956b54ce into main 2026-06-21 04:22:03 +02:00
David deleted branch feature/refactor-vervain 2026-06-21 04:22:04 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/vervain-apps!43
No description provided.