Compliance wizard from security model policies
- Branch types API maps alcohol/tobacco/firearms policies into wizard state - Dynamic Compliance step: omit from nav when model fixes all ATF and ages - Age and...
Align KnownAliases with DNS and auto-cert (add mail, play, apps, sign; drop app, media)
Show live state with changelog link and daily count
Replace preview countdown and signup copy with a compact "Now LIVE" callout, keep the changelog link, and always show today’s change count from the API after it...
Make RoleRightsSyncService fully self-healing on every boot
Adding or removing a RoleRightType must never again require running KamoInitializerService. syncAll() now runs three phases on every startup: 1. Heal constrain...
Add Platform Administration settings — org plan grants, events, plan catalog
- New pages under /settings/platform (guarded by hasPlatformAdminAccess): - /organizations — list every org, grant/modify/revoke COMP plans with reasons - /...
Add PlatformAdmin controller + service for comp plan grants
- PlatformAdminController at /api/billing/platform (class-level @PlatformAdminOnly) - GET /orgs, GET /orgs/{orgId} - POST /orgs/{orgId}/grants, PATCH|DELET...
Seed Organization.isTopLevel for kamocrm and OWNER_UNLIMITED self-comp plan
- DataLoader: drop OrganizationType arg from createOrg, set isTopLevel=true on kamocrm - KamoCRMAgeReqUpdateRunner + test: match on IS_TOP_LEVEL = TRUE instead ...
Add Organization.isTopLevel, PaymentMethod.COMP, COMP_* event types; remove OrganizationType enum
- Organization: replace dead `type` field with `isTopLevel` flag for platform-owner identification - PaymentMethod: add COMP for complimentary platform-admin gr...
Set orgOriginal on registration and expose isOriginalOrg in my-networks
Member-requestor support rights gating and dual-mode ticket view
- NavTop: show SupportButton for any support right (agent or member) - SupportButton: gate each dropdown item by right — Create/View Tickets, Request Webinar,...
Add member-requestor support rights (133-136)
Adds four new SUPPORT-scoped rights for non-agent members: - **************** (133) - CREATE_SUPPORT_TICKET (134) - REQUEST_WEBINAR (135) - VIEW_MY_SCHEDULED_WE...
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.
Extract RoleRightsSyncService and add sync-rights endpoint
- RoleRightsSyncService: centralizes role rights sync logic for both OrgRole and **************** tables; startup and on-demand - DataLoader: delegates to Rol...
Make role rights DTOs enum-driven and add security model rights sync
- SecurityRoleDTO.fromOrgRole(): enumerate all RoleRightType values with DB settings as lookup — new rights appear with NOT_SPECIFIED automatically - ********...
Add membership type chip and promote/demote to Membership Status card, remove session timeout field
Add native updateMemberType and ensureTeamMemberRow queries to MemberRepository
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
Expose city and subdivision in visitor geo lookup
- Extend GeoResult record with city and subdivision fields - Switch SupportTicketService.toDTO() to use GeoLookupService (IP-level lookup) instead of country-...
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.
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 ...
Show visitor flag and location in support ticket header
- Inject PublicChatVisitorRepository and GeoLiteLocationRepository into SupportTicketService - Populate visitorIpAddress, visitorCountryCode, visitorCountryName...
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
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.