deck.py 3.0.3: isolate LibreOffice profile per render call (parallel-safe rendering) - #7
Open
claudie-everyfolk wants to merge 1 commit into
Open
deck.py 3.0.3: isolate LibreOffice profile per render call (parallel-safe rendering)#7claudie-everyfolk wants to merge 1 commit into
claudie-everyfolk wants to merge 1 commit into
Conversation
`deck.py render` shelled out to `soffice --headless --convert-to pdf` with no UserInstallation, so every render used LibreOffice's single shared default profile. Two renders launched concurrently deadlock/fail on that profile's lock — which forces callers to serialize all rendering, and pushes them away from per-slide review fan-out (the cheap pattern). Give each render call its own profile via `-env:UserInstallation=<this call's tempdir>/louser`. Renders are now safe to run in parallel (e.g. one review sub-agent per slide). Costs a fresh-profile init per call — cheap next to the parallelism it unlocks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
deck.py renderinvokedsoffice --headless --convert-to pdf …with noUserInstallation, so every render used LibreOffice's single shared default profile. Twosofficeprocesses launched at once contend on that profile's lock — the second deadlocks/fails. That forces any caller to serialize all rendering, and (more subtly) pushes review architectures away from the cheap pattern hands-on-deck's own SKILL.md prescribes: fan out one review sub-agent per slide. A per-slide fan-out where agents may eachrender --cropto zoom would otherwise collide on the profile lock.Fix
Give each render call its own LibreOffice profile, created inside that call's existing tempdir:
Renders are now safe to run concurrently. Trade-off: each call pays a fresh-profile init (~1s) instead of reusing a warm one — cheap next to the parallelism it unlocks, and rendering isn't on a hot path.
Scope
One line + a comment in
cmd_render. No change to output, naming (slide-<N>.jpg), DPI, crop/scale, or the patch format. Version bump 3.0.2 → 3.0.3 (patch) inplugin.json+marketplace.json.Motivated by the capes-v3 review-loop redesign (moving the visual judge to per-slide fan-out), but this is a general correctness/throughput fix for any concurrent
deck.py renderuse.🤖 Generated with Claude Code