propresenter-php/doc/internal/decisions.md
Thorsten Bus 22ba4aff7d refactor: make repo Composer-compatible by moving php/ to root and ref/ to doc/reference_samples
- Move src/, tests/, bin/, generated/, proto/, composer.json, composer.lock, phpunit.xml from php/ to repo root
- Move ref/ to doc/reference_samples/ for better organization
- Remove vendor/ from git tracking (now properly gitignored)
- Update all test file paths (dirname adjustments and ref/ -> doc/reference_samples/)
- Update all documentation paths (AGENTS.md, doc/*.md)
- Remove php.bak/ directory
- All 252 tests pass
2026-03-30 13:26:29 +02:00

24 lines
1.2 KiB
Markdown

# 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 `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.