implement notion of groups in collab #3
Labels
No labels
prio_critical
prio_low
type_bug
type_contact
type_issue
type_lead
type_question
type_story
type_task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lhumina_code/hero_collab#3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
in admin interface allow creation of groups
we can manage group members which can be other groups or members (users)
for each user have an alias as well next to email, so they can chose how they are seen in collab
make sure in the _web ui we can work with groups
test all with browser mcp
Implementation Spec for Issue #3: Groups in Hero Collab
Objective
Add a groups system to hero_collab that allows administrators to create groups, manage group membership (users and nested groups), add an alias field to users, and provide full UI support for group management in the admin dashboard.
Requirements
aliasfield to users so they can choose how they appear in collabgroup.members.resolveRPC method that flattens nested groups to produce a deduplicated list of user IDsFiles to Modify/Create
Modify:
crates/hero_collab_server/src/db.rs— Add groups/group_members tables, user alias columncrates/hero_collab_server/src/models.rs— Add Group, GroupMember structs; alias to Usercrates/hero_collab_server/src/handlers/mod.rs— Register group modulecrates/hero_collab_server/src/handlers/user.rs— Handle alias fieldcrates/hero_collab_server/src/rpc.rs— Register group.* routes, add groups to metricscrates/hero_collab_server/openrpc.json— Add group methods/schemas, alias to Usercrates/hero_collab_sdk/src/lib.rs— Add Group/GroupMember structs and methodscrates/hero_collab_ui/templates/base.html— Add Groups tab buttoncrates/hero_collab_ui/templates/index.html— Add Groups tab pane, modals, member managementcrates/hero_collab_ui/static/js/dashboard.js— Group management JS, user alias supportcrates/hero_collab_ui/static/css/dashboard.css— Group-specific stylingCreate:
crates/hero_collab_server/src/handlers/group.rs— All group CRUD and membership handlersImplementation Plan
Step 1: Database schema and models
aliascolumn to users table (with migration safety)groupstable (id, workspace_id, name, data, created_at)group_memberstable (group_id, member_id, member_type, data)Step 2: User alias support in handlers
Step 3: Group handler implementation
Step 4: RPC dispatch and metrics
Step 5: OpenRPC specification update
Step 6: SDK update
Step 7: Web UI — Groups tab and user alias
Step 8: Browser MCP testing
Acceptance Criteria
Implementation Complete
Changes Made
Database & Models (
crates/hero_collab_server/src/)db.rs— Addedgroupsandgroup_memberstables; safe migration foraliascolumn onusersmodels.rs— AddedGroup,GroupMemberstructs;aliasfield onUserHandlers (
crates/hero_collab_server/src/handlers/)group.rs(new) — 9 handler functions: create, get, list, update, delete, member_add, member_remove, member_list, members_resolve. Includes cycle detection and recursive member resolution.user.rs— Alias support in create/updatemod.rs— Registered group moduleRPC (
crates/hero_collab_server/src/rpc.rs)group.*routessystem.metricsOpenRPC Spec (
crates/hero_collab_server/openrpc.json)SDK (
crates/hero_collab_sdk/src/lib.rs)Web UI (
crates/hero_collab_ui/)Test Results
Implementation committed:
7a97b2cBrowse:
7a97b2c