Summary
Add an optional SSH rsync publishing target to Planet, letting users sync the generated site to a remote server via rsync over SSH alongside or instead of IPNS publishing.
Features
- SSH rsync toggle and destination in the Publishing settings tab (
user@host:/path format)
- SSH key selection — users can select a private key from
~/.ssh/ which gets copied into the app's sandbox container, solving sandbox permission issues without requiring Full Disk Access
- Parallel publishing — IPNS and SSH rsync publish concurrently via
withTaskGroup
- Rsync log window — logs all rsync operations to
tmp/rsync.log with auto-updating display, error highlighting, and a clear button (accessible via Tools > SSH Rsync Log)
- Error detection — shows a yellow warning banner in the log window when SSH key errors are detected, directing users to select a key in Publishing settings
- Validation — destination format validated on save with user-friendly error alerts
Files changed
MyPlanetModel.swift — new properties (sshRsyncEnabled, sshRsyncDestination, sshRsyncKeyPath), publishViaSSHRsync method, parallel publish logic
BackupMyPlanetModel.swift — backup support for new fields
MyPlanetEditView.swift — Publishing tab UI with toggle, address field, SSH key picker
PlanetError.swift — InvalidSSHRsyncDestinationError, SSHRsyncPublishError
KeyboardShortcutHelper.swift — Tools menu entry
- New files:
SSHRsync/SSHRsyncLogger.swift, SSHRsync/SSHRsyncLogView.swift
Summary
Add an optional SSH rsync publishing target to Planet, letting users sync the generated site to a remote server via
rsyncover SSH alongside or instead of IPNS publishing.Features
user@host:/pathformat)~/.ssh/which gets copied into the app's sandbox container, solving sandbox permission issues without requiring Full Disk AccesswithTaskGrouptmp/rsync.logwith auto-updating display, error highlighting, and a clear button (accessible via Tools > SSH Rsync Log)Files changed
MyPlanetModel.swift— new properties (sshRsyncEnabled,sshRsyncDestination,sshRsyncKeyPath),publishViaSSHRsyncmethod, parallel publish logicBackupMyPlanetModel.swift— backup support for new fieldsMyPlanetEditView.swift— Publishing tab UI with toggle, address field, SSH key pickerPlanetError.swift—InvalidSSHRsyncDestinationError,SSHRsyncPublishErrorKeyboardShortcutHelper.swift— Tools menu entrySSHRsync/SSHRsyncLogger.swift,SSHRsync/SSHRsyncLogView.swift