Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
3828e19
fix(mcp): app-modal auth alert, strip trailing semicolons, decode + a…
datlechin Apr 30, 2026
61ad2ae
refactor(ui): centralize cross-process alerts in AlertHelper
datlechin Apr 30, 2026
cd0fb21
refactor(concurrency): introduce OnceTask, migrate MCP dedup sites
datlechin Apr 30, 2026
f3e2d67
refactor(mcp): replace router switch with route registry
datlechin Apr 30, 2026
7212fe3
Merge Wave 1C: MCP route registry refactor
datlechin Apr 30, 2026
d6db53c
Merge Wave 1A: OnceTask + MCP dedup migrations
datlechin Apr 30, 2026
b5e909c
Merge Wave 1B: AlertHelper cross-process methods
datlechin Apr 30, 2026
480b846
refactor(schema): single SchemaService for sidebar state and table li…
datlechin Apr 30, 2026
f312167
refactor(mcp): MCPAuthPolicy gate, typed session/pairing lifecycles (…
datlechin Apr 30, 2026
82d82f5
refactor(lifecycle): typed launch coordinator, grammar parser, tab ro…
datlechin Apr 30, 2026
246d889
Merge Wave 2B: MCPAuthPolicy + typed session/pairing lifecycles
datlechin May 1, 2026
5ed1861
Merge Wave 2A: SchemaService + state machine
datlechin May 1, 2026
3454f32
Merge Wave 2C: AppLaunchCoordinator + DeeplinkParser + TabRouter
datlechin May 1, 2026
921b334
fix(refactor): post-merge build fixes for Wave 2 integration
datlechin May 1, 2026
b11fc72
refactor(welcome): imperative NSWindow factory replaces SwiftUI Scene…
datlechin May 1, 2026
4366029
chore(refactor): drop dead notifications, wire SQL file drain
datlechin May 1, 2026
717a3ff
refactor(connection-form): imperative NSWindow factory replaces Swift…
datlechin May 1, 2026
8b0cf35
fix(tabrouter): focus existing table tab when deeplink targets alread…
datlechin May 1, 2026
bf377c9
fix(switcher): route through TabRouter so .restoreOrDefault intent ap…
datlechin May 1, 2026
761ae20
Update .gitignore
datlechin May 1, 2026
a67b84d
refactor(review): address PR #958 reviewer findings
datlechin May 1, 2026
d39ee66
fix(setup): always create default tab when restoreOrDefault has no pe…
datlechin May 1, 2026
a308925
fix(tabs): number new query tabs across all windows for the connection
datlechin May 1, 2026
7ffa56d
fix(setup): empty workspace as default for new connection (no auto qu…
datlechin May 1, 2026
f2aad59
refactor(tab-router): add openQuery dedup, route openTable through fa…
datlechin May 1, 2026
865348e
refactor(polish): fix safeMode dialog window race, strip Sessions com…
datlechin May 1, 2026
68e29d9
refactor(routing): unify connection-open paths through TabRouter
datlechin May 1, 2026
3d67538
Merge Wave 2 refactor: routing unification + tab router completeness …
datlechin May 1, 2026
6702cd1
refactor(persistence): track save Task, clear empty-payload files, es…
datlechin May 1, 2026
f862399
refactor(state): cross-window correctness + lifecycle leak fixes
datlechin May 1, 2026
e2cc21a
Merge Wave 2 refactor: cross-window state, persistence integrity, lif…
datlechin May 1, 2026
e40218a
refactor(round2-review): fix 9 PR #958 review findings
datlechin May 1, 2026
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 @@ -73,6 +73,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Data grid cell focus ring redraws when the user toggles Light or Dark mode mid-session, picking up the system's appearance-aware focus indicator color
- Data grid keeps sortedIDs and cachedRowCount paired by calling updateCache() immediately after the SwiftUI bridge writes new sortedIDs to the coordinator, removing a window where the cached count and the sort permutation could disagree
- Display formats memoized per tab on MainContentCoordinator keyed by schema version, smart-detection setting, and format-overrides version, so ValueDisplayDetector.detect runs once per result schema instead of on every SwiftUI body evaluation
- MCP HTTP router replaced with a route registry. `MCPRouter` now matches paths and methods against a list of `MCPRouteHandler` values; `/mcp` traffic and `/v1/integrations/exchange` traffic each live in their own handler file under `Core/MCP/Routes/`. OPTIONS preflight is handled once at the router level for every path
- `MCPAuthGuard` and `MCPConnectionBridge` route concurrent dedup through a shared `OnceTask` actor (`Core/Concurrency/OnceTask.swift`). Cleanup of in-flight slots happens in `defer` inside the actor, so a cancelled or thrown caller no longer leaves a stale entry behind.

### Removed (BREAKING)

Expand All @@ -91,6 +93,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Persist group deletions before firing the sync notification, fixing a race that could re-upload deleted groups via iCloud.
- Persist connection deletions before firing the sync notification, fixing the same race for deleted connections.
- Refuse to generate SQL when the database dialect cannot be resolved, instead of silently emitting unquoted identifiers.
- MCP `execute_query`: strip trailing semicolons before appending `LIMIT/OFFSET`, fixing `syntax error at or near LIMIT` for queries like `select * from t;`.

## [0.36.0] - 2026-04-27

Expand Down
2 changes: 1 addition & 1 deletion TablePro.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -459,9 +459,9 @@
5AF312BE2F36FF7500E86682 /* Exceptions for "TablePro" folder in "TablePro" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
CLI/main.swift,
CLI/MCPBridgeProxy.swift,
Info.plist,
);
target = 5A1091C62EF17EDC0055EA7C /* TablePro */;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
</BuildAction>
<TestAction
buildConfiguration = "Debug"
codeCoverageEnabled = "NO"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
Expand Down
Loading
Loading