2025-05-30 - 2026-05-30
Overview
16 Releases published by 1 user
Published
v0.5.2
v0.5.2
Published
v0.3.2
v0.3.2
Published
v0.3.1
v0.3.1
Published
v0.3.0
v0.3.0
Published
v0.2.11
v0.2.11 — Allergien per Klick in der Mitgliederliste
Published
v0.2.10
v0.2.10 — Manuelles Update via Datei-Upload
Published
v0.2.9
v0.2.9 — Fehler-Diagnose + Sub-Entity-Speicherung
Published
v0.2.8
v0.2.8 — Abfrage-Builder: NOT, Klammern, vollständige Feldabdeckung
Published
v0.2.7
v0.2.7
Published
v0.2.6
v0.2.6
Published
v0.2.5
v0.2.5
Published
v0.2.4
v0.2.4
Published
v0.2.3
v0.2.3
Published
v0.2.2
v0.2.2
Published
v0.2.1
v0.2.1
Published
v0.2.0
v0.2.0
95 Pull requests merged by 1 user
Merged
#204 refactor(MemberService): extract generic syncSubEntities() method
Merged
#203 fix(MemberService): wrap multi-step writes in database transactions
Merged
#202 Fix findArchived() filtering all members in memory (Closes #202)
Merged
#201 Fix countArchived() loading all members into memory (Closes #201)
Merged
#200 Fix N+1 query problem in MemberService (Closes #200)
Merged
#198 feat: bulk-reveal encrypted Allergien on member list (admin-only)
Merged
#197 feat: manual update via tarball + signature upload
Merged
#196 fix: surface real errors + restore sub-entity saves on member update
Merged
#195 feat: Abfrage-Builder NOT + visual brackets + full field coverage (#194)
Merged
#193 feat: database portability — support PostgreSQL and SQLite (Closes #192)
Merged
#191 feat: add Juleica number and expiry date with calendar reminder (Closes #160)
Merged
#190 feat: make Geburtsdatum optional for members (Closes #162)
Merged
#189 fix: imported records cannot be edited after import (Closes #161)
Merged
#188 security: enforce access control on CalendarSync and ContactsSync (Closes #170)
Merged
#187 security: enforce CSRF protection on POST/DELETE export endpoints (Closes #171)
Merged
#186 fix: standardize frontend date formatting with shared utility (Closes #175)
Merged
#185 fix: prevent CSV injection by escaping formula characters (Closes #174)
Merged
#184 fix: add X-Content-Type-Options nosniff header to downloads (Closes #173)
Merged
#183 fix: use generic error messages in ImportController 500 responses (Closes #172)
Merged
#182 fix: set restrictive permissions (0600) on temp files (Closes #169)
Merged
#181 fix: reject ZIP entries with path traversal sequences (Closes #168)
Merged
#180 fix: normalize URI by stripping query params in rate limiter (Closes #167)
Merged
#179 feat: add AuthorizationMiddleware for endpoint permission checks (Closes #166)
Merged
#178 fix: throw exception instead of returning plaintext when encryption fails (Closes #165)
Merged
#177 fix: read DSGVO export password from POST body only (Closes #164)
Merged
#176 fix: wire InputSanitizer into ApiControllerTrait.getRequestData() (Closes #163)
Merged
#159 feat: content-based matching for cross-instance migration (Closes #153)
Merged
#158 feat: per-field conflict resolution UI for duplicate records (Closes #152)
Merged
#157 feat: ZIP bundle import with dependency-aware auto-ordering (Closes #151)
Merged
#156 feat: per-entity CSV import with German header auto-mapping (Closes #150)
Merged
#155 feat: add full ZIP bundle export with sensitive data toggle (Closes #149)
Merged
#154 feat: per-entity CSV export for all data types (#148)
Merged
#146 feat: add Lagerhistorie and Verletzungsprotokoll reports (Closes #129)
Merged
#145 feat: seed default Stufen on fresh install (Closes #128)
Merged
#144 fix: various UX polish improvements (Closes #136)
Merged
#143 fix: define appName/appVersion globals via webpack (Closes #130, #131)
Merged
#142 feat: add missing pages to sidebar navigation (Closes #135)
Merged
#141 fix: resolve Stufe names in member list table (Closes #134)
Merged
#140 fix: use Vue 3 model-value for inline member search (Closes #133)
Merged
#139 fix: resolve member names in fee table (Closes #127)
Merged
#138 fix: use Vue 3 modelValue bindings in MemberForm (Closes #125)
Merged
#137 fix: wire AuditService into all CRUD operations (Closes #126)
Merged
#132 fix: use :to prop for sidebar navigation instead of @click handlers (Closes #124)
Merged
#122 feat: add app icon for Nextcloud navigation bar (Closes #115)
Merged
#121 fix: improve button styling and prevent text overflow (Closes #116)
Merged
#120 fix: replace ASCII Umlaut substitutes with proper German characters (Closes #117)
Merged
#119 fix: make sidebar navigation clickable (Closes #118)
Merged
#114 feat: Import wizard with CSV parsing and duplicate detection (Closes #58)
Merged
#113 feat: Visual query builder with AST-to-SQL engine (Closes #53)
Merged
#112 feat: FileLinkService + FileExplorer component (Closes #52)
Merged
#111 feat: add ContactsSyncService with VCard sync to address book (Closes #51)
Merged
#110 feat: add CalendarSyncService with queue-based birthday sync (Closes #50)
Merged
#109 test: add integration test suite for API endpoints (Closes #65)
Merged
#108 feat: add security hardening with rate limiting and pentest prep (Closes #64)
Merged
#107 test: add comprehensive data validation tests (Closes #66)
Merged
#106 feat: add injury tracking backend and frontend (Closes #57)
Merged
#105 feat: add DB migration for injuries tracking tables (Closes #56)
Merged
#104 feat: add membership milestone detection (Jubilaeen) (Closes #59)
Merged
#103 feat: add Stufe change suggestions based on age ranges (Closes #63)
Merged
#102 feat: add Lager (camp) system with DB, backend, and frontend (Closes #54, Closes #55)
Merged
#101 feat: add DSGVO data export and irreversible hard-delete (Closes #62)
Merged
#100 feat: add soft deletion logic with sensitive data purge and archive (Closes #61)
Merged
#99 feat: add Reports UI with type selection, preview, and download (Closes #49)
Merged
#98 feat: add ReportService and PDF generation with TCPDF (Closes #46)
Merged
#97 feat: add encrypted export with password-protected ZIP (Closes #48)
Merged
#96 feat: add EncryptionService for field-level encryption (Closes #60)
Merged
#95 feat: add CSV export with UTF-8 BOM for Excel compatibility (Closes #47)
Merged
#94 feat: add preset quick filter chips to member list (Closes #34)
Merged
#93 feat: add global search bar with full-text member search (Closes #33)
Merged
#92 feat: add fee overview view with records table and batch actions (Closes #44)
Merged
#91 feat: add fee rules DSL editor UI in settings (Closes #43)
Merged
#90 test: add comprehensive unit tests for FeeCalculationService (Closes #45)
Merged
#89 feat: add Audit log viewer UI with filters and entity navigation (Closes #40)
Merged
#88 feat: add Permission management UI and API endpoints (Closes #37)
Merged
#87 feat: add Stufen management UI in Settings page (Closes #32)
Merged
#86 feat: add IBAN MOD-97 validation with country format checks (Closes #26)
Merged
#85 feat: add E.164 phone validation and PhoneInput component (Closes #25)
Merged
#84 feat: add Family Vue components with list, detail, and navigation (Closes #29)
Merged
#83 feat: add FeeCalculationService with family discounts and batch processing (Closes #42)
Merged
#82 feat: add PermissionService with access level checks (Closes #36)
Merged
#81 feat: add AuditService with field-level change tracking (Closes #39)
Merged
#80 feat: add Stufen backend with entity, service, controller (Closes #31)
Merged
#79 feat: add DB migrations for fee rules and records tables (Closes #41)
Merged
#78 feat: add DB migration for audit log table (Closes #38)
Merged
#77 feat: add DB migration for permissions table (Closes #35)
Merged
#76 feat: add DB migrations for Stufen and Stufe history tables (Closes #30)
Merged
#75 feat: add Family entity, mapper, service, and controller (Closes #28)
Merged
#74 feat: add DB migration for families table (Closes #27)
Merged
#73 feat: add Member detail Vue component with tabbed form (Closes #24)
Merged
#72 feat: add Member list Vue component with store and router (Closes #23)
Merged
#71 feat: add MemberController REST API endpoints (Closes #22)
Merged
#70 feat: add MemberService with CRUD, validation, and soft-delete (Closes #21)
Merged
#69 feat: add Member entity, mapper, and sub-entity classes (Closes #20)
Merged
#68 feat: add DB migrations for addresses, phones, emails tables (Closes #19)
Merged
#67 feat: add DB migration for members table (Closes #18)
108 Issues closed from 1 user
Closed
#123 Black-Box UI Testing with Playwright
Closed
#194 Abfrage-Builder: NOT-Operator, explizite Klammern und vollständige Feldabdeckung
Closed
#192 Database portability: support PostgreSQL and SQLite alongside MySQL/MariaDB
Closed
#160 feat: Juleica number and expiry date for members with calendar reminder
Closed
#162 feat: make Geburtsdatum optional for members
Closed
#161 bug: imported records cannot be edited after import
Closed
#170 CalendarSync/ContactsSync bypass Nextcloud APIs and access control
Closed
#171 CSRF protection disabled on export endpoints with side effects
Closed
#175 Frontend date formatting inconsistency
Closed
#174 CSV injection potential in exports
Closed
#173 No Content-Security-Policy headers on file download responses
Closed
#172 Error messages leak internal implementation details
Closed
#169 Temp file permissions too permissive in export/import services
Closed
#168 ZIP path traversal risk in BundleImportService
Closed
#167 Rate limiter bypass via varying query parameters
Closed
#166 No authorization checks on most controller endpoints
Closed
#165 Encryption fallback returns plaintext silently
Closed
#164 DSGVO export uses query parameter for password instead of request body
Closed
#163 InputSanitizer exists but is never called from controllers
Closed
#147 [Epic] Comprehensive Import/Export System for Backup and Migration
Closed
#153 feat: content-based matching for cross-instance migration
Closed
#152 feat: per-field conflict resolution UI for duplicate records
Closed
#151 feat: ZIP bundle import with dependency-aware auto-ordering
Closed
#150 feat: per-entity CSV import with German header auto-mapping
Closed
#149 feat: full ZIP bundle export with sensitive data toggle
Closed
#148 feat: per-entity CSV export for all data types
Closed
#129 Missing Lagerhistorie and Verletzungsprotokoll report types
Closed
#128 No default Stufen seeded on install
Closed
#136 UX: Various minor UI polish issues
Closed
#130 TypeError: e.find is not a function on every page load
Closed
#131 @nextcloud/vue appName and appVersion not configured
Closed
#135 Add missing pages to sidebar navigation (Injuries, Import, Queries)
Closed
#134 Member list Stufe column shows raw stufeId instead of name
Closed
#133 Inline member search does not filter the list
Closed
#127 Fee table shows member IDs instead of names
Closed
#125 Member detail form fields render blank despite data being loaded
Closed
#126 Audit log not recording any events
Closed
#124 Nav sidebar clicks don't navigate between views
Closed
#115 Add app icon for Nextcloud navigation bar
Closed
#116 Fix button styling and text overflow issues
Closed
#117 Fix Umlauts: "Beitraege" should be "Beiträge"
Closed
#118 Left sidebar navigation buttons are not clickable
Closed
#17 Epic: Soft Deletion & DSGVO
Closed
#16 Epic: Security & Encryption
Closed
#14 Epic: Access Control
Closed
#15 Epic: Audit Log
Closed
#13 Epic: Files Integration
Closed
#12 Epic: Contacts Integration
Closed
#11 Epic: Calendar Integration
Closed
#10 Epic: Injury Tracking
Closed
#8 Epic: Milestones/Jubiläen
Closed
#9 Epic: Lagertracking
Closed
#7 Epic: Data Import
Closed
#6 Epic: Reports & Exports
Closed
#5 Epic: Search & Saved Queries
Closed
#4 Epic: Fee System
Closed
#3 Epic: Stufen Management
Closed
#2 Epic: Family Management
Closed
#1 Epic: Member Management
Closed
#58 Import wizard (CSV/Excel)
Closed
#53 Visual query builder (backend + frontend)
Closed
#52 FileLinkService + FileExplorer component
Closed
#51 ContactsSyncService
Closed
#50 CalendarSyncService
Closed
#65 Integration test suite for API endpoints
Closed
#64 Security hardening & pentest prep
Closed
#66 Data validation comprehensive tests
Closed
#57 Injury tracking backend + frontend
Closed
#56 DB migration for injuries tables
Closed
#59 Membership milestones (Jubiläen)
Closed
#63 Stufe change suggestions
Closed
#54 DB migrations for Lager tables
Closed
#55 Lager backend + frontend
Closed
#62 DSGVO actions (export + hard-delete)
Closed
#61 Soft deletion logic
Closed
#49 Reports UI (selection + preview + download)
Closed
#46 ReportService + PDF generation
Closed
#48 Encrypted export (password-protected ZIP)
Closed
#60 EncryptionService implementation
Closed
#47 CSV export with UTF-8 BOM
Closed
#34 Preset quick filters
Closed
#33 Global search bar
Closed
#44 Fee overview Vue component
Closed
#43 Fee rules DSL editor UI
Closed
#45 Unit tests for FeeCalculationService
Closed
#40 Audit log viewer UI
Closed
#37 Permission management UI
Closed
#32 Stufen management UI in Settings
Closed
#26 IBAN validation
Closed
#25 Phone number E.164 validation
Closed
#29 Family Vue components (list + detail)
Closed
#42 FeeCalculationService
Closed
#36 PermissionService implementation
Closed
#39 AuditService implementation
Closed
#31 Stufen backend (entity, service, controller)
Closed
#41 DB migrations for fee rules and records
Closed
#38 DB migration for audit log table
Closed
#35 DB migration for permissions table
Closed
#30 DB migrations for Stufen tables
Closed
#28 Family entity, mapper, service, controller
Closed
#27 DB migrations for families table
Closed
#24 Member detail Vue component
Closed
#23 Member list Vue component
Closed
#22 Create MemberController API endpoints
Closed
#21 Create MemberService with CRUD operations
Closed
#20 Create Member entity and mapper
Closed
#19 Set up DB migrations for addresses, phones, emails
Closed
#18 Set up DB migrations for members table
108 Issues created by 0 users
Opened
#3 Epic: Stufen Management
Opened
#2 Epic: Family Management
Opened
#1 Epic: Member Management
Opened
#4 Epic: Fee System
Opened
#5 Epic: Search & Saved Queries
Opened
#6 Epic: Reports & Exports
Opened
#7 Epic: Data Import
Opened
#8 Epic: Milestones/Jubiläen
Opened
#9 Epic: Lagertracking
Opened
#10 Epic: Injury Tracking
Opened
#11 Epic: Calendar Integration
Opened
#12 Epic: Contacts Integration
Opened
#13 Epic: Files Integration
Opened
#14 Epic: Access Control
Opened
#15 Epic: Audit Log
Opened
#16 Epic: Security & Encryption
Opened
#17 Epic: Soft Deletion & DSGVO
Opened
#18 Set up DB migrations for members table
Opened
#19 Set up DB migrations for addresses, phones, emails
Opened
#20 Create Member entity and mapper
Opened
#21 Create MemberService with CRUD operations
Opened
#22 Create MemberController API endpoints
Opened
#23 Member list Vue component
Opened
#24 Member detail Vue component
Opened
#25 Phone number E.164 validation
Opened
#26 IBAN validation
Opened
#27 DB migrations for families table
Opened
#28 Family entity, mapper, service, controller
Opened
#29 Family Vue components (list + detail)
Opened
#30 DB migrations for Stufen tables
Opened
#31 Stufen backend (entity, service, controller)
Opened
#32 Stufen management UI in Settings
Opened
#33 Global search bar
Opened
#34 Preset quick filters
Opened
#35 DB migration for permissions table
Opened
#36 PermissionService implementation
Opened
#37 Permission management UI
Opened
#38 DB migration for audit log table
Opened
#39 AuditService implementation
Opened
#40 Audit log viewer UI
Opened
#41 DB migrations for fee rules and records
Opened
#42 FeeCalculationService
Opened
#43 Fee rules DSL editor UI
Opened
#44 Fee overview Vue component
Opened
#45 Unit tests for FeeCalculationService
Opened
#46 ReportService + PDF generation
Opened
#47 CSV export with UTF-8 BOM
Opened
#48 Encrypted export (password-protected ZIP)
Opened
#49 Reports UI (selection + preview + download)
Opened
#50 CalendarSyncService
Opened
#51 ContactsSyncService
Opened
#52 FileLinkService + FileExplorer component
Opened
#53 Visual query builder (backend + frontend)
Opened
#54 DB migrations for Lager tables
Opened
#55 Lager backend + frontend
Opened
#56 DB migration for injuries tables
Opened
#57 Injury tracking backend + frontend
Opened
#58 Import wizard (CSV/Excel)
Opened
#59 Membership milestones (Jubiläen)
Opened
#60 EncryptionService implementation
Opened
#61 Soft deletion logic
Opened
#62 DSGVO actions (export + hard-delete)
Opened
#63 Stufe change suggestions
Opened
#64 Security hardening & pentest prep
Opened
#65 Integration test suite for API endpoints
Opened
#66 Data validation comprehensive tests
Opened
#115 Add app icon for Nextcloud navigation bar
Opened
#116 Fix button styling and text overflow issues
Opened
#117 Fix Umlauts: "Beitraege" should be "Beiträge"
Opened
#118 Left sidebar navigation buttons are not clickable
Opened
#123 Black-Box UI Testing with Playwright
Opened
#124 Nav sidebar clicks don't navigate between views
Opened
#125 Member detail form fields render blank despite data being loaded
Opened
#126 Audit log not recording any events
Opened
#127 Fee table shows member IDs instead of names
Opened
#128 No default Stufen seeded on install
Opened
#129 Missing Lagerhistorie and Verletzungsprotokoll report types
Opened
#130 TypeError: e.find is not a function on every page load
Opened
#131 @nextcloud/vue appName and appVersion not configured
Opened
#133 Inline member search does not filter the list
Opened
#134 Member list Stufe column shows raw stufeId instead of name
Opened
#135 Add missing pages to sidebar navigation (Injuries, Import, Queries)
Opened
#136 UX: Various minor UI polish issues
Opened
#147 [Epic] Comprehensive Import/Export System for Backup and Migration
Opened
#148 feat: per-entity CSV export for all data types
Opened
#149 feat: full ZIP bundle export with sensitive data toggle
Opened
#150 feat: per-entity CSV import with German header auto-mapping
Opened
#151 feat: ZIP bundle import with dependency-aware auto-ordering
Opened
#152 feat: per-field conflict resolution UI for duplicate records
Opened
#153 feat: content-based matching for cross-instance migration
Opened
#160 feat: Juleica number and expiry date for members with calendar reminder
Opened
#161 bug: imported records cannot be edited after import
Opened
#162 feat: make Geburtsdatum optional for members
Opened
#165 Encryption fallback returns plaintext silently
Opened
#166 No authorization checks on most controller endpoints
Opened
#164 DSGVO export uses query parameter for password instead of request body
Opened
#163 InputSanitizer exists but is never called from controllers
Opened
#167 Rate limiter bypass via varying query parameters
Opened
#168 ZIP path traversal risk in BundleImportService
Opened
#169 Temp file permissions too permissive in export/import services
Opened
#170 CalendarSync/ContactsSync bypass Nextcloud APIs and access control
Opened
#171 CSRF protection disabled on export endpoints with side effects
Opened
#172 Error messages leak internal implementation details
Opened
#173 No Content-Security-Policy headers on file download responses
Opened
#174 CSV injection potential in exports
Opened
#175 Frontend date formatting inconsistency
Opened
#192 Database portability: support PostgreSQL and SQLite alongside MySQL/MariaDB
Opened
#194 Abfrage-Builder: NOT-Operator, explizite Klammern und vollständige Feldabdeckung