Add PATCH /org/{id}/colors endpoint to safely update only color palette fields
Correct MEDIASERVICE_URL port from 443 to 80 for contact form
ClusterIP service only exposes port 80; using 443 with http caused a ConnectTimeoutError on every contact form submission.
Hide security model sentence for Members, fix badge overlap on branch type cards
Use memberID session key and include creatorType in creatable branch-types response
Use correct session key 'memberID' instead of 'MID'
KSessionService stores member ID under key 'memberID' but both **************** and OrganizationController were reading session.get("MID") which always returned...
Set org owner usernameAlias on creation and fix website-contact member alias
Exclude master model from models list; add debug log to child-org creation check
SecurityModelController now filters out the org's master model (identified by org.getMasterModelID()) from the /api/security/models response — it is managed exc...
Read session rights as List<String> names, not CSV of integer IDs
Session rights are stored as a JSON array of RoleRightType name strings. Both **************** and OrganizationController were casting them to String (causing C...
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.
Stabilize countdown width to prevent banner text wobble
Fixed-width monospace container with tabular-nums prevents layout shifts as countdown digits change every 50ms.
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...
AppConfig replace is upsert-only, never deletes on payload absence
The previous behavior deleted any existing app-config row whose ServiceType wasn't in the incoming payload. That turned partial payloads into silent data-loss: ...
Move featureRequests i18n keys into correct home namespace
Keys were accidentally placed in about namespace; section was showing raw key strings instead of translated text.
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.
Lock user-level fields to self-only, gate member-level edits to self or MANAGE_MEMBER_SECURITY
Replace MANAGE_USERS gate with MANAGE_MEMBER_SECURITY in member settings redirect
Properly clean up Capcha event listeners on step transition
The removeEventListener calls were inside the setTimeout callback's return value, which JavaScript ignores. This caused handlers to accumulate on every user→pas...
UPSERT SYSTEM email template rows on every run
Previously the seed runner only inserted rows that didn't exist, so canonical HTML changes never propagated to the DB. Now existing SYSTEM rows have their bodyH...
Preview uses same auto-vars as sendToUser (org logo + name)
The preview endpoint now injects logoUrl, logoSimpleUrl, and orgName from the org's domain before applying sample content variables, matching the exact variable...
Use {{logoUrl}} placeholders so sent emails match preview
serializeFullEmailHtml now stores **************** placeholders in bodyHtml instead of resolved local paths. EmailTemplateService already injects absolute logo ...
Rewrite all canonical templates with full branded design
All 5 templates now use the consistent outer table structure (600px, rounded card, gray header/footer) matching the block editor's serializeFullEmailHtml output...
Add org-scoping, password length validation, and code quality improvements to PasswordChangeController
Unify preview and editor into a single coherent system
- Extract system template content via DOMParser targeting the content <td> cell, preventing double-wrapping when EmailFrame re-serializes the blocks - Replace...
Add @Transactional to DataLoader.run to fix LazyInitializationException on startup
Use JPA entity traversal for grant-all detection (covers dept/job roles)
Filter null rights in buildAppliedRightsWithSources; upgrade shared-lib to 1.5.0
Upload Avatar Creator avatar to server after registration
Avatar Creator avatars were only stored as SVG data URLs in local form state and never sent to the server, leaving new users with no avatar set. Convert the SVG...
Use core NATS pub/sub for email-verified SSE fan-out
Replaces in-memory ConcurrentHashMap broadcast with NATS core pub/sub so all pods receive verification events regardless of which pod handled the token. Falls b...
Fix center scroll and system template block loading
- Remove height:100% from EmailFrame so content grows naturally and scroll works - Extract <body> content from full HTML system templates into editable block
Extract inner content from canonical HTML when loading in block editor
When bodyBlocks is null and bodyHtml starts with <!DOCTYPE, extract the main content <td> as an initial HTML block so users see the existing content instead of ...
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.
