You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Status after release 2026.41.0: open work and handover #535
The draft has 15 assets: Windows system + user installers, Linux (deb, AppImage, snap), Android, mcpb, latest.json. That is the 2026.39 set minus the three macOS files.
Checked: the system installer is Authenticode-signed (Valid). The CI install check passed for open-pdf-studio.exe, pdfium-worker.exe and uninstall.exe. latest.json points to 2026.41.0.
The release notes are in the draft. They cover everything since 2026.39, because 2026.39.1 and 2026.39.2 were never published.
The windows-system job needed three attempts. The Azure signing service returned an internal error (SignerSign() failed), first on an NSIS plugin and then on uninstall.exe. It was not a code problem.
To do
Accept the Apple developer agreement. macOS notarisation fails with HTTP 403 "A required agreement is missing or has expired". Then rerun only the macOS job (gh run rerun --job <macos job id>), not --failed.
Test the draft installers and publish: gh api -X PATCH repos/OpenAEC-Foundation/open-pdf-studio/releases/404395853 -F draft=false -f make_latest=true. Then check releases/latest and releases/latest/download/latest.json.
Update the website after publishing (version labels and download sizes).
Delete the stale drafts v2026.39.2 and v2026.39.1-concept (gh release delete <tag> --yes --cleanup-tag).
Manual check of [Feature]: faster stop on scroll #522 in the real window, since synthetic wheel input does not reproduce native behaviour. Check one notch on a heavy drawing, fast spin then stop, page flip at the edge, touchpad, Shift+wheel and Ctrl+wheel.
Problem: an idle window kept two requestAnimationFrame loops running at the display refresh rate.
The viewport render loop rescheduled itself every frame even without work.
CanvasScrollbars polled the viewport every frame, even with scrollbars switched off.
Measured on 2026.41.0 with a heavy drawing open, doing nothing, on a 240 Hz screen: the renderer used ~16% of a CPU core and the GPU process ~7%. Suppressing only the scrollbar loop (no document open) brought both to ~0.
Change:
The render loop runs on demand. viewport.dirty and viewport.active are accessors that plan one frame (js/pdf/frame-planner.js), and the wheel ease-out still pumps every frame. All 53 existing writers are unchanged.
The scrollbars follow the viewport through volgViewport() instead of polling. The geometry is unchanged, now in scrollbalk-geometrie.js.
Unit tests are green (2989 passed), and so is vite build. A multi-lens review found two issues, both fixed.
To do before the PR (it touches the render loop, so the full render gate applies):
Build a rig from the branch.
Measure idle CPU: renderer and GPU should be ~0.
Run the release gate: text rotation, rotation sweep, save round trip (.mjs + .py), save duplicates, placement under the cursor, continuous ink, fast zoom, search, and the comparison sweep.
3. Branch fix/rotated-resize-snap (37a075a, no PR yet)
Problem: dragging a grip of a rotated shape (for example a rectangle with /Rotation 270 from another editor) jumped whenever an object snap engaged. The snapped delta was measured from the grip in the unrotated frame instead of where the grip is drawn. The grip tooltip showed NaN px, because the document measure scale is an object, not a number.
Change:
The snap origin and the tracking-line base use the on-screen grip position (greepOpScherm in handles.js; logic in js/tools/greep-strek.js).
The tooltip uses the same scale lookup as the width/height fields (findMeasureScale), for example 3.13 m.
Also fixed:
a legacy two-point symbol without stored end points no longer collapses on a snapped drag;
the equal-size snap is skipped for rotated images, because it moved them back into the unrotated frame.
Unit tests are green, and so is vite build.
To do before the PR
Build a rig. Resize an imported rectangle with /Rotation 270 with object snap on, on a dense CAD drawing.
Check the tooltip with a document scale, a scale area and no scale.
Open the PR.
Follow-ups found during review (not in this branch)
Equal-size snap for rotated images: re-anchor about the rotated centre instead of skipping it.
Snap origin for plugin shapes with {x, y, w, h} and for the text/draw types still uses orig.width/orig.x, which can give NaN or a wrong point when a snap engages.
4. Parked: freeze reported when opening a heavy drawing
The report: the window froze when opening a one-page A0 CAD plot (~117k vector paths, 13 annotations, opened from a synced cloud folder) in 2026.39.2.
It could not be reproduced in eight variants:
a fresh instance;
the user's preferences;
opening via the file argument;
the same path and file name;
the original file;
a second instance in a shared WebView2 profile;
maximized on a 100% second monitor next to a 150% primary.
The file renders in 0.5 s in another engine. The frozen window looked normal from outside: not hung, no modal dialog, normal CPU and memory.
Next time: first check whether it repeats after reopening. Then, with the user's consent, read app_get_recent_console from that instance's MCP port.
Watch: once during the 2026.41.0 gate, the test instance closed halfway through a sweep (no crash report), and page 5 of a heavy vector drawing stayed blank for 40 s on one pass. Neither was reproducible.
Handover of the open work after release 2026.41.0 (status 2026-10-06). Development is paused for the rest of week 41.
1. Release v2026.41.0 (draft, not published)
v2026.41.0onc8459398(merge of Release 2026.41.0: integrate ten PRs (#510, #513, #525, #526, #528, #529, #530, #531, #532, #533) #534). Release run: https://github.com/OpenAEC-Foundation/open-pdf-studio/actions/runs/37424995404latest.json. That is the 2026.39 set minus the three macOS files.open-pdf-studio.exe,pdfium-worker.exeanduninstall.exe.latest.jsonpoints to 2026.41.0.SignerSign() failed), first on an NSIS plugin and then onuninstall.exe. It was not a code problem.To do
gh run rerun --job <macos job id>), not--failed.gh api -X PATCH repos/OpenAEC-Foundation/open-pdf-studio/releases/404395853 -F draft=false -f make_latest=true. Then checkreleases/latestandreleases/latest/download/latest.json.v2026.39.2andv2026.39.1-concept(gh release delete <tag> --yes --cleanup-tag).2. Branch
fix/idle-raf-loops(a49800f, no PR yet)Problem: an idle window kept two
requestAnimationFrameloops running at the display refresh rate.CanvasScrollbarspolled the viewport every frame, even with scrollbars switched off.Measured on 2026.41.0 with a heavy drawing open, doing nothing, on a 240 Hz screen: the renderer used ~16% of a CPU core and the GPU process ~7%. Suppressing only the scrollbar loop (no document open) brought both to ~0.
Change:
viewport.dirtyandviewport.activeare accessors that plan one frame (js/pdf/frame-planner.js), and the wheel ease-out still pumps every frame. All 53 existing writers are unchanged.volgViewport()instead of polling. The geometry is unchanged, now inscrollbalk-geometrie.js.vite build. A multi-lens review found two issues, both fixed.To do before the PR (it touches the render loop, so the full render gate applies):
showScrollbars).main, then open the PR.3. Branch
fix/rotated-resize-snap(37a075a, no PR yet)Problem: dragging a grip of a rotated shape (for example a rectangle with
/Rotation 270from another editor) jumped whenever an object snap engaged. The snapped delta was measured from the grip in the unrotated frame instead of where the grip is drawn. The grip tooltip showedNaN px, because the document measure scale is an object, not a number.Change:
greepOpScherminhandles.js; logic injs/tools/greep-strek.js).findMeasureScale), for example3.13 m.vite build.To do before the PR
/Rotation 270with object snap on, on a dense CAD drawing.Follow-ups found during review (not in this branch)
{x, y, w, h}and for thetext/drawtypes still usesorig.width/orig.x, which can give NaN or a wrong point when a snap engages.4. Parked: freeze reported when opening a heavy drawing
The report: the window froze when opening a one-page A0 CAD plot (~117k vector paths, 13 annotations, opened from a synced cloud folder) in 2026.39.2.
It could not be reproduced in eight variants:
The file renders in 0.5 s in another engine. The frozen window looked normal from outside: not hung, no modal dialog, normal CPU and memory.
Next time: first check whether it repeats after reopening. Then, with the user's consent, read
app_get_recent_consolefrom that instance's MCP port.5. Other open items