Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,12 @@ jobs:
passed=$(gh run list --workflow ci.yml --commit "$GITHUB_SHA" --status success --json databaseId --jq 'length')
test "$passed" -gt 0
# checkout's shallow SHA fetch creates a local lightweight tag; retrieve the actual tag object.
git fetch --force origin refs/tags/v0.1.8:refs/tags/v0.1.8
test "$(git rev-parse 'v0.1.8^{commit}')" = "$GITHUB_SHA"
test "$(git describe --tags --exact-match HEAD)" = v0.1.8
test "$(git cat-file -t refs/tags/v0.1.8)" = tag
gh release create v0.1.8 --draft --verify-tag --title 'SQLX 0.1.8' --notes-file docs/release-notes.md dist/*.zip dist/manifest.json dist/SHA256SUMS dist/release-version.txt
gh release edit v0.1.8 --draft=false --latest
git fetch --force origin refs/tags/v0.1.9:refs/tags/v0.1.9
test "$(git rev-parse 'v0.1.9^{commit}')" = "$GITHUB_SHA"
test "$(git describe --tags --exact-match HEAD)" = v0.1.9
test "$(git cat-file -t refs/tags/v0.1.9)" = tag
gh release create v0.1.9 --draft --verify-tag --title 'SQLX 0.1.9' --notes-file docs/release-notes.md dist/*.zip dist/manifest.json dist/SHA256SUMS dist/release-version.txt
gh release edit v0.1.9 --draft=false --latest
npm:
needs: [assemble]
if: inputs.publish
Expand All @@ -132,6 +132,6 @@ jobs:
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
test "$GITHUB_REF_NAME" = v0.1.8
test "$GITHUB_REF_NAME" = v0.1.9
test "$(node -p 'require("./package.json").version')" = "${GITHUB_REF_NAME#v}"
npm publish --access public
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ resolver = "2"
members = ["crates/protocol", "crates/cli", "crates/ui", "drivers/mysql", "drivers/postgres"]

[workspace.package]
version = "0.1.8"
version = "0.1.9"
edition = "2021"
rust-version = "1.95"
license-file = "LICENSE"
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ For Oracle and SQL Server, build the JDBC worker and place its driver JARs along

```sh
mvn -B -f java/jdbc/pom.xml package
cp java/jdbc/target/sqlx-jdbc-0.1.8.jar target/release/sqlx-jdbc.jar
cp java/jdbc/target/sqlx-jdbc-0.1.9.jar target/release/sqlx-jdbc.jar
curl -fL https://repo.maven.apache.org/maven2/com/oracle/database/jdbc/ojdbc11/23.6.0.24.10/ojdbc11-23.6.0.24.10.jar -o target/release/ojdbc.jar
curl -fL https://repo.maven.apache.org/maven2/com/microsoft/sqlserver/mssql-jdbc/12.10.1.jre11/mssql-jdbc-12.10.1.jre11.jar -o target/release/mssql-jdbc.jar
```
Expand All @@ -320,7 +320,7 @@ On Windows PowerShell:

```powershell
mvn -B -f java/jdbc/pom.xml package
Copy-Item java/jdbc/target/sqlx-jdbc-0.1.8.jar target/release/sqlx-jdbc.jar
Copy-Item java/jdbc/target/sqlx-jdbc-0.1.9.jar target/release/sqlx-jdbc.jar
Invoke-WebRequest 'https://repo.maven.apache.org/maven2/com/oracle/database/jdbc/ojdbc11/23.6.0.24.10/ojdbc11-23.6.0.24.10.jar' -OutFile target/release/ojdbc.jar
Invoke-WebRequest 'https://repo.maven.apache.org/maven2/com/microsoft/sqlserver/mssql-jdbc/12.10.1.jre11/mssql-jdbc-12.10.1.jre11.jar' -OutFile target/release/mssql-jdbc.jar
```
Expand Down
15 changes: 6 additions & 9 deletions docs/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
SQLX 0.1.8 fixes credential redaction in the JDBC worker and documents how to connect to a local database.
SQLX 0.1.9 serves SQLX over the Model Context Protocol and ships ready-made integrations for four agent harnesses.

## Fixes
## New

- The JDBC worker redacted the username and password wherever they appeared, so a driver message could lose unrelated text: with the password `oracle`, the Oracle help link arrived as `https://docs.[redacted].com/error-help/db/ora-17002/`. Redaction now leaves a secret alone when it is only part of a word or a hostname, matching the CLI behaviour shipped in 0.1.7.

## Improvements

- The README's first-connection section now names the MySQL, Oracle and SQL Server flags, lists the three failure messages a local container produces under the default certificate verification, and shows the `--tls disable` form for a new or existing connection.
- `sqlx mcp` runs SQLX as a Model Context Protocol server over stdio, exposing `sqlx_datasource_list`, `sqlx_datasource_show`, `sqlx_datasource_test`, `sqlx_sql_execute`, `sqlx_sql_view` and `sqlx_prefetch`. Read-only tools are annotated as read-only; both execution tools are marked destructive and state in their description that the user must authorize the operation and its scope first, so a harness that gates destructive tools asks before running them.
- Integrations for four harnesses: Codex and Claude Code install a plugin that starts the MCP server, while DeepSeek Harness and Pi install a package that registers the same tools natively. Each integration lives under `integrations/` and requires the SQLX CLI on `PATH`.

## Upgrading

From SQLX 0.1.2 or later, run `sqlx update check`, `sqlx update install`, and `sqlx update status`. Versions 0.1.0 and 0.1.1 need the [README installer](https://github.com/OtterMind/sqlx#install-the-cli) first.

CLI updates preserve running UI services and the selected plugin. This release does not change the local page plugin, so no page update is required. Downloaded components are cached per version and reused, so an upgrade only fetches components that changed. Update managed Skills separately with `sqlx skill update` after upgrading the CLI; the 0.1.8 Skill requires SQLX 0.1.8.
CLI updates preserve running UI services and the selected plugin. This release does not change the local page plugin, so no page update is required. Downloaded components are cached per version and reused, so an upgrade only fetches components that changed. Update managed Skills separately with `sqlx skill update` after upgrading the CLI; the 0.1.9 Skill requires SQLX 0.1.9.

The Skill's approval rule constrains the Agent workflow only. SQLX itself still executes the supplied SQL unchanged, and an explicit result refresh still reruns the complete original batch, including any writes.

Prebuilt packages are available for macOS ARM64/x64, Linux ARM64/x64, and Windows x64. macOS executables are Developer ID signed and notarized. See LICENSE and NOTICE for license conditions.

**Full Changelog**: https://github.com/OtterMind/sqlx/compare/v0.1.7...v0.1.8
**Full Changelog**: https://github.com/OtterMind/sqlx/compare/v0.1.8...v0.1.9
2 changes: 1 addition & 1 deletion integrations/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ thin native-tool packages for harnesses that register tools themselves.

## Requirements

The `sqlx` CLI (0.1.8 or later, which provides `sqlx mcp`) must be installed and on `PATH`.
The `sqlx` CLI (0.1.9 or later, which provides `sqlx mcp`) must be installed and on `PATH`.
`SQLX_BIN` selects a specific executable; otherwise the first `sqlx` on `PATH` is used.

## Tools
Expand Down
4 changes: 2 additions & 2 deletions integrations/claude/plugins/sqlx/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "sqlx",
"description": "List saved OtterMind SQLX datasources, test connections, execute SQL against MySQL, PostgreSQL, Oracle and SQL Server, and open local result pages. Credentials stay in the SQLX data directory. Requires the sqlx CLI (0.1.8+) on PATH.",
"version": "0.1.8",
"description": "List saved OtterMind SQLX datasources, test connections, execute SQL against MySQL, PostgreSQL, Oracle and SQL Server, and open local result pages. Credentials stay in the SQLX data directory. Requires the sqlx CLI (0.1.9+) on PATH.",
"version": "0.1.9",
"author": {
"name": "OtterMind"
},
Expand Down
2 changes: 1 addition & 1 deletion integrations/codex/plugins/sqlx/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sqlx",
"version": "0.1.8",
"version": "0.1.9",
"description": "List saved OtterMind SQLX datasources, test connections, execute SQL against MySQL, PostgreSQL, Oracle and SQL Server, and open local result pages. Credentials stay in the SQLX data directory.",
"author": {
"name": "OtterMind"
Expand Down
2 changes: 1 addition & 1 deletion integrations/dsh/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ottermind/dsh-sqlx",
"version": "0.1.8",
"version": "0.1.9",
"description": "OtterMind SQLX tools for DeepSeek Harness: list datasources, test connections, execute SQL and open local result pages.",
"type": "module",
"main": "lib/index.js",
Expand Down
2 changes: 1 addition & 1 deletion integrations/pi/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ottermind/pi-sqlx",
"version": "0.1.8",
"version": "0.1.9",
"description": "OtterMind SQLX tools for the Pi coding agent: list datasources, test connections, execute SQL and open local result pages.",
"keywords": [
"pi-package",
Expand Down
2 changes: 1 addition & 1 deletion java/jdbc/pom.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ai.ottermind.sqlx</groupId><artifactId>sqlx-jdbc</artifactId><version>0.1.8</version>
<groupId>ai.ottermind.sqlx</groupId><artifactId>sqlx-jdbc</artifactId><version>0.1.9</version>
<properties><maven.compiler.release>17</maven.compiler.release><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
<dependencies>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.18.6</version></dependency>
Expand Down
2 changes: 1 addition & 1 deletion packages/npm-installer/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ottermind/sqlx",
"version": "0.1.8",
"version": "0.1.9",
"description": "Install or update the SQLX database CLI and its agent Skill.",
"license": "LicenseRef-Chat2DB",
"homepage": "https://github.com/OtterMind/sqlx#readme",
Expand Down
2 changes: 1 addition & 1 deletion scripts/jdbc-fixture.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
set -euo pipefail
kind="${1:?oracle or sqlserver required}"
mkdir -p target/debug
cp java/jdbc/target/sqlx-jdbc-0.1.8.jar target/debug/sqlx-jdbc.jar
cp java/jdbc/target/sqlx-jdbc-0.1.9.jar target/debug/sqlx-jdbc.jar
case "$kind" in
oracle)
curl --fail --location --retry 3 'https://repo.maven.apache.org/maven2/com/oracle/database/jdbc/ojdbc11/23.6.0.24.10/ojdbc11-23.6.0.24.10.jar' -o target/debug/ojdbc.jar
Expand Down
2 changes: 1 addition & 1 deletion scripts/manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import argparse,hashlib,json
from pathlib import Path
def main():
p=argparse.ArgumentParser();p.add_argument('directory',type=Path);p.add_argument('--version',default='0.1.8');a=p.parse_args();components={}
p=argparse.ArgumentParser();p.add_argument('directory',type=Path);p.add_argument('--version',default='0.1.9');a=p.parse_args();components={}
for path in sorted(a.directory.glob('metadata-*.json')):
fragment=json.loads(path.read_text())
if set(components)&set(fragment):raise ValueError('duplicate manifest components')
Expand Down
4 changes: 2 additions & 2 deletions scripts/package-shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ def get(url):
if attempt==2:raise
time.sleep(attempt+1)
def main():
p=argparse.ArgumentParser();p.add_argument('--version',default='0.1.8');p.add_argument('--output',type=Path,default=ROOT/'dist');a=p.parse_args();a.output.mkdir(parents=True,exist_ok=True)
p=argparse.ArgumentParser();p.add_argument('--version',default='0.1.9');p.add_argument('--output',type=Path,default=ROOT/'dist');a=p.parse_args();a.output.mkdir(parents=True,exist_ok=True)
records={};base=f'https://github.com/OtterMind/sqlx/releases/download/v{a.version}/'
def add(name,entries,entrypoint,version=None):
component_version=version or a.version
path=a.output/f'{name}-{component_version}.zip'
with zipfile.ZipFile(path,'w',zipfile.ZIP_DEFLATED) as z:
for filename,body in entries.items():z.writestr(filename,body)
# The Skill ships with the CLI, so it requires the same release; the default
# UI plugin is unchanged in 0.1.8 and keeps its 0.1.4 requirement.
# UI plugin is unchanged in 0.1.9 and keeps its 0.1.4 requirement.
compat={'skill':f'>={a.version}, <0.2.0','ui-default':'>=0.1.4, <0.2.0'}.get(name,'>=0.1.1, <0.2.0')
records[f'{name}:any']=dict(version=component_version,url=base+path.name,sha256=hashlib.sha256(path.read_bytes()).hexdigest(),archive='zip',entrypoint=entrypoint,cli_compat=compat,protocol_version=1)
add('jdbc',{'sqlx-jdbc.jar':(ROOT/f'java/jdbc/target/sqlx-jdbc-{a.version}.jar').read_bytes(),'LICENSE':(ROOT/'LICENSE').read_bytes(),'NOTICE':(ROOT/'NOTICE').read_bytes()},'sqlx-jdbc.jar')
Expand Down
2 changes: 1 addition & 1 deletion scripts/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ def archive(output,files):
for source,name in files:z.write(source,name)
return hashlib.sha256(output.read_bytes()).hexdigest()
def main():
p=argparse.ArgumentParser();p.add_argument('--platform',required=True);p.add_argument('--version',default='0.1.8');p.add_argument('--bin-dir',type=Path,default=ROOT/'target/release');p.add_argument('--output',type=Path,default=ROOT/'dist');a=p.parse_args()
p=argparse.ArgumentParser();p.add_argument('--platform',required=True);p.add_argument('--version',default='0.1.9');p.add_argument('--bin-dir',type=Path,default=ROOT/'target/release');p.add_argument('--output',type=Path,default=ROOT/'dist');a=p.parse_args()
a.output.mkdir(parents=True,exist_ok=True);records={}
suffix='.exe' if a.platform.startswith('windows-') else ''
for kind,binary in [('cli','sqlx'),('mysql','sqlx-driver-mysql'),('postgres','sqlx-driver-postgres'),('ui','sqlx-ui')]:
Expand Down
2 changes: 1 addition & 1 deletion skills/sqlx/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: sqlx
description: Manage encrypted database connections and execute SQL with the OtterMind SQLX CLI. Use for MySQL, PostgreSQL, Oracle, and SQL Server connection checks, queries, DDL, and schema inspection. This skill targets OtterMind/sqlx, not the Rust SQLx migration CLI.
metadata:
cli-compat: ">=0.1.8, <0.2.0"
cli-compat: ">=0.1.9, <0.2.0"
---

# SQLX
Expand Down
2 changes: 1 addition & 1 deletion skills/sqlx/references/install-cli.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Install OtterMind SQLX

The repository is https://github.com/OtterMind/sqlx. The supported CLI range for this Skill is `>=0.1.8, <0.2.0`. The local-page commands are not available in 0.1.0; check the actual version before using them.
The repository is https://github.com/OtterMind/sqlx. The supported CLI range for this Skill is `>=0.1.9, <0.2.0`. The local-page commands are not available in 0.1.0; check the actual version before using them.

1. Check `sqlx --version` and `sqlx --help`. An existing Rust SQLx migration tool is a different executable; preserve it and install this client into a separate user directory, using the explicit path when needed.
2. Select a release from the repository's GitHub Releases page compatible with this Skill. If no binary release is published, follow the [README source installation](https://github.com/OtterMind/sqlx#build-from-source) when the required build tools are available. Do not download another project's CLI or pretend a release exists.
Expand Down
2 changes: 1 addition & 1 deletion skills/sqlx/references/local-ui.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Local credential and result pages

This Skill requires SQLX 0.1.8. Basic local-page commands were introduced in 0.1.1; saved-datasource browsing, data refresh and session renewal were introduced in 0.1.3. Reusable local links and stable restart addresses require 0.1.4. The page is served by a separately downloaded local service and the selected UI plugin, and opens on the machine where the CLI runs. A local URL from a remote SSH environment does not automatically open the remote page on the user's computer.
This Skill requires SQLX 0.1.9. Basic local-page commands were introduced in 0.1.1; saved-datasource browsing, data refresh and session renewal were introduced in 0.1.3. Reusable local links and stable restart addresses require 0.1.4. The page is served by a separately downloaded local service and the selected UI plugin, and opens on the machine where the CLI runs. A local URL from a remote SSH environment does not automatically open the remote page on the user's computer.

## Deliver the page link

Expand Down
4 changes: 2 additions & 2 deletions tests/updates.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import zipfile

ROOT = Path(__file__).resolve().parents[1]
CURRENT = "0.1.8"
NEXT = "0.1.9"
CURRENT = "0.1.9"
NEXT = "0.1.10"
SUFFIX = ".exe" if os.name == "nt" else ""
NAME = "sqlx" + SUFFIX
CLI = ROOT / "target/debug" / NAME
Expand Down
Loading