propresenter-php/.sisyphus/notepads/propresenter-parser/decisions.md
Thorsten Bus 813d30dd12 test(playlist): add integration tests and update AGENTS.md
- Add ProPlaylistIntegrationTest with 8 round-trip tests
- All 4 .proplaylist test files validated in ProPlaylistReaderTest
- Update AGENTS.md with playlist module documentation
- Document reading, writing, generating, CLI usage
- Add notepad learnings from Wave 4 tasks
2026-03-01 21:28:18 +01:00

1.2 KiB

Architectural Decisions

Decisions Made

Proto Version Choice

  • Decision: Use greyshirtguy/ProPresenter7-Proto v7.16.2
  • Reason: Field numbers match Test.pro raw decode perfectly
  • Source: Metis analysis + typed decode validation in T2

RTF Handling

  • Getters: Plain text only (via RtfExtractor)
  • Internal: Raw RTF preserved for round-trip integrity
  • Write: Template-clone approach (preserve formatting, swap text only)

Scope Boundaries

  • IN: Read+write existing content, parse all reference files

  • OUT: Creating new slides/groups from scratch, Laravel integration, playlist formats

  • 2026-03-01 task-2 autoload decision: added GPBMetadata\ => generated/GPBMetadata/ to php/composer.json so generated Rv\Data classes can initialize descriptor metadata at runtime.

  • 2026-03-01 task-2 ZIP64 repair strategy: patch archive headers in-memory only (no recompression), applying deterministic EOCD/ZIP64 size corrections before any ZipArchive access.

  • 2026-03-01 21:23:59 - ProPlaylist integration tests use temp files via tempnam() tracked in class state and cleaned in tearDown() to guarantee cleanup across all test methods.