Skip to content

v2.11.0

Choose a tag to compare

@zoltanam zoltanam released this 24 May 02:15
· 103 commits to master since this release

Complete team management UX + Shared Configs v1. Coordinated CLI half of servonaut.dev PR #66 (prod-deployed earlier today).

Highlights

Team Management Screen — wrapped sections in curved-border cards (matches Settings/Manage UX), moved inline forms in-context inside their parent section, fixed forms expanding to fill the viewport, added Cancel button on every form.

Members surface

  • Role Select widget (Viewer / Member / Admin); admin hidden for non-owners
  • Status column with countdown ("Invited (expires in 5d)")
  • Resend Invite action (new endpoint)
  • Copy Accept URL action (fallback when email fails)
  • Change Role action (PUT route, no /role suffix)
  • 402/422 error branching with billing-aware copy (owner vs member)
  • Hide Create Team when caller already owns a team

Shared Servers

  • Instance-picker form replaces the old blind "share first instance" placeholder
  • Optional Username + Port inputs (prefilled from custom servers)
  • Fix wire-format mismatch: hostname not host, {\"data\":[]} envelope
  • Share All button with dedupe + continue-on-failure

Shared Configs v1 (new)

  • Push your sanitised local config (connection profiles, scan rules, custom servers) to share with the team
  • Pull team's baseline with diff preview before applying
  • Strips local filesystem paths (ssh_key, bastion_key) with warning
  • Versioned (server keeps 100 per team)

Seat-cap display

  • "Seats: X / Y" line in team header (X = accepted + pending, matches server-side accounting)
  • Special copy when no active Teams subscription

Under the hood

  • APIClient.put() (was missing — completes the post/patch/put trio)
  • TeamService.update_role route fix (was silently 404ing)
  • Rename user_idmember_id (TeamMember.id, not User.id; diverges for pending invites)
  • New: resend_invite, list_team_configs, get_latest_team_config, push_team_config
  • relay_listener now skips non-CommandType events at DEBUG (was logging ERROR for every AI tool call mirrored on the relay channel)
  • chat_panel defensive args parsing for AI tool calls + DEBUG dump for wire-shape divergence

Tests

110 team-bucket tests passing (added 56 new); 37 relay tests passing (added 2 new). Full suite: 3666 passed, 5 skipped, 0 failed.

Future work (planned)

Two planning notes saved for follow-up releases:

  • Connect-to-Shared-Server — SSH "Connect" button on Shared Servers table (depends on team-secrets key resolution)
  • Shared Configs v2 — three waves: Trust+Safety (auto-snapshot before Apply, restore historical), Granular Control (per-section selective import, merge/overlay modes), Two-Way Visibility (Mercure push notifications, admin drift dashboard)