Skip to content

Import: TablePlus (Setapp edition) reported as "not installed" #1528

@joshuaoliver

Description

@joshuaoliver

What happened?

When importing connections from TablePlus, TablePro reports "TablePlus is not installed" even though TablePlus is installed and running.

The installed copy is the Setapp edition of TablePlus, which uses a different bundle identifier and data folder than the standalone edition that TablePlusImporter hardcodes:

  • Standalone (direct download): com.tinyapp.TablePlus
  • Setapp: com.tinyapp.TablePlus-setapp

Because the importer only ever references the standalone id, isAvailable() returns false for the Setapp edition and import is blocked before it starts.

Root cause (current main)

TablePro/Core/Services/Export/ForeignApp/TablePlusImporter.swift hardcodes one edition's id and paths:

let appBundleIdentifier = "com.tinyapp.TablePlus"
var connectionsFileURL = …/"Library/Application Support/com.tinyapp.TablePlus/Data/Connections.plist"
var groupsFileURL      = …/"Library/Application Support/com.tinyapp.TablePlus/Data/ConnectionGroups.plist"

TablePro/Core/Services/Export/ForeignApp/ForeignAppImporter.swift — the install gate resolves only that id:

func installedAppURL() -> URL? {
    NSWorkspace.shared.urlForApplication(withBundleIdentifier: appBundleIdentifier) // "com.tinyapp.TablePlus"
}
func isAvailable() -> Bool { installedAppURL() != nil }

The protocol's own doc comment anticipates this case — "Importers whose source app ships in multiple editions … should override installedAppURL() to look those up as well" — but TablePlusImporter doesn't do it.

Note there are two layers to the bug: even if detection passed, connectionsFileURL/groupsFileURL still point at the com.tinyapp.TablePlus folder, so a Setapp user's actual connections (in com.tinyapp.TablePlus-setapp/Data/) would not be read.

Steps to reproduce

  1. Install TablePlus via Setapp (bundle id com.tinyapp.TablePlus-setapp), with no standalone copy present.
  2. In TablePro, start the "import from another app" flow and choose TablePlus.
  3. TablePro shows "TablePlus is not installed."

Expected behavior

TablePro should detect the Setapp edition of TablePlus (com.tinyapp.TablePlus-setapp) and import connections from that edition's data folder.

More broadly, TablePlusImporter assumes a single hardcoded edition; other distributions of TablePlus likely need handling too. I've only verified the Setapp case here, so I've deliberately not asserted bundle ids for editions I couldn't confirm. The keychain service (com.tableplus.TablePlus) appears to be shared across editions, so likely only app detection and the two file paths need to become edition-aware.

Database type

N/A

TablePro version

0.47.0

macOS version & chip

macOS 26.3.1 / Apple Silicon (arm64)

Screenshots / Logs

None.


Happy to open a PR that makes TablePlusImporter edition-aware (override installedAppURL() to try the known editions, and derive the data paths from whichever is found) if that'd be welcome.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions