Commit Graph

  • 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