Skip to content

Multi-bridge Phase 1.2: Saved Bridges screen in Settings #63

@tashda

Description

@tashda

Why

Once #1.1 lands, users need a place to see, add, rename, reorder, set a default, and remove saved bridges. Today the only entry point for managing connection configs is the first-launch onboarding flow — there is no in-app screen to manage saved bridges.

What

  • New file Shellbee/Features/Settings/SavedBridgesView.swift.
  • List rows show: name, host, last-connected timestamp, "Default" badge, "Active" badge.
  • Per-row swipe actions: Rename, Set Default, Remove. Tap a non-active row → call environment.connect(config:) for that bridge.
  • Header button: "Add Bridge" → reuses the existing Features/Connection/ onboarding flow but in "add" mode (saves to ConnectionHistory without auto-connecting). Add a mode: .firstLaunch | .addAdditional parameter to the connection screen.
  • Link from MainSettingsView.swift under the Connection section ("Saved Bridges" row).
  • Empty state: "No saved bridges yet" with an Add Bridge call-to-action (used after a user removes everything).

Files

  • New: Shellbee/Features/Settings/SavedBridgesView.swift
  • Edit: Shellbee/Features/Settings/MainSettingsView.swift — add nav link.
  • Edit: Shellbee/Features/Connection/* (esp. the root view + view model) — accept a mode parameter; suppress auto-connect in .addAdditional.
  • Remember to add the new file to the widget target's membershipExceptions in Shellbee.xcodeproj/project.pbxproj if it imports AppEnvironment.

Verification

  • Build & run on simulator. Add three bridges; rename one; remove one; set a different default; relaunch — list and default persist.
  • Tap a non-active bridge → app reconnects to it; switcher reflects active state.
  • For the "add without connecting" path, point the second entry at a junk host. Confirm it's saved without forcing a connection error UI.

Phase

Phase 1 of multi-bridge support. Depends on #1.1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions