* feat: add server-side pagination for table previews
- Add page size selector with options (25, 50, 100, 250, 500)
- Persist user's preferred page size in settings
- Add jump-to-page input for quick navigation
- Show "Rows X-Y of Z" instead of "Page X of Y"
- Implement server-side pagination for table preview tabs:
- Query uses LIMIT/OFFSET instead of loading all rows
- COUNT query fetches total for pagination UI
- Page changes trigger re-query with new offset
- Fix stale closure issue by reading fresh state from store
* chore: small fix
* feat: add support for multiple result sets in query editor
Implements multiple result sets feature found in TablePlus, DBeaver, and DataGrip.
When executing multiple SQL statements separated by semicolons, each statement's
results are displayed in separate tabs within the results pane.
Changes:
- Add StatementResult and MultiStatementResult types to shared package
- Update PostgreSQL, MySQL, and MSSQL adapters with queryMultiple() method
- Add SQL statement splitter that respects string literals and comments
- Update tab store with multiResult support and activeResultIndex
- Add result set tabs UI in tab-query-editor when multiple statements present
- Each result shows row count, affected rows (for non-SELECT), and timing
The UI displays clickable result tabs above the data table when multiple
statements are executed. Green indicators show data-returning statements
(SELECT), blue for row-affecting statements (INSERT/UPDATE/DELETE).
* feat: add DpStorage facade with automatic corruption recovery
- Create storage.ts with DpStorage and DpSecureStorage classes
- Implement facade pattern for electron-store with auto-recovery
- Corrupted JSON files are automatically deleted and recreated
- Refactor all stores to use the new facade:
- index.ts: connections, saved queries
- license-service.ts: license data
- window-state.ts: window bounds
- ai-service.ts: AI config, chat history
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: add auto updated
* feat: add build:web and build:docs scripts for Vercel deployments
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: use safeStorage for encryption keys and improve updater UX
- Use Electron's safeStorage to derive machine-specific encryption keys
for connections and saved queries stores instead of hardcoded values
- Fix updater comment/behavior mismatch: now correctly documents that
automatic checks download silently while manual checks prompt user
- Add proper dialog handling for manual update checks (shows update
available, no updates, and error dialogs appropriately)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Add turbo as dev dependency
- Create turbo.json with task configuration for build, lint, typecheck, dev
- Update root package.json scripts to use turbo run
- Add tsconfig.json to shared package (required for typecheck)
- Add .turbo to clean script
Benefits:
- Caching: Unchanged packages skip rebuilding (73ms cached vs 5.4s uncached)
- Parallelism: Independent tasks run concurrently
- Dependency ordering: shared package builds before dependent packages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
* fix: pin electron version for electron-builder compatibility
Remove semver range (^) from electron dependency to fix
"Cannot compute electron version from installed node modules" error
during postinstall.
Fixes#6🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* chore: fix lock files
* chore: fix lock file
---------
Co-authored-by: Claude <noreply@anthropic.com>
* db: drizzle migrations
* feat: implement user feedback!
Thanks @Mihaly_NC for the feedback!
* feat: expandable and collapsible query panel
* chore: formatting
* chore: bump version
* chore: fix a small oopsie
The root build:win/mac/linux scripts were calling electron-builder
directly, but it's only installed in the desktop workspace. Changed
to delegate to the workspace scripts via pnpm --filter.