Skip to content
DasDuo edited this page Jun 29, 2026 · 3 revisions

Ideas

A holding pen for ideas and deferred thoughts — not a roadmap and not a commitment. Nothing here is promised or scheduled, and most of it may never ship. Things only move out of "Ideas" when a real, felt need shows up (ideally from actually using ShuttleX).

Ideas

  • Suggest favoriting a frequently-used host — instead of a passive "recent" list (deliberately not built), proactively nudge: "you've connected to X N times in the last Y — add it to favorites?". More in the spirit of the app than a recents list (it reinforces the curated ★ Favorites rather than adding a parallel history). Cost to weigh: needs a local per-host connection log (counts + timestamps) — new persistent state and a small privacy surface (a record of your access patterns) — plus careful, non-nagging suggestion UI and threshold tuning, all to save a single star-click on a host you already see. Build only if the friction is actually felt in daily use, not on spec.
  • Confirm before connecting (optional, default off) — an optional "are you sure?" prompt before opening sensitive hosts (e.g. anything tagged prod). Terminal-agnostic.
  • Off-main-thread I/O — move JSON/XLSX work off the main thread. Deferred: current files are tiny (KB), so it would be premature optimization.
  • XLSX worksheet selection — let the import pick a sheet in multi-sheet workbooks. Currently the first worksheet is used.
  • Merge top-level (ungrouped) hosts — finer merge behavior for ungrouped entries. Edge case.
  • Swift 6 language mode — the package builds in Swift 5 mode (swiftLanguageModes: [.v5]) to avoid strict-concurrency churn. Migrating to .v6 would surface potential data races at compile time, but needs a concurrency audit of the app state and AppKit statics.

Known limitation

  • Signing & notarization — would let the app run on other Macs without the Gatekeeper approval step, but requires a paid Apple Developer account ($99/year). Until then, see Installation for the one-time approval.

Considered but dropped

  • Terminal profiles per server — launching a connection with a named terminal profile (e.g. a red "Prod" window). Dropped on purpose. ShuttleX supports seven terminals (Terminal.app, iTerm2, Ghostty, Warp, Alacritty, kitty, WezTerm), and only the two AppleScript-driven ones (Terminal.app, iTerm2) have a named-profile concept at all — the CLI terminals don't. Even on those two it isn't reliable: the profile has to already exist (we can only reference, not create it), it can't be enumerated dependably (iTerm2 with a custom prefs folder hides its profiles from the standard domain), and applying it via AppleScript behaves inconsistently. That's a lot of per-terminal special-casing for a result that silently does nothing in the common case — not worth it. If you want per-environment colors today, set a colored profile as the default in your terminal, or use the tags feature to spot prod at a glance.

Done (recent)

  • Optional server tags (off by default) — comma-separated tags per server, badges in the menu, searchable
  • Global hotkey (centered Spotlight panel) on a custom NSPanel; menu-bar click keeps the anchored dropdown
  • Remote (team) server source — read-only HTTPS inventory; commands ignored for safety; login user + favorites kept locally per person
  • Global default SSH user with per-server override
  • In-app server editor (add/edit/delete)
  • Space-shuttle app icon
  • Search across group names
  • New window when the terminal isn't running yet
  • Command-injection hardening (shell-quoting + import validation)
  • Backup history & configurable JSON path
  • English UI, tests, CI
  • DMG download (drag-to-install), built and attached to releases automatically
  • CLI-terminal launch failures now surface in the UI; duplicate group names merged on load
  • Optional update check (off by default) + curated release notes from the changelog
  • Favorites (pin servers to a collapsible section at the top)

Clone this wiki locally