Thorsten Bus
b36ed6e221
feat(ui): name overrides + namenseinblender setting
2026-05-31 03:41:24 +02:00
Thorsten Bus
f948b5665c
feat(ui): keyvisual/background panels
2026-05-31 03:38:22 +02:00
Thorsten Bus
edceebb2f8
feat(service): finalize snapshot + sync protection
2026-05-31 02:33:32 +02:00
Thorsten Bus
929bda2018
feat(export): sermon sequence + moderator injection
2026-05-31 01:58:08 +02:00
Thorsten Bus
bb877d16c6
feat(export): nametag slide builder
2026-05-31 00:48:46 +02:00
Thorsten Bus
a19c967594
feat(export): keyvisual fallback slides
2026-05-31 00:43:59 +02:00
Thorsten Bus
196657b52b
feat(export): background layer on song/sermon slides
2026-05-31 00:37:23 +02:00
Thorsten Bus
d2193bb3b2
feat(service): moderator/preacher name resolution
2026-05-31 00:20:33 +02:00
Thorsten Bus
b31f21959f
feat(service): keyvisual/background upload + scope choice
2026-05-31 00:15:08 +02:00
Thorsten Bus
1ce30b76e3
feat(service): lazy image resolver
2026-05-31 00:08:50 +02:00
Thorsten Bus
38e79553eb
feat(settings): namenseinblender macro + default image settings
2026-05-31 00:04:49 +02:00
Thorsten Bus
7de25b7423
docs: add T3 evidence and learnings
...
Record the verification output and task notes for the service image column work.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-31 00:01:51 +02:00
Thorsten Bus
6061e4c4dd
feat(service): add image columns and overrides
...
Enable storage-backed key visuals and background images plus service-specific moderator and preacher name overrides.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-31 00:01:24 +02:00
Thorsten Bus
73a523d0e1
feat(images): cover-fit conversion mode
2026-05-30 23:56:05 +02:00
Thorsten Bus
0a345aa3b2
fix(docker): remove Node.js from production stage; add public-build asset sync pattern
...
- Remove Node.js from production image (was violating Must NOT Have constraint)
- Add 'RUN cp -r /app/public /app/public-build' in build stage after npm run build
- Replace 'npm run build' in boot-container.sh with 'cp -r /app/public-build/*'
- Add chown www-data for SQLite DB file in init-app.sh
- Remove git from production stage package list (not in plan spec)
- Update ENTRYPOINT comment to reflect new asset sync approach
2026-05-11 13:37:58 +02:00
Thorsten Bus
e7ad1b3cce
chore: commit pint style fix, CCLI-API.md planning doc, and npm lock update
2026-05-11 11:00:50 +02:00
Thorsten Bus
f25715a4fc
fix(sanctum): add pp-planer.ddev.site to stateful domains for DDEV dev environment
2026-05-11 10:55:26 +02:00
Thorsten Bus
8a2e250f14
fix(ccli): remove empty if block in CcliPasteParser constructor
2026-05-11 10:47:10 +02:00
Thorsten Bus
73a9c18a10
docs(ccli): add CCLI import section to AGENTS.md
2026-05-11 10:37:31 +02:00
Thorsten Bus
03fdfac3d3
test(e2e): add CCLI paste import, bookmarklet, and translation pairing e2e tests
2026-05-11 10:36:44 +02:00
Thorsten Bus
f2b10a4cd7
feat(settings): add CCLI section with bookmarklet installer and default language
2026-05-11 10:31:22 +02:00
Thorsten Bus
3ec25bf70b
feat(ccli): add bookmarklet redirect import page
2026-05-11 10:29:52 +02:00
Thorsten Bus
d77eb6ad1e
feat(translate): accept prefilled translation from CCLI pairing
2026-05-11 10:29:52 +02:00
Thorsten Bus
b0320fbef5
feat(ccli): integrate CCLI buttons in ArrangementDialog and SongDB Index
2026-05-11 10:29:52 +02:00
Thorsten Bus
3020800acb
feat(ccli): add CcliPasteDialog component
2026-05-11 10:26:10 +02:00
Thorsten Bus
35d3298251
feat(ccli): add CcliPasteController endpoints
...
- POST /api/ccli/preview: parse-only endpoint (no DB writes)
- POST /api/songs/import-from-ccli-paste: 3 modes (create / pair-with-song / assign-to-service-song)
- GET /songs/import-from-ccli-paste: Inertia page with base64 bookmarklet prefill
- Routes guarded by auth:sanctum + throttle:30,1 (API); auth + web stack (web)
- Maps DuplicateCcliSongException to 409 with existing_song_id and edit_url
- Pest tests (10 cases, 63 assertions): preview, all 3 import modes, 409 dup, 422 errors, unauth, prefill happy/error, login redirect
2026-05-11 09:23:11 +02:00
Thorsten Bus
cd0a72124d
feat(ccli): serve CCLI bookmarklet JS
2026-05-10 19:34:30 +02:00
Thorsten Bus
cd44d6289c
feat(ccli): add CcliTranslationPairingService
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-10 19:02:10 +02:00
Thorsten Bus
091e00f255
feat(ccli): add CcliImportService for song upsert
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-10 18:56:38 +02:00
Thorsten Bus
e4e5df912e
fix(ccli): parse common CCLI metadata
2026-05-10 18:54:33 +02:00
Thorsten Bus
9412ca71c9
feat(ccli): implement CcliPasteParser parsing logic
2026-05-10 18:49:18 +02:00
Thorsten Bus
55a3ea3df8
feat(ccli): scaffold CcliPasteParser service
2026-05-10 18:42:21 +02:00
Thorsten Bus
85608f774d
feat(settings): add default translation language setting
2026-05-10 18:38:14 +02:00
Thorsten Bus
73b7afcc2f
feat(songs): track CCLI import metadata on songs table
2026-05-10 18:33:24 +02:00
Thorsten Bus
fc2060b926
docs(ccli): add verification evidence
2026-05-10 18:28:27 +02:00
Thorsten Bus
5c590eda9e
feat(ccli): add section-label constants and language mapping
2026-05-10 18:28:18 +02:00
Thorsten Bus
02de6b03c0
test(ccli): add fixture corpus for CCLI paste parser
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-10 18:24:29 +02:00
Thorsten Bus
a10068e783
add sisyphus notepad changes
2026-05-04 07:41:39 +02:00
Thorsten Bus
eee35722fb
fix(export): inject macros for information/moderation/sermon/agenda_item parts
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-04 06:48:17 +02:00
Thorsten Bus
84adf2b6fb
fix: add hidden-label warning badge, use null color fallback in ProImportService
2026-05-04 06:41:05 +02:00
Thorsten Bus
41d4bfe2b7
fix: rename song_group_id to label_id in Vue, add data-testid to MacroIcon, fix Pint style
2026-05-04 06:33:04 +02:00
Thorsten Bus
6d83b5f38c
feat(service-edit): macro icon + Anpassen/Standard flow on service edit page
2026-05-04 00:37:05 +02:00
Thorsten Bus
444e6704c5
feat(components): add MacroIcon badge component with count and warning indicator
2026-05-04 00:30:28 +02:00
Thorsten Bus
c714f30647
refactor(vue): update ArrangementConfigurator and ArrangementDialog to use label_id
2026-05-04 00:28:49 +02:00
Thorsten Bus
b88ae3e918
feat(settings): SettingsController passes assignments, macros, labels, collections to Settings page
2026-05-04 00:26:56 +02:00
Thorsten Bus
f494a8a0d7
feat(settings): add LabelImport, MacroImport, MacroAssignments, MacroPicker, LabelPicker components
2026-05-04 00:25:57 +02:00
Thorsten Bus
c1cb9bf820
feat(settings): restructure Settings.vue into sidebar layout with 4 submenus + AgendaSettings.vue
2026-05-03 23:50:46 +02:00
Thorsten Bus
6ce5b6e018
feat(controllers): add macro/label import + global assignment + service override controllers and routes
...
- MacroImportController + LabelImportController: POST endpoints accepting uploaded .bin files,
delegating to MacrosImportService / LabelsImportService and returning import stats / warnings as JSON.
Generic German 422 error if parser rejects the file.
- MacroAssignmentController: index renders Settings Inertia page with assignments / macros / labels /
collections / last-import metadata. store/update/destroy/reorder for global MacroAssignment rows.
- ServiceMacroOverrideController: store snapshots all matching global MacroAssignments into
service-specific rows when a service opts to override; destroy removes both override and
service-specific assignments. storeAssignment / updateAssignment / destroyAssignment manage the
per-service rows directly.
- routes/web.php: 12 new named routes inside the auth middleware group; reorder route placed before
{macroAssignment} parameter route to avoid capture conflict.
- Tests: 19 new Pest tests across 4 feature files (54 assertions). Full suite 376 passed.
2026-05-03 23:17:04 +02:00
Thorsten Bus
cef247336e
feat(export): use MacroResolutionService in ProExportService for flexible macro injection
2026-05-03 23:08:22 +02:00
Thorsten Bus
81b2a9caf6
feat(services): add LabelsImportService, MacrosImportService, MacroResolutionService
2026-05-03 23:03:32 +02:00