Snap: show the pending editor when capture starts outside the Snap page
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 38/100
Hướng nghiên cứu
Start with the capture entry points and restore callback in Sources/LocalVoice/main.swift and WorkbenchHome.swift, then trace draft ownership in SnapWorkspaceView.swift and SnapModel.swift. Reproduce the Home-to-Screen capture flow and inspect the existing host/page/sheet structure before changing it. Done means the acceptance journeys work across the listed entry points, cancellation restores prior context, and a meaningful regression test covers the flow.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Outcome and evidence
P1, reproduced in the installed app. Completing a Screen capture while Home is selected returns to Home without an editor and leaves Snap disabled. Opening the Snap page exposes the hidden draft; Cancel restores capture. A person has no visible way to finish or cancel at the action's origin.
Workbench Preview 2.3.0, build 20260928054038, source 00be555139f87d4557f48fcffc132b8621c251a2, unmodified source, macOS 26.5.1 (25F80), Apple M5, built-in display. Identity verified in the running app using Copy build details on 28 September 2026.
Reproduction
- Leave the main window on Home with no visible Snap editor.
- Open Quick controls and choose Snap → Options → Screen.
- Wait for capture to finish. Home returns; Snap and the recent-item Edit action are disabled, with no editor shown.
- Select Snap in the sidebar. The New Snap sheet appears.
- Cancel the sheet. Capture becomes available again.
One completed Screen journey was observed. The editor was cancelled and no new Snap was saved. The source also exposes the same risk for toolbar/Home/shortcut entry points; those complete capture journeys still need retesting. No private desktop screenshot is attached.
Owner and bounded change
Source links below pin the earlier audited commit 9578d8cf; the relevant paths were checked against installed 00be5551 and the described behaviour is unchanged. Source findings and native observations are distinguished below.
- main.swift starts capture without changing the selected page; its restore callback at line 76 only shows the window.
- WorkbenchHome.swift mounts the Snap workspace conditionally; its Home action at line 466 starts capture directly.
- SnapWorkspaceView.swift owns the draft sheet.
- SnapModel.swift creates the draft and restores the window. A non-nil draft keeps capture busy.
Give successful capture one host-owned path that exposes the existing draft editor from every entry point. Keep one draft/state owner. The same completion route currently restores Workbench on cancellation too; verify cancellation returns to the prior app/window state before changing that behaviour. Focus theft on cancellation is a source lead, not a reproduced result here.
Additional consequence in the newer build
At 00be5551 SnapModel.importInbox, a pending draft also makes screenshot-inbox import return early. This is source-confirmed; the screenshot-relocation setting was not changed during native testing.
Keep draft ownership separate from inbox adoption where safe. A visible editable draft should not stall settled background screenshots indefinitely. Preserve the existing readback-before-Trash and later-manual-location rules.
Acceptance
- Region, Window and Screen each expose one usable editor from Home, another page, panel, toolbar and configured shortcut, including a hidden/minimised main window.
- Save, Save & Copy, Cancel and Escape resolve the draft and allow another capture without hidden or duplicate items.
- Selector cancellation creates no item and restores the prior context; acquisition errors are visible and recoverable.
- Existing originals, crop/marks and independent jobs remain intact.
- With screenshot adoption explicitly enabled in a disposable test, pending/visible drafts do not lose or indefinitely stall new settled screenshots; adoption resumes safely after Cancel/Save. Existing inbox files and manual screenshot-location changes remain intact.
- Add a meaningful host/page/sheet regression, then repeat the complete journey in the signed installed Preview and record Copy build details.
Related: #112, #134, #7. Follow the product contract and shared install workflow; this request does not require a second capture store.
- Ngôn ngữ chính
- Swift
- Star
- 0
- Fork
- 1
- Merge trung bình
- 8 giờ 5 phút
- Pull request đã merge (30 ngày)
- 215
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Ship-Work/workbench
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày
-
documentation good first issue help wanted
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 74/100
Ship-Work/workbench#29 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 55/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Ship-Work/workbench
Issue tương tự
-
type: cleanup
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
googleapis/google-cloud-swift#1477 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
🐛 Bug Report: Console `/join` shows an endless spinner for invited users who are not signed inĐang mởproduct / auth product / console product / databases product / messaging product / self-hosted product / sites product / storage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
P1 status: first-line-handled status: needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
a2ui-project/a2ui#3282 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
binding:web core docs p3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
RunanywhereAI/runanywhere-sdks#1123 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
Countly/countly-sdk-ios#485 ·
Maintainer thường phản hồi trong vòng 1 ngày