diff --git a/CHANGELOG.md b/CHANGELOG.md index a47098d..e3bd12b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,34 @@ for product tags (`vMAJOR.MINOR.PATCH`). Product releases follow a **weekly cadence** (Saturday 09:00 America/Los_Angeles). See `docs/oss-ux/RELEASE.md`. +## [1.3.0] — 2026-08-24 + +### Added + +- **DeepSQL Desktop** — first-ship Electron thin client (`desktop/`) with direct TLS and SSH-tunnel transports, connection profiles, OS keychain secrets, and native chrome (#73). +- Desktop release workflow (`.github/workflows/desktop-release.yml`) for macOS / Windows / Linux installers on `desktop-v*` tags. +- Enforceable Agent brain-note proposals with non-blocking save bubbles (#75). +- Schema documentation dedupe / `CODE_DERIVED` compatibility initializers (`V116`) (#74, #77). + +### Fixed + +- Cross-user MCP credential leak in the Agent tab — provisioner no longer last-writer-wins across Hermes profiles; MCP tokens bind to declared client identity (#78). +- View as Agent enforces the target user’s data policy on new Agent threads (#71). +- Chat schema allowlist enumerates the whole statement (#70). +- Brain endpoints require connection content authorization (#72). +- Review queue approvals: stale pending counts, bulk `failures[]`, approval path unwedge (#74, #77). +- Editor CSV export bounded; concurrent-run guards and cancel audit (#76). + +### Changed + +- Documented CORS loopback wildcards required for Desktop SSH tunnels (`CORS_ALLOWED_ORIGINS`). +- `@deepsql/mcp` → `0.27.1`. +- DeepSQL Desktop package → `1.0.0` (cut installers with `desktop-v1.0.0`). + +### Notes + +- Open follow-up: dashboard workspaces + custom roles (#80) intentionally not in this cut. + ## [1.2.0] — 2026-08-19 ### Added @@ -82,6 +110,7 @@ First public OSS release. - Residual high-severity items tracked in `docs/oss-ux/OSS_SECURITY_REVIEW.md` (IDOR sweep, SET preamble allowlist, SSRF hardening, share-password defaults) are deferred past this cut. - Primary distribution path remains `docker compose up --build` (no pre-built container registry in this release). +[1.3.0]: https://github.com/DeepSQLAI/deepsql/releases/tag/v1.3.0 [1.2.0]: https://github.com/DeepSQLAI/deepsql/releases/tag/v1.2.0 [1.1.0]: https://github.com/DeepSQLAI/deepsql/releases/tag/v1.1.0 [1.0.0]: https://github.com/DeepSQLAI/deepsql/releases/tag/v1.0.0 diff --git a/README.md b/README.md index 0d66a44..d83231e 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,10 @@ control except the prompts you send to the endpoint you chose. 📄 **[Read the whitepaper](https://deepsql.ai/whitepaper)** — the architecture and the reasoning behind it. +📦 **Latest release: [v1.3.0](https://github.com/DeepSQLAI/deepsql/releases/tag/v1.3.0)** — +DeepSQL Desktop first ship + Agent/Brain/Editor hardening. Notes: +[`docs/releases/RELEASE_NOTES-v1.3.0.md`](docs/releases/RELEASE_NOTES-v1.3.0.md). + --- ## Quick start diff --git a/backend/pom.xml b/backend/pom.xml index acf58aa..25b8b98 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -14,7 +14,7 @@ com.dbaagent dba-agent-backend - 1.2.0 + 1.3.0 DBA Agent Backend Backend service for DBA Agent with secure credential storage and schema analysis diff --git a/desktop/README.md b/desktop/README.md index d468771..9a7ad3a 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -1,5 +1,7 @@ # DeepSQL Desktop +**Version 1.0.0** — first public Desktop cut (ships with DeepSQL product `v1.3.0`). + A cross-platform desktop client for a self-hosted DeepSQL server. It connects to the VM (or bare metal) running the DeepSQL stack either **directly over TLS** or through an **SSH tunnel**, and presents the DeepSQL UI in a native window with diff --git a/desktop/package-lock.json b/desktop/package-lock.json index f0b6404..3bd6fa4 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "deepsql-desktop", - "version": "0.1.0", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "deepsql-desktop", - "version": "0.1.0", + "version": "1.0.0", "license": "Apache-2.0", "dependencies": { "electron-updater": "^6.8.9", diff --git a/desktop/package.json b/desktop/package.json index 7a745f9..433e8b9 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,9 +1,9 @@ { "name": "deepsql-desktop", "productName": "DeepSQL", - "version": "0.1.0", + "version": "1.0.0", "private": true, - "description": "DeepSQL desktop client — connect to a self-hosted DeepSQL VM over TLS or an SSH tunnel.", + "description": "DeepSQL desktop client \u2014 connect to a self-hosted DeepSQL VM over TLS or an SSH tunnel.", "license": "Apache-2.0", "author": { "name": "DeepSQL", @@ -37,7 +37,7 @@ "build": { "appId": "com.deepsql.desktop", "productName": "DeepSQL", - "copyright": "Copyright © DeepSQL", + "copyright": "Copyright \u00a9 DeepSQL", "directories": { "output": "release", "buildResources": "build" @@ -80,7 +80,7 @@ "entitlements": "build/entitlements.mac.plist", "entitlementsInherit": "build/entitlements.mac.plist", "extendInfo": { - "NSHumanReadableCopyright": "Copyright © DeepSQL" + "NSHumanReadableCopyright": "Copyright \u00a9 DeepSQL" } }, "dmg": { diff --git a/docs/oss-ux/RELEASE.md b/docs/oss-ux/RELEASE.md index 105823d..1b6efd5 100644 --- a/docs/oss-ux/RELEASE.md +++ b/docs/oss-ux/RELEASE.md @@ -19,10 +19,11 @@ Cron for the weekly automation: `CRON_TZ=America/Los_Angeles 0 9 * * 6`. | Surface | Where | Current | |---------|-------|---------| -| Product / Git tag | `vMAJOR.MINOR.PATCH` | `v1.2.0` | -| Backend JAR | `backend/pom.xml` `` | `1.2.0` | +| Product / Git tag | `vMAJOR.MINOR.PATCH` | `v1.3.0` | +| Backend JAR | `backend/pom.xml` `` | `1.3.0` | | Frontend package | root `package.json` | `0.1.0` (internal) | -| MCP / CLI npm | `mcp/package.json` | `0.27.0` | +| MCP / CLI npm | `mcp/package.json` | `0.27.1` | +| DeepSQL Desktop | `desktop/package.json` + `desktop-v*` tags | `1.0.0` | Tag the **product** version (`v1.1.0`). Keep backend `pom.xml` in lockstep with the tag for the JAR filename. MCP may continue its own semver when publishing `@deepsql/mcp` to npm. @@ -102,8 +103,19 @@ gh release create v1.1.0 \ Docker Compose remains the primary install path (`docker compose up --build`); the JAR + frontend tarball support air-gapped / non-Compose operators. +### DeepSQL Desktop (optional, separate tag) + +Desktop installers are **not** produced by the product `v*.*.*` workflow. After the product release is published: + +1. Confirm `desktop/package.json` version matches the intended Desktop cut (e.g. `1.0.0`). +2. Tag and push `desktop-v1.0.0` (annotated). +3. `.github/workflows/desktop-release.yml` builds macOS / Windows / Linux on native runners and attaches installers to that GitHub Release. + +Setup and CORS requirements: [`desktop/README.md`](../../desktop/README.md). + ## Post-release - Confirm the Release page lists every file and checksums verify. +- If Desktop shipped in this cycle, confirm the `desktop-v*` Release has platform installers. - Announce with the tag URL + one-line upgrade note. - Bump versions on `main` for the next cycle only after the tag is cut (avoid tagging a commit whose pom still says the previous version). diff --git a/docs/releases/RELEASE_NOTES-v1.3.0.md b/docs/releases/RELEASE_NOTES-v1.3.0.md new file mode 100644 index 0000000..7fe924f --- /dev/null +++ b/docs/releases/RELEASE_NOTES-v1.3.0.md @@ -0,0 +1,103 @@ +# DeepSQL v1.3.0 + +**Weekly product cut** — DeepSQL Desktop (IDE) first ship, plus Agent/Brain/Editor hardening on top of `v1.2.0`. + +## Highlights + +### DeepSQL Desktop (headline) + +Native Electron client for a self-hosted DeepSQL server — the biggest addition in this cut (#73). + +- **Thin client, not a second frontend** — embeds the live DeepSQL UI from your VM origin (no bundled SPA, no version skew). +- **Two transports** — direct TLS (system / pinned / custom CA / TOFU) or in-process SSH tunnel (`ssh2`, no `ssh` binary). +- **Connection profiles** — per-profile sessions; secrets stored as OS keychain ciphertext when available. +- **CORS requirement** — SSH tunnels use `http://127.0.0.1:`, so the VM must allow loopback wildcards in `CORS_ALLOWED_ORIGINS` (`http://127.0.0.1:*,http://localhost:*`). Documented in `desktop/README.md`, `README.md`, and `docs/root/SELF_HOST_GUIDE.md`. +- **Installers** — tag `desktop-v1.0.0` after this product cut to run `.github/workflows/desktop-release.yml` (macOS / Windows / Linux native runners). + +```bash +cd desktop +npm install +npm start # or: npm run dev +# headless Linux GUI: xvfb-run npm start +``` + +### Agent & security + +- **MCP credential isolation** — Agent provisioner no longer mirrors tokens across every Hermes profile (cross-user last-writer-wins leak closed) (#78). +- **MCP token identity binding** — server refuses a token whose owner does not match `X-DeepSQL-Client-Agent` when that header names a DeepSQL user. +- **View as Agent** — impersonated Agent sessions enforce the *target* user’s chat/data policy (#71). +- **Schema allowlist** — chat policy schema allowlist walks the whole statement, not only outer `FROM`/`JOIN` (#70). +- **Brain endpoint authz** — Brain APIs require connection content access, not merely authentication (#72). + +### Brain & Review + +- **Review queue approvals** — `CODE_DERIVED` CHECK compatibility, stale-list refresh, bulk decide surfaces `failures[]` (#74). +- **Suggestion approval unwedge** — schema-doc dedupe / upsert path so approvals stick; knowledge counts refresh live (#77). +- **Enforceable Agent writes** — non-blocking save bubbles; Agent only offers brain-note saves when the user can manage content (#75). + +### Editor + +- **CSV export bound** — export no longer re-runs unbounded / 10-minute queries that outrun the proxy (#76). +- Concurrent-run guards and cancel auditing for Editor query sessions (#76). + +## Install / upgrade + +```bash +git clone https://github.com/DeepSQLAI/deepsql.git +cd deepsql +git checkout v1.3.0 +cp .env.example .env +# set SECURITY_JWT_SECRET, ENCRYPTION_KEY (or ENCRYPTION_KEYS), and DEEPSQL_CHAT_* in .env +# for Desktop tunnels, include loopback wildcards in CORS_ALLOWED_ORIGINS +docker compose up --build -d +``` + +From `v1.2.0`: pull/checkout `v1.3.0` and rebuild Compose (or swap JAR + frontend tarball from this Release). Schema is managed by `ddl-auto=update`. Hand SQL changelog `V116` (schema documentation dedupe) is optional when not relying on `ddl-auto=update` / startup initializers. + +Air-gapped: download artifacts below, verify `SHA256SUMS`, follow `docs/oss-ux/RELEASE.md`. + +### Optional: DeepSQL Desktop + +See [`desktop/README.md`](../../desktop/README.md). After the product tag is published, cut Desktop installers with: + +```bash +git tag -a desktop-v1.0.0 -m "DeepSQL Desktop v1.0.0" +git push origin desktop-v1.0.0 +``` + +## Artifacts in this release + +| File | Contents | +|------|----------| +| `deepsql-1.3.0-source.tar.gz` / `.zip` | Source tree at this tag | +| `dba-agent-backend-1.3.0.jar` | Spring Boot executable | +| `deepsql-frontend-1.3.0.tar.gz` | Production static UI | +| `deepsql-mcp-0.27.1.tgz` | CLI + MCP server package | +| `sbom-*.cdx.json` | CycloneDX SBOMs | +| `SHA256SUMS` / `SHA512SUMS` | Integrity hashes | +| `manifest.json` | Machine-readable inventory | + +Desktop installers (dmg / zip / exe / AppImage / deb) attach to the separate `desktop-v1.0.0` GitHub Release when that tag is pushed. + +```bash +sha256sum -c SHA256SUMS +``` + +## Verify + +```bash +python3 scripts/self-host/e2e-agent-check.py +python3 scripts/self-host/e2e-multischema-check.py +# Desktop (optional): +cd desktop && npm run selftest:tunnel && npm run smoke -- --url https://your-deepsql-origin +``` + +Expect `AGENT_OK True`, `DASH_OK True`, and `✓ Multi-schema E2E OK`. + +## Not in this cut + +- **Workspaces & custom roles** (#80) — still open; merge after the favorite-endpoint authorization fix and rebase onto this release. + +## Cadence + +Product releases are cut **weekly, Saturday 09:00 America/Los_Angeles**. See `docs/oss-ux/RELEASE.md` and `docs/oss-ux/WEEKLY_RELEASE_AUTOMATION.md`.