Skip to content

v2.2.0

Choose a tag to compare

@hadziqmtqn hadziqmtqn released this 17 Jun 10:21
· 110 commits to master since this release

✨ New Features

Desktop App — First Production Release

This is the first major release where the Tauri desktop app is truly production-ready. The bulk of this release focuses on desktop stability, code signing, and build automation.

  • Automated macOS DMG signing & release — build, sign, and publish DMGs for both ARM64 and x86_64 via GitHub Actions
  • Native module ABI rebuild — automatic detection of better-sqlite3 ABI mismatch with runtime rebuild; falls back to prebuild-install + NODE_PATH
  • 6-step server startup logging — detailed Node.js version, ABI detection, migration status logged to server-startup.log
  • Background server start — server starts before migrations complete, preventing 404/Bad Gateway on SPA load
  • Permanent DB error flag (db_error) — frontend stops infinite retry loop, shows permanent error message
  • Desktop auto-login — automatic login without form for Tauri desktop builds
  • Tauri build robustness — dynamic find_node_executable probing, PATH fallback, cross-compilation scripts
  • Node.js 25 support, improved Windows compatibility
  • Force Tauri rebuildnpm rebuild in writable cache directory (avoids spaces-in-path issues)
  • Updated tauri.conf.json version to 2.2.0

Production Database — Live ERD from Remote/Local DB

The second major feature: the app can now connect to external databases (PostgreSQL, MySQL, SQLite) and render ERD diagrams directly from live schemas — no import into system DB required.

  • DB Connect Panel — manage external database accounts (encrypted credential storage)
  • Schema Import as ERD — import tables + foreign keys + primary keys directly as ERD diagrams
  • Production DB ERD — ERDView renders live schema with saved positions; read-only mode (no column edit/dropdown/delete)
  • Sync button — refresh diagram from live schema on demand
  • Data field in Diagram model — stores JSON positions for production DB diagrams
  • DataViewer — browse & paginate table records directly from the app (PostgreSQL, MySQL, SQLite)
  • Data tab — new tab in the diagram editor for browsing records, active by default for production DBs
  • AI chat auto-hidden when 'data' tab is active to prevent UI conflicts
  • URL-driven tab stateerd/data tab persisted in URL for AppLayout integration
  • Tab management — DataViewer grid layout, scrollbar handling, empty state, custom scrollbar
  • New endpoints: /api/connections/:id/records, /api/connections/:id/import, /api/connections/:id/test

Theme System

  • Full theme selector implementation: Light, Dark, and System (follows OS preference)
  • Theme persistence in localStorage
  • Theme-aware styling across all components: Flowchart nodes/edges, React Flow, Excalidraw, ERD nodes
  • CSS variables for stroke, marker, background, popover — consistent across the entire UI

Guest Mode

  • Guest Data Export/Import — backup and restore guest data to/from JSON files
  • Streaming import with progress bar and batching via NDJSON (100x faster for large ERDs)
  • Settings navigation tailored for guest users
  • "Backup Data" option exclusive to guest mode

Docker Deployment

  • Dockerfile + docker-entrypoint.sh for production deployment
  • Support for SQLite (default), local PostgreSQL, and Supabase PostgreSQL
  • Runtime Prisma client regeneration based on DB variant
  • Automatic database creation if it doesn't exist (P1003 fix)
  • Removed hardcoded admin credentials — admin created during startup via seed
  • docker-compose.yml for local development

AI Provider & Proxy

  • Gemini authentication upgraded to Bearer token (OpenAI-compatible endpoint)
  • Base URL field now visible for all providers, not just openai_compatible
  • providerCode forwarded to the proxy for correct routing
  • apiKey made nullable in Prisma schema — save without changing the key
  • Client-side guard to skip '***' API key during save operations

Build & CI/CD

  • Automated macOS DMG creation & signing via custom create-dmg.sh
  • Sequential build ARM64 + x86_64 on single runner (macos-latest)
  • Dedicated build matrix for each macOS architecture
  • workflow_dispatch for manual releases with version and prerelease options
  • Dynamic release notes from commit history between tags
  • latest.json generation for update channels (darwin-aarch64, darwin-x86_64)

🔧 Improvements & Refactors

Route Refactoring

  • AI, AI Chat, AI Rules, and Common routes moved to modular directories (routes/ai/, routes/ai-chat/, routes/ai-rules/, routes/common/)
  • Service/Controller separation pattern adopted
  • Connection routes split into: accounts, catalogs, legacy, and migration modules
  • Middleware and helper functions consolidated into shared middleware files

UI Improvements

  • Custom button groups replacing shadcn/ui Tabs — more flexible styling control
  • Download & export feedback with toast notifications
  • ExportAllDialog: reordered tabs, default active tab set to 'typescript'
  • Flowchart nodes/edges: theme-aware colors, cleaner look without box-shadow
  • Table views: column visibility toggle (persisted to localStorage), rounded borders, scrollbar handling
  • Settings modal: guest-limited view, API key save fix, spinner styling
  • Changelog view: better versioning (pre-release vs stable) and styling

Prisma & Database

  • Upgraded dependencies (express, supabase, zod, Prisma client, etc.)
  • Connection model restructure: LocalDbConnectionDbAccount + DbCatalog
  • Automatic migration from local_db_connections to new structure
  • Removed DbAccount & DbCatalog from SQLite schema (desktop-only)
  • Removed redundant @db.Timestamptz(6) annotations
  • Skip camelToSnake conversion for /api/accounts and /api/catalogs routes

Error Handling

  • /api/me returns 503 + { db_ready: false } while DB is initializing
  • Frontend "Preparing…" state + retry logic for DB initialization
  • Background server start — Traefik healthcheck succeeds immediately
  • Healthcheck endpoint for Docker container monitoring