Skip to content

Add color-managed PDF review reports - #32

Merged
D-Mad merged 2 commits into
mainfrom
agent/pr26-review
Jul 15, 2026
Merged

Add color-managed PDF review reports#32
D-Mad merged 2 commits into
mainfrom
agent/pr26-review

Conversation

@D-Mad

@D-Mad D-Mad commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

  • rebase Eric Levy's searchable PDF review report from Add PDF review report #26 onto current Speed/Proxy/HUD main
  • fix Ubuntu CI by installing both DejaVu fonts and the required libpulse0 Qt Multimedia runtime
  • export the active sequence AOV through the current OCIO processor so report frames match the viewer
  • preserve comments as report pages even if an individual source frame fails to decode
  • wrap long comments and allocate measured note height instead of clipping them to one line
  • document PDF delivery on the homepage

Root cause of #26 CI failure

The multiline apt install change placed libpulse0 after a shell comment, so Qt Multimedia failed to import during test collection. The PDF implementation was never reached. This branch restores libpulse0 and adds the font package on the same valid install command.

Original feature authored by @emlcpfx in #26.

Validation

  • PDF report module passed (12 tests)
  • full pytest -q passed
  • git diff --check

Replaces #26.

emlcpfx and others added 2 commits July 15, 2026 11:20
File > Export Review PDF... (Ctrl+Alt+P) renders every annotated frame with
its notes into a single document: a cover identifying the shot, source, frame
rate and note count with a contents list, then one page per annotated frame
showing the burned-in frame above the notes that go with it.

Written with Qt QPdfWriter, so there is no new dependency and the text is real
embedded text rather than pixels baked into the image: the delivered file stays
selectable and searchable. Pinned notes are numbered to match the markers drawn
on the frame above them, so a note can be traced back to the exact spot it
refers to.

widgets/pdfreport.py takes plain page dicts, not a player or a reader, so a
report can be laid out and verified without decoding anything. Notes are given
the room they need and the frame takes what is left: a report whose text is cut
off is worse than one whose image is a little smaller. A frame that fails to
decode still gets its page, because the note has to reach the recipient even
when the picture does not.

The tests read the written PDF back with pypdf and assert on the extracted
text, so they check what a recipient actually gets rather than what the builder
believed it drew.

Also fixes the test environment, which could not render text at all:

Qt no longer ships fonts and the offscreen platform plugin finds none by
itself, so QFontDatabase came back EMPTY and every drawText() silently drew
nothing. No glyphs in a rendered widget, no text operators in a generated PDF.
Any test asserting on drawn text failed for reasons unrelated to the code. The
suite now registers a system font, and CI installs fonts-dejavu-core, so text
rendering is exercised for real on both platforms.

11 tests, 249 on the branch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TexnzYbmCjjTDB8zzZuUPb
@D-Mad D-Mad mentioned this pull request Jul 15, 2026
@D-Mad
D-Mad marked this pull request as ready for review July 15, 2026 04:25
@D-Mad
D-Mad merged commit a3143aa into main Jul 15, 2026
3 checks passed
@D-Mad
D-Mad deleted the agent/pr26-review branch July 15, 2026 04:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants