Changelog

What changed, release by release.

Every public release since 1.0, with the changes that shipped in it. The app checks for updates on its own — this page is where you look up what those updates changed.

v1.0.20Latest

A usability release based on a full UX audit of the app, plus a deep SQL-generation audit that fixed 29 real bugs.

Improved

  • The data-sync tab now has the same bottom SQL panel as the schema-diff tab. The sync SQL is generated as you select tables — replacing the separate preview button and modal — and the panel supports drag-resize, collapsing to a slim bar, and a zoom view.
  • The preview always matches what will actually run. Tables the pre-check will skip at execution — for example values that cannot be represented in the destination charset — are excluded from the preview SQL and listed as comments at the top of it.
  • Pre-flight progress is now visible. While pre-execution checks (cast safety, NOT NULL, UNIQUE and so on) run, the panel shows a live "Running pre-checks… (N completed)" counter instead of appearing stuck at 0%.
  • Deselecting an item tells you what else it took with it: a toast shows how many dependent differences were removed along with it.
  • The list stays truthful after a failed run. When execution fails and rolls back, the app re-compares automatically so the difference list reflects the actual database state.
  • Clearer guidance for "manual fix required" items. The confirmation dialog now spells out both options: copy the SQL and fix it in an external client, or exclude the items ("Exclude all" works too).
  • The cross-dialect notice moved below the SQL preview so it no longer pushes the SQL down.
  • Per-row actions in the connection manager: each row now has test-connection, edit, and delete buttons — no need to open the edit dialog just to delete or test a saved connection.
  • Unsaved changes are protected. Closing the add/edit connection dialog with unsaved changes now asks for confirmation, and confirmation dialogs (discard / delete) no longer appear behind the edit dialog.
  • Fixing a broken connection recovers automatically. After editing and saving a connection that was in an error state, the database list is fetched again automatically.
  • Loading indicators on the database / schema pickers, so slow connections (for example via SSH tunnels) no longer look unresponsive.
  • Elapsed time is shown while a backup or restore is running, so long operations are visibly alive even though the native CLI tools do not report percentage progress.

Fixed

  • Fixed 29 real SQL-generation bugs surfaced by torture-schema verification across all five dialects.
  • Schema deletion is blocked up front when CASCADE is required. For non-empty PostgreSQL / SQL Server schemas the delete button stays disabled until "delete contents (CASCADE)" is checked, instead of failing after you typed the confirmation name. A failed content count no longer shows "already empty" and can be retried in place.
  • Permission re-check is available when access is denied, not only while loading or after a fetch failure — useful right after a DBA grants you the missing privilege.

v1.0.19

A maintenance release that began rolling out the usability audit results.

Improved

  • UI improvements from the usability audit (the details are listed under v1.0.20).
  • Reworked the delivery path for the Microsoft Store submission package.

v1.0.18

Closed two cases where a difference could disappear silently.

Fixed

  • When several table-level settings changed at once (a table comment together with ROW_FORMAT / ENGINE and so on), the later difference was silently dropped. Table options are now collected into a single entry.
  • A primary-key change created an implicit foreign key that could swallow a same-named foreign key with a real difference, re-creating the old definition and leaving a residual difference forever.

Improved

  • The "changed" badge on tables now distinguishes a comment-only change from a change that includes other table options.

v1.0.17

Small improvements to the sync SQL panel.

Improved

  • Added a collapse toggle and a zoom modal to the sync SQL panel.

Fixed

  • Fixed two untranslated strings in the change details.

v1.0.16

Fixes from the syntax-coverage audit of MySQL and SQL Server.

Fixed

  • Fixed five real bugs found by cross-checking MySQL against its syntax diagrams, plus a case where a difference was reported for something that was not actually different.
  • SQL Server: IDENTITY(seed, inc) on table types (TVP) and the GRIDS setting of spatial indexes were not being read.

v1.0.15

A SQLite DDL generation fix.

Fixed

  • SQLite: a foreign key written without its referenced columns produced DDL that would not run.

v1.0.14

Fixed missed differences in SQLite-to-SQLite comparison.

Fixed

  • SQLite: differences in primary-key parts, ON CONFLICT clauses, and DEFERRABLE on foreign keys were not detected.

v1.0.13

Incremental search when picking what to compare, plus diff-list cleanups.

New

  • Added incremental search to the selects used to pick what to compare.

Fixed

  • Foreign keys that differ only by name are no longer listed as a difference (both same-dialect and cross-dialect).
  • Fixed row backgrounds in the SQL preview not matching the panel background.

v1.0.12

The big one: a feature-coverage matrix was introduced for every dialect, and every real bug it surfaced was fixed.

Fixed

  • Introduced a feature-coverage matrix across MySQL / MariaDB, PostgreSQL, SQL Server and SQLite, and cleared every gap it found — 156 outstanding items on PostgreSQL and 68 on SQL Server went to zero, and MySQL went from 265 failures to none.
  • Fixed a nondeterminism bug where the order of the difference list changed between runs.
  • PostgreSQL / SQL Server: when several table attributes changed at once, the second and later ones vanished silently.
  • Partition differences that cannot be applied are no longer detected as differences.
  • MySQL / MariaDB: table default charset and collation are now compared, and column charsets are compared by effective value.

New

  • SQL Server: table types (TVP) are now synced.
  • MariaDB: VECTOR indexes (11.7+), WITHOUT OVERLAPS on UNIQUE / PRIMARY KEY (10.5+), and table encryption settings are now synced.
  • MySQL: index attributes behind UNIQUE constraints (USING HASH, COMMENT, INVISIBLE and so on) and the relative execution order of triggers are now synced.

v1.0.11

A full audit pass over SQL Server-to-SQL Server comparison.

New

  • SQL Server: CLR modules, user-created statistics (CREATE STATISTICS), ordered clustered columnstore indexes, IGNORE_DUP_KEY, database-level comments, and additional column attributes are now synced.
  • A warning is shown for columns protected with Always Encrypted.

Fixed

  • Cleared every remaining gap in SQL Server-to-SQL Server comparison, including six bug-level defects.

Improved

  • The recommended version of pg_dump / psql is now stated as "latest".

v1.0.10

A full audit pass over PostgreSQL-to-PostgreSQL comparison.

Fixed

  • Fixed 28 gaps in PostgreSQL-to-PostgreSQL comparison at once — constraints are now read straight from the catalog, and PostgreSQL-specific objects, attributes and COMMENTs are covered.
  • Added operator class support and absorbed the differences between PostgreSQL 17 and 18.
  • Triggers cloned from a partition parent to its children are excluded from the diff; fixed RANGE partition options, ICU collation rules, and five kinds of missing comments.
  • Data sync: columns of a PostgreSQL DOMAIN type were dispatched by the domain name instead of the base type.

New

  • Schema sync from a newer server version down to an older one (same dialect) is now blocked.

v1.0.9

Remaining items from the quality audit.

Fixed

  • Fixed missed dependency chains, constraints lost when all columns are replaced at once, MySQL-family escaping, and other audit leftovers.
  • SQLite: false positives in the AUTOINCREMENT / COLLATE keyword search.

v1.0.8

More accurate column-rename detection.

Fixed

  • Column renames are no longer misdetected: detection now also checks foreign-key targets and column order, while renames that the context can justify are still picked up.
  • Fixed a batch of bugs found by a codebase-wide quality audit.

v1.0.7

A MySQL 5.7 compatibility fix.

Fixed

  • MySQL 5.7: schema reads failed entirely because srs_id was queried unconditionally. It is now read only on MySQL 8.0+.

v1.0.6

Attributes that were being dropped are now synced, in every dialect.

Fixed

  • Added 32 constraint, index and column attributes that were being missed across all dialects.

Improved

  • Long object names no longer overflow the difference list, and hovering scrolls the full name into view.

v1.0.5

A row-level security ordering fix.

Fixed

  • PostgreSQL: RLS is now applied as CREATE POLICY first, then ENABLE ROW LEVEL SECURITY — the order was reversed.

v1.0.4

Row-level security and NOT VALID constraints for PostgreSQL.

New

  • PostgreSQL: row-level security (RLS) is now compared and synced (PostgreSQL-to-PostgreSQL only).

Fixed

  • PostgreSQL: differences in the validity of NOT VALID constraints (CHECK / foreign keys) are now detected and synced.

v1.0.3

Linux joins macOS and Windows as an officially released platform.

New

  • Official Linux release: deb, rpm and tar.gz builds are now published alongside macOS and Windows.

Fixed

  • Trial mode: SQLite was not preselected when adding a connection, and the radio buttons did not show which option was selected.

v1.0.2

The first public release of DiffyPick, for macOS and Windows.

New

  • Visual schema diff and sync for MySQL, MariaDB, PostgreSQL, SQL Server and SQLite — compare any two databases, review the differences, cherry-pick what to apply, and run it.
  • Cross-dialect comparison (for example MySQL to PostgreSQL), with type conversion rules for moving structures between engines.
  • Safety by design: automatic FK dependency ordering, cycle detection, pre-flight checks on real data (cast safety, NOT NULL, UNIQUE), warnings before slow ALTERs, statement-by-statement execution with live progress, and one-click backup with restore from history.
  • Table-level data sync (TRUNCATE + INSERT) with chunked transactions and native bulk loading.
  • Multi-hop SSH tunnels and per-connection SSL/TLS client certificates.
  • Single-file HTML diff reports for team review.
  • Everything runs locally: no telemetry, no cloud sync. Connection details are encrypted at rest with AES-256-GCM, and the key itself is wrapped by the OS keystore (Keychain / DPAPI / libsecret).
  • Fully localized in English and Japanese, down to the warning messages.
  • Signed and notarized on macOS; installer and Microsoft Store builds on Windows.

Versions 1.0.0 and 1.0.1 were internal builds and were never distributed. Entries before 1.0.20 are summarized from the development history rather than copied from the original release notes.

Run the latest version.

macOS, Windows and Linux. Free for SQLite, no account required.