3.3 KiB
3.3 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Roles and Permissions System (RBAC) - Complete implementation (#345, 2026-01-08)
- Four hardcoded permission sets:
own_data,read_only,normal_user,admin - Database-backed roles with permission set references
- Member resource policies with scope filtering (
:own,:linked,:all) - Authorization checks via
Mv.Authorization.Checks.HasPermission - System role protection (critical roles cannot be deleted)
- Role management UI at
/admin/roles
- Four hardcoded permission sets:
- Membership Fees System - Full implementation
- Membership fee types with intervals (monthly, quarterly, half_yearly, yearly)
- Individual billing cycles per member with payment status tracking
- Cycle generation and regeneration
- Global membership fee settings
- UI components for fee management
- Global Settings Management - Singleton settings resource
- Club name configuration (with environment variable support)
- Member field visibility settings
- Membership fee default settings
- Sidebar Navigation - Replaced navbar with standard-compliant sidebar (#260, 2026-01-12)
- CSV Import Templates - German and English templates (#329, 2026-01-13)
- Template files in
priv/static/templates/ - CSV specification documented
- Template files in
- User-Member linking with fuzzy search autocomplete (#168)
- PostgreSQL trigram-based member search with typo tolerance
- WCAG 2.1 AA compliant autocomplete dropdown with ARIA support
- Bilingual UI (German/English) for member linking workflow
- Bulk email copy feature - Copy email addresses of selected members to clipboard (#230)
- Email format: "First Last " with semicolon separator (compatible with email clients)
- CopyToClipboard JavaScript hook with fallback for older browsers
- Button shows count of visible selected members (respects search/filter)
- German/English translations
- Docker secrets support via
_FILEenvironment variables for all sensitive configuration (SECRET_KEY_BASE, TOKEN_SIGNING_SECRET, OIDC_CLIENT_SECRET, DATABASE_URL, DATABASE_PASSWORD)
Changed
- Actor Handling Refactoring (2026-01-09)
- Standardized actor access with
current_actor/1helper function ash_actor_opts/1helper for consistent authorization optionssubmit_form/3wrapper for form submissions with actor- All Ash operations now properly pass
actorparameter
- Standardized actor access with
- Error Handling Improvements (2026-01-13)
- Replaced
Ash.read!with proper error handling in LiveViews - Consistent flash message handling for authorization errors
- Early return patterns for unauthenticated users
- Replaced
Fixed
- Email validation false positive when linking user and member with identical emails (#168 Problem #4)
- Relationship data extraction from Ash manage_relationship during validation
- Copy button count now shows only visible selected members when filtering
- Language headers in German
.pofiles (corrected from "en" to "de") - Critical deny-filter bug in authorization system (2026-01-08)
- HasPermission auto_filter and strict_check implementation (2026-01-08)