propresenter-php/php
Thorsten Bus d58bb38bb6 feat(playlist): add PlaylistEntry, PlaylistNode, PlaylistArchive wrappers
- Implement PlaylistEntry wrapper for PlaylistItem proto (23 tests, 40 assertions)
  - Support all 4 item types: header, presentation, placeholder, cue
  - Expose arrangement_name (field 5) for presentation items
  - Type-specific getters with null safety
- Implement PlaylistNode wrapper for Playlist proto (15 tests, 37 assertions)
  - Handle both container nodes (child playlists) and leaf nodes (items)
  - Recursive wrapping of nested playlist structures
- Implement PlaylistArchive wrapper for PlaylistDocument proto (18 tests, 37 assertions)
  - Top-level integration of nodes, entries, and embedded files
  - Lazy parsing of embedded .pro files into Song objects
  - File partitioning: .pro files vs media files

Wave 2 of proplaylist-module plan complete (Tasks 4-6)
2026-03-01 20:58:39 +01:00
..
bin [AI] update CLI and docs with macro, media, and label features 2026-03-01 18:46:12 +01:00
generated feat(playlist): add proto field 5, Zip64Fixer, and format spec 2026-03-01 20:50:14 +01:00
proto feat(playlist): add proto field 5, Zip64Fixer, and format spec 2026-03-01 20:50:14 +01:00
src feat(playlist): add PlaylistEntry, PlaylistNode, PlaylistArchive wrappers 2026-03-01 20:58:39 +01:00
tests feat(playlist): add PlaylistEntry, PlaylistNode, PlaylistArchive wrappers 2026-03-01 20:58:39 +01:00
vendor [AI] first parser implementation 2026-03-01 16:12:17 +01:00
.phpunit.result.cache [AI] first parser implementation 2026-03-01 16:12:17 +01:00
composer.json [AI] first parser implementation 2026-03-01 16:12:17 +01:00
composer.lock [AI] first parser implementation 2026-03-01 16:12:17 +01:00
phpunit.xml [AI] first parser implementation 2026-03-01 16:12:17 +01:00