v2.11.0
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:
hostnamenothost,{\"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_roleroute fix (was silently 404ing)- Rename
user_id→member_id(TeamMember.id, not User.id; diverges for pending invites) - New:
resend_invite,list_team_configs,get_latest_team_config,push_team_config relay_listenernow skips non-CommandType events at DEBUG (was logging ERROR for every AI tool call mirrored on the relay channel)chat_paneldefensive 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)