Desktop icons: app and folder shortcuts that stay where you leave them - #17
Merged
Merged
Conversation
The desktop had nowhere to keep the things somebody returns to. Apps lived in the dock and folders only inside Files, so reaching a deployment directory on one host meant retracing the same navigation every session. Shortcuts now tile on the desktop ground: drag to rearrange, double-click to open, and a context menu that answers for the icon rather than the desktop. Add them from a dock app's menu or from any folder in Files. Positions are grid cells, not pixels. A pixel layout saved on a wide monitor drops icons off the bottom of a laptop screen; a cell is resolved against whatever grid currently fits, and a desktop that got narrower pulls stragglers back inside without disturbing icons that still fit. The layout is filed under the workspace identity, which is derived from the endpoint, so it survives reconnecting, renaming a saved host and replacing its key, while a different host gets a different desktop. It is stored locally and nothing is written to the remote host. The design preview keeps its own store, because a synthetic host must never reach a real desktop. A corrupt or future payload is reported and left in place rather than silently replaced. The icon layer sits under the window layer, which is already pointer-events: none, so empty desktop space reaches icons while open windows still cover them. Dragging uses pointer capture with clamping, like window moves, and is held to the same 900px floor as every other move affordance. Geometry lives in a pure module with 22 unit tests. Verified in a browser against the running desktop: the ground and an icon open different menus, Add to desktop stores one shortcut, a drag moved it from cell 0,0 to 3,1, double-click opened a window, and the icon returned to the same cell after a reload. npm run verify passes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds persistent desktop shortcuts for apps and remote folders, and prepares ShellCanvas 0.1.7.
Add an app from its dock menu or a folder from Files. Double-click opens it; dragging or Ctrl+arrow keys moves it on a grid. Each host keeps its own locally saved arrangement. Preview data uses separate storage.
Layouts preserve all shortcuts when a smaller window has fewer visible cells: extra columns remain reachable by scrolling. Icons and actions wait for the current workspace identity instead of retaining the previous host's identity. Unreadable saved layouts cannot be overwritten, storage errors remain visible, and cancelled drags leave positions unchanged.
Validation on the Windows main PC:
npm run verify -- --nativepasses: 266 Rust tests, five opt-in tests ignored, all-target Clippy, and the embedded-assets Windows executable. The first local run hit compiler-process crashes; two Cargo jobs with incremental compilation disabled completed successfully. Independent adapter SDK export, generated custom/Files/console/settings packages, production-host interoperability, locked Rust packaging and npm pack dry-run also pass. The hosted Windows release-readiness run passes on the same commit.Folder shortcuts retain the original provider path and do not follow remote renames. No multi-selection, shortcut renaming or drag-from-Files gesture. Touch and native icon interactions remain unverified. No live remote host or installer upgrade was exercised in this review.
See desktop icon documentation.