feat(admin): hero_collab admin pane (Dioxus inspection + management) #11

Closed
sameh-farouk wants to merge 6 commits from development_sameh_collab_admin into development
Member

hero_collab admin pane (Dioxus)

Adds a full hero_collab admin pane to the shared Dioxus admin shell — inspection and management — bringing collab to parity with the other migrated services (voice/aibroker/whiteboard).

What's here

  • New crate::collab view module (src/collab/mod.rs), <Collab view="…"/> markup dispatcher, lib.rs/markup.rs/main.rs wiring.
  • Tabs: Workspaces, Channels, Users, RBAC, Stats (+ shell Logs).
  • Inspection: workspace/channel/user tables, RBAC roles/groups, system_metrics chips.
  • Management: workspace + user create/delete (inline form, arm-to-confirm delete), channel drill-down by workspace (channel_list({workspace_id})) with create/delete, RBAC role-assignment bar (org_group_assign_role/unassign_role).

Wire

collab is all-custom, single main domain. RPC goes through the router proxy: call_at("/{proxy}/rpc/api/main/rpc", method, params). Create uses collab's {params} wrapper, delete uses {id} — matching collab's server signatures (not the CrudTable {input} convention; collab is hand-written like the voice/aibroker panes).

Verification

Release-built, deployed via lab build --start, and live-verified end-to-end through the router at ?service=hero_collab: all tabs render real data; a full create → delete workspace round-trip succeeded in the browser (count 1→2→1); Diagnostics 6/6 compliant.

Opening for review since this touches the shared shell — happy to adjust the markup/module conventions to match house style.

## hero_collab admin pane (Dioxus) Adds a full hero_collab admin pane to the shared Dioxus admin shell — inspection **and** management — bringing collab to parity with the other migrated services (voice/aibroker/whiteboard). ### What's here - New `crate::collab` view module (`src/collab/mod.rs`), `<Collab view="…"/>` markup dispatcher, `lib.rs`/`markup.rs`/`main.rs` wiring. - Tabs: **Workspaces**, **Channels**, **Users**, **RBAC**, **Stats** (+ shell Logs). - Inspection: workspace/channel/user tables, RBAC roles/groups, `system_metrics` chips. - Management: workspace + user create/delete (inline form, arm-to-confirm delete), channel drill-down by workspace (`channel_list({workspace_id})`) with create/delete, RBAC role-assignment bar (`org_group_assign_role`/`unassign_role`). ### Wire collab is all-custom, single `main` domain. RPC goes through the router proxy: `call_at("/{proxy}/rpc/api/main/rpc", method, params)`. Create uses collab's `{params}` wrapper, delete uses `{id}` — matching collab's server signatures (not the CrudTable `{input}` convention; collab is hand-written like the voice/aibroker panes). ### Verification Release-built, deployed via `lab build --start`, and **live-verified end-to-end** through the router at `?service=hero_collab`: all tabs render real data; a full **create → delete workspace round-trip** succeeded in the browser (count 1→2→1); Diagnostics 6/6 compliant. Opening for review since this touches the shared shell — happy to adjust the markup/module conventions to match house style.
Adds a compiled <Collab> pane to the unified admin (tabs_for hero_collab):
Workspaces / Users / RBAC / Stats + Logs. Hand-written panes (the canonical
pattern — biz/voice/aibroker/proc all hand-write; only whiteboard uses its own
CrudTable helper), calling collab's all-custom methods on its single main domain
via router.call_at(/<proxy>/rpc/api/main/rpc, ...). All read methods are zero-arg.

Management + drill-down (create/update/delete) is the next tier — also hand-
written panes (proc-style ActionBtn) calling collab's {params}-wrapped methods;
no shared-CrudTable reuse needed (collab is all-custom per home#309, 0 rootobjects).

cargo check: clean (exit 0). Part of home#309 Phase-2 / collab #79.
Adds the management tier to the collab admin pane, hand-written + tailored to
collab's conventions (create -> {params:{...}} wrapper, delete -> {id} flat) —
no CrudTable fork (whiteboard's helper bakes in {input}/{id}; biz uses {data}/
{sid}; there is no single convention, so collab uses its own per the guide's
hand-written-pane pattern). Inline create form + per-row delete with 2-click
arm-confirm, via spawn + tick-refresh. cargo check clean (exit 0).

This proves the management pattern; Users/Channels(drill-down)/RBAC follow the
same shape. Refs home#309 Phase-2, collab #79.
Users: inline create (name/email/alias -> {params}) + delete arm-confirm.
Channels: workspace-selector drill-down (channel_list(workspace_id)) + create
({params}, workspace from selector) + delete. Mirrors the proven Workspaces
CRUD pattern (collab's {params}/{id} conventions). cargo check clean.

collab admin now covers inspect + management + drill-down for Workspaces/Users/
Channels; RBAC/Stats read-only (RBAC role-assignment mgmt = follow-on, needs
user+role selectors). Refs home#309 Phase-2, collab #79.
Adds attach/detach a role to an org group (org_group_assign_role /
org_group_unassign_role, {params:{group_id, role_id}}) via group+role selectors
in the RBAC tab. Completes the collab admin: inspect (Workspaces/Users/Channels/
RBAC/Stats/Logs) + management (Workspaces/Users/Channels CRUD + RBAC assignment)
+ drill-down (Channels). cargo check clean. Refs home#309 Phase-2, collab #79.
# Conflicts:
#	crates/hero_components_app/src/lib.rs
#	crates/hero_components_app/src/main.rs
Author
Member

Squash-merged to development as 5a5e15b after live verification on a clean development stack (discovery + all tabs + real data + full create→delete round-trip through the router). Closing.

Squash-merged to `development` as `5a5e15b` after live verification on a clean development stack (discovery + all tabs + real data + full create→delete round-trip through the router). Closing.
sameh-farouk closed this pull request 2026-06-23 09:51:22 +00:00

Pull request closed

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
lhumina_code/hero_components!11
No description provided.