From 4ab9a9f021a81e8a153113b1dcae9c7a4301eb00 Mon Sep 17 00:00:00 2001 From: Adam J Esslinger Date: Wed, 19 Aug 2026 15:31:35 -0400 Subject: [PATCH 1/2] docs: fix stale manual-install plugin paths and README gaps Tabularis unified its plugin data directory under `tabularis` (dropping the legacy `com.debba.tabularis`/`%APPDATA%\debba\tabularis\data` layout) before the v0.20.0 minimum this plugin requires, but the README and justfile's dev-install/uninstall recipes still pointed at the old path. Also fills gaps found during a full accuracy audit: the Supported Operations table was missing the `initialize`/`shutdown` RPC methods, the data types table omitted range and array types the plugin already decodes, and the TOC was missing a Maintainers entry. --- README.md | 9 ++++++--- justfile | 17 ++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9f23665..e74a5f4 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,8 @@ both drivers against the same live database and compares every response. - [Known Limitations](#known-limitations) - [Building from Source](#building-from-source) - [Development](#development) - - [Contributing: PR Titles & Versioning](#contributing-pr-titles--versioning) - [Changelog](#changelog) +- [Maintainers](#maintainers) - [License](#license) ## Features @@ -109,6 +109,8 @@ both drivers against the same live database and compares every response. | **Other** | BOOLEAN, UUID, INET, CIDR, MACADDR | | **JSON** | JSON, JSONB | | **Binary** | BYTEA | +| **Ranges** | INT4RANGE, INT8RANGE, NUMRANGE, TSRANGE, TSTZRANGE, DATERANGE | +| **Arrays** | SMALLINT[], INTEGER[], BIGINT[], REAL[], DOUBLE PRECISION[], TEXT[], VARCHAR[], BOOLEAN[] | ## Installation @@ -138,8 +140,8 @@ ingested this plugin's releases first. | OS | Plugins Directory | | --- | --- | | **Linux** | `~/.local/share/tabularis/plugins/postgresql/` | - | **macOS** | `~/Library/Application Support/com.debba.tabularis/plugins/postgresql/` | - | **Windows** | `%APPDATA%\debba\tabularis\data\plugins\postgresql\` | + | **macOS** | `~/Library/Application Support/tabularis/plugins/postgresql/` | + | **Windows** | `%APPDATA%\tabularis\plugins\postgresql\` | 4. Restart Tabularis. @@ -164,6 +166,7 @@ instead of reconnecting. | Method | Description | | --- | --- | +| `initialize` / `shutdown` | Plugin lifecycle hooks called on load and unload | | `test_connection` / `ping` | Verify connectivity with a lightweight `SELECT 1` | | `get_databases` | List databases on the server | | `get_schemas` | List schemas in the connected database | diff --git a/justfile b/justfile index 78bd75e..f0ad1eb 100644 --- a/justfile +++ b/justfile @@ -50,19 +50,18 @@ dev-install: build [macos] dev-install: build - mkdir -p "$HOME/Library/Application Support/com.debba.tabularis/plugins/postgresql" - cp target/debug/postgresql-plugin "$HOME/Library/Application Support/com.debba.tabularis/plugins/postgresql/" - cp .tabularium "$HOME/Library/Application Support/com.debba.tabularis/plugins/postgresql/" - @echo "Installed to ~/Library/Application Support/com.debba.tabularis/plugins/postgresql" + mkdir -p "$HOME/Library/Application Support/tabularis/plugins/postgresql" + cp target/debug/postgresql-plugin "$HOME/Library/Application Support/tabularis/plugins/postgresql/" + cp .tabularium "$HOME/Library/Application Support/tabularis/plugins/postgresql/" + @echo "Installed to ~/Library/Application Support/tabularis/plugins/postgresql" @echo "Restart Tabularis (or toggle the plugin in Settings) to pick up changes." # Each recipe line runs in a fresh shell, so this must be one logical command. # Tabularis resolves its plugin dir via the `directories` crate -# (ProjectDirs "com"/"debba"/"tabularis"), which on Windows is -# %APPDATA%\debba\tabularis\data. +# (ProjectDirs "", "", "tabularis"), which on Windows is %APPDATA%\tabularis. [windows] dev-install: build - $dest = Join-Path $env:APPDATA "debba\tabularis\data\plugins\postgresql"; \ + $dest = Join-Path $env:APPDATA "tabularis\plugins\postgresql"; \ New-Item -ItemType Directory -Force -Path $dest | Out-Null; \ Copy-Item "target\debug\postgresql-plugin.exe" $dest; \ Copy-Item ".tabularium" $dest; \ @@ -75,9 +74,9 @@ uninstall: [macos] uninstall: - rm -rf "$HOME/Library/Application Support/com.debba.tabularis/plugins/postgresql" + rm -rf "$HOME/Library/Application Support/tabularis/plugins/postgresql" [windows] uninstall: - $dest = Join-Path $env:APPDATA "debba\tabularis\data\plugins\postgresql"; \ + $dest = Join-Path $env:APPDATA "tabularis\plugins\postgresql"; \ if (Test-Path $dest) { Remove-Item -Recurse -Force $dest } From 9de606d27955282dac8bb874e3359f33ea3ec74b Mon Sep 17 00:00:00 2001 From: Adam J Esslinger Date: Wed, 19 Aug 2026 15:46:41 -0400 Subject: [PATCH 2/2] docs: move the 1.0.0 stable gate to end of Phase 1, not Phase 2 CP-5 previously tied the stable release to Phase 2 completion (sequences + JSONB + extension types). Decided instead: 1.0.0 ships once the post-CP-4 beta bake-in against Tabularis 0.20.0+ shows no new correctness bugs, independent of Phase 2 scope. Phase 2 features then version as ordinary feat: minor bumps from 1.0.0, and CP-5 becomes a feature-completeness milestone on an already-stable release rather than a second promotion event. --- docs/planning/02-phase-1-plugin-build.md | 5 ++++ docs/planning/03-phase-2-issue-16.md | 34 ++++++++++++++++++------ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/docs/planning/02-phase-1-plugin-build.md b/docs/planning/02-phase-1-plugin-build.md index 6da2970..4b664e4 100644 --- a/docs/planning/02-phase-1-plugin-build.md +++ b/docs/planning/02-phase-1-plugin-build.md @@ -425,6 +425,11 @@ Before declaring Phase 1 complete, verify: - Users can install it alongside the built-in driver and test - Feedback collection begins (does it work with their specific PG setups?) +**After CP-4, before Phase 2:** the plugin bakes on the beta channel +against Tabularis `0.20.0`+ until no new correctness bugs surface, then +ships `1.0.0` stable — independent of Phase 2 scope. See "Versioning" in +`docs/planning/03-phase-2-issue-16.md`. + **Verify at CP-4:** - [ ] 80/80 parity tests GREEN (byte-perfect dual-driver comparison) diff --git a/docs/planning/03-phase-2-issue-16.md b/docs/planning/03-phase-2-issue-16.md index aa39d16..4e462b4 100644 --- a/docs/planning/03-phase-2-issue-16.md +++ b/docs/planning/03-phase-2-issue-16.md @@ -285,11 +285,18 @@ Sprint 6: Pub/Sub + Advisory locks (lower priority, quick wins) --- -## Checkpoint: CP-5 (Phase 2 Complete — Stable Release Gate) +## Checkpoint: CP-5 (Phase 2 Complete — Feature-Complete Milestone) **When:** Core Phase 2 features complete (at minimum: sequences + JSONB + extensions). -**This IS a major release gate.** The plugin now exceeds the built-in driver. +**Note on versioning:** `1.0.0` stable ships at the end of Phase 1 +stabilization (beta bake-in with no new correctness bugs surfacing), not +at Phase 2 completion — see the "Versioning" section below. CP-5 is a +feature-completeness milestone on top of an already-stable `1.x` release, +tracked via the normal PR-title semver bump (`feat` → minor). + +**This IS a milestone worth communicating.** The plugin now exceeds the +built-in driver. **Verify:** @@ -298,7 +305,6 @@ Sprint 6: Pub/Sub + Advisory locks (lower priority, quick wins) - [ ] Sequence management works end-to-end - [ ] JSONB editing works with nested objects - [ ] At least one extension type (PostGIS or pgvector) is handled -- [ ] Plugin published as **stable** (not beta) to Tabularium registry **Communicate to team:** @@ -308,14 +314,27 @@ Sprint 6: Pub/Sub + Advisory locks (lower priority, quick wins) --- +## Versioning + +`1.0.0` ships at the end of Phase 1 stabilization — once the beta bake-in +period (post-`0.20.0` Tabularis release) shows no new correctness bugs +surfacing, independent of Phase 2 scope. Phase 2 features then version as +ordinary minor/patch bumps from `1.0.0` via the existing PR-title → +semver mapping (see the main README's "Contributing: PR Titles & +Versioning"): each Phase 2 feature (`feat:`) is a minor bump (`1.1.0`, +`1.2.0`, ...), not a second "promote to stable" event. + +--- + ## Ship / Release Points | After | What to ship | Channel | | ----- | ------------ | ------- | -| Sequences done | Plugin update (minor version bump) | Beta → early adopters | -| JSONB editing done | Plugin update | Beta | -| All Phase 2 core done | Plugin promoted to **stable** | Public registry | -| Extensions done | Plugin update | Stable | +| Phase 1 stabilization | `1.0.0` | Stable → public registry | +| Sequences done | Plugin update (minor version bump) | Stable | +| JSONB editing done | Plugin update (minor version bump) | Stable | +| Extensions done | Plugin update (minor version bump) | Stable | +| All Phase 2 core done | CP-5 milestone reached | Stable | The plugin architecture enables shipping each feature independently without waiting for a Tabularis core release. This is a key advantage. @@ -340,5 +359,4 @@ waiting for a Tabularis core release. This is a key advantage. - [ ] Extensions: at least PostGIS + pgvector types detected and handled - [ ] Partitions: hierarchy displayed, bounds shown - [ ] All Phase 1 tests still GREEN (no regressions) -- [ ] Plugin published as stable release - [ ] CP-5 sync completed with core team