🚀 Added
- Manager role alias support in frontend role system and display mapping
- Manager‑specific page access rules (Apps, Licenses, Files/Modules, Webhooks, Variables, Team Members, Reseller Panel)
- Manager label rendering in top header
- Scoped owner resolver for reseller/admin operations
- Manager support in reseller claims guard
- Manager owner‑resolution support in reseller profile resolver
- Global KeyCloud favicon enforcement for public pages
- Animated KeyCloud tab‑title behavior on public pages and dashboard
- Manager‑specific plan badge (“ASSIGNED MANAGER”)
- Manager‑specific sidebar labeling (“Manager Controls”)
- Backend guard requiring manager accounts to have at least one active app assignment
- Backend auto‑cleanup for unassigned manager accounts
- Backend app‑delete cascade cleanup for app‑linked data
- Manager added to account‑layer role schema/seed and legacy‑role normalization
- Manager role permissions in account‑layer defaults
- Manager subscription override to Developer‑tier usage
- New purple KeyCloud favicon asset wired to public + dashboard HTML
- Backend role re‑resolution in admin_claims
- Team Members access editor modal with permission toggles
- Per‑account side‑nav visibility toggles saved in metadata
- updateAdminUser(...) helper
- Metadata field added to AdminUser type
- Backend permission resolver support for manager/reseller metadata permissions
- Team Members account actions: edit username/password and delete
- Backend support for username/password updates
- Centered overlay portal behavior for Manage App Access modal
- Strict default‑deny navigation gating for manager/reseller accounts
- Changecrab widget integration on public homepage and dashboard
- “What’s New” trigger in public nav and dashboard top bar
- Widget script loading before </body> on public and dashboard pages
🛠️ Fixed
- Team Members role dropdown to show only Manager/Reseller in scoped context
- Team Members default role assignment to manager in scoped context
- Sidebar now hides inaccessible items instead of showing locked entries
- Scoped reseller/admin backend paths to use owner scope
- Reseller profile, balance, subscriptions, logs, and key generation to resolve manager actions against owner scope
- Reseller key generation accounting/logging to include manager actor metadata
- Role‑alias permission handling for developer‑plan access on protected admin endpoints
- Team Members UX with success notice after creation
- Team Members data loading for Developer/Manager contexts
- Dashboard access gate to normalize role aliases/casing
- Scoped backend role comparisons to be case‑insensitive
- Frontend legacy‑role normalization for developer/normal_user aliases
- Backend login gate rejecting manager accounts
- Inconsistent tab branding between public pages and dashboard
- Dashboard HTML entry favicon links
- Manager navigation permissions to allow only scoped pages
- Manager header label previously showing FREE USER
- Orphan manager login by blocking/pruning unassigned managers
- App deletion to remove app‑linked keys and runtime records
- Manager role downcast bug (manager → free_user)
- Manager scope leakage causing unscoped visibility
- Manager usage panel mismatch by returning Developer limits
- Browser tab icon mismatch by replacing old icon paths
- Stale default tab icon fallback
- Manager privilege leak on team accounts and app‑assignment mappings
- Manager permission map to remove manage_users
- Frontend manager visibility to hide Team Members page
- Dashboard data loader to stop fetching admin users for manager sessions
- Manager role‑scoping consistency by enforcing DB role at request time
- Manager app‑scope leak on /api/admin/apps
- Manager app selector to show only assigned app IDs
- Backend deployment state by rebuilding license‑auth
- Frontend deployment state by rebuilding dashboard bundle
- Backend permission resolver to read manager metadata permissions
- Reseller accounts to include management permission aliases
- Manager edit flow to preserve manager role
- Manager hard‑blocks on team endpoints by switching to permission + scope checks
- Page gating logic to follow backend metadata instead of static defaults
- Team Members access modal layout to centered dialog with backdrop
- Modal usability with scrollable content and sticky footer
- Modal mounting via portal
- Team Members page layout to license‑style table and removed deprecated fields
- Frontend admin API typing for username/password edits
- Team Members access toggles to correctly hide sidebar/pages after saving
- Changecrab widget initialization by loading script before </body>
Powered by ChangeCrab