propresenter-php/doc/keywords.md
Thorsten Bus 5ac27d676c docs: prepare project for open-source release on GitHub
- Add MIT LICENSE (Thorsten Buss) with attribution to the upstream
  MIT-licensed greyshirtguy/ProPresenter7-Proto definitions.
- Add comprehensive README.md: badges, feature matrix, install,
  seven runnable getting-started examples (read/modify/generate
  songs, playlists, bundles, global libraries), CLI tool reference,
  documentation index, project structure, caveats.
- Update composer.json with package name (bussnet/propresenter7-php-api),
  MIT license, keywords, author, homepage, support URLs, dev autoload,
  and a `composer test` script.
- Polish doc/INDEX.md, doc/keywords.md, and doc/CONTRIBUTING.md so they
  read well for both humans and AI assistants; remove README-duplicate
  content from INDEX.md and link to the top-level README instead.
- Expand .gitignore to cover IDE/OS metadata and agent workspaces.

All 370 tests still pass (9,200 assertions). README examples #3 and #5
verified end-to-end (generate -> read back -> assert metadata).
2026-05-03 21:59:39 +02:00

223 lines
12 KiB
Markdown

# Keyword Index
> Search this file (Ctrl+F / Cmd+F) to jump to the right document for a topic.
## File Formats
| Keyword | Document |
|---------|----------|
| `.pro` | [formats/pp_song_spec.md](formats/pp_song_spec.md) |
| `.proplaylist` | [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md) |
| `.probundle` | [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) |
| protobuf | [formats/pp_song_spec.md](formats/pp_song_spec.md) |
| ZIP | [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md), [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md) |
| ZIP64 | [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md), [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) |
| binary format | [formats/pp_song_spec.md](formats/pp_song_spec.md), [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md), [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) |
| JSON | [api/communication-devices.md](api/communication-devices.md) |
## Song Structure
| Keyword | Document |
|---------|----------|
| song | [api/song.md](api/song.md) |
| group | [api/song.md](api/song.md), [api/groups.md](api/groups.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 4 |
| slide | [api/song.md](api/song.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5 |
| arrangement | [api/song.md](api/song.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 6 |
| translation | [api/song.md](api/song.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 7 |
| verse | [api/song.md](api/song.md) |
| chorus | [api/song.md](api/song.md) |
| lyrics | [api/song.md](api/song.md) |
| CCLI | [api/ccli.md](api/ccli.md), [api/song.md](api/song.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 3 |
## Bundle Structure
| Keyword | Document |
|---------|----------|
| bundle | [api/bundle.md](api/bundle.md), [api/theme.md](api/theme.md), [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) |
| probundle | [api/bundle.md](api/bundle.md), [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) |
| pro6x | [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) Section 1 |
| LocalRelativePath | [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) Section 3 |
| absolute path | [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) Section 2 |
| theme | [api/theme.md](api/theme.md) |
| theme folder | [api/theme.md](api/theme.md) |
| assets | [api/theme.md](api/theme.md), [api/bundle.md](api/bundle.md) |
## Playlist Structure
| Keyword | Document |
|---------|----------|
| playlist | [api/playlist.md](api/playlist.md) |
| entry | [api/playlist.md](api/playlist.md) |
| header | [api/playlist.md](api/playlist.md) |
| presentation | [api/playlist.md](api/playlist.md) |
| placeholder | [api/playlist.md](api/playlist.md) |
| embedded | [api/playlist.md](api/playlist.md) |
## Text Handling
| Keyword | Document |
|---------|----------|
| RTF | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 9 |
| text | [api/song.md](api/song.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5 |
| plain text | [api/song.md](api/song.md) |
| Unicode | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 9 |
| encoding | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 9 |
| Windows-1252 | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 9 |
| German characters | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 9 |
| umlauts | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 9 |
## Actions
| Keyword | Document |
|---------|----------|
| macro | [api/macros.md](api/macros.md), [api/song.md](api/song.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5 |
| Macros file | [api/macros.md](api/macros.md) |
| MacroCollection | [api/macros.md](api/macros.md) |
| MacroLibrary | [api/macros.md](api/macros.md) |
| media | [api/song.md](api/song.md), [api/bundle.md](api/bundle.md), [api/theme.md](api/theme.md) |
| image | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5, [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) Section 3, [api/theme.md](api/theme.md) |
| video | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5, [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) Section 6 |
| cue | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5, [api/props.md](api/props.md) |
| label | [api/labels.md](api/labels.md), [api/song.md](api/song.md), [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5 |
| Labels file | [api/labels.md](api/labels.md) |
| LabelLibrary | [api/labels.md](api/labels.md) |
| LabelsFileReader | [api/labels.md](api/labels.md) |
| color | [api/labels.md](api/labels.md), [api/macros.md](api/macros.md), [api/groups.md](api/groups.md), [api/clear-groups.md](api/clear-groups.md) |
## Global library files
| Keyword | Document |
|---------|----------|
| Groups file | [api/groups.md](api/groups.md) |
| GroupLibrary | [api/groups.md](api/groups.md) |
| GroupDefinition | [api/groups.md](api/groups.md) |
| ClearGroups file | [api/clear-groups.md](api/clear-groups.md) |
| ClearGroup | [api/clear-groups.md](api/clear-groups.md) |
| ClearGroupDefinition | [api/clear-groups.md](api/clear-groups.md) |
| CCLI file | [api/ccli.md](api/ccli.md) |
| CCLILibrary | [api/ccli.md](api/ccli.md) |
| copyright | [api/ccli.md](api/ccli.md) |
| license | [api/ccli.md](api/ccli.md) |
| Messages file | [api/messages.md](api/messages.md) |
| MessageLibrary | [api/messages.md](api/messages.md) |
| Message | [api/messages.md](api/messages.md) |
| token | [api/messages.md](api/messages.md) |
| Timers file | [api/timers.md](api/timers.md) |
| TimersLibrary | [api/timers.md](api/timers.md) |
| Timer | [api/timers.md](api/timers.md) |
| Clock | [api/timers.md](api/timers.md) |
| countdown | [api/timers.md](api/timers.md) |
| Stage file | [api/stage.md](api/stage.md) |
| StageLibrary | [api/stage.md](api/stage.md) |
| StageLayout | [api/stage.md](api/stage.md) |
| stage display | [api/stage.md](api/stage.md) |
| Workspace file | [api/workspace.md](api/workspace.md) |
| WorkspaceLibrary | [api/workspace.md](api/workspace.md) |
| Screen | [api/workspace.md](api/workspace.md) |
| audience look | [api/workspace.md](api/workspace.md) |
| mask | [api/workspace.md](api/workspace.md) |
| video input | [api/workspace.md](api/workspace.md) |
| Props file | [api/props.md](api/props.md) |
| PropLibrary | [api/props.md](api/props.md) |
| Prop | [api/props.md](api/props.md) |
| TestPatterns file | [api/test-patterns.md](api/test-patterns.md) |
| TestPatternsLibrary | [api/test-patterns.md](api/test-patterns.md) |
| test pattern | [api/test-patterns.md](api/test-patterns.md) |
| Calendar file | [api/calendar.md](api/calendar.md) |
| CalendarLibrary | [api/calendar.md](api/calendar.md) |
| CalendarEvent | [api/calendar.md](api/calendar.md) |
| schedule | [api/calendar.md](api/calendar.md) |
| KeyMappings file | [api/key-mappings.md](api/key-mappings.md) |
| KeyMappingsLibrary | [api/key-mappings.md](api/key-mappings.md) |
| KeyMapping | [api/key-mappings.md](api/key-mappings.md) |
| hot key | [api/key-mappings.md](api/key-mappings.md), [api/groups.md](api/groups.md) |
| CommunicationDevices file | [api/communication-devices.md](api/communication-devices.md) |
| CommunicationDevicesLibrary | [api/communication-devices.md](api/communication-devices.md) |
| CommunicationDevice | [api/communication-devices.md](api/communication-devices.md) |
| MIDI | [api/communication-devices.md](api/communication-devices.md) |
| OSC | [api/communication-devices.md](api/communication-devices.md) |
| Theme | [api/theme.md](api/theme.md) |
| ThemeBundle | [api/theme.md](api/theme.md) |
| ThemeSlide | [api/theme.md](api/theme.md) |
| ThemeAsset | [api/theme.md](api/theme.md) |
## PHP API
| Keyword | Document |
|---------|----------|
| read | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md), [api/bundle.md](api/bundle.md), [api/macros.md](api/macros.md), [api/labels.md](api/labels.md), [api/groups.md](api/groups.md) |
| write | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md), [api/bundle.md](api/bundle.md), [api/macros.md](api/macros.md), [api/labels.md](api/labels.md), [api/groups.md](api/groups.md), [api/theme.md](api/theme.md) |
| generate | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md) |
| parse | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md), [api/bundle.md](api/bundle.md), [api/macros.md](api/macros.md), [api/labels.md](api/labels.md), [api/groups.md](api/groups.md) |
| MacrosFileReader | [api/macros.md](api/macros.md) |
| MacrosFileWriter | [api/macros.md](api/macros.md) |
| LabelsFileWriter | [api/labels.md](api/labels.md) |
| GroupsFileReader | [api/groups.md](api/groups.md) |
| GroupsFileWriter | [api/groups.md](api/groups.md) |
| ProFileReader | [api/song.md](api/song.md) |
| ProFileWriter | [api/song.md](api/song.md) |
| ProFileGenerator | [api/song.md](api/song.md) |
| ProPlaylistReader | [api/playlist.md](api/playlist.md) |
| ProPlaylistWriter | [api/playlist.md](api/playlist.md) |
| ProPlaylistGenerator | [api/playlist.md](api/playlist.md) |
| ProBundleReader | [api/bundle.md](api/bundle.md) |
| ProBundleWriter | [api/bundle.md](api/bundle.md) |
| PresentationBundle | [api/bundle.md](api/bundle.md) |
| ThemeFileReader | [api/theme.md](api/theme.md) |
| ThemeFileWriter | [api/theme.md](api/theme.md) |
| Song | [api/song.md](api/song.md) |
| PlaylistArchive | [api/playlist.md](api/playlist.md) |
| CLI | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md), [api/macros.md](api/macros.md), [api/labels.md](api/labels.md), [api/groups.md](api/groups.md) |
| command line | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md), [api/macros.md](api/macros.md), [api/labels.md](api/labels.md) |
## Protobuf
| Keyword | Document |
|---------|----------|
| Presentation | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 3 |
| CueGroup | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 4 |
| Cue | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5, [api/props.md](api/props.md) |
| Action | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 5 |
| Playlist | [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md) Section 3 |
| PlaylistItem | [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md) Section 5 |
| UUID | [formats/pp_song_spec.md](formats/pp_song_spec.md), [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md) |
| field number | [formats/pp_song_spec.md](formats/pp_song_spec.md) Appendix |
| proto | [formats/pp_song_spec.md](formats/pp_song_spec.md) |
| Template.Document | [api/theme.md](api/theme.md) |
| ProPresenterWorkspace | [api/workspace.md](api/workspace.md) |
| ProGroupsDocument | [api/groups.md](api/groups.md) |
| ClearGroupsDocument | [api/clear-groups.md](api/clear-groups.md) |
| MessageDocument | [api/messages.md](api/messages.md) |
| TimersDocument | [api/timers.md](api/timers.md) |
| Stage.Document | [api/stage.md](api/stage.md) |
| PropDocument | [api/props.md](api/props.md) |
| TestPatternDocument | [api/test-patterns.md](api/test-patterns.md) |
| CalendarDocument | [api/calendar.md](api/calendar.md) |
| KeyMappingsDocument | [api/key-mappings.md](api/key-mappings.md) |
| CCLIDocument | [api/ccli.md](api/ccli.md) |
## Troubleshooting
| Keyword | Document |
|---------|----------|
| error | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md), [api/bundle.md](api/bundle.md) |
| exception | [api/song.md](api/song.md), [api/playlist.md](api/playlist.md), [api/bundle.md](api/bundle.md) |
| empty file | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 8 |
| edge case | [formats/pp_song_spec.md](formats/pp_song_spec.md) Section 8, [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md) Section 9 |
| ZIP64 bug | [formats/pp_playlist_spec.md](formats/pp_playlist_spec.md) Section 4, [formats/pp_bundle_spec.md](formats/pp_bundle_spec.md) Section 4, [api/playlist.md](api/playlist.md) |
| round-trip | [internal/learnings.md](internal/learnings.md) |
| fidelity | [internal/issues.md](internal/issues.md) |
## Development
| Keyword | Document |
|---------|----------|
| TDD | [internal/learnings.md](internal/learnings.md) |
| PHPUnit | [internal/learnings.md](internal/learnings.md) |
| composer | [internal/learnings.md](internal/learnings.md) |
| architecture | [internal/decisions.md](internal/decisions.md) |
| decision | [internal/decisions.md](internal/decisions.md) |
| convention | [internal/learnings.md](internal/learnings.md) |
| issue | [internal/issues.md](internal/issues.md) |
| gotcha | [internal/issues.md](internal/issues.md) |