Skip to content

[Feature] Android mobile app (v1) #85

Description

@thangnm93

Problem Statement

YourSSH ships on macOS / Windows / Linux only. Users who manage hosts on the go have no way to reach their saved servers from a phone — they must switch to a separate mobile SSH app and re-enter every host. A first-party Android client lets the same hosts (synced from desktop) be reached from a phone.

Proposed Solution

Add Android as a target of the existing app/ Flutter project, shipping a focused mobile SSH client (v1) that reuses the platform-agnostic core (models / providers / services) and adds a mobile UI layer. Delivered as 5 milestones:

  • M1 — Target + platform branch: android/ target; main() branches on isMobilePlatform to mount a mobile shell and skip the desktop-only bootstrap (window_manager / hotkey_manager / local_notifier / flutter_pty). Desktop untouched.
  • M2 — Hosts + terminal: hosts list + minimal add-host form + connect; mobile TerminalView with an accessory key bar (sticky Ctrl/Alt, ^C/^D, arrows, special chars) and pinch-to-zoom; multi-session strip. Mobile-scoped bootstrap reusing existing providers/services.
  • M3 — Host import from desktop: cloud Supabase pull + P2P QR camera scan (mobile_scanner).
  • M4 — SFTP + snippets: single-panel SFTP (browse / download / upload via file_picker) + snippets quick-insert sheet. (Command history deferred — no input bar to capture commands on mobile.)
  • M5 — Security + polish: biometric app-lock (local_auth), TOFU host-key-mismatch dialog, terminal appearance settings, release APK signing via key.properties.

Specs and per-milestone plans live in docs/superpowers/specs/ and docs/superpowers/plans/.

Alternatives Considered

  • Separate mobile app / extracted core package: cleaner long-term but requires a large upfront refactor; chose to add the target to app/ with a mobile-scoped bootstrap (zero desktop-regression risk, ships faster).
  • Full feature port (RDP/VNC, port forwarding, DevOps tools): out of scope for v1 — large native (NDK) and background-execution work; deferred.

Additional Context

  • New mobile dependencies: mobile_scanner (QR scan), local_auth (app-lock) — accepted bundle tradeoff (single shared pubspec).
  • iOS deferred but the structure does not preclude it.
  • 33 commits, all milestones TDD-covered (33 new widget/unit tests); debug APK builds green; on-device verification pending a device/emulator.
  • PR: targets develop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions