Repository navigation
Open archives in independent windows and copy between them - #311
Conversation
|
Native acceptance update: the user attempted the prepared cross-window drag/Undo sequence on the final isolated Stow Test build and reported that it could not be dropped or another abnormal behavior occurred. The exact step is being clarified. Merge is paused while this real-input report is investigated; the 709 passing tests do not establish native drag acceptance. A subsequent read-only AX snapshot showed two pending edits in Target.zip, so no specific diagnosis is inferred yet. |
|
Follow-up to the user's concrete report (dragging onto the destination produces no response): the private drag UTI was missing from the app's exported type declarations. A system lookup returned nil. Commit 73ddc51 adds the declaration in project.yml/generated Info.plist and uses the explicit UTType at the SwiftUI drop boundary. The regression test now checks both the built app's declaration and UTI resolution, in addition to the native pasteboard payload. All 11 focused window/transfer tests passed. The isolated Stow Test bundle has been rebuilt and the disposable Source.zip/Target.zip windows reopened for a second physical drag/Undo check. The user has been asked to drop into the files column, not Details. Keep this PR in draft until the native outcome is established; this fixes a verified omission but is not yet a claim that the reported gesture now passes. |
|
The native silent-drop defect is now reproduced and corrected, without asking the user for another verification pass. Event-only diagnostics established that the destination received the drop but SwiftUI supplied a normalized file-URL provider without the extra private drag representation ( Native CUA verification completed: Source.zip beta.txt → Target.zip file area → one visible file and one staged edit → Command-Z removes it → Redo restores it → Save → close/reopen retains it. Source still contains the original. Independent ZIP reads verify copied bytes ( The full integrated local suite passed 711 tests / 105 suites with zero failures/skips and all 1,276 zh-Hans strings translated. The final gesture-expiry cleanup passed all 15 relevant drag/transfer tests. Final CI is running on 8418e01. #309 and #310 were functionally reviewed, merged and integrated into this branch. Full hardware/view-mode/multi-display/signed-integration coverage remains under #38; VoiceOver remains deferred under #93. No registered extension was replaced. |
|
Human acceptance completed — 2026-11-06 (Pacific/Honolulu). The user personally performed the final Stow Test sequence with the fresh Verify Source.zip / Verify Target.zip fixtures and reported that every step passed: drag beta.txt into the destination files area, observe one pending edit, Command-Z removes it, Shift-Command-Z restores it, Save, close/reopen the target, and confirm the source still contains the original. Independent post-test disk verification confirms:
This adds a successful human physical drag/Undo/Redo/Save/reopen pass to the earlier automated and CUA evidence for #311/#308. It does not claim the entire broader hardware/view-mode/signed-integration matrix in #38 or a VoiceOver pass. No further fix is needed for this reported sequence. |
Opening another archive now keeps the existing archive in its own window. Finder/Open-panel multi-selection opens every file, and reopening the same canonical source focuses its existing session. Each Browser/Glance session owns its passwords, source access, loading, edits, Undo and operations; commands follow the key archive window and close/quit check the correct sessions. Tray and recent history remain shared.
Cross-window drag copies the selection into the target folder as one undoable pending edit. It preserves the source, including its unsaved edits, and writes the target only on Save. Existing Keep Both naming, read-only refusal, audited extraction, helper policy and quarantine propagation apply. Source identity/revision and destination ownership are checked across asynchronous work; cancellation/close cleans staging, while accepted staging survives Undo/Redo until Save/discard/reload/teardown.
The native drag boundary is explicit: SwiftUI normalizes file promises and can strip their extra item-provider representations. The receiver synchronously consumes the capability bound to the active AppKit dragging session and its pasteboard change count, rather than relying only on NSItemProvider's private UTI. The UTI is exported in project.yml/generated Info.plist. Regression coverage verifies normalized providers, one-time consumption and invalidation for a later external gesture.
Validation:
Resolves the implementation in #308. Wider physical view-mode/multi-display and signed-integration matrices remain under #38; no VoiceOver pass is claimed. Codex owns functional correctness and testing; Claude Code owns the reused visual/motion treatment. #309/#310 are merged into this branch. Installed apps and registered extensions were not replaced. See
Handoff/multiple-archive-windows.mdfor the current contract and bounded evidence.