Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ homepage = "https://hack.ink/rsnap"
license = "GPL-3.0"
readme = "README.md"
repository = "https://github.com/hack-ink/rsnap"
version = "0.2.1"
version = "0.2.2"

[workspace.dependencies]
arboard = { version = "3.6" }
Expand Down Expand Up @@ -54,9 +54,9 @@ wgpu = { version = "29.0" }
winit = { version = "0.30", features = ["rwh_06"] }
xcap = { version = "0.9" }

rsnap-capture-core = { version = "0.2.1", path = "packages/rsnap-capture-core" }
rsnap-host-ffi = { version = "0.2.1", path = "packages/rsnap-host-ffi" }
rsnap-overlay = { version = "0.2.1", path = "packages/rsnap-overlay" }
rsnap-capture-core = { version = "0.2.2", path = "packages/rsnap-capture-core" }
rsnap-host-ffi = { version = "0.2.2", path = "packages/rsnap-host-ffi" }
rsnap-overlay = { version = "0.2.2", path = "packages/rsnap-overlay" }

[profile.final-release]
inherits = "release"
Expand Down
28 changes: 13 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,10 @@ Prototype / in active development.
`docs/spec/capture-session.md` is the current contract source of truth.
- Menubar and Dock are not included in live window-outline targeting.
- Windows support is planned (minimum Windows 10), but not implemented yet.
- The scroll-capture engine, deterministic replay, and benchmark surfaces remain in the repository,
but the v0.2.1 native-host release does not expose scroll capture in the toolbar. On this
development branch, scroll capture uses ordered ScreenCaptureKit region frames, overlay-local
wheel forwarding, and Rust-owned fail-closed stitching on macOS. Release readiness for broader
target apps is governed by `docs/runbook/scroll-capture-recovery-plan.md`.
- As of v0.2.2, the native-host release exposes Scroll Capture for dragged-region Frozen captures
on macOS. It uses ordered ScreenCaptureKit region frames, overlay-local wheel forwarding, and
Rust-owned fail-closed stitching. Release readiness for broader target apps is governed by
`docs/runbook/scroll-capture-recovery-plan.md`.

## Usage

Expand Down Expand Up @@ -130,8 +129,8 @@ Rsnap requires **Screen Recording** permission to capture other apps/windows.
- Normal region/window/monitor capture does not require Accessibility or Input Monitoring.
- The retained scroll-capture path uses Screen Recording-backed screenshots plus overlay-local
wheel forwarding; it does not require Accessibility, Input Monitoring, Accessibility target
acquisition, app scripting, or browser/DOM access. The v0.2.1 native-host release does not expose
scroll capture in the toolbar.
acquisition, app scripting, or browser/DOM access. The v0.2.2 native-host release exposes Scroll
Capture from dragged-region Frozen captures only.
- macOS may describe Screen Recording as `Screen & System Audio Recording` or as direct screen/audio access when Rsnap bypasses the system picker.
- Settings -> Permissions shows Screen Recording as the required capture permission.
- Normal native capture depends on Screen Recording; if access is missing, Rsnap opens the Screen Recording page in System Settings and shows a floating drag-to-grant guide.
Expand Down Expand Up @@ -167,15 +166,14 @@ Rsnap requires **Screen Recording** permission to capture other apps/windows.

### Current scroll-capture status

Scroll capture is temporarily hidden in the v0.2.1 native-host release. The retained Rust
scroll-capture session, deterministic replay, and benchmark surfaces remain for validation and
future re-enablement, but users should not expect a `Scroll Capture` toolbar item in that release.
As of v0.2.2, Scroll Capture is exposed for dragged-region Frozen captures on macOS. It remains
absent for window-click and fullscreen freezes. The retained Rust scroll-capture session,
deterministic replay, and benchmark surfaces remain the validation authority for stitching behavior.

On this development branch, scroll capture targets dragged-region Frozen capture on macOS. The
implementation commits downward growth only after ordered-frame pairwise registration plus overlap
proof, fails closed on weak registration or rewind, and forwards wheel input to target apps through
one universal path. Follow `docs/runbook/scroll-capture-recovery-plan.md` for release-scope
validation.
The implementation commits downward growth only after ordered-frame pairwise registration plus
overlap proof, fails closed on weak registration or rewind, and forwards wheel input to target apps
through one universal path. Follow `docs/runbook/scroll-capture-recovery-plan.md` for
release-scope validation beyond the deterministic and native smoke surfaces.

## Development

Expand Down
9 changes: 4 additions & 5 deletions docs/reference/smoke-perf-validation-surface.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@ Depends on: `docs/runbook/performance-validation.md`; `docs/spec/performance.md`
Covers: The current layer map for smoke/perf entrypoints, deterministic replay/bench surfaces,
overlay runtime integration tests, and scroll-capture session semantics tests.

Release exposure note: v0.2.1 hides user-facing scroll capture in the native host. On this
development branch, scroll capture is implemented behind the current validation contract. The
scroll-capture entries in this reference describe retained validation assets and recovery surfaces;
follow `docs/runbook/scroll-capture-recovery-plan.md` before making a release-scope readiness claim
for broader target apps.
Release exposure note: v0.2.2 exposes user-facing Scroll Capture for dragged-region Frozen captures
in the native host. The scroll-capture entries in this reference remain the retained validation
assets and recovery surfaces; follow `docs/runbook/scroll-capture-recovery-plan.md` before making a
release-scope readiness claim for broader target apps.

## Layer definitions

Expand Down
9 changes: 4 additions & 5 deletions docs/runbook/performance-validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@ Depends on: `docs/spec/performance.md`
Outputs: A clear command choice for the regression class you are testing, plus a repeatable local
baseline workflow for the committed Criterion benchmark targets.

Current release status: v0.2.1 hides user-facing scroll capture in the native host. On this
development branch, scroll capture is implemented under the validation contract. The replay and
benchmark commands in this runbook still own retained internal scroll-capture engine validation, but
they do not prove that a release toolbar exposes scroll capture and do not replace the recovery plan
or a final target-app acceptance run for broader release claims.
Current release status: v0.2.2 exposes user-facing Scroll Capture for dragged-region Frozen
captures in the native host. The replay and benchmark commands in this runbook still own retained
internal scroll-capture engine validation, but they do not replace the recovery plan or a final
target-app acceptance run for broader release claims.

## Command selection

Expand Down
7 changes: 3 additions & 4 deletions docs/runbook/scroll-capture-benchmarks.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@ Depends on: `docs/spec/performance.md`
Outputs: A repeatable local benchmark run, an optional saved Criterion baseline, and a clear
understanding of what the synthetic fixture is intended to cover.

Current release status: v0.2.1 hides user-facing scroll capture in the native host. On this
development branch, scroll capture is implemented under the validation contract. This runbook
applies to the retained internal scroll-capture engine, replay, and stitching validation work; it is
not release-readiness evidence by itself.
Current release status: v0.2.2 exposes user-facing Scroll Capture for dragged-region Frozen
captures in the native host. This runbook applies to the retained internal scroll-capture engine,
replay, and stitching validation work; it is not release-readiness evidence by itself.

If you are debugging correctness rather than hot-path speed, route through
`docs/runbook/performance-validation.md` first. That runbook owns replay,
Expand Down
13 changes: 6 additions & 7 deletions docs/runbook/validate-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,12 @@ Validate these user-visible flows:
- Live HUD, Tab loupe sampling, window outline, dragged-region freeze, click-window freeze, and
fullscreen fallback.
- Frozen toolbar tools: pointer, pen, arrow, text, mosaic, spotlight, undo, redo, auto-center,
Recognize Text, copy, and save.
- For the v0.2.1 native-host release, scroll capture is hidden: the toolbar must not show a scroll
capture item, and pressing `s` must not enter scroll capture.
- If a later release candidate includes Scroll Capture, `docs/runbook/scroll-capture-recovery-plan.md`
must have exited successfully first. Then Scroll Capture must stay absent for window-click and
fullscreen freezes, must start from a dragged-region freeze via toolbar or plain `s`, and must
pass the live acceptance run in that plan.
Recognize Text, Scroll Capture, copy, and save.
- For the v0.2.2 native-host release, Scroll Capture must stay absent for window-click and
fullscreen freezes, remain available after dragged-region movement or auto-center, start from a
dragged-region freeze via toolbar or plain `s`, and pass the functional scroll path in
`docs/runbook/scroll-capture-recovery-plan.md`. Scroll toolbar Liquid Glass cadence and
performance metrics are excluded from the v0.2.2 publish gate and tracked as follow-up work.
- Light and dark appearance; Classic Glass and Liquid Glass where the OS and current build support
Liquid Glass.
- Settings -> About update rows: `Auto Update` and `Release Version` must use Title Case for row
Expand Down
5 changes: 2 additions & 3 deletions docs/spec/capture-session.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,8 @@ This section defines the target contract. The current development branch must fo
`docs/runbook/scroll-capture-recovery-plan.md` before claiming that the implementation satisfies
this contract.

- The v0.2.1 native-host release does not expose scroll capture. The frozen toolbar MUST NOT show a
scroll-capture item while the native-host scroll-capture gate is disabled, and plain `s` MUST NOT
enter scroll capture in that state.
- The frozen toolbar MUST NOT show a scroll-capture item while the native-host scroll-capture gate
is disabled, and plain `s` MUST NOT enter scroll capture in that state.
- If scroll capture is exposed, it is available only from a dragged-region freeze on macOS.
- The frozen toolbar may expose `Scroll Capture`, and plain `s` may start scroll capture, only when
the frozen capture source is a dragged region on macOS.
Expand Down