Use targeted role-scoped rights recalculation
SecurityRoleController now uses updateRoleMemberRightsApplied() to only recalculate members who have the modified role, instead of recalculating all members in ...
Targeted rights recalculation for dept, job title, and role changes
- DepartmentService: recalculates only members in the affected department after create/update/delete - JobTitleService: recalculates only members with the aff...
Recalculate member_rights_applied after new member creation
Calls updateMemberRightsApplied on the new member after both createOrganizationMember and createOrganizationTeamMember so the Everyone role rights are immediate...
Recalculate member_rights_applied after role create/update/delete
The member_rights_applied table was never recalculated when roles were modified, causing all members to have 0 applied rights. Now calls **************** after ...
Rebuild with updated shared library containing support permissions
SecurityService needs the new ACCEPT_SUPPORT_TICKETS and MANAGE_SUPPORT entries in RoleRightType enum to include them in *** session rights.
Granular role editing, label swapping, and Team Members support
- Add isAllowEditTitle and isAllowEditSecurity to SecurityRole interface - Allow editing security settings on Members/Team Members roles (previously fully locke...
Migrate Everyone role to Members and create Team Members role
- Rename ROLE_EVERYONE_ID column to ROLE_MEMBER_ID - Rename existing "Everyone (Applies To All)" roles to "Members" - Set **************** flags on existing sys...
Enforce role protection flags and add parent label support to session
- Enforce isAllowEditSecurity in SecurityRoleController update endpoint - Add parentMemberTitlePlural and parentTeamMemberTitlePlural to *** session - Resolve p...
Add granular role protection flags and Team Members system role
- Add isAllowEditTitle and isAllowEditSecurity flags to OrgRole entity - Rename roleEveryoneID to roleMemberID on Organization, add roleTeamMemberID - Rename "E...
Add error display when topic creation fails
Shows API error message in the dialog instead of silently failing.
Fix department loading in TopicManager
Send X-***-Token header (matching DepartmentManager pattern) and extract departments from data.departments response shape.
Add Array.isArray guards on API responses to prevent .map errors
API may return error objects instead of arrays when backend tables don't exist yet. Guard all array operations with Array.isArray checks.
Enable redirect following for MaxMind download
MaxMind returns 302 redirect to the actual file. HttpClient wasn't following it, causing the sync to fail with HTTP 302.
Add Support section to settings page
Adds Topics, Notifications, and Status & Response Times cards that link to /support?tab=settings.
Add SecurityConfig to permit daemon trigger and actuator endpoints
Spring Security defaults blocked all endpoints with 401. Added explicit config to permit /api/daemon/** and /actuator/** without authentication.
Allow 6 settings cards per row on xl screens and hide Club House nav item
Settings page grids now scale to 6 columns at xl breakpoint. Club House menu item commented out in NavPri.
Update ticket popup tool window to use light theme matching chatColors
Replace dark theme (dark backgrounds, white text, amber accents) with the light color scheme used by all other popup tool windows in the app.
Remove MANAGE_SUPPORT conditional from settings/analytics tabs, enable NavPri slide-out
All tabs now always visible. Removed disablePanel from NavPri Support entry so the slide-out panel works on hover.
Make description textarea fill remaining popup window height
Removed minRows/maxRows constraints and set flex layout on the input root so the textarea expands to fill all available vertical space.
Add manual job trigger controller with duplicate execution guard
POST /api/daemon/trigger/{jobName} triggers any Quartz job immediately. Returns 409 if the job is already executing. GET /api/daemon/trigger/status returns runn...
Temporarily set geolite sync cron to every 2 minutes for testing
Will revert to weekly Sunday 3 AM after confirming sync works.
Correct MediaObjImgDownload FK to use MediaObjImg UUID PK instead of composite key
The composite FK (OBJ_ID, IMG_ID) referenced non-PK columns causing a type mismatch (uuid vs int). Changed to single FK on OBJ_IMG_ID referencing MediaObjImg.ID...
Use native query for avg resolution time to avoid Hibernate EXTRACT(EPOCH) limitation
Hibernate 6 cannot apply EXTRACT(EPOCH FROM ...) to a timestamp subtraction (produces Duration type, not TEMPORAL). Switched to a native SQL query that Cockroac...
Remove old help system, add support nav items
Delete app/help/ and app/components/help/ directories. Add SupportButton to NavTop toolbar and Support menu item to NavPri sidebar navigation.
Add frontend types and API proxy routes
TypeScript interfaces for all support DTOs and 13 API proxy routes forwarding to MediaService for topics, tickets, and reporting endpoints.
Add support ticket services, REST controllers, and STOMP relay
Implements the MediaService backend for the support ticket system: - SupportTopicService: CRUD for org-scoped support topics - SupportAssignmentService: round-r...
Add support ticket enums and new permissions to shared library
Redesign AI processing toggle as labeled switch with Assistant icon
Replace icon button with a toggle switch using the MUI Assistant icon, labeled "Train AI With This Note". Moved to the left of the save button. Renamed "Create"...
Send session replay data to Kafka when available instead of direct ClickHouse insert
Add deep-linking support to notes page via query param
Support /notes?id={noteId} URL pattern so AI chat source links can navigate directly to a specific note. Opens the note in edit view when the page loads with an...
Include clickable source links in RAG context for AI chat
Update RagClient to embed markdown links in the context sent to the AI model. KB articles link to /kb/{guid}, notes link to /notes?id={noteId}. Instructs the mo...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.