Run GrantDialog plan useMemo before conditional return (React hooks order)
Preserve int64 org id on create-org redirect to DNS setup
POST /api/security/org: pass through upstream JSON instead of re-parsing, so response bytes keep full id digits. createOrganization reads raw body and extracts ...
Harden default template copy for org provisioning
Use explicit source prefix for destination keys, skip S3 folder markers, and fail fast when the template prefix is empty so silent partial copies do not reach g...
Union listObjects across nodes for complete key sets
The first reachable MinIO node could return an empty listing while other nodes held replicated objects, which broke recursive copies such as theme template sync...
Include teamMember owner flag in *** for platform admin UI
Store teamMember { memberId, isOrganizationOwner } in Redis session at login so kamo-internal hasPlatformAdminAccess can satisfy the top-level org owner path. E...
Stop duplicating query string in access-logs API proxy
forwardToApi already appends the incoming request search string. Embedding ?params in the path produced malformed URLs and Spring failed to parse page/size (Num...
Drop mail from required DNS CNAME aliases
Remove mail from KnownAliases so verify-dns and onboarding no longer require mail.example.com; new custom domains also skip auto-creating the mail child alias.
Align required subdomain list without mail
Match SecurityService KnownAliases for DNS setup UI and manual guide.
Gate behavior labeling on applied-model ready; avoid permissive defaults on fetch error.
Parse session orgID and userID when stored as strings in AppliedModelController.
Honor security model for ages and ATF on behavior labeling
Parse boolean compliance literals from the API. Build age dropdowns from normalized whitelist tokens and numeric AgeReq ids; avoid showing the full age list whe...
Correct applied-model source and normalize compliance in API
Use resolver resolution for BRANCH_TYPE vs MASTER instead of inferring from branchTypeID alone. Normalize FALSE/TRUE compliance literals in applied-model settin...
Applied model source resolution and compliance policy normalization
Expose resolveAppliedModelWithSource so callers know whether the active model came from the branch type or master fallback. Map FALSE/TRUE/0/1 compliance litera...
Drop branch-type bulk fetch; document per-org applied model rules
Propagate master model compliance and age rules to branch-type security models
Fetch branch type security model with JOIN FETCH for applied model resolution
Cache-bust theme CSS and assets via themeRevision
Fetch config with no-store; append v=themeRevision to globals.css and favicon URLs so browsers drop stale cached theme after each provision.
Optional Cache-Control on object upload
Used by theme provisioning so globals.css and config.json instruct browsers and proxies to revalidate instead of serving stale cached objects.
ThemeRevision in config and cache headers on theme assets
Emit themeRevision (epoch ms) in config.json on each write; set Cache-Control on config, globals.css, and site.webmanifest uploads so edge caches revalidate.
Write globals.css before cleanup; run cleanup async
Reorder provisionUpdate so writeConfigFiles (colors, config, manifest) runs before background file cleanup. Reload org from DB for fresh colors. Run cleanupExt...
Apply committed org colors to MinIO globals.css
Reload Organization from the DB at the start of async provision so writeConfigFiles sees colors saved by PATCH /colors (controller snapshot could be stale). Nul...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.