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
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>
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>
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>
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>
- 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>
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>
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>