New Features
Event Prefixes (Multi-select)
Group admins and moderators can now create custom prefixes for events and assign multiple prefixes per event.
Managing prefixes:
- Navigate to a group's event page → manage prefixes via the new Event Prefixes section
- Each prefix supports a title, optional description, and a display style (colored label)
- Prefixes are scoped per group — each group maintains its own prefix set
Assigning prefixes:
- When creating or editing an event, a prefix selector is shown if the group has prefixes defined
- Multiple prefixes can be selected simultaneously
- Selected prefixes are displayed as styled badges on the event list, event card, and event detail page
Permissions:
- Global editGroupAny permission also grants access
Performance Improvements
Per-request Static Cache in
Moved the permission result cache and member roles cache from function-level statics to class-level static properties (App::$threadPostPermissionCache, App::$memberRolesCache). This prevents redundant permission queries across multiple call sites within the same request lifecycle.
UI / UX Improvements
Event List Layout Redesign
The event list (tlg_group_events) was redesigned from a plain content-row layout to a card-based layout:
- Date badge on the left showing abbreviated month and day number
- Event title, date range, 2-line description snippet, and meta row (author, attendees, remaining slots, group)
- Register CTA button inline with the title row
- Cancelled events shown with reduced opacity and strikethrough title
- Compact variant for widget usage (hides snippet)
- Full light/dark mode support using XenForo CSS custom properties