# Gridline Roadmap Status legend: โœ… Shipped ยท ๐Ÿ—๏ธ In development ยท ๐ŸŽฏ Next up ยท ๐Ÿ“‹ In the queue ยท ๐Ÿ”ฎ Planned This file is the **source of truth** for what Gridline is building. [AGENTS.md](./AGENTS.md) and [README.md](./README.md) link here โ€” keep this current as priorities shift. --- ## โœ… Shipped (0.7.9) - **macOS Finder launch fix** โ€” the local store opens under the OS app-data directory instead of a cwd-relative `gridline.db` (Finder/LaunchServices launches run with cwd `/`, so the old path made the app silently exit with a Rust panic before the UI started). - **macOS ad-hoc code signing** โ€” bundles are signed at build time (`bundle.macOS.signingIdentity "-"`, hardened runtime off), replacing the Xcode linker-only signature that macOS treated as unsigned ("damaged and can't be opened", silent Finder refusal). Users still get a one-time Gatekeeper prompt; README documents the `sudo xattr -dr com.apple.quarantine` workaround. - **Vendored OpenSSL for `ssh2`** โ€” the release binary no longer links an absolute Homebrew `/opt/homebrew/.../libssl.3.dylib` path (dyld aborted on machines without it). - **Version bump** 0.7.8 โ†’ **0.7.9**. ## ๐ŸŽฏ Next up (0.8.0) โ€” TBD Scope to be determined. ## โœ… Shipped (0.7.8) - **SQLite `.dump` support** โ€” match the pg_dump UX for SQLite (backup a SQLite database to a portable SQL dump, restore it back) - **Backup / Restore / Sync for MySQL & SQLite** โ€” extend the pg-only tooling today: SQLite backup/restore + MySQL via `mysqldump` (system-first; decide bundling) - **Excel (.xlsx) export** โ€” alongside CSV/JSON/SQL/Markdown in the grid export toolbar - **Cancel long-running queries** โ€” per-connection cancel button (`pg_cancel_backend` and equivalents) instead of waiting or killing the app - **Settings export / import** โ€” share theme, accent, editor options, page sizes, and defaults across machines (JSON file) - **Windows/Linux title bar fix** โ€” the macOS "Overlay" drag strip (`h-7` in `App.tsx`) renders on every Tauri platform, so Windows/Linux show a blank grabbable bar between the native title bar and the page; gate the strip to macOS only (native title bar already handles dragging elsewhere) - **SQLite table editor (Create/Edit Table)** โ€” the visual Create Table / Edit Table flow is PostgreSQL-only today (`tableManagement` capability + PG-flavored SQL gen in `TableForm`); extend to SQLite: SQLite-aware type mapping (no `serial` โ€” `INTEGER PRIMARY KEY AUTOINCREMENT` instead), `TEXT`/`REAL`/`BLOB`, and ALTER TABLE limits (`ADD COLUMN` can't add PK/UNIQUE, `DROP COLUMN` needs SQLite โ‰ฅ3.35) - **Version bump** 0.7.7 โ†’ **0.7.8**. ## ๐Ÿ“‹ In the queue ### Full Redis Support Connection + test work today; **key browsing is explicitly not part of 0.7.0** โ€” it stays gated behind an "unsupported" state. Goal: first-class Redis like the PG/SQLite/MySQL viewers. - Key browser (pattern search, filter by type, TTL display, key count) - Value editors per type: string, list, hash, set, zset, stream, JSON - Inline add / edit / delete keys, TTL management, flush - Key expiry tracking and live refresh ### Additional Database Types - **MariaDB** (wire-compatible with MySQL โ€” should largely fall out of the 0.7.0 MySQL work) - **TimescaleDB** (PostgreSQL extension โ€” largely free once PG browsing is solid; surface hypertables/compression in the object tree) - Candidates after that: CockroachDB, DuckDB, SQL Server, MongoDB (drivers are heavier lifts โ€” revisit with demand) ### Managed Database Support (beyond Supabase / Neon) Supabase and NeonDB presets shipped in v0.7.0. Remaining candidates: - **PlanetScale** (Vitess/MySQL) - **Turso** (libSQL) - Provider detection guidance: paste a provider URL โ†’ Gridline auto-fills host/port/SSL mode; provider "connect" docs linked from the connection form ### Query Workbench Upgrades - **Multiple result sets** โ€” one query, multiple result tabs (stacked/scrollable) instead of only the last result *(deferred from 0.7.0)* - **Result streaming to file** โ€” export 500k+ rows without loading them all into memory - **Visual query builder** โ€” drag-and-drop tables/joins/filters that generate SQL (TablePlus has one; DB Pro plans one) ### Schema & Data Tooling - **Schema diff / compare** โ€” two-database structure diff that pairs naturally with DB-to-DB sync - **MySQL Objects view + schema visualizer** โ€” functions/triggers/sequences/enums/extensions browsing and ER diagram for MySQL *(deferred from 0.7.0 and out of scope for the object-management release โ€” PostgreSQL-only for now)* - **More export formats** โ€” JSONL, Parquet alongside CSV/JSON/SQL/Markdown/Excel ## ๐Ÿ”ฎ Planned ### AI Integration (BYOK) Bring-your-own-key โ€” no bundled model, no paywall, key stored in the OS keychain like DB passwords. - Natural-language โ†’ SQL generation (schema-aware) - Chat with your database (explain query results, error messages) - Query explanations and schema summaries - AI-generated charts from result sets - Privacy-first: only the SQL/text you choose is sent to your provider; write-queries blocked by default, destructive actions confirmed before execution ### Website & Docs - Landing page with screenshots, feature tour, and download links - User documentation (connection setup, SSH/TLS, backup/sync, changes queue) - Blog / changelog feed ### UI/UX Improvements (rolling) Continuous polish, tracked as issues rather than one-off milestones: - Empty states, error surfacing, and microcopy - Keyboard shortcut audit + more configurable actions - Performance passes on the grid, object tree, and large schemas - Accessibility (contrast, focus states, screen-reader labels) - Session restore โ€” reopen tabs and query state from the last session - Light-theme parity pass โ€” dark is first-class; polish the light theme to match Deferred from 0.7.0, slated for this bucket: - **Onboarding tour** โ€” first-run walkthrough built around the Gridline Demo database; contextual tooltips per screen - **Settings export/import** โ€” share theme, accent, editor options, page sizes, and defaults across machines (JSON file) - **SSH key management** โ€” read/generate key pairs and paste private keys directly in the SSH tab (today: path inputs only) - **In-app changelog** โ€” "What's new" panel fed from bundled release notes --- ## โœ… Shipped (0.7.7) ### Admin follow-up - **PostgreSQL users/roles + grants management** โ€” create/edit/drop roles with attributes; a per-role **privilege explorer** grouped by object class (tables, sequences, routines, schemas, databases) with collapsible sections (5-entry preview + fade, expand to show all) and GRANT/REVOKE staging through the changes queue (DB Pro has this at 0% on their roadmap โ€” a differentiator to hold) - **Maintenance actions** โ€” right-click table โ†’ VACUUM / ANALYZE / REINDEX ### Table & relationship management - **Create table** โ€” a "Create Tableโ€ฆ" tab in the workspace using the same Visual โ‡„ SQL flow as object create/edit: a columns grid (name / type / nullable / default / PK per row, type dropdowns with shorthand PG types, drag-to-reorder, add/remove rows) with a live Monaco SQL preview; multi-column PRIMARY KEY on create - **Edit table (robust column diff)** โ€” open an existing table's columns in the same grid; on Stage, diff old vs new columns and emit the right statements, one per queue item: `ADD COLUMN`, `DROP COLUMN`, `RENAME COLUMN`, `ALTER COLUMN โ€ฆ TYPE`, `ALTER COLUMN โ€ฆ SET|DROP DEFAULT`, `SET|DROP NOT NULL` - **FK management** โ€” multi-column FK composer (local column โ†’ referenced column pairs, referenced PKs first, type-match preview) with cross-schema references and ON DELETE / ON UPDATE actions; inlined into CREATE TABLE in create mode, separate ALTER staging in edit mode; FK rows in the form with Edit/Remove - **Related niceties** โ€” column reordering via atomic table rebuild (single transaction, preserves constraints/indexes/FKs/grants/sequences, fail-closed for triggers/RLS/inheritance/partitioning), table options (tablespace, row-level security), changes queue auto-refreshes the object tree after schema-modifying commits - **Version bump** 0.7.6 โ†’ **0.7.7**. ## โœ… Shipped (0.7.6) - **Full Object Management (PostgreSQL)** โ€” create/edit/drop for every PostgreSQL object type (enums, functions, procedures, triggers, sequences, extensions, views, materialized views, indexes, constraints), staged through the changes queue with generated-SQL previews. - **Enable Keychain toggle** โ€” wired end-to-end (default ON, opt-out): OFF = don't persist the DB password (session-only, re-prompt on connect) + purge the existing keychain entry; SSH secrets stay keychain-only. - **Objects view tabbed workspace** โ€” object details open as tabs in the shared tabbed workspace (per-type icons), with an inline manual query tab and the changes queue reachable from the tab bar. - **โŒ˜K object-search fixes** โ€” clicking a result now switches to the Objects view / opens the table tab; arrow-key navigation + Enter to pick. - **Version bump** 0.7.5 โ†’ **0.7.6**. ## โœ… Shipped (0.7.5) - **Bundled PG client tools** โ€” static `pg_dump`/`pg_restore`/`psql` ship with the app (system-first, bundled fallback) so backup/restore/sync work with no separate install. - **Schema CRUD** โ€” create/rename/drop schemas from the object tree; CASCADE drop with typed-name confirm + dependency warning. - **Global object search** โ€” Cmd+K palette in the DB viewer, current-schema scope, all object types; results open a table tab or jump to the Objects view. - **Copy as DDL for any object** โ€” `CREATE` DDL for every browsable type (tables via pg_dump; pg_get_*def passthrough; sequences/enums/extensions/views synthesized). - **Object dependencies** โ€” `pg_depend` "what depends on this?" view, shown before destructive drops (table drop, schema drop). - **Version bump** 0.7.0 โ†’ **0.7.5**. ## โœ… Shipped (0.7.0) - **New Connection screen revamp** โ€” a single progressive flow: connection-string input + 2-column provider tab grid โ†’ expands into the full configuration form (label, tags/env/folder, General + SSHยทSSL tabs). Removes the simple/detailed toggle. - **Full MySQL DB viewer support** โ€” connect (incl. SSL + SSH), browse databases/tables/columns/FKs, run queries, paginate, inline cell editing + changes queue (insert/update/delete/bulk/empty/drop), DDL copy (`SHOW CREATE TABLE`), CSV/JSON import. - **DB viewer capability gating** โ€” pure `dbCapabilities.ts` matrix per DB type; unsupported views show a clean "not supported" state instead of broken UI. Redis browsing explicitly gated off. - **Supabase & NeonDB managed-PG presets** โ€” provider cards with in-app setup instructions; persist as `postgresql` with an SSL hint. - **SQLite file-path mode** โ€” URI field becomes a file-path input with `Browseโ€ฆ`. - **Tag overflow scroll** โ€” connection cards show โ‰ค3 tags, then scroll horizontally. - **Input styling sweep** โ€” `rounded-full` โ†’ `rounded-lg` on all form controls. - **Version bump** 0.6.0 โ†’ **0.7.0**. **Not in 0.7.0** (deferred, tracked above): Redis key browsing, MySQL Objects/ERD views, backup/restore/sync for MySQL + SQLite, multiple result sets, SSH key-file management, settings import/export, onboarding tour. ## โœ… Shipped - Full PostgreSQL object management โ€” create/edit/drop staged through the changes queue (v0.7.6) - Enable Keychain toggle โ€” opt-out password persistence (v0.7.6) - Objects view tabbed workspace (v0.7.6) - Bundled PG client tools โ€” `pg_dump`/`pg_restore`/`psql` shipped with the app, system-first with bundled fallback (v0.7.5) - Schema CRUD โ€” create/rename/drop schemas with CASCADE + dependency warning (v0.7.5) - Global object search โ€” Cmd+K across all object types in the current schema (v0.7.5) - Copy as DDL for any object (v0.7.5) - Object dependencies โ€” `pg_depend` view before destructive drops (v0.7.5) - Tauri 2.0 + React 19 + TypeScript 5.8 project shell - PostgreSQL and SQLite browse/query support - Full MySQL DB viewer โ€” connect, browse, query, edit + changes queue (v0.7.0) - New Connection screen revamp โ€” provider grid + Supabase/NeonDB managed-pg presets (v0.7.0) - DB viewer capability gating + Redis unsupported state (v0.7.0) - Connection management with URI parser, SSH tunnels, TLS, OS keychain - Workspace tree, folders, tags, favorites, recents - Multi-tab DB viewer with virtualized grid, server-side filtering/sorting - FK preview, JSON popover, inline cell editing, changes queue - Query editor with Monaco, autocomplete, destructive-query guard - Query history, saved queries, and Queries view - Full PostgreSQL object explorer + schema visualizer - Backup, restore, and DB-to-DB sync tools - Settings redesign with theme, accent color, editor options - Built-in **Gridline Demo (SQLite)** database