Skip to content

Guided remote-target setup: detect mounted volumes, handle SSH keys, use folder pickers #1379

Description

@jss367

Problem

Setting up a remote target so that chained import → process → move-to-NAS works requires the user to complete three separate things, and only one of them exists in the UI:

  1. The form — nine fields, six of which are typed absolute paths or SSH connection details.
  2. SSH key setup — generating a keypair and installing it on the NAS (ssh-keygen + ssh-copy-id). Nothing in the app mentions this; the only signal is a failed connection test.
  3. A GNU rsync install — a Homebrew package on macOS (see the rsync hint issue).

A walkthrough of a real first-time setup hit all three, plus two smaller snags (no save affordance, an unvalidated archive root that failed later with a message blaming a different field).

Observation motivating this

Of the nine form fields, essentially all were mechanically discoverable from the machine:

Field Discoverable from
User the SMB mount (//julius_admin@10.x.x.x/Photography)
Host reverse lookup / Tailscale MagicDNS name for the mount's IP
Port probe 22
Remote path Synology convention /volume1/<share>, verifiable over SSH once connected
Local mount path the mount table
Name derivable from the share name
Port / bandwidth sane defaults

The only genuinely user-supplied secret was the NAS password, needed once for ssh-copy-id.

Proposal

An "Add from mounted volume…" flow that:

  1. Lists currently-mounted network volumes (SMB/AFP/NFS) with their server and share.
  2. Pre-fills name, user, host, mount path, and a best-guess remote path from vendor conventions.
  3. Detects whether an SSH key exists; offers to generate one if not.
  4. Prompts once for the NAS password to install the key (equivalent of ssh-copy-id), so the user never sees a terminal.
  5. Verifies the remote path over SSH and offers alternatives if the guess is wrong (ls -d /volume*/<share>).
  6. Checks GNU rsync availability and surfaces the install command if missing.
  7. Ends on a green connection test.

Also: replace typed absolute paths with folder pickers

Independently of the wizard, the path fields should be pickers:

  • Local mount path and Local archive root in the remote-target form
  • Destination on the Import page

These fields are currently too narrow to display a typical absolute path, which actively hides typos — a space-vs-underscore mismatch in an archive root went unnoticed through several screenshots because the visible text was truncated to /Users/julius/Pictures/Virec…. A picker makes that class of error structurally impossible, and would have prevented the archive-root issue outright.

Scope note

This is deliberately written as one umbrella issue because the pieces share a user journey, but they're independently shippable — the folder pickers and the mounted-volume prefill deliver most of the value without the SSH automation, which is the largest and riskiest part.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions