Release 1.37.1: group admins, per-group permissions, shared players, new Groups page, mobile bar #89
No reviewers
Labels
No labels
audit
bug
cleanup
docs
duplicate
enhancement
help wanted
invalid
new feature
P0
P1
P2
P3
question
roadmap
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
pyaniz/Thursday!89
Loading…
Reference in a new issue
No description provided.
Delete branch "staging"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type: Feature (minor) - VERSION 1.36.11 -> 1.37.0. Design:
.gsd/proposals/group-administration.md(not committed) plus the shared-players addendum; all three phases in one release as agreed.What
Roles.
group_members.role('admin'|'member'); the owner staysgroups.owner_id. Ladder: global admin > owner > admin > member (share-link guests read only). Admins must be registered; only the owner demotes/removes admins, transfers or deletes. Existing data: owners unchanged, everyone else a member, so nothing changes until someone is promoted.Per-group permissions. 10 capabilities with a minimum role, defaults = the old behaviour, overridden per group in
group_settingsasperm.<capability>. One engine ingroups/permissions.py(get_group_role,can,assert_can,assert_group_owner, purecapability_allowed). Migrated: record / edit / delete plays, sessions, native calendar events, group update and settings, creating players inside a group, clearing group votes (now admins too).can_administer_group= owner/admin/global admin,can_write_group_content= any role.Players shared across groups.
players.created_in_group_id= home group (backfilled to the first group).GET /groups/{id}/candidateslists players from the caller's other groups;POST /groups/{id}/memberscreates a player inside the group and/or adds existing ones: unclaimed players are added directly, players with an account get an invitation (group_invites, accept/decline on their Groups page). Identity edits of an unclaimed player neededit_playersin the home group (fallback: any group containing them).PUT /groups/{id}now applies membership as a diff, so roles are no longer wiped.Groups page. Rewritten as list + workspace (two screens on phones) with Players / Overview / Settings tabs: role chips, red-italic no-account players, add (new or from my other groups, duplicate hints), edit, make/remove admin, claim, remove / leave, invitations, name + calendar, links, sync, display options, the permissions matrix, transfer ownership and delete. The global Players table is gone.
Migration V58 (
role,created_in_group_id+ backfill,group_invites). Docs:docs/PERMISSIONS.md,docs/features/GroupManagement.md.Review hot spots
groups/permissions.pyand the 16 call sites that moved toassert_can(plays, sessions, calendar): please skim for anything that should stay stricter or looser.candidates/membersonly reveal players the caller already shares a group with.Testing
backend/tests/test_group_permissions.py), engine tests still pass,npm run buildpasses, Python compiles.🤖 Generated with Claude Code
Feature 1.37.0: group admins, per-group permissions, shared players, new Groups pageto Release 1.37.1: group admins, per-group permissions, shared players, new Groups page, mobile bar