Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- Database switcher now opens as a popover anchored to the database chip in the toolbar, with a checkmark on the active row and direct row-click to switch. Refresh sits beside the search field; New Database is a menu-style footer row that appears only when the engine supports it. ⌘N and ⌘R bind globally inside the popover. Schemas use folder icons; databases keep the cylinder.
- New Database dialog uses the native sheet layout: title in the toolbar, Cancel and Create as toolbar items, wider form so the Name field no longer wraps.
- Drop database now uses the native confirmation dialog instead of a custom sheet.
- Add competitive tracking docs sourced from top TablePlus issues.

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion TablePro.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
objects = {

/* Begin PBXBuildFile section */
5AD1D8C12FB5000000000001 /* TableProMSSQLCore in Frameworks */ = {isa = PBXBuildFile; productRef = 5AD1D8C12FB5000000000002 /* TableProMSSQLCore */; };
5A32BBFB2F9D5EAB00BAEB5F /* X509 in Frameworks */ = {isa = PBXBuildFile; productRef = 5A32BBFA2F9D5EAB00BAEB5F /* X509 */; };
5A32BC0B2F9D659100BAEB5F /* tablepro-mcp in Copy Files */ = {isa = PBXBuildFile; fileRef = 5A32BC002F9D5F1300BAEB5F /* tablepro-mcp */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
5A3A69B82F976F38000AC5B2 /* GhosttyTerminal in Frameworks */ = {isa = PBXBuildFile; productRef = 5A3A69B72F976F38000AC5B2 /* GhosttyTerminal */; };
Expand Down Expand Up @@ -55,6 +54,7 @@
5ACE00012F4F000000000005 /* CodeEditLanguages in Frameworks */ = {isa = PBXBuildFile; productRef = 5ACE00012F4F000000000003 /* CodeEditLanguages */; };
5ACE00012F4F000000000006 /* CodeEditTextView in Frameworks */ = {isa = PBXBuildFile; productRef = 5ACE00012F4F000000000007 /* CodeEditTextView */; };
5ACE00012F4F00000000000A /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = 5ACE00012F4F000000000009 /* Sparkle */; };
5AD1D8C12FB5000000000001 /* TableProMSSQLCore in Frameworks */ = {isa = PBXBuildFile; productRef = 5AD1D8C12FB5000000000002 /* TableProMSSQLCore */; };
5ADDB00100000000000000A1 /* DynamoDBConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ADDB00200000000000000A1 /* DynamoDBConnection.swift */; };
5ADDB00100000000000000A2 /* DynamoDBItemFlattener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ADDB00200000000000000A2 /* DynamoDBItemFlattener.swift */; };
5ADDB00100000000000000A3 /* DynamoDBPartiQLParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ADDB00200000000000000A3 /* DynamoDBPartiQLParser.swift */; };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ struct ConnectionToolbarButton: View {
}

struct DatabaseToolbarButton: View {
let coordinator: MainContentCoordinator
@Bindable var coordinator: MainContentCoordinator

var body: some View {
let state = coordinator.toolbarState
Expand All @@ -38,6 +38,9 @@ struct DatabaseToolbarButton: View {
state.connectionState != .connected
|| PluginManager.shared.connectionMode(for: state.databaseType) == .fileBased
)
.popover(isPresented: $coordinator.isDatabaseSwitcherShown, arrowEdge: .bottom) {
DatabaseSwitcherPopoverHost(coordinator: coordinator)
}
}
}
}
Expand Down
85 changes: 79 additions & 6 deletions TablePro/Resources/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -7427,9 +7427,8 @@
}
}
},
"Backup Dump" : {
"comment" : "A button that triggers a backup of the current database.",
"isCommentAutoGenerated" : true
"Backup Database" : {

},
"Backup Dump Cancelled" : {
"comment" : "A title for a backup result sheet that was cancelled.",
Expand Down Expand Up @@ -9088,6 +9087,9 @@
},
"Choose AI provider and model" : {

},
"Choose Destination…" : {

},
"Choose Dump File" : {

Expand Down Expand Up @@ -13085,6 +13087,7 @@

},
"Create Database" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -13107,6 +13110,7 @@
}
},
"Create new database" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -13453,6 +13457,7 @@
}
},
"current" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -14239,6 +14244,9 @@
}
}
}
},
"Database name" : {

},
"Database Name" : {
"extractionState" : "stale",
Expand Down Expand Up @@ -16590,6 +16598,7 @@
}
},
"Drop database '%@'?" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -16610,8 +16619,12 @@
}
}
}
},
"Drop database “%@”?" : {

},
"Drop Database..." : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -16632,6 +16645,9 @@
}
}
}
},
"Drop Database…" : {

},
"Drop Foreign Table" : {

Expand Down Expand Up @@ -16684,6 +16700,7 @@
}
},
"Drop selected database" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -16772,6 +16789,7 @@
}
},
"Dropping..." : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -17065,6 +17083,7 @@
}
},
"Each SQLite file is a separate database.\nTo open a different database, create a new connection." : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -18010,6 +18029,7 @@
}
},
"Enter database name" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -27346,6 +27366,9 @@
}
}
}
},
"Loading databases…" : {

},
"Loading keys…" : {
"localizations" : {
Expand All @@ -27370,6 +27393,7 @@
}
},
"Loading options..." : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -27390,6 +27414,9 @@
}
}
}
},
"Loading options…" : {

},
"Loading plugins..." : {
"extractionState" : "stale",
Expand Down Expand Up @@ -27437,6 +27464,7 @@
}
},
"Loading schemas..." : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -27457,6 +27485,9 @@
}
}
}
},
"Loading schemas…" : {

},
"Loading tables..." : {
"extractionState" : "stale",
Expand Down Expand Up @@ -29530,6 +29561,15 @@
}
}
}
},
"New Database" : {

},
"New Database (⌘N)" : {

},
"New Database…" : {

},
"New Favorite" : {
"localizations" : {
Expand Down Expand Up @@ -30340,8 +30380,12 @@
}
}
}
},
"No databases" : {

},
"No databases found" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -30364,6 +30408,7 @@
}
},
"No databases match \"%@\"" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -30384,6 +30429,9 @@
}
}
}
},
"No databases match “%@”" : {

},
"No DDL available" : {
"localizations" : {
Expand Down Expand Up @@ -30683,6 +30731,7 @@
}
},
"No matching databases" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -30794,6 +30843,7 @@
}
},
"No matching schemas" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -31217,8 +31267,12 @@
}
}
}
},
"No schemas" : {

},
"No schemas found" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -31241,6 +31295,7 @@
}
},
"No schemas match \"%@\"" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand All @@ -31261,6 +31316,9 @@
}
}
}
},
"No schemas match “%@”" : {

},
"No selection" : {
"localizations" : {
Expand Down Expand Up @@ -32445,6 +32503,9 @@
},
"Open a connection to insert" : {

},
"Open a different file from the Welcome window." : {

},
"Open a table tab in TablePro for the given connection." : {

Expand Down Expand Up @@ -32885,6 +32946,7 @@

},
"Open Schema" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -37606,6 +37668,7 @@
}
},
"Refresh database list" : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -38696,9 +38759,8 @@
}
}
},
"Restore Dump" : {
"comment" : "A button that opens a dialog for restoring a database from a dump.",
"isCommentAutoGenerated" : true
"Restore Database" : {

},
"Restore Dump Cancelled" : {
"comment" : "A title for a result sheet that indicates a restore operation was cancelled.",
Expand Down Expand Up @@ -38741,6 +38803,9 @@
}
}
}
},
"Restore…" : {

},
"Restored “%@” from %@" : {
"localizations" : {
Expand Down Expand Up @@ -40486,8 +40551,12 @@
}
}
}
},
"Search databases" : {

},
"Search databases..." : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down Expand Up @@ -40648,8 +40717,12 @@
},
"Search saved query history. Returns matching entries with execution time, row count, and outcome." : {

},
"Search schemas" : {

},
"Search schemas..." : {
"extractionState" : "stale",
"localizations" : {
"tr" : {
"stringUnit" : {
Expand Down
2 changes: 1 addition & 1 deletion TablePro/Views/Backup/RestoreDatabaseFlow.swift
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ struct RestoreDatabaseFlow: View {
}
.padding(.horizontal, 12)
.padding(.vertical, 8)
.frame(width: 420, alignment: .leading)
.frame(width: 480, alignment: .leading)
}

private var serviceState: PostgresDumpState { service.state }
Expand Down
Loading