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
- Install TablePlus via Setapp (bundle id
com.tinyapp.TablePlus-setapp), with no standalone copy present.
- In TablePro, start the "import from another app" flow and choose TablePlus.
- 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.
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
TablePlusImporterhardcodes:com.tinyapp.TablePluscom.tinyapp.TablePlus-setappBecause the importer only ever references the standalone id,
isAvailable()returnsfalsefor the Setapp edition and import is blocked before it starts.Root cause (current
main)TablePro/Core/Services/Export/ForeignApp/TablePlusImporter.swifthardcodes one edition's id and paths:TablePro/Core/Services/Export/ForeignApp/ForeignAppImporter.swift— the install gate resolves only that id: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" — butTablePlusImporterdoesn't do it.Note there are two layers to the bug: even if detection passed,
connectionsFileURL/groupsFileURLstill point at thecom.tinyapp.TablePlusfolder, so a Setapp user's actual connections (incom.tinyapp.TablePlus-setapp/Data/) would not be read.Steps to reproduce
com.tinyapp.TablePlus-setapp), with no standalone copy present.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,
TablePlusImporterassumes 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
TablePlusImporteredition-aware (overrideinstalledAppURL()to try the known editions, and derive the data paths from whichever is found) if that'd be welcome.