- Extract state management into add-widget-dialog-reducer.ts
- Extract step components (TypeStep, SourceStep, ConfigStep) into add-widget-steps.tsx
- Replace 22 useState calls with single useReducer for cleaner state management
- Move constants (WIDGET_TYPES, CHART_TYPES, KPI_FORMATS) to reducer file
- Main dialog file reduced from 700+ to 305 lines
- Stop active refresh cron job before removing dashboard from storage
- Integrate AIWidgetSuggestion component into AddWidgetDialog
- Add preview data button to fetch sample data for AI analysis
- Auto-fill widget config fields when user selects an AI suggestion
Pre-configured dashboard with 10 widgets ready for import:
- 4 KPIs: MRR, Active Users, Total Orgs, Conversion Rate
- 2 Charts: Revenue Trend (area), Organizations by Plan (bar)
- 1 Pie Chart: Revenue by Plan
- 3 Tables: Top Customers, Recent Signups, Recent Activity
Replace YOUR_CONNECTION_ID with your PostgreSQL connection ID after import.
Add ready-to-use queries for showcasing the dashboard feature:
- KPIs: MRR, active users, total orgs, conversion rate
- Charts: revenue trends, signups, events by type, plan distribution
- Tables: recent signups, top customers, event log
Works with the existing acme_saas_seed.sql database.
- Replace setTimeout-based scheduling with node-cron for precise timing
- Add "New Schedule" button to empty state in sidebar
- Add cron expression validation before scheduling
- Remove comment dividers per style preference
* feat(web): add blog with MDX support and sitemap integration
- Add blog infrastructure using next-mdx-remote for MDX rendering
- Create blog listing page at /blog with terminal-inspired design
- Add dynamic blog post pages at /blog/[slug]
- Convert existing notes to blog posts (AI assistant, performance analyzer)
- Update sitemap to dynamically include blog posts
- Add Blog link to header and footer navigation
- Style blog content with terminal-themed code blocks and typography
* chore: update a few design changes.
* feat: introduce terminal-style headers for blog post cards and update MDX code block circle colors
* feat: Remove two blog posts and an AI implementation note, update blog infrastructure, and add a reading progress component.
* fix: escape MDX-incompatible characters in blog post
Replace `<1000` and `>10000` with plain text to avoid MDX interpreting
them as JSX tags.
- Add ScheduledQuery and ScheduledQueryRun types to shared package
- Create scheduler service in main process with cron-parser for scheduling
- Add IPC handlers for scheduled queries CRUD operations
- Update preload to expose scheduled queries API
- Create Zustand store for scheduled queries state management
- Add UI components:
- ScheduledQueriesDialog for listing and managing schedules
- ScheduledQueryFormDialog for creating/editing schedules
- ScheduledQueryRunsDialog for viewing run history
- ScheduledQueries sidebar component
- Support schedule presets (every minute, hourly, daily, etc.) and custom cron
- Include desktop notifications on completion/error
- Store run history with configurable retention
- Add blog infrastructure using next-mdx-remote for MDX rendering
- Create blog listing page at /blog with terminal-inspired design
- Add dynamic blog post pages at /blog/[slug]
- Convert existing notes to blog posts (AI assistant, performance analyzer)
- Update sitemap to dynamically include blog posts
- Add Blog link to header and footer navigation
- Style blog content with terminal-themed code blocks and typography
* 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
- Reorganize README features into logical categories (Core, AI Assistant,
Query Editor, Performance Analysis, Data Management, Visualization, UX)
- Add previously undocumented features (Table Designer, JSON Editor,
Export, Foreign Key Navigation, Benchmark Mode)
- Add rule to CLAUDE.md requiring feature updates across README, docs,
and web when adding new features
* feat: add sitemaps for web and docs
- Add sitemap.ts for Next.js web app with 4 pages (/, /download, /privacy, /terms)
- Add sitemap.xml route for TanStack Start docs with all 31 documentation pages
- Configure appropriate priorities and change frequencies for SEO
* fix: use static sitemap for docs instead of dynamic route
- Replace dynamic sitemap.xml.ts route with static public/sitemap.xml
- Add robots.txt for docs site pointing to sitemap
- Add robots.ts for web app with sitemap reference and API exclusion
---------
* docs: add MSSQL and SQLite database support documentation
- Add Microsoft SQL Server documentation page
- Add SQLite database support documentation page
- Update database support index with all 4 supported databases
- Add feature comparison table for all databases
- Update meta.json to include new pages
* docs: comprehensive documentation update for v0.7.0 features
- Add AI Assistant feature documentation with BYOK setup guide
- Add SSH Tunnels documentation for secure remote connections
- Add Query Telemetry documentation with benchmark mode
- Add Command Palette documentation
- Add Multi-Window support documentation
- Update features index with new feature categories
- Update keyboard shortcuts with new shortcuts (Cmd+K, Cmd+I, etc.)
- Update settings documentation with query timeout and AI settings
- Update README with SQLite support, SSH tunnels, and latest features
- Update README to reflect macOS code signing (v0.4.0+)
* feat: update marketing website with latest features
- Add Query Telemetry feature with benchmark mode description
- Add SSH Tunnels feature for secure connections
- Update Multi-Database to include SQLite
- Update hero section to mention SQLite support
* docs: add images to feature documentation
- Add AI Assistant screenshots (query generation, chart generation)
- Add Command Palette screenshot
- Add TODO placeholders for telemetry and SSH tunnel screenshots
* fix: docs homepage button and light mode issues
- Update tagline to include all 4 databases (PostgreSQL, MySQL, SQL Server, SQLite)
- Replace hardcoded dark colors with Tailwind theme variables for light/dark mode support
- Fix button hover state to maintain text visibility
* feat: add query telemetry and multi-window images
Docs:
- Add query-telemetry.png to Query Telemetry page
- Add multi-window.png to Multi-Window page
- Add erd.png to ER Diagrams page
Web app:
- Add Query Telemetry screenshot section
- Add Multi-Window screenshot section
- Import AppWindow icon for multi-window section
* fix: use actual app icon on docs homepage
* fix: ensure docs homepage button text is visible
Use inline style for button text color to override theme styles
that were causing the "Read the Docs" text to be invisible on the
cyan background.
* refactor: use lucide-static icons on docs homepage
Replace inline SVG elements with lucide-static imports for cleaner,
more maintainable code. Added Icon helper component to render the
SVG strings with custom classes.
* fix: enable light/dark mode switching in docs
- Remove forcedTheme and hardcoded dark class from RootProvider
- Add separate light theme CSS variables
- Make color-scheme responsive to theme class
- Use CSS variables for grid pattern background
- Add theme-aware navbar background colors
* fix: address CodeRabbit review comments in docs
- Add cross-platform command palette shortcuts in settings
- Use Windows backslash convention for settings path
- Rename "Query plans (EXPLAIN)" to "Query execution plans"
- Fix compound adjective "Floating-point" in sqlite docs
- Replace vague "very large" with specific "10+ GB" sizing
- Add model maintenance note and provider error disclaimer
- Bundle external images locally to avoid URL fragility
- Fix backtick shortcut rendering in multi-window docs
- Remove TODO comment from ssh-tunnels docs
---------
Co-authored-by: Claude <noreply@anthropic.com>
* feat: add multi-window support with connection sync
- Add WindowManager class to track and manage multiple windows
- Refactor main process to use WindowManager instead of single mainWindow
- Add cascade positioning for new windows (30px offset)
- Update auto-updater to broadcast to all windows
- Add connection sync across windows via IPC broadcast
- Windows share connection list but have independent tabs/state
* feat: add settings popup and menu shortcuts
- Add New Window menu item (Cmd+Shift+N / Ctrl+Shift+N)
- Add Settings menu item with Cmd+, shortcut (macOS standard)
- Add Settings to File menu for Windows/Linux (Ctrl+,)
- Wire up SettingsModal to open from menu via IPC
- Add onOpenSettings and onConnectionsUpdated to preload API
* chore: fix linting issues
* feat: add configurable query timeout setting
Add a global query timeout setting in Settings → Database that applies
to all database connections (PostgreSQL, MySQL, MSSQL).
Changes:
- Add queryTimeoutMs to QueryOptions interface
- PostgreSQL: uses SET statement_timeout
- MySQL: uses SET SESSION max_execution_time
- MSSQL: uses per-request timeout on request object
- Add Database section to Settings page with timeout input (in seconds)
- Pass timeout through IPC from renderer to main process
- Remove per-connection timeout from MSSQL advanced options
- Default: 0 (no timeout) to allow long-running queries
Closes#58
* fix: add input validation for query timeout to prevent injection
- Add type validation (typeof, Number.isFinite) for queryTimeoutMs in all adapters
- Use parameterized set_config() for PostgreSQL instead of string interpolation
- Handle NaN from invalid input in settings modal
- Update preload type definitions with queryTimeoutMs parameter
* feat: add SQLite database support
Implement SQLite adapter using better-sqlite3 library:
- Create SQLiteAdapter class implementing DatabaseAdapter interface
- Support all database operations: query, queryMultiple, execute, executeTransaction
- Implement schema discovery using SQLite PRAGMAs (table_info, foreign_key_list, index_list)
- Add SQLite type normalization (INTEGER, TEXT, REAL, BLOB affinities)
- Support EXPLAIN QUERY PLAN for query analysis
- Add comprehensive unit tests for SQLite adapter
- Update query-tracker to handle SQLite (synchronous, non-cancellable)
- Enhance AI service with SQLite-specific SQL guidelines
Note: SQLite uses 'main' as the default schema and doesn't support
sequences or custom types - these methods return empty arrays.
* feat: add SQLite to connection dialog UI
- Add SQLiteIcon component to database-icons.tsx
- Add SQLite button to database type selector (now 4-column grid)
- Show SQLite-specific form with only database file path input
- Hide host, port, user, password fields for SQLite
- Disable SSH/SSL options when SQLite is selected
- Update validation to only require database path for SQLite
* feat: add libSQL/Turso adapter for remote SQLite connections
- Add LibSQLAdapter for connecting to Turso and libSQL databases
- Update db-adapter to route libsql mode connections to LibSQLAdapter
- Extend connection dialog UI with libsql mode selection
- Add libsql-client dependency
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: simplify SQLite to local file-only, remove libSQL/Turso temporarily
Remove @libsql/client dependency due to native module bundling issues
with electron-vite. SQLite now only supports local file-based databases.
Changes:
- Remove @libsql/client from package.json
- Delete libsql-adapter.ts
- Update db-adapter.ts to remove libSQL routing
- Simplify connection dialog to only show file path input for SQLite
- Add "coming soon" note for Turso/libSQL support
- Simplify SQLiteMode type to just "local"
Turso/libSQL support will be re-added once native module bundling
issues are resolved.
---------