Replace native WebSocket with STOMP/SockJS in LiveSupportPanel
- Add @stomp/stompjs and sockjs-client packages - Connect to media.{domain}/ws/public-chat via SockJS+STOMP instead of raw WebSocket to api.{domain} which was...
Fix end-to-end public chat real-time via STOMP/NATS
- Remove internalAuth requirement from PublicChatWebSocketInterceptor so visitors can connect directly using only their sessionToken - Include visitor display...
Add senderName to ChatMessageDto for support chat display names
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...
Add /contact-confirmed page with animated hero, timeline, and CTAs
Replace inline success message on contact form with a dedicated premium confirmation page: animated SVG checkmark with particle burst, 'What Happens Next' 3-ste...
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...
Add KamoMail domain validator to block cross-tenant email addresses
Introduces KamoMailDomainValidator component that checks, at service layer, whether the submitted email domain matches the org's verified default domain when Ka...
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...
Read logoFullExt from config.json; fix site.webmanifest path to favicon subdirectory
Org theme provisioning — WebSocket hook, provision panel, LabelManager wiring, DNS trigger, bg resize, ThemeConfig context
Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload
Add logoFullExt field to Organization entity; add listObjects to MinIOStorageService
Add findByBranchTypeID derived query to OrganizationRepository
Supports the new /branch-types/{id}/usages endpoint in SecurityService for checking whether a branch type has active child orgs before deletion.
Add GET /branch-types/creatable and /{id}/usages endpoints
/creatable returns branch types filtered by the caller's creator-type (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id}/usages returns th...
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
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
Add pending count field to SupportAgentNotificationDTO and count query to SupportTicketRepository
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.
Add API modification callout to kamo-api-reference page
Shown only on /kamo-api-reference, prompts users to submit API change requests via /requests or reach out via /contact.
Add GET /branch-types/creatable endpoint with creator-type filtering
Returns only the branch types the calling member is permitted to create a child org under, based on their OWNERS/TEAM_MEMBERS/MEMBERS classification against the...
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 ...
Gate /network child-org creation by right + member-type applicability
Wires the applied-security-model child-org creation gate end-to-end: - SecurityModelController + MasterModelController round-trip the three new apply-to flag...
Member-type gate + CREATE_CHILD_ORG right for child-org creation
Adds the data layer for gating /network child-org creation by member type: - New CREATE_CHILD_ORG right on RoleRightType (id 131). - Three new boolean columns ...
Master model applies to all three member types on init
provisionMaxedOutMasterModel now sets appliesToMembers, appliesToTeamMembers, and appliesToOwners all true so every member type sees the master model's branch t...
Replace static launch date with live countdown to 2PM PST Apr 20 2026
Ticks every second showing Xd XXh XXm XXs; falls back to static date until client hydrates, shows "Now" when target is reached.
Administrator default role template starts with all rights GRANTED
provisionMaxedOutMasterModel now populates the Administrator template with every RoleRightType set to GRANTED. The other three templates (Team Member, Member, D...
Provision a maxed-out master security model for KamoCRM on init
DataLoader now creates and assigns a master ChildOrgSecurityModel to KamoCRM immediately after the org is created, with every setting maxed out to the most perm...
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...
Applied-model is the read-time source of truth for feature availability
Closes the "stale DB leaks a disabled feature" gap by gating every surface that touches OrgFeature / ServiceType through the applied security model. - ********...
Effective-feature resolver for applied-model read-time gating
Adds the read-time gate that makes the applied security model the final source of truth for feature availability, so stale DB state can't leak a disabled featur...
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...
Add ImagingSettingsController with doc type, stacking order, and assoc config CRUD
Add ImgAssocConfig entity, repository, and sortOrder to ImgStackingOrderDt
Add FEATURE_REQUESTS to Support category and all plan-feature mappings
Free: Community vote, Starter: Vote & request, Business: Priority requests, Enterprise: Custom dev included
Add /requests direct nav links, homepage section, and plan feature comparison row
- Header: Requests added as top-level direct link between Pricing and Company - Footer: Requests added to Product column for direct visibility - Pricing page: c...
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...
Enforce team-member pay-fees setting at Stripe customer creation
Bumps kamo-shared-library dependency to 1.5.0 so BillingService can resolve the new AppliedModelEnforcementService, and wires team-member vs org pay-fees enforc...
Wire applied-model enforcement across every controller
Every non-role setting on the applied security model is now enforced at the exact controller boundary it governs, and the scalar settings round-trip cleanly thr...
Enforce every non-role setting on ChildOrgSecurityModel
Adds end-to-end enforcement for the remaining settings on an org's applied security model. Every setting that was previously only read (or dropped on save) now ...
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...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
