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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed

- Welcome window sometimes failed to open on launch (and Dock-icon clicks did nothing) when the previous session restored only main connection windows. `WindowOpenerBridge` was mounted only in the Welcome scene and used `.onAppear`, so if Welcome got `orderOut`'d before its first appearance the bridge never wired and every `openWelcome()` call queued forever. The bridge now mounts in all four SwiftUI scenes (Welcome, ConnectionForm, IntegrationsActivity, Settings) and uses `.task` so wiring fires reliably whenever any scene materializes
- Plugin upgrades for built-in drivers (MySQL, PostgreSQL, SQLite, ClickHouse, Redis, etc.) no longer revert to the bundled version after restart. Discovery now scans both built-in and user plugin directories, picks the newest version by `CFBundleShortVersionString`, and only prunes user copies that are older than or equal to the built-in (#1192)
- Concurrent plugin installs from the registry can no longer race past the `isInstalling` guard; the lock now wraps `installFromRegistry` and `updateFromRegistry` end-to-end
- Plugin manager's `waitForInitialLoad` no longer leaks a continuation when its 10-second timeout fires before initial load completes
Expand Down
3 changes: 3 additions & 0 deletions TablePro/TableProApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,7 @@ struct TableProApp: App {

WindowGroup("New Connection", id: SceneId.connectionForm, for: UUID?.self) { $editingId in
ConnectionFormView(connectionId: editingId ?? nil)
.background(WindowOpenerBridge())
.background(WindowChromeConfigurator(restorable: false))
.environment(\.appServices, .live)
}
Expand All @@ -662,6 +663,7 @@ struct TableProApp: App {

Window("Integrations Activity", id: SceneId.integrationsActivity) {
IntegrationsActivityView()
.background(WindowOpenerBridge())
.environment(\.appServices, .live)
}
.windowResizability(.contentMinSize)
Expand All @@ -676,6 +678,7 @@ struct TableProApp: App {

Settings {
SettingsView()
.background(WindowOpenerBridge())
.environment(updaterBridge)
.environment(\.appServices, .live)
}
Expand Down
2 changes: 1 addition & 1 deletion TablePro/Views/Infrastructure/WindowOpenerBridge.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ internal struct WindowOpenerBridge: View {
var body: some View {
Color.clear
.frame(width: 0, height: 0)
.onAppear { wireUp() }
.task { wireUp() }
}

private func wireUp() {
Expand Down
Loading