From c7f5845b807652a1f90a6f0adde40ca009dd9ba1 Mon Sep 17 00:00:00 2001 From: Thorsten Bus Date: Sun, 29 Mar 2026 15:03:27 +0200 Subject: [PATCH] chore: mark edit-page-restructure plan as complete --- .sisyphus/boulder.json | 31 ---------- .sisyphus/plans/edit-page-restructure.md | 76 ++++++++++++------------ 2 files changed, 38 insertions(+), 69 deletions(-) delete mode 100644 .sisyphus/boulder.json diff --git a/.sisyphus/boulder.json b/.sisyphus/boulder.json deleted file mode 100644 index 822696e..0000000 --- a/.sisyphus/boulder.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "active_plan": "/Users/thorsten/AI/cts-work/.sisyphus/plans/edit-page-restructure.md", - "started_at": "2026-03-29T09:26:31.630Z", - "session_ids": [ - "ses_2c7383fb5ffer5YzYhHHeCDk9a", - "ses_2c7140656ffeXuVsz4aZDp9jtT", - "ses_2c70cb563ffeuKjg4NciBBmm7R" - ], - "plan_name": "edit-page-restructure", - "agent": "atlas", - "task_sessions": { - "todo:1": { - "task_key": "todo:1", - "task_label": "1", - "task_title": "Create `service_agenda_items` Migration, Model + Factory", - "session_id": "ses_2c7140656ffeXuVsz4aZDp9jtT", - "agent": "Sisyphus-Junior", - "category": "quick", - "updated_at": "2026-03-29T09:32:40.580Z" - }, - "todo:3": { - "task_key": "todo:3", - "task_label": "3", - "task_title": "Create AgendaMatcherService (Wildcard Namesmatching)", - "session_id": "ses_2c70cb563ffeuKjg4NciBBmm7R", - "agent": "Sisyphus-Junior", - "category": "quick", - "updated_at": "2026-03-29T09:37:26.235Z" - } - } -} \ No newline at end of file diff --git a/.sisyphus/plans/edit-page-restructure.md b/.sisyphus/plans/edit-page-restructure.md index 60b63c4..b5bfcd3 100644 --- a/.sisyphus/plans/edit-page-restructure.md +++ b/.sisyphus/plans/edit-page-restructure.md @@ -73,15 +73,15 @@ ### Concrete Deliverables - Tests: Playwright E2E tests for all frontend changes ### Definition of Done -- [ ] `php artisan test` — all tests pass (existing + new) -- [ ] `npx playwright test` — all E2E tests pass -- [ ] `./vendor/bin/pint --test` — no formatting issues -- [ ] Service edit page shows full CTS agenda -- [ ] Songs show arrangement pills inline -- [ ] Arrangement dialog has two-column layout with lyric preview -- [ ] Export .proplaylist follows agenda order with announcements at matched position -- [ ] Settings page has 4 new fields for agenda configuration -- [ ] Service list shows updated status columns +- [x] `php artisan test` — all tests pass (existing + new) +- [x] `npx playwright test` — all E2E tests pass +- [x] `./vendor/bin/pint --test` — no formatting issues +- [x] Service edit page shows full CTS agenda +- [x] Songs show arrangement pills inline +- [x] Arrangement dialog has two-column layout with lyric preview +- [x] Export .proplaylist follows agenda order with announcements at matched position +- [x] Settings page has 4 new fields for agenda configuration +- [x] Service list shows updated status columns ### Must Have - Full CTS agenda display (all item types, not just songs) @@ -385,7 +385,7 @@ ## TODOs --- -- [ ] 3. Create AgendaMatcherService (Wildcard Namesmatching) +- [x] 3. Create AgendaMatcherService (Wildcard Namesmatching) **What to do**: - Create `app/Services/AgendaMatcherService.php` with: @@ -462,7 +462,7 @@ ## TODOs --- -- [ ] 4. Add Agenda Settings Keys to SettingsController +- [x] 4. Add Agenda Settings Keys to SettingsController **What to do**: - Add 4 new setting keys to `SettingsController::MACRO_KEYS` (rename to `SETTING_KEYS`): @@ -529,7 +529,7 @@ ## TODOs --- -- [ ] 5. CTS Agenda Type Discovery Command +- [x] 5. CTS Agenda Type Discovery Command **What to do**: - Create artisan command `app/Console/Commands/DiscoverAgendaTypes.php`: @@ -586,7 +586,7 @@ ## TODOs --- -- [ ] 6. Extend ChurchToolsService to Sync ALL Agenda Items +- [x] 6. Extend ChurchToolsService to Sync ALL Agenda Items **What to do**: - Rename `syncServiceAgendaSongs()` to `syncServiceAgendaItems()` (keep old method as deprecated wrapper for backward compat) @@ -679,7 +679,7 @@ ## TODOs --- -- [ ] 7. Update ServiceController.edit() to Pass Agenda Items +- [x] 7. Update ServiceController.edit() to Pass Agenda Items **What to do**: - Update `ServiceController::edit()` to: @@ -763,7 +763,7 @@ ## TODOs --- -- [ ] 8. Update Service.finalizationStatus() for Agenda Model +- [x] 8. Update Service.finalizationStatus() for Agenda Model **What to do**: - Update `Service::finalizationStatus()` to check: @@ -830,7 +830,7 @@ ## TODOs --- -- [ ] 9. PlaylistExportService — Agenda-Ordered Export +- [x] 9. PlaylistExportService — Agenda-Ordered Export **What to do**: - Refactor `PlaylistExportService::generatePlaylist()` to: @@ -919,7 +919,7 @@ ## TODOs - Files: `app/Services/PlaylistExportService.php`, `tests/Feature/PlaylistExportTest.php` - Pre-commit: `php artisan test` -- [ ] 10. Redesign ArrangementDialog — Two-Column with Lyric Preview +- [x] 10. Redesign ArrangementDialog — Two-Column with Lyric Preview **What to do**: - Create new `resources/js/Components/ArrangementDialog.vue` (replaces `ArrangementConfigurator.vue` in the arrangement popup context): @@ -1047,7 +1047,7 @@ ## TODOs --- -- [ ] 11. Create AgendaItemRow and SongAgendaItem Components +- [x] 11. Create AgendaItemRow and SongAgendaItem Components **What to do**: - Create `resources/js/Components/AgendaItemRow.vue`: @@ -1154,7 +1154,7 @@ ## TODOs --- -- [ ] 12. Restructure Edit.vue — Agenda View Replacing Accordion +- [x] 12. Restructure Edit.vue — Agenda View Replacing Accordion **What to do**: - Major restructure of `resources/js/Pages/Services/Edit.vue`: @@ -1255,7 +1255,7 @@ ## TODOs --- -- [ ] 13. Slide Upload on Agenda Items — "+" Button + Drag-and-Drop +- [x] 13. Slide Upload on Agenda Items — "+" Button + Drag-and-Drop **What to do**: - Enhance `AgendaItemRow.vue` (from Task 11): @@ -1344,7 +1344,7 @@ ## TODOs --- -- [ ] 14. Settings.vue — Add Agenda Configuration Fields +- [x] 14. Settings.vue — Add Agenda Configuration Fields **What to do**: - Update `resources/js/Pages/Settings.vue`: @@ -1411,7 +1411,7 @@ ## TODOs --- -- [ ] 15. Update Service List — Status Columns +- [x] 15. Update Service List — Status Columns **What to do**: - Update `ServiceController::index()`: @@ -1482,7 +1482,7 @@ ## TODOs --- -- [ ] 16. Wire Agenda-Ordered Export into Download Flow +- [x] 16. Wire Agenda-Ordered Export into Download Flow **What to do**: - Update `ServiceController::download()`: @@ -1553,7 +1553,7 @@ ## TODOs --- -- [ ] 17. Update Existing PHP Tests for Agenda Model +- [x] 17. Update Existing PHP Tests for Agenda Model **What to do**: - Review and update ALL existing PHP tests that reference the old model: @@ -1610,7 +1610,7 @@ ## TODOs --- -- [ ] 18. Playwright E2E Tests for Restructured Edit Page +- [x] 18. Playwright E2E Tests for Restructured Edit Page **What to do**: - Update/create E2E test files: @@ -1681,7 +1681,7 @@ ## TODOs --- -- [ ] 19. Remove Deprecated Block Components +- [x] 19. Remove Deprecated Block Components **What to do**: - Remove Vue components no longer used: @@ -1750,19 +1750,19 @@ ## Final Verification Wave (MANDATORY — after ALL implementation tasks) > 4 review agents run in PARALLEL. ALL must APPROVE. Present consolidated results to user and get explicit "okay" before completing. -- [ ] F1. **Plan Compliance Audit** — `oracle` +- [x] F1. **Plan Compliance Audit** — `oracle` Read the plan end-to-end. For each "Must Have": verify implementation exists (read file, curl endpoint, run command). For each "Must NOT Have": search codebase for forbidden patterns — reject with file:line if found. Check evidence files exist in .sisyphus/evidence/. Compare deliverables against plan. Output: `Must Have [N/N] | Must NOT Have [N/N] | Tasks [N/N] | VERDICT: APPROVE/REJECT` -- [ ] F2. **Code Quality Review** — `unspecified-high` +- [x] F2. **Code Quality Review** — `unspecified-high` Run `./vendor/bin/pint --test` + `php artisan test`. Review all changed files for: `as any`/`@ts-ignore`, empty catches, console.log in prod, commented-out code, unused imports. Check AI slop: excessive comments, over-abstraction, generic names. Verify German Du-form in all UI text. Output: `Pint [PASS/FAIL] | Tests [N pass/N fail] | Files [N clean/N issues] | VERDICT` -- [ ] F3. **Real Manual QA** — `unspecified-high` (+ `playwright` skill) +- [x] F3. **Real Manual QA** — `unspecified-high` (+ `playwright` skill) Start from clean state. Execute EVERY QA scenario from EVERY task — follow exact steps, capture evidence. Test cross-task integration: create service → sync agenda → upload slides on agenda items → configure arrangement → finalize → download .proplaylist → verify order. Edge cases: empty agenda, no songs, no matching settings. Output: `Scenarios [N/N pass] | Integration [N/N] | Edge Cases [N tested] | VERDICT` -- [ ] F4. **Scope Fidelity Check** — `deep` +- [x] F4. **Scope Fidelity Check** — `deep` For each task: read "What to do", read actual diff (git log/diff). Verify 1:1 — everything in spec was built, nothing beyond spec was built. Check "Must NOT do" compliance. Detect cross-task contamination. Flag unaccounted changes. Output: `Tasks [N/N compliant] | Contamination [CLEAN/N issues] | Unaccounted [CLEAN/N files] | VERDICT` @@ -1805,11 +1805,11 @@ ### Verification Commands ``` ### Final Checklist -- [ ] All "Must Have" present -- [ ] All "Must NOT Have" absent -- [ ] All tests pass (PHP + E2E) -- [ ] Service edit page shows CTS agenda -- [ ] Arrangement dialog has two-column layout -- [ ] Export follows agenda order -- [ ] Settings page has agenda configuration -- [ ] Existing finalized services still downloadable +- [x] All "Must Have" present +- [x] All "Must NOT Have" absent +- [x] All tests pass (PHP + E2E) +- [x] Service edit page shows CTS agenda +- [x] Arrangement dialog has two-column layout +- [x] Export follows agenda order +- [x] Settings page has agenda configuration +- [x] Existing finalized services still downloadable