Restore org context refresh after toggling completed-stage apps
Without router.refresh(), the org context stayed stale after enabling apps — NavPri, homepage, and settings never showed the newly enabled features. Now refresh...
Gate all feature cards and settings sections by org feature flags
Homepage: Documents card now uses isDocs (not deprecated isStorage/isDocManager), Calendar gated by isEmail, Notes gated by isNotes. Settings page: Commerce se...
Remove router.refresh() from feature toggle to prevent page reset
router.refresh() was causing the page to re-render and reset the active tab back to "Available" on every toggle. The cache invalidation and loadFeatures() call ...
Prevent duplicate apps in features list by excluding all existing types
The available list was only excluding features with enabled=true, so a disabled feature (isActive=false) appeared in both the features array AND the available a...
Invalidate org cache after feature toggle to reflect changes immediately
The org API route caches organization data in Redis for 24h. After enabling or disabling an app, the stale cache caused feature flags to remain false, making se...
Add settings pages for HRS, Docs, Support, KB, Notes, and Chat
Create ComingSoonTab shared component and 6 new feature settings pages with coming soon placeholders, feature flag guards, and help tips. Links from FeaturesMan...
Auto-refresh UI after feature toggle and role changes
FeaturesManager and SecurityRoleManager now call router.refresh() after mutations to re-fetch org context and user session data, reflecting permission and app c...
Auto-refresh Redis session rights after feature/role changes
FeatureController and SecurityRoleController now rebuild the caller's session rights in Redis after enable/disable, role create/update/delete, and recalculate-r...
Gate all nav links and settings pages by org feature flags
NavTop: hide AI chat, softphone, SMS, credits, notes, calendar, and contacts links when their corresponding app is disabled. Settings pages for CRM, Email, Phon...
Implement app management UI with backend integration and dynamic permissions
Rewrite FeaturesManager to use backend API for app enable/disable with root-org gating for in-dev apps. Update NavPri to gate all nav items by org feature flags...
Add FeatureController for org app enable/disable management
REST endpoints for managing organization app features: GET features list, POST enable/disable with CONFIGURE_SYSTEM permission check, root-org-only gating for i...
Add app management system with service types, rights, and feature control
Restructure ServiceType enum: add core/deprecated flags, rename DOC_MANAGER→DOCS and AI_CHAT→AI_SUPPORT, add SUPPORT/NOTES/POS types, deprecate STORAGE/DOC_CLAS...
Sync settings nav with actual tab definitions across all pages
Add missing Mailboxes and CalDav/CardDav entries to email section in both the settings main page and the NavPri slide-out drawer. Fix Account section card linki...
Split mailboxes tab into sub-tabs for primary, aliases, shared
Primary Mailboxes, Email Aliases, and Shared Mailboxes are now each under their own sub-tab within the Mailboxes settings page, matching the existing sub-tab pa...
Provider save field name and mailboxes tab member list endpoint
Provider save for non-configurable types now sends correct field name. Mailboxes tab now uses **************** endpoint which actually exists, instead of non-ex...
Provider GET returns both type and providerType, PUT accepts both
GET /api/email/provider now includes both 'type' and 'providerType' fields in the response for frontend compatibility. PUT now accepts 'type' as a fallback when...
Resolve Remember Me not persisting username across login sessions
The re*** callback captured a stale performLogin closure where rememberMe was always false (initial state). Used a ref to read the live checkbox value. Also fix...
Provider save for non-configurable types and mailbox member email mapping
**************** selections now immediately persist via saveProvider API instead of only updating local state. Mailboxes tab now correctly extracts emailAddress...
Add email alias and shared mailbox UI support
Composer "From:" dropdown for switching between primary, alias, and shared mailbox addresses. New "Mailboxes" 6th tab in email settings for org-wide admin manag...
Add email aliases and shared mailbox support
New MailboxManager provider capability interface for alias and shared mailbox CRUD. KamoMailMailboxManager implementation manages dovecot/postfix virtual_users ...
Add email alias and shared mailbox entities and repositories
New JPA entities for email_provider schema: EmailAliasEntity (send-as aliases per member), SharedMailboxEntity (org-wide shared mailboxes with encrypted IMAP cr...
Fix PRE_TICKET DB constraint + redesign creation form
- Fixed CHECK constraint on support_ticket.status to allow ordinal 14 - Redesigned TicketCreationForm with modern card-based UI: - "How can we help?" landing ...
Add PRE_TICKET status with Start Chat option
- TicketCreationForm: two buttons — "Start Chat" (pre-ticket, no title required, just topic) and "Submit Ticket" (full ticket with title) - TicketHeader: "Con...
Add PRE_TICKET creation and convert-to-ticket endpoint
- createTicket: when preTicket=true, sets status to PRE_TICKET, skips assignment (no title required) - PUT /tickets/{id}/convert: converts PRE_TICKET to NEW, ...
Add PRE_TICKET status and preTicket flag on create request
New status PRE_TICKET(14) for chat-first sessions where the user starts chatting without formally submitting a ticket. Can be converted to a full ticket later b...
Extract topics array from { topics: [...] } API response
The GET /api/support/topics endpoint returns { topics: [...] }, not a raw array. All consumers now extract data.topics before using the array.
Open support tool window from error and 404 pages
Replace old /help/ticket/new navigation with tool:open CustomEvent to open the support popup window directly.
Merge pull request #4054 from Yashh56/cache-control
feat: add cache control headers to GET response
Merge pull request #4090 from ****************
feat(funnels): add per-step event property filters
Use settings timezone in revenue chart date range
The revenue chart was using the browser's local timezone instead of the timezone configured in analytics settings. This caused the chart to show different time ...
Assign default roles to members on creation
**************** now assigns the "Members" (Everyone) role from organization.roleMemberID. **************** now assigns both the "Members" (Everyone) role and ...
Add POST **************** endpoint
Triggers org-wide member_rights_applied recalculation. Needed after schema migrations or manual DB changes to permissions.
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.