Releases: conversiontools/ctio
v0.1.1 - preserve original filename on uploads
Fixes
-
Preserve original filename on file uploads. Previously every file uploaded by ctio landed in the api with
name="file", which propagated downstream:- Worker derived result filenames as
file.xmlinstead of<input-basename>.<ext> - Task records and webhook payloads showed
"file"for the source name curl -OJdownloads landed asfile.xml
The fix: pass the path string to
client.files.upload()when we have one. The SDK already extractsbasename(path)correctly for path inputs - we were handing it a stream instead and losing the filename. Only stdin uploads still upload as"file"(no source filename available by design). - Worker derived result filenames as
Other
- 5 new unit tests for the upload-input picker (file with path, Windows-style path, stdin, plus defensive cases)
- 28 tests passing (was 23)
Install
Windows (scoop):
scoop update ctioIf you don't have ctio installed yet, see v0.1.0 install instructions.
macOS / Linux: download the matching binary from this release and replace your existing ctio.
Full Changelog: v0.1.0...v0.1.1
v0.1.0 - first public release
ctio v0.1.0 - first public release
Composable, single-binary CLI for the Conversion Tools API. No Node/Bun runtime required.
What's in this release
ctio auth login- paste a token from https://conversiontools.io/profile; supports multiple profiles, multi-regionctio convert -t <type> <input> <output>- run a conversion. Streams stdin/stdout via-, supports--option key=value,--url,--sandbox,--regionctio task <id>- inspect task status,--waitfor completion,--downloadto a file or-(stdout)ctio list- browse 205 converters; filters:--from,--to,--ai,--custom- Token resolution:
--token>CT_API_TOKENenv >--profile> active profile
Install
Windows
Option 1: scoop (recommended)
scoop bucket add conversiontools https://github.com/conversiontools/scoop-bucket
scoop install ctioIf scoop isn't installed yet, run this first (one time only):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-ExpressionOption 2: manual download
Invoke-WebRequest -Uri https://github.com/conversiontools/ctio/releases/download/v0.1.0/ctio-windows-x64.exe -OutFile ctio.exeMove ctio.exe to a directory on your PATH, or add the current directory to PATH.
macOS (Apple Silicon)
curl -fL https://github.com/conversiontools/ctio/releases/download/v0.1.0/ctio-darwin-arm64 -o ctio
chmod +x ctio
xattr -d com.apple.quarantine ctio 2>/dev/null || true
sudo mv ctio /usr/local/bin/macOS (Intel)
curl -fL https://github.com/conversiontools/ctio/releases/download/v0.1.0/ctio-darwin-x64 -o ctio
chmod +x ctio
xattr -d com.apple.quarantine ctio 2>/dev/null || true
sudo mv ctio /usr/local/bin/Linux
curl -fL https://github.com/conversiontools/ctio/releases/download/v0.1.0/ctio-linux-x64 -o ctio
chmod +x ctio
sudo mv ctio /usr/local/bin/Quick start
ctio auth login
ctio convert -t json_to_excel data.json out.xlsx
cat data.json | ctio convert -t json_to_excel - out.xlsx
ctio task list --status ERROR --limit 10Known limits
- macOS binaries are unsigned - first launch will trigger Gatekeeper. The
xattr -d com.apple.quarantineline in the install command above clears that. If you skip it, right-click → Open the first time. - Homebrew tap (
brew install conversiontools/tap/ctio) coming in v0.2 parseanddetectverbs coming in v0.2