Add Sync Rights button to SecurityRoleManager for top-level orgs
Button is only visible when organization.hasParent is false. Calls POST /api/security/roles/sync-rights then reloads the roles table.
Gate Support/Settings by rights, fix Network copy, loading on tab switch, nav divider
- Network card: updated description to use dynamic branch title label - Support card: fixed 404 by changing href /help → /support; gated by isSupport + VIEW_SUP...
Add membership type chip and promote/demote to Membership Status card, remove session timeout field
Support chat UX — name updates, titles, notification count, datagrid
- TicketChat fires onVisitorNameChanged when NAME_CHANGED WS event arrives - SupportTicketWindow dispatches tool:title with requestorName on load and on name ...
Show AG Grid loading overlay instead of empty state on leads page
Initialize loading state to true so the grid shows "Loading leads..." until the first fetch completes, preventing a flash of "No leads found".
Show city and subdivision in ticket visitor geo row
Display as "City, Region, Country (IP)" — nulls are filtered so it degrades gracefully when only country data is available
Add tab URL params to /account page for deep linking and refresh persistence
Tab state is now synced to **************** so links to specific tabs work and the correct tab stays selected on page refresh.
Correct message sides in history and handle visitor name change events
- Use messageType=VISITOR_MESSAGE from API to determine left/right in history load - Add NAME_CHANGED system event rendering in SystemMessage and TicketChat
Show visitor flag, country, and IP in ticket header
- Add visitorIpAddress, visitorCountryCode, visitorCountryName to SupportTicketDTO type - Render flag emoji + country name + IP address row in TicketHeader for ...
Treat VISITOR_MESSAGE type as always-from-them in TicketChat
Visitor messages published via PublicChatService carry messageType=VISITOR_MESSAGE. Explicitly mark these as author='them' regardless of memberId so they always...
Auto-open support ticket popup on NEW_TICKET NATS notification
When a new support ticket arrives, the backend now sends a NEW_TICKET STOMP message in addition to PENDING_COUNT. The SupportCountContext handles it by dispatch...
Always trigger provision-theme on branding save; let backend resolve domain server-side
Separate ticket number/badges row from title in TicketHeader
Title was sharing a nowrap flex row with the ticket number and two badges, causing it to be cut off. Now ticket number and badges occupy their own compact row, ...
Handle tickets key in support ticket list response
MediaService returns { tickets: [...], totalElements } but the frontend only checked for data.content, causing the list to always render empty.
Use PATCH /org/{id}/colors for branding save to avoid nullable boolean constraint failure
Add org settings section (timezone, age req, content flags, description, alias); remove Preview/AddDomain buttons
Redesign LabelManager — inline section editing, fix broken save, read-only default
Rewrites LabelManager.tsx with per-section read/edit pattern. Fixes the broken save button (validateForm blocked saves because contact/company fields were never...
Enforce KamoMail domain restriction on mailbox, alias, and shared mailbox creation
When KamoMail is the email provider, members can only create mailboxes, aliases, and shared mailboxes using the org's verified default domain. Enforcement at th...
Org theme provisioning — WebSocket hook, provision panel, LabelManager wiring, DNS trigger, bg resize, ThemeConfig context
Hide security model sentence for Members, fix badge overlap on branch type cards
Guard branch type deletion against active org usages
Before removing a branch type chip, the frontend now calls **************** If any orgs exist it shows an informational dialog listing them and instructs the ad...
Live support ticket badge on NavTop — SupportCountContext subscribes to NATS via STOMP, badge shows pending count
Stop double-toggle on age range checkboxes in BranchSetupManager
Box onClick and Checkbox onChange both fired on each click, toggling twice and leaving state unchanged. Stop propagation on FormControlLabel so only one handler...
Use MUI v7 Grid size prop in StackingOrdersManager
MUI v7 Grid2 replaced xs/sm/md with the size object prop.
Remove deprecated MUI Grid item prop in StackingOrdersManager
MUI Grid v2 dropped the item prop; use size props directly on Grid.
Add domain name field to org creation wizard
Adds a required domain field to the Basics step with automatic www. stripping. Validated, included in API payload, and shown in the review step.
Replace OrganizationType wizard step with branchType/SecurityModel selection
- Replace OrgTypeStep (OrganizationType + Configuration dropdowns) with BranchTypeStep that fetches **************** — the new endpoint returns only branch ...
/network create affordance is gated by member-type + right
- BranchSetupManager: new "Who Can Create Child Orgs Under This Model" card with three toggles (Members / Team Members / Owners). Values round-trip through ...
Align model-editor SERVICE_TYPES with backend ServiceType enum
The editor's app list had drifted from the backend ServiceType enum: - Missing 8 non-deprecated apps (AI_SUPPORT, SUPPORT, KNOWLEDGE_BASE, NOTES, POS, DOCS, M...
FeaturesManager honors applied-model force-enabled state
Accepts the new modelAvailability + locked fields from FeatureController and surfaces them in the UI: - Features whose modelAvailability is FORCE_ENABLED rende...
Show backend detail in EDIT MASTER MODEL failure toast
The client was swallowing the response body behind a generic "Failed to load master model" message. Now we extract details / error / text from the proxy respons...
Add per-assocType docs settings tabs with doc types, stacking orders, and config panels
Replaces ComingSoonTab on /settings/features/docs with a full settings interface: - General overview tab + one tab per ImageAssocType (Account, Service Applicat...
Round-trip appConfigs + surface applied-model settings + private-org toggle
- BranchSetupManager: mapBackendModel now hydrates the persisted appConfigs returned by the backend (availability + allowedCommerceTypes per service type) i...
Lock mandatory system roles in member role-assignment UI
- PublicProvider: admit branchTypeID/masterModelID on the incoming organization payload so the branch-types tab can reliably gate the "Edit Master Model" bu...
Add master model editor, role templates, and force-rule gating
Surfaces the new branch-type security model in the UI: - branch-types tab gains an "Edit Master Model" button (hidden when the org has a branchTypeID assigne...
Add branch type chip-input field to security model editor
- BranchTypeChipField with colored dot toggle, edit-on-click label, and X delete - BranchTypeEditDialog for name/description editing - Autocomplete dropdown pul...
Send null instead of empty string for contentJson/contentPlainText on kb article create
Empty string is invalid for the JSONB column type, causing a DB error when creating an article with no content.
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.