Skip to content

fix: resolve 16 issues from deep analysis of TableProMobile#624

Merged
datlechin merged 7 commits intomainfrom
fix/ios-deep-analysis-fixes
Apr 7, 2026
Merged

fix: resolve 16 issues from deep analysis of TableProMobile#624
datlechin merged 7 commits intomainfrom
fix/ios-deep-analysis-fixes

Conversation

@datlechin
Copy link
Copy Markdown
Member

Summary

  • Fix 3 critical issues: driver Sendable data races, SSHTunnel use-after-free, save-without-password
  • Fix 5 high issues: sync merge overwrites, concurrent reconnect, ForEach crashes, stale pagination data
  • Fix 5 medium issues: MySQL escaping, onboarding UX, toolbar conflicts, iPad navigation, widget docs
  • Fix 4 low issues: query quoting, JSON validity, version format, memory warning handler

Test plan

  • Build TableProMobile successfully
  • Test SSH tunnel connect/disconnect cycles rapidly
  • Test iCloud sync with offline edits (verify local changes preserved)
  • Test rapid background/foreground app switching during connection
  • Test JOIN query results in row detail view (duplicate column names)
  • Test pagination while row detail is open
  • Test connection save with Keychain failure (e.g., full Keychain)
  • Test onboarding iCloud sync flow shows progress indicator
  • Test iPad NavigationSplitView — tap connection populates detail column
  • Test tag management toolbar layout

Critical:
- Fix @unchecked Sendable data race on serverVersion in all drivers
- Fix SSHTunnel use-after-free: acquire sessionLock before freeing session
- Fix ConnectionFormView save proceeding when Keychain storage fails

High:
- Fix sync merge always overwriting local with remote (respect dirty flags)
- Fix concurrent reconnect on rapid foreground/background cycles
- Fix ForEach crash on duplicate column names in RowDetailView
- Fix stale row data after pagination in DataBrowserView

Medium:
- Fix MySQL string escaping (add \0, \n, \r, \x1a, " escaping)
- Fix onboarding sync showing empty list (await sync before completing)
- Fix TagManagementView duplicate toolbar items
- Fix ConnectionListView NavigationSplitView detail not populating on iPad
- Document widget SharedConnectionStore file protection trade-off

Low:
- Fix table name quoting in query template
- Fix NaN/Infinity producing invalid JSON in ClipboardExporter
- Fix PostgreSQL version format for 10+ (two-component, not three)
- Add memory warning handler to DataBrowserView
- SSHTunnel: restore non-blocking session free (detached thread) to avoid
  actor stall, add aliveFlag guard inside locked relay sections to close
  the use-after-free window
- SQLBuilder: remove incorrect double-quote escaping from escapeString
- PostgreSQLDriver: revert OID number separators (protocol constants),
  use swiftlint:disable block instead
- DataBrowserView: fix inconsistent memory warning message
@datlechin datlechin merged commit 8c807a8 into main Apr 7, 2026
1 check passed
@datlechin datlechin deleted the fix/ios-deep-analysis-fixes branch April 7, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant