43 Commits

Author SHA1 Message Date
shahondin1624 53b3fd945a Release v0.3.2: Inventory tracking, test infra, and bugfixes
Database Portability Tests / Integration (mysql) (push) Has been skipped
Database Portability Tests / Integration (postgres) (push) Has been skipped
Database Portability Tests / Integration (sqlite) (push) Has been skipped
Database Portability Tests / Verify no MySQL-specific SQL (push) Successful in 5s
Database Portability Tests / Unit Tests (PlatformHelper) (push) Failing after 43s
Inventory:
- General material, stock items, and sales CRUD
- Category management with CategoryPicker component
- Inventory reports service
- Database migrations and mappers

Frontend:
- Inventory view with tabs (Allgemeinmaterial, Verkaufsmaterial, Verkäufe)
- Forms for general material, stock items, and sales
- Search bar fix: flexbox wrapper with inline icon replaces broken NcTextField icon slot

Tests:
- All 1,491 tests pass (zero errors, warnings, deprecations)
- BundleImportServiceTest: fixed ZipArchive empty-file deprecation
- BundleImportService: null-coalescing for targetFields
- PHPUnit test infra: make test target via container

CLAUDE.md:
- Added Testing section as PR gating criterion
2026-04-22 10:15:22 +02:00
shahondin1624 38858c8002 Bump version to 0.3.1
Fix inventory search bar: use flexbox wrapper with inline Magnify icon
and native input instead of NcTextField with broken :show-icon slot.
2026-04-22 09:46:52 +02:00
shahondin1624 05c62d1a21 Bump version to 0.3.0 for release 2026-04-22 08:53:46 +02:00
shahondin1624 5a3e1c9ef2 feat: bulk-reveal encrypted Allergien on member list (admin-only) (#198)
Database Portability Tests / Unit Tests (PlatformHelper) (push) Failing after 35s
Database Portability Tests / Integration (mysql) (push) Has been skipped
Database Portability Tests / Integration (postgres) (push) Has been skipped
Database Portability Tests / Integration (sqlite) (push) Has been skipped
Database Portability Tests / Verify no MySQL-specific SQL (push) Successful in 4s
2026-04-17 21:58:15 +02:00
shahondin1624 62f7053e5b feat: manual update via tarball + signature upload (#197) 2026-04-17 21:37:53 +02:00
shahondin1624 d960361ba0 fix: surface real errors + restore sub-entity saves on member update (#196)
Database Portability Tests / Unit Tests (PlatformHelper) (push) Failing after 37s
Database Portability Tests / Integration (mysql) (push) Has been skipped
Database Portability Tests / Integration (postgres) (push) Has been skipped
Database Portability Tests / Integration (sqlite) (push) Has been skipped
Database Portability Tests / Verify no MySQL-specific SQL (push) Successful in 4s
2026-04-17 21:31:07 +02:00
shahondin1624 fa702e30f3 feat: Abfrage-Builder NOT + visual brackets + full field coverage (#194) (#195)
Database Portability Tests / Integration (mysql) (push) Has been skipped
Database Portability Tests / Integration (postgres) (push) Has been skipped
Database Portability Tests / Integration (sqlite) (push) Has been skipped
Database Portability Tests / Verify no MySQL-specific SQL (push) Successful in 3s
Database Portability Tests / Unit Tests (PlatformHelper) (push) Failing after 36s
2026-04-17 20:17:08 +02:00
shahondin1624 eb555a2fbd feat: add consistent rows-per-page setting to all display tables
Add shared PaginationControls component and usePageSize/useClientPagination
composables so every list view has a configurable "Zeilen pro Seite" dropdown
(10/20/50/100) persisted per table to localStorage. Also fix MemberController
returning paginated count instead of true total when no filters are active.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:10:05 +02:00
shahondin1624 53f42dca5f chore: bump version to 0.2.6 for release
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 16:19:40 +02:00
shahondin1624 da856faf08 fix: seed default Stufen via IRepairStep for PostgreSQL/SQLite compatibility
Database Portability Tests / Unit Tests (PlatformHelper) (push) Failing after 36s
Database Portability Tests / Integration (mysql) (push) Has been skipped
Database Portability Tests / Integration (postgres) (push) Has been skipped
Database Portability Tests / Integration (sqlite) (push) Has been skipped
Database Portability Tests / Verify no MySQL-specific SQL (push) Successful in 4s
The original seed migration (Version000014) runs inside a transaction that
silently fails on PostgreSQL and SQLite during batch migration execution.
Add a post-migration IRepairStep that runs outside the migration transaction
and idempotently inserts the 3 default Stufen if the table is empty. MySQL
installs with existing data are unaffected (skips automatically).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 16:11:11 +02:00
shahondin1624 c67b9f04a0 chore: bump version to 0.2.5 and add webpack content hash for cache busting
Version bump across info.xml, webpack.config.js, and main.js. Webpack now
outputs content-hashed filenames and templates/index.php dynamically resolves
them. Makefile cleans stale JS bundles before rebuilding.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 16:10:06 +02:00
shahondin1624 9ed69b78ca feat: database portability — support PostgreSQL and SQLite (Closes #192)
Database Portability Tests / Unit Tests (PlatformHelper) (push) Failing after 45s
Database Portability Tests / Integration (mysql) (push) Has been skipped
Database Portability Tests / Integration (postgres) (push) Has been skipped
Database Portability Tests / Integration (sqlite) (push) Has been skipped
Database Portability Tests / Verify no MySQL-specific SQL (push) Successful in 4s
2026-04-12 13:46:22 +02:00
shahondin1624 ea8451710f feat: add calendar sync button with CalDAV backend integration
Adds a "Kalender-Synchronisation" section to Settings that lets users
trigger a full sync of member birthdays and Juleica reminders to the
Nextcloud CalDAV backend. The calendar is created automatically if it
doesn't exist. Users can also check/enable the Calendar UI app.

- CalendarSyncService: add CalDavBackend integration (ensureCalendarExists,
  fullSyncCalDav, getCalendarStatus, enableCalendarApp)
- CalendarController: new REST endpoints (status, sync, enable-app)
- calendar.js Pinia store: frontend state management
- Settings.vue: calendar sync UI with status display and sync button
- CLAUDE.md: add workflow rule for commit+push after each feature

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 16:18:29 +02:00
shahondin1624 d48e2b7d9d feat: v0.2.0 — backup system, self-update with Ed25519 signing, column pickers, import fixes
Major features:
- Full backup & restore system (JSON snapshots of all 20 tables + settings)
  - Web UI, REST API, OCC CLI commands, scheduled background job
- Self-update from Gitea releases with Ed25519 signature verification
- Configurable column visibility on all data tables (persisted via localStorage)

Fixes:
- NC admin group fallback for PermissionService (IGroupManager)
- Bundle import inline error correction (editable error rows)

New files: BackupService, BackupSettingsService, BackupController, BackupJob,
SelfUpdateService, 4 OCC commands, ColumnPicker component, Backup.vue,
Ed25519 signing scripts, signature verification tests (18 tests)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:11:51 +02:00
shahondin1624 c35fa7b13e feat: inline error correction for imports, dark-mode warning boxes, German date formatting
- Add inline editing UI for import validation errors: click error rows to
  expand and fix missing fields, then re-validate with "Erneut pruefen"
- Backend accepts corrections map in preview and execute endpoints
- Fix warning/error box contrast for dark theme (hardcoded dark backgrounds)
- Format all raw ISO dates with toLocaleDateString('de-DE') in MemberList,
  FeeOverview, and QueryBuilder views
- Fix Application.php crash: registerTimedJob() unavailable in NC28,
  moved background jobs to info.xml
- Bump version to 0.1.5

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 22:22:36 +02:00
shahondin1624 41bab34d04 fix: improve warning box contrast and add XLSX converter script
Warning summary boxes in the import wizard had white text on a
light warning background, making them unreadable. Switch to a
light-yellow background with dark text instead.

Also adds convert_xlsx.py for converting the LvS member Excel
spreadsheet into CSV files for ZIP bundle import, and documents
the mandatory version bump rule in CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:52:42 +02:00
shahondin1624 bfda98e678 chore: sync uncommitted changes from previous sessions
Version bump to 0.1.0, updated app icons, migration fixes, various
Vue component improvements, CLAUDE.md project instructions, gitignore
for test artifacts, and webpack/main.js configuration updates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:54:41 +02:00
shahondin1624 454a7c23e1 feat: per-field conflict resolution UI for duplicate records (Closes #152) (#158) 2026-04-09 20:40:05 +02:00
shahondin1624 32a79d42d7 feat: ZIP bundle import with dependency-aware auto-ordering (Closes #151) (#157) 2026-04-09 20:35:25 +02:00
shahondin1624 ce76c22c20 feat: per-entity CSV import with German header auto-mapping (Closes #150) (#156) 2026-04-09 20:30:44 +02:00
shahondin1624 27cb708a5f feat: add full ZIP bundle export with sensitive data toggle (Closes #149) (#155) 2026-04-09 20:23:52 +02:00
shahondin1624 aee5040720 feat: per-entity CSV export for all data types (#148) (#154)
feat: add per-entity CSV export for all data types (Closes #148) (#154)
2026-04-09 20:18:22 +02:00
shahondin1624 7b582639e1 Commit possible fixes for build 2026-04-07 21:46:41 +02:00
shahondin1624 f7243ff0b1 fix: replace ASCII Umlaut substitutes with proper German characters (Closes #117) 2026-04-07 17:10:40 +02:00
shahondin1624 c4712b12bc feat: Import wizard with CSV parsing and duplicate detection (Closes #58) 2026-04-07 16:27:39 +02:00
shahondin1624 bbbc5fab0c feat: Visual query builder with AST-to-SQL engine (Closes #53) 2026-04-07 16:22:15 +02:00
shahondin1624 af2eaeffd7 feat: FileLinkService + FileExplorer component (Closes #52) 2026-04-07 16:16:25 +02:00
shahondin1624 b3bc498091 feat: add injury tracking backend and frontend (Closes #57) (#106) 2026-04-07 15:33:23 +02:00
shahondin1624 1905e03c33 feat: add membership milestone detection (Jubilaeen) (Closes #59) 2026-04-07 15:21:18 +02:00
shahondin1624 4e1c88b036 feat: add Stufe change suggestions based on age ranges (Closes #63) 2026-04-07 15:18:18 +02:00
shahondin1624 5f337f7256 feat: add Lager (camp) system with DB, backend, and frontend (Closes #54, Closes #55) 2026-04-07 15:15:53 +02:00
shahondin1624 407bf04789 feat: add DSGVO data export and irreversible hard-delete (Closes #62) 2026-04-07 15:10:39 +02:00
shahondin1624 bc404609c3 feat: add soft deletion logic with sensitive data purge and archive (Closes #61) 2026-04-07 15:07:03 +02:00
shahondin1624 1abae92b38 feat: add ReportService and PDF generation with TCPDF (Closes #46) 2026-04-07 14:58:56 +02:00
shahondin1624 a1dce160c4 feat: add encrypted export with password-protected ZIP (Closes #48) 2026-04-07 14:55:25 +02:00
shahondin1624 47e2f00c2d feat: add CSV export with UTF-8 BOM for Excel compatibility (Closes #47) 2026-04-07 14:06:27 +02:00
shahondin1624 fc8a4f534f feat: add global search bar with full-text member search (Closes #33) 2026-04-07 13:57:18 +02:00
shahondin1624 45a479ad37 feat: add Permission management UI and API endpoints (Closes #37) (#88) 2026-04-07 13:26:09 +02:00
shahondin1624 c903faf6a4 feat: add FeeCalculationService with family discounts and batch processing (Closes #42) (#83) 2026-04-07 12:48:47 +02:00
shahondin1624 37d2b1d5b3 feat: add Stufen backend with entity, service, controller (Closes #31) (#80) 2026-04-07 12:06:24 +02:00
shahondin1624 ba7277cead feat: add Family entity, mapper, service, and controller (Closes #28) (#75) 2026-04-07 12:01:15 +02:00
shahondin1624 17bdf7e54a feat: add MemberController REST API endpoints (Closes #22) (#71) 2026-04-07 11:41:37 +02:00
shahondin1624 fbd3b1cb30 Initial scaffold for Mitgliederverwaltung Nextcloud app
Directory structure, minimal skeleton files (info.xml, Application.php,
routes.php, templates, Vue entry point), and requirements doc.
No implementation yet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 10:56:26 +02:00