Implements a complete licensing system following the Yaak-inspired model:
- Open source code (MIT), licensed binaries for commercial use
- Personal use is always free
- Individual ($6/mo) and Team ($10/user/mo) plans
- Perpetual fallback: users keep their version when subscription ends
- Honor system enforcement with 30-day offline grace period
Key components:
- License service in main process with encrypted local storage
- License IPC handlers for check, activate, deactivate operations
- License store (Zustand) for state management
- UI components: status indicator, activation modal, settings modal
- Integration with app header and settings page
The implementation includes offline activation for development/testing
and prepares for integration with a license server (Stripe/Lemon Squeezy).
- Add mysql2 package for MySQL connectivity
- Create database adapter interface with PostgreSQL and MySQL implementations
- Update ConnectionConfig to include dbType field for database type selection
- Refactor IPC handlers to use adapters for database-agnostic operations
- Update connection dialog with database type selector (PostgreSQL/MySQL)
- Support MySQL-specific schema fetching, DDL reverse engineering, and EXPLAIN
- Add MySQL type code to human-readable name mapping
- Ensure backward compatibility for existing PostgreSQL connections
- Add edit mode toggle for table-preview tabs with visual indicators
- Implement cell editing with type-aware inputs (text, number, date, boolean)
- Support row deletion (mark for deletion) and new row insertion
- Build parameterized SQL queries for PostgreSQL, MySQL, and SQLite dialects
- Add SQL preview modal before committing changes
- Execute edits in transactions with rollback on error
- Extract JsonCellValue and FKCellValue to shared components
- Add edit-store for managing edit state per tab
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>