Thorsten Bus
9db2702b5f
test(generator): end-to-end structural verification against ProPresenter format
2026-03-30 08:17:00 +02:00
Thorsten Bus
82a9673874
fix(generator): complete media action with name, audio, and image properties
2026-03-30 08:12:48 +02:00
Thorsten Bus
7cda7e7736
fix(generator): ROOT_USER_HOME fallback for user directory paths
...
- Add else branch in buildLocalRelativePath() to handle unmapped /Users/{username}/ paths
- Unmapped user directories now use ROOT_USER_HOME as root instead of ROOT_BOOT_VOLUME
- Extract user-relative path (e.g., AI/propresenter/ref/Media/test.png) for unmapped dirs
- Preserve existing behavior for mapped directories (Downloads, Documents, etc.)
- Preserve behavior for non-user paths (e.g., /tmp)
- Add 3 test cases covering all path scenarios: mapped, unmapped user, non-user
2026-03-30 08:06:43 +02:00
Thorsten Bus
6f79982283
fix(generator): add hotKey to Group and Cue
2026-03-30 08:04:32 +02:00
Thorsten Bus
e46e7e5f9c
fix(generator): set slide size and PresentationSlide chordChart
2026-03-30 08:04:07 +02:00
Thorsten Bus
e2cebe419c
fix(generator): add presentation-level fields (background, chordChart, ccli, timeline)
2026-03-30 08:03:28 +02:00
Thorsten Bus
1f17121b24
fix(generator): separate platform and application version info
2026-03-30 08:02:59 +02:00
Thorsten Bus
1f14724603
fix(generator): uppercase UUIDs to match ProPresenter format
2026-03-30 08:00:17 +02:00
Thorsten Bus
2fefe72ef6
feat(pro): correct translated textbox positioning
...
- Create buildOriginalBounds(): origin(150, 99.543) size(1620×182.946)
- Create buildTranslationBounds(): origin(150, 303.166) size(1620×113.889)
- Modify buildCue() to use different bounds for translated vs non-translated
- Modify buildSlideElement() to accept optional bounds parameter
- Add test: translated slide has correct dual bounds
- Add test: non-translated slide has single full-size bounds
- All tests pass: 14 PHPUnit, 203 Laravel tests
2026-03-02 21:46:37 +01:00
Thorsten Bus
7de43f4aec
feat(pro): auto-select 'normal' arrangement in generator
...
- Modified generate() method to loop through arrangements and find 'normal' (case-insensitive)
- Falls back to first arrangement if 'normal' not found
- Added test: testGenerateSelectsNormalArrangementWhenPresent
- Added test: testGenerateFallsBackToFirstArrangementWhenNoNormal
- All 12 ProFileGenerator tests pass (82 assertions)
2026-03-02 21:41:15 +01:00
Thorsten Bus
e7c014abfe
refactor(pro): set visual attributes to enable=false
2026-03-02 21:24:03 +01:00
Thorsten Bus
cb219ea139
[AI] extend ProFileGenerator with macro, media, and label creation
2026-03-01 18:46:10 +01:00
Thorsten Bus
22d98e2225
[AI] add ProFileGenerator to create .pro files from scratch
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-01 16:34:04 +01:00