Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Snap Screen captures are saved at point size on Retina displays

Open Beginner friendly
#329 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
72/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
macos, swift
Domain
desktop

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

bug

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 SCDisplay sizes in points and SCStreamConfiguration sizes 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's backingScaleFactor.
  • 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 build passes.
  • 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
  1. Outcome: sharp slides and better OCR. Evidence: SDK docs and capture sizes.
  2. Simpler route: none.
  3. Owner: ReadbackScreenCapture.
  4. Complexity: two lines.
  5. 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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Ship-Work/workbench

All issues in Ship-Work/workbench

Similar issues

More Swift issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.