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.7:refs/tags/v0.1.7
test "$(git rev-parse 'v0.1.7^{commit}')" = "$GITHUB_SHA"
test "$(git describe --tags --exact-match HEAD)" = v0.1.7
test "$(git cat-file -t refs/tags/v0.1.7)" = tag
gh release create v0.1.7 --draft --verify-tag --title 'SQLX 0.1.7' --notes-file docs/release-notes.md dist/*.zip dist/manifest.json dist/SHA256SUMS dist/release-version.txt
gh release edit v0.1.7 --draft=false --latest
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
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.7
test "$GITHUB_REF_NAME" = v0.1.8
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.7"
version = "0.1.8"
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.7.jar target/release/sqlx-jdbc.jar
cp java/jdbc/target/sqlx-jdbc-0.1.8.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.7.jar target/release/sqlx-jdbc.jar
Copy-Item java/jdbc/target/sqlx-jdbc-0.1.8.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
20 changes: 6 additions & 14 deletions docs/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,21 @@
SQLX 0.1.7 adds Skill targets for dsh and Pi, a way to remove a Skill installation, and clearer database errors.
SQLX 0.1.8 fixes credential redaction in the JDBC worker and documents how to connect to a local database.

## New
## Fixes

- `sqlx skill install --target dsh` installs the Skill into `~/.agents/skills`, the shared directory that dsh and Codex both read; `--target pi` installs into Pi's `~/.pi/agent/skills`. The npx installer accepts the same names, and unknown targets now list all four.
- `sqlx skill remove --path <skill-directory>` stops managing an installation without deleting its files, and `sqlx skill status` marks a record whose directory no longer exists with `missing: true` instead of leaving an unexplained `intact: false`.
- 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

- PostgreSQL failures report the server's own message instead of `db error`, including the detail and hint fields when the server sends them.
- A connection that fails before any statement with certificate verification enabled now points at `--tls disable`. Oracle previously reported only `ORA-17002: I/O 错误: Connection closed`, which looks like a network fault rather than a TLS mismatch.
- The JDBC worker no longer writes vendor driver diagnostics to stderr when a connection fails; set `SQLX_JDBC_DEBUG=1` to see them again.
- Credential redaction keeps hostnames and ordinary words intact. A password such as `oracle` no longer rewrites `docs.oracle.com` in a driver message, and a short username no longer mangles unrelated words.

## Fixes

- `sqlx sql execute … | head` no longer panics with `failed printing to stdout: Broken pipe`; a closed stdout exits quietly and other write failures still fail.
- 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.

## 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.7 Skill requires SQLX 0.1.7.
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.

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.6...v0.1.7
**Full Changelog**: https://github.com/OtterMind/sqlx/compare/v0.1.7...v0.1.8
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.7</version>
<groupId>ai.ottermind.sqlx</groupId><artifactId>sqlx-jdbc</artifactId><version>0.1.8</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.7",
"version": "0.1.8",
"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.7.jar target/debug/sqlx-jdbc.jar
cp java/jdbc/target/sqlx-jdbc-0.1.8.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.7');a=p.parse_args();components={}
p=argparse.ArgumentParser();p.add_argument('directory',type=Path);p.add_argument('--version',default='0.1.8');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.7');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.8');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.7 and keeps its 0.1.4 requirement.
# UI plugin is unchanged in 0.1.8 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.7');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.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()
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.7, <0.2.0"
cli-compat: ">=0.1.8, <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.7, <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.8, <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.7. 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.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.

## 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.7"
NEXT = "0.1.8"
CURRENT = "0.1.8"
NEXT = "0.1.9"
SUFFIX = ".exe" if os.name == "nt" else ""
NAME = "sqlx" + SUFFIX
CLI = ROOT / "target/debug" / NAME
Expand Down
Loading