Version History & General Improvements
✨ Features
- Jobs Table: Added "Last Run" and "Next Run" columns to the Backup Jobs table. "Last Run" shows the start time of the most recent execution. "Next Run" is computed from the job's cron schedule using the system timezone and displayed in the user's configured timezone and date/time format.
- Clone Modal: Cloning a Job, Source, Destination, or Notification now opens a confirmation dialog where the name for the clone can be customized before it is created. The default name is pre-filled as "Original Name (Copy)".
- Database Explorer: Added a new "Version History" tab per source showing the current engine version, a step-line timeline chart of detected version changes over time, and a change log table (previous version → new version, edition, detected at). History entries are persisted to a new
DbVersionHistorytable. - System Tasks: The hourly "Update Database Versions" task now records a new
DbVersionHistoryentry whenever the detected server engine version (or edition for MSSQL) changes since the last check. The first observation per source is stored as a baseline. - Notifications: Added a new
db_version_changedsystem notification event that fires when a database server's engine version changes between two consecutive checks. The initial baseline observation does not trigger a notification.
🐛 Bug Fixes
- mssql: Fixed Database Explorer showing "No tables found" for databases that use non-dbo schemas - tables in all schemas are now returned and displayed with a
schema.tableprefix for non-dbo objects. - mssql: Fixed "Total Size" showing "undefined" in the Database Explorer General tab - BIGINT size values returned as strings by the database driver are now converted to numbers.
🔒 Security
- deps: Updated
better-auth,@better-auth/passkey,@better-auth/sso1.6.9 → 1.6.13 (GHSA-34r5-q4jw-r36m SAML XML injection, passkey replay attack). Added pnpm overrides:fast-xml-builder→^1.2.0(GHSA-5wm8-gmm8-39j9 HIGH + GHSA-45c6-75p6-83cc, viawebdav),brace-expansion@5→5.0.6(GHSA-jxxr-4gwj-5jf2, viaeslint-config-next),qs→^6.15.2(GHSA-q8mj-m7cp-5q26, viagoogleapis),uuid→^11.1.1(GHSA-w5hq-g745-h8pq, viamssql > tedious > @azure/msal-node).
🎨 Improvements
- storage: SFTP, FTP, SMB, Rsync, and OneDrive adapters now reuse a single connection for the metadata sidecar (
.meta.json) and the backup file upload per job. Previously each upload performed a full connect/auth/disconnect cycle, doubling the SSH/FTP handshake and OneDrive OAuth token requests. Introduced an optionalopenSession()method on theStorageAdapterinterface, adapters without it transparently fall back to the previous stateless behavior, so S3, WebDAV, Dropbox, Google Drive, and local filesystem remain unchanged.
🔧 CI/CD
- deps: Updated
next+eslint-config-next16.2.4 → 16.2.6,react+react-dom19.2.5 → 19.2.6,mssql12.5.0 → 12.5.5,nodemailer8.0.7 → 8.0.10,basic-ftp6.0.0 → 6.0.1,zod4.4.1 → 4.4.3,vitest+@vitest/coverage-v84.1.5 → 4.1.7,@types/react19.2.14 → 19.2.15,vue(docs) 3.5.28 → 3.5.35,@aws-sdk/client-s3+@aws-sdk/lib-storage3.1039.0 → 3.1057.0,@hookform/resolvers5.2.2 → 5.4.0,date-fns4.1.0 → 4.4.0,lucide-react1.14.0 → 1.17.0,react-hook-form7.74.0 → 7.77.0,tailwind-merge3.5.0 → 3.6.0,tailwindcss+@tailwindcss/postcss4.2.4 → 4.3.0. - deps: Added pnpm override
kysely→0.28.17to work around a bug in@better-auth/kysely-adapter@1.6.13that imports the removedDEFAULT_MIGRATION_LOCK_TABLEexport fromkysely@0.29.x, which Turbopack now catches as a hard build error.
🐳 Docker
- Image:
skyfay/dbackup:v2.5.0 - Also tagged as:
latest,v2 - CI Image:
skyfay/dbackup:ci - Platforms: linux/amd64, linux/arm64