Snap Screen captures are saved at point size on Retina displays
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
Research direction
The capture size is set from display points in ReadbackModel.swift around lines 373-374, and the same path is reached from SnapCapture.swift:73 and ReadbackModel.swift:547, :1257-1266 and :1276. Read how StageKit uses backingScaleFactor in PhoneLink.swift:760-761, then add SnapRendering.capturePixelSize(points:scale:) and check the Tests/SnapChecks cases for 2x, 1x, 1.5x and a zero scale. Done when swift build passes and those SnapChecks pass; the native editor-footer check is still owed by a maintainer.
Written by the indexing model from the issue text.
Description
Outcome: Screen captures save at the display's native pixels, matching Region, Window and ⌘⇧3. This covers Snap Screen, the Snap & Talk default, Replace and Redo.
Evidence (main edc15df)
- ReadbackModel.swift:373-374 sets
configuration.width/height = display.width/height. - The SDK documents
SCDisplaysizes in points andSCStreamConfigurationsizes in pixels. - Every Screen capture goes through this code: SnapCapture.swift:73, ReadbackModel.swift:547, :1257-1266 and :1276.
- On a 2x MacBook Air, Screen captures come out at 1470×956 while Region captures are 2940 px wide.
- StageKit already scales by
backingScaleFactor(PhoneLink.swift:760-761).
Change
- Add
SnapRendering.capturePixelSize(points:scale:)and use the matched screen'sbackingScaleFactor. - No cap and no setting.
Acceptance
Tests/SnapChecks:
- 1470×956 at scale 2 gives 2940×1912.
- Scale 1 is unchanged.
- At scale 1.5, sizes are rounded.
- Scale 0 is clamped.
Also:
swift buildpasses.- A native check of the editor footer is still owed.
- The PR should note that larger PNGs reach the 3.75 MiB / 16 MiB Claude Code limits sooner.
Value before scope
- Outcome: sharp slides and better OCR. Evidence: SDK docs and capture sizes.
- Simpler route: none.
- Owner: ReadbackScreenCapture.
- Complexity: two lines.
- Verified by: SnapChecks.
Grammar: Quality.
Refs #63
Build-ready record from the overnight lead session of 15 Oct 2026, verified against main edc15df by an independent skeptic per item. Implementation follows on a claude/* branch; this issue closes only after native acceptance.
- Dominant language
- Swift
- Stars
- 0
- Forks
- 1
- Avg merge
- 12h 29m
- Merged PRs (30d)
- 201
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Ship-Work/workbench
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
documentation good first issue help wanted
Difficulty 2/5 Half a day Newbie friendliness 74/100
Ship-Work/workbench#29 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 18/100
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 22/100
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Maintainers usually reply within 1 day
All issues in Ship-Work/workbench
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 60/100
meshtastic/Meshtastic-Apple#2603 ·
Maintainers usually reply within 1 day
-
bug Windows
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
fyi-ecosystem platform-ios team-ios
Difficulty 1/5 Under an hour Newbie friendliness 70/100
flutter/flutter#194348 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
freestylefly/WeChatBridge#44 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 Half a day Newbie friendliness 62/100
swiftwasm/JavaScriptKit#818 ·