From cb86caba9e96904b276a2c144571054daa74b348 Mon Sep 17 00:00:00 2001 From: Adrian Bonpin Date: Sun, 6 Sep 2026 13:46:31 +0800 Subject: [PATCH] docs: define 0.8.0 scope and reorganize ROADMAP.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 0.8.0: schema diff/compare, multiple result sets, result streaming, MariaDB, TimescaleDB, PlanetScale preset (Turso dropped — needs a libsql driver path, stays in the queue) - Reorganized: roadmap items up top, all shipped sections consolidated below; removed entries redundant with versioned sections - Fixed stale references (settings import/export shipped in 0.7.8, tense fixes in 0.7.8 section, trimmed 0.7.0 deferred list) --- ROADMAP.md | 97 +++++++++++++++++++++++++----------------------------- 1 file changed, 45 insertions(+), 52 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 61ad821..3ba1652 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -6,38 +6,22 @@ This file is the **source of truth** for what Gridline is building. [AGENTS.md]( --- -## ✅ Shipped (0.7.10) +## 🎯 Next up (0.8.0) -- **Copy connection URL** — from a connection card's ⋮ menu, copy the connection string for use in env vars / other tools: **Copy connection URL** (includes the password, fetched from the OS keychain on demand) and **Copy connection URL (no password)** (safe to share). Builds `postgresql://` / `mysql://` / `sqlite://` / `redis://` strings with percent-encoded credentials and the PG `sslmode` appended. -- **Version bump** 0.7.9 → **0.7.10**. +- **Schema diff / compare** — two-database structure diff (tables, columns, indexes, constraints, views) with generated sync SQL; pairs naturally with DB-to-DB sync +- **Query Workbench: multiple result sets** — one query, stacked result tabs instead of only the last result *(deferred from 0.7.0)* +- **Query Workbench: result streaming to file** — export 500k+ rows without loading them all into memory +- **MariaDB support** — wire-compatible with MySQL; largely falls out of the v0.7.0 MySQL work (new `db_type`, provider card, version/introspection differences) +- **TimescaleDB support** — PostgreSQL extension; connects as regular PG, detect + surface hypertables/compression in the object tree +- **PlanetScale preset** — managed MySQL (Vitess) provider card following the Supabase/NeonDB pattern -## ✅ 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**. +Suggested build order: MariaDB → PlanetScale + TimescaleDB → query workbench (streaming, then multiple result sets) → schema diff. ## 📋 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. +Connection + test only today — browsing stays gated behind a clean "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 @@ -46,28 +30,26 @@ Connection + test work today; **key browsing is explicitly not part of 0.7.0** ### 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) +MariaDB and TimescaleDB moved to [0.8.0](#-next-up-080). Remaining candidates: 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: +Supabase and NeonDB presets shipped in v0.7.0; PlanetScale moved to [0.8.0](#-next-up-080). Remaining: -- **PlanetScale** (Vitess/MySQL) -- **Turso** (libSQL) +- **Turso** (libSQL — not SQLite over the wire; needs a `libsql` driver path in the Rust backend, not just a connection preset) - 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 +Multiple result sets and result streaming to file moved to [0.8.0](#-next-up-080). Remaining: + - **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)* +Schema diff / compare moved to [0.8.0](#-next-up-080). Remaining: + +- **MySQL Objects view + schema visualizer** — functions/triggers/sequences/enums/extensions browsing and ER diagram for MySQL *(PostgreSQL-only today)* - **More export formats** — JSONL, Parquet alongside CSV/JSON/SQL/Markdown/Excel ## 🔮 Planned @@ -99,15 +81,37 @@ Continuous polish, tracked as issues rather than one-off milestones: - 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: +Still 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.10) + +- **Copy connection URL** — from a connection card's ⋮ menu, copy the connection string for use in env vars / other tools: **Copy connection URL** (includes the password, fetched from the OS keychain on demand) and **Copy connection URL (no password)** (safe to share). Builds `postgresql://` / `mysql://` / `sqlite://` / `redis://` strings with percent-encoded credentials and the PG `sslmode` appended. +- **Version bump** 0.7.9 → **0.7.10**. + +## ✅ 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**. + +## ✅ Shipped (0.7.8) + +- **SQLite `.dump` support** — backup a SQLite database to a portable SQL dump and restore it back, matching the pg_dump UX +- **Backup / Restore / Sync for MySQL & SQLite** — the pg-only tooling extended: MySQL backup/restore via `mysqldump` (system-first) and DB-to-DB sync beyond PostgreSQL +- **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`) is now gated to macOS; Windows/Linux use the native title bar for dragging +- **SQLite table editor (Create/Edit Table)** — the visual Create Table / Edit Table flow extended to SQLite: SQLite-aware type mapping (`INTEGER PRIMARY KEY AUTOINCREMENT` instead of `serial`, `TEXT`/`REAL`/`BLOB`) and ALTER TABLE limits respected (`ADD COLUMN` can't add PK/UNIQUE, `DROP COLUMN` needs SQLite ≥3.35) +- **Version bump** 0.7.7 → **0.7.8**. + ## ✅ Shipped (0.7.7) ### Admin follow-up @@ -151,24 +155,13 @@ Deferred from 0.7.0, slated for this bucket: - **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. +**Deferred from 0.7.0**: Redis key browsing and MySQL Objects/ERD views (still in the queue); SSH key management and onboarding tour (planned). Since shipped elsewhere: backup/restore/sync for MySQL & SQLite and settings import/export (0.7.8); multiple result sets (slated for 0.8.0). -## ✅ Shipped +## ✅ Shipped — earlier releases (pre-0.7.0) -- 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 +- PostgreSQL and SQLite browse/query support - 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 @@ -177,4 +170,4 @@ Deferred from 0.7.0, slated for this bucket: - 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 \ No newline at end of file +- Built-in **Gridline Demo (SQLite)** database