This website requires JavaScript.
a0ad92dd47
Merge pull request 'refactor(MemberService): extract generic syncSubEntities() method' (#204 ) from fix/duplicate-sync-methods into main
main
shahondin1624
2026-04-30 08:14:04 +02:00
19adf0ba87
chore: move issue-204 plan to done
fix/duplicate-sync-methods
shahondin1624
2026-04-30 08:13:11 +02:00
bfb57b4e1e
refactor(MemberService): extract generic syncSubEntities() method
shahondin1624
2026-04-30 08:12:35 +02:00
c4f5f8e7fb
Merge pull request 'fix(MemberService): wrap multi-step writes in database transactions' (#203 ) from fix/missing-database-transactions into main
shahondin1624
2026-04-29 22:11:02 +02:00
0ffc993d3f
chore: move issue-203 plan to done
fix/missing-database-transactions
shahondin1624
2026-04-29 22:09:20 +02:00
e1d24d4d54
fix(MemberService): wrap multi-step writes in database transactions
shahondin1624
2026-04-29 22:08:38 +02:00
5c67fc763a
Merge pull request 'Fix findArchived() filtering all members in memory (Closes #202 )' (#202 ) from fix/find-archived-filtering-in-memory into main
shahondin1624
2026-04-29 21:14:55 +02:00
ccda3ee570
Fix findArchived() filtering all members in memory (Closes #202 )
fix/find-archived-filtering-in-memory
shahondin1624
2026-04-29 21:13:32 +02:00
d28dcd4541
Merge pull request 'Fix countArchived() loading all members into memory (Closes #201 )' (#201 ) from fix/n-plus-one-queries-member-list into main
shahondin1624
2026-04-29 19:17:36 +02:00
d4e25fe739
Fix countArchived() loading all members into memory (Closes #201 )
fix/n-plus-one-queries-member-list
shahondin1624
2026-04-29 19:13:52 +02:00
967bacf231
docs: add tea CLI workflow to CLAUDE.md for Gitea operations
shahondin1624
2026-04-28 21:56:46 +02:00
ee569250ad
Fix N+1 query problem in MemberService (Closes #200 )
shahondin1624
2026-04-28 21:35:42 +02:00
b29a268b1d
Restructure .plans/ into done/ and open/ subdirectories
shahondin1624
2026-04-28 20:30:55 +02:00
96172a880e
feat: global unified search bar with category filtering (v0.4.0)
v0.5.2
shahondin1624
2026-04-22 12:52:14 +02:00
53b3fd945a
Release v0.3.2: Inventory tracking, test infra, and bugfixes
v0.3.2
shahondin1624
2026-04-22 10:15:22 +02:00
ff60c4088e
Add Testing section to CLAUDE.md
shahondin1624
2026-04-22 10:14:01 +02:00
9a55ef4677
Fix BundleImportServiceTest: 0 errors, 0 warnings
shahondin1624
2026-04-22 10:09:13 +02:00
a9f3dc82ae
Add Makefile test target for running PHPUnit inside container
shahondin1624
2026-04-22 09:59:06 +02:00
38858c8002
Bump version to 0.3.1
v0.3.1
shahondin1624
2026-04-22 09:46:52 +02:00
7450160e9e
(Closes #?) Fix inventory search bar icon overlap with text input
shahondin1624
2026-04-22 09:38:37 +02:00
05c62d1a21
Bump version to 0.3.0 for release
v0.3.0
shahondin1624
2026-04-22 08:53:46 +02:00
5a3e1c9ef2
feat: bulk-reveal encrypted Allergien on member list (admin-only) (#198 )
v0.2.11
shahondin1624
2026-04-17 21:58:15 +02:00
bcf92aeaea
chore: pin container DNS to 1.1.1.1 / 8.8.8.8
shahondin1624
2026-04-17 21:51:32 +02:00
62f7053e5b
feat: manual update via tarball + signature upload (#197 )
v0.2.10
shahondin1624
2026-04-17 21:37:53 +02:00
d960361ba0
fix: surface real errors + restore sub-entity saves on member update (#196 )
v0.2.9
shahondin1624
2026-04-17 21:31:07 +02:00
fa702e30f3
feat: Abfrage-Builder NOT + visual brackets + full field coverage (#194 ) (#195 )
v0.2.8
shahondin1624
2026-04-17 20:17:08 +02:00
eb555a2fbd
feat: add consistent rows-per-page setting to all display tables
v0.2.7
shahondin1624
2026-04-12 18:10:05 +02:00
53f42dca5f
chore: bump version to 0.2.6 for release
v0.2.6
shahondin1624
2026-04-12 16:19:40 +02:00
da856faf08
fix: seed default Stufen via IRepairStep for PostgreSQL/SQLite compatibility
shahondin1624
2026-04-12 16:11:11 +02:00
f9ff72bf21
feat: add sortable columns to FamilyList and FeeOverview, fix backup UI
shahondin1624
2026-04-12 16:11:02 +02:00
82d27d419d
fix: improve self-update reliability and error handling
shahondin1624
2026-04-12 16:10:46 +02:00
06ca348a0d
feat: improve Lager file management with dedicated folder creation
shahondin1624
2026-04-12 16:10:31 +02:00
dc6e4d910d
feat: add time-of-day (uhrzeit) field to injury tracking
shahondin1624
2026-04-12 16:10:18 +02:00
c67b9f04a0
chore: bump version to 0.2.5 and add webpack content hash for cache busting
shahondin1624
2026-04-12 16:10:06 +02:00
9ed69b78ca
feat: database portability — support PostgreSQL and SQLite (Closes #192 )
shahondin1624
2026-04-12 13:46:22 +02:00
6ca14beada
feat: additive quickfilters, role filters, address columns, saved filters & fix all tests
shahondin1624
2026-04-11 17:45:07 +02:00
ea8451710f
feat: add calendar sync button with CalDAV backend integration
shahondin1624
2026-04-11 16:18:29 +02:00
c51439179f
docs: add production installation instructions to README
v0.2.5
v0.2.4
v0.2.3
v0.2.2
v0.2.1
shahondin1624
2026-04-10 23:23:39 +02:00
d48e2b7d9d
feat: v0.2.0 — backup system, self-update with Ed25519 signing, column pickers, import fixes
v0.2.0
shahondin1624
2026-04-10 23:11:51 +02:00
27cedd849d
feat: add Juleica number and expiry date with calendar reminder (Closes #160 ) (#191 )
shahondin1624
2026-04-10 19:43:06 +02:00
4316c5f2b5
feat: make Geburtsdatum optional for members (Closes #162 ) (#190 )
shahondin1624
2026-04-10 19:38:26 +02:00
64ece89101
fix: imported records cannot be edited after import (Closes #161 ) (#189 )
shahondin1624
2026-04-10 19:33:18 +02:00
b6a7854a1b
security: enforce access control on CalendarSync and ContactsSync (Closes #170 )
shahondin1624
2026-04-10 18:56:16 +02:00
58968331eb
security: enforce CSRF protection on POST/DELETE export endpoints (Closes #171 )
shahondin1624
2026-04-10 18:50:25 +02:00
af006d7250
fix: standardize frontend date formatting with shared utility (Closes #175 )
shahondin1624
2026-04-10 18:45:25 +02:00
21b025af87
fix: prevent CSV injection by escaping formula characters (Closes #174 ) (#185 )
shahondin1624
2026-04-10 16:27:39 +02:00
089a775b84
fix: add X-Content-Type-Options nosniff header to downloads (Closes #173 ) (#184 )
shahondin1624
2026-04-10 16:25:41 +02:00
e8eefd48f1
fix: use generic error messages in ImportController 500 responses (Closes #172 ) (#183 )
shahondin1624
2026-04-10 16:24:01 +02:00
fc73393400
fix: set restrictive permissions (0600) on temp files (Closes #169 ) (#182 )
shahondin1624
2026-04-10 16:21:54 +02:00
9968f8c58e
fix: reject ZIP entries with path traversal sequences (Closes #168 ) (#181 )
shahondin1624
2026-04-10 16:20:40 +02:00
5f9f45f37d
fix: normalize URI by stripping query params in rate limiter (Closes #167 ) (#180 )
shahondin1624
2026-04-10 16:19:49 +02:00
3fb75e3344
feat: add AuthorizationMiddleware for endpoint permission checks (Closes #166 ) (#179 )
shahondin1624
2026-04-10 16:18:35 +02:00
7d3be60adb
fix: throw exception instead of returning plaintext when encryption fails (Closes #165 ) (#178 )
shahondin1624
2026-04-10 16:15:31 +02:00
53268f21d2
fix: read DSGVO export password from POST body only (Closes #164 ) (#177 )
shahondin1624
2026-04-10 16:14:32 +02:00
0678fb12d9
fix: wire InputSanitizer into ApiControllerTrait.getRequestData() (Closes #163 ) (#176 )
shahondin1624
2026-04-10 16:13:09 +02:00
c5704c3e74
security: comprehensive security audit with 13 findings
shahondin1624
2026-04-10 12:45:51 +02:00
895f3d5960
refactor: extract ApiControllerTrait to DRY controller boilerplate
shahondin1624
2026-04-10 12:43:06 +02:00
78174e6ad8
test: comprehensive test suite achieving 90.49% line coverage
shahondin1624
2026-04-10 12:36:52 +02:00
c35fa7b13e
feat: inline error correction for imports, dark-mode warning boxes, German date formatting
shahondin1624
2026-04-09 22:22:36 +02:00
c37b2a970c
docs: add cache-busting escalation path to CLAUDE.md
shahondin1624
2026-04-09 21:53:26 +02:00
41bab34d04
fix: improve warning box contrast and add XLSX converter script
shahondin1624
2026-04-09 21:52:42 +02:00
bfda98e678
chore: sync uncommitted changes from previous sessions
shahondin1624
2026-04-09 20:54:41 +02:00
bcb7bd7056
feat: content-based matching for cross-instance migration (Closes #153 ) (#159 )
shahondin1624
2026-04-09 20:43:58 +02:00
454a7c23e1
feat: per-field conflict resolution UI for duplicate records (Closes #152 ) (#158 )
shahondin1624
2026-04-09 20:40:05 +02:00
32a79d42d7
feat: ZIP bundle import with dependency-aware auto-ordering (Closes #151 ) (#157 )
shahondin1624
2026-04-09 20:35:25 +02:00
ce76c22c20
feat: per-entity CSV import with German header auto-mapping (Closes #150 ) (#156 )
shahondin1624
2026-04-09 20:30:44 +02:00
27cb708a5f
feat: add full ZIP bundle export with sensitive data toggle (Closes #149 ) (#155 )
shahondin1624
2026-04-09 20:23:52 +02:00
aee5040720
feat: per-entity CSV export for all data types (#148 ) (#154 )
shahondin1624
2026-04-09 20:18:22 +02:00
821de4d8d0
feat: add Lagerhistorie and Verletzungsprotokoll reports (Closes #129 ) (#146 )
shahondin1624
2026-04-09 15:58:31 +02:00
944c2c4da6
feat: seed default Stufen on fresh install (Closes #128 ) (#145 )
shahondin1624
2026-04-09 15:55:45 +02:00
b99f84bca7
fix: various UX polish improvements (Closes #136 ) (#144 )
shahondin1624
2026-04-09 15:54:06 +02:00
910a1794b9
fix: define appName/appVersion globals via webpack (Closes #130 , #131 ) (#143 )
shahondin1624
2026-04-09 15:51:42 +02:00
6a5e5de04e
feat: add missing pages to sidebar navigation (Closes #135 ) (#142 )
shahondin1624
2026-04-09 15:49:33 +02:00
9679348756
fix: resolve Stufe names in member list table (Closes #134 ) (#141 )
shahondin1624
2026-04-09 15:47:41 +02:00
d59c6d9b99
fix: use Vue 3 model-value for inline member search (Closes #133 ) (#140 )
shahondin1624
2026-04-09 15:46:11 +02:00
6b4332d21c
fix: resolve member names in fee table (Closes #127 ) (#139 )
shahondin1624
2026-04-09 15:44:54 +02:00
df4223dd40
fix: use Vue 3 modelValue bindings in MemberForm (Closes #125 ) (#138 )
shahondin1624
2026-04-09 15:43:19 +02:00
b93b8a73d2
fix: wire AuditService into all CRUD operations (Closes #126 ) (#137 )
shahondin1624
2026-04-09 15:40:37 +02:00
a714efb298
Add README
shahondin1624
2026-04-07 21:48:26 +02:00
7b582639e1
Commit possible fixes for build
shahondin1624
2026-04-07 21:46:41 +02:00
d36c1a59ca
fix: use :to prop for sidebar navigation instead of @click handlers (Closes #124 )
shahondin1624
2026-04-07 21:43:47 +02:00
79b8253fc6
feat: add app icon for Nextcloud navigation bar (Closes #115 )
shahondin1624
2026-04-07 17:15:26 +02:00
306991da26
fix: improve button styling and prevent text overflow (Closes #116 )
shahondin1624
2026-04-07 17:13:50 +02:00
f7243ff0b1
fix: replace ASCII Umlaut substitutes with proper German characters (Closes #117 )
shahondin1624
2026-04-07 17:10:40 +02:00
f5e7441bfb
fix: make sidebar navigation clickable (Closes #118 )
shahondin1624
2026-04-07 16:58:37 +02:00
c4712b12bc
feat: Import wizard with CSV parsing and duplicate detection (Closes #58 )
shahondin1624
2026-04-07 16:27:39 +02:00
bbbc5fab0c
feat: Visual query builder with AST-to-SQL engine (Closes #53 )
shahondin1624
2026-04-07 16:22:15 +02:00
af2eaeffd7
feat: FileLinkService + FileExplorer component (Closes #52 )
shahondin1624
2026-04-07 16:16:25 +02:00
f27860ec3b
feat: add ContactsSyncService with VCard sync to address book (Closes #51 ) (#111 )
shahondin1624
2026-04-07 16:06:43 +02:00
792fe62d3e
feat: add CalendarSyncService with queue-based birthday sync (Closes #50 ) (#110 )
shahondin1624
2026-04-07 16:00:43 +02:00
81c78974d9
test: add integration test suite for API endpoints (Closes #65 ) (#109 )
shahondin1624
2026-04-07 15:57:42 +02:00
524c8690ca
feat: add security hardening with rate limiting and pentest prep (Closes #64 ) (#108 )
shahondin1624
2026-04-07 15:54:14 +02:00
ac74152a45
test: add comprehensive data validation tests (Closes #66 ) (#107 )
shahondin1624
2026-04-07 15:36:11 +02:00
b3bc498091
feat: add injury tracking backend and frontend (Closes #57 ) (#106 )
shahondin1624
2026-04-07 15:33:23 +02:00
25ab72dc69
feat: add DB migration for injuries tracking tables (Closes #56 ) (#105 )
shahondin1624
2026-04-07 15:28:06 +02:00
1905e03c33
feat: add membership milestone detection (Jubilaeen) (Closes #59 )
shahondin1624
2026-04-07 15:21:18 +02:00
4e1c88b036
feat: add Stufe change suggestions based on age ranges (Closes #63 )
shahondin1624
2026-04-07 15:18:18 +02:00
5f337f7256
feat: add Lager (camp) system with DB, backend, and frontend (Closes #54 , Closes #55 )
shahondin1624
2026-04-07 15:15:53 +02:00
407bf04789
feat: add DSGVO data export and irreversible hard-delete (Closes #62 )
shahondin1624
2026-04-07 15:10:39 +02:00
bc404609c3
feat: add soft deletion logic with sensitive data purge and archive (Closes #61 )
shahondin1624
2026-04-07 15:07:03 +02:00