Skip to content

Releases

deft 0.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Nov 08:52

Added

  • gps group: GPX and KML conversion, distance, time and climb.
  • json, toml, yaml and xml groups replace data. Each converts to the others; JSON, TOML and YAML validate against a JSON Schema; TOML and YAML merge and diff; TOML formats.
  • deft find says when no command does a job.

Changed

  • pdf ocr writes the recognised text to a .txt file and no longer writes a searchable PDF. -o is required. Pages that already have text give that text.
  • image strip takes JPEG, PNG, WebP and GIF only, and never re-encodes: it keeps just the parts that make the picture, every GIF frame included. HEIC, AVIF and TIFF are refused, since re-encoding them changed the picture or lost pages.
  • YAML output quotes strings such as yes, on and dates, which older parsers misread.
  • Word readers keep footnotes, endnotes, text boxes, nested tables, content controls and list levels, and doc replace reaches notes.
  • doc to-html embeds pictures. Pictures in PDFs keep their natural size.
  • gps info and gps convert treat track segments separately, and climb_m ignores rises under 2 m.
  • md to-pdf, md to-docx, md to-epub, html to-pdf and html to-docx download the web pictures a document links to and embed them. A picture that cannot be downloaded is left out with one warning, keeping its alt text. This is the only time deft goes online.
  • pdf ocr reads at 300 dpi by default, turns sideways and upside-down pages upright, reads scans that carry only a short text stamp, and warns when nothing was recognised.
  • pdf number without --position moves the number off existing text or pictures, to the first free corner, and says where it went; a given --position is kept, with a warning when it is taken.
  • pdf to-text points to pdf ocr for scans of any length, and keeps word spaces in tightly justified text.
  • pdf decrypt decrypts attachments that are encrypted on their own, or refuses; it no longer writes a file that is still encrypted.
  • pdf encrypt warns that Apple viewers cannot open a file whose password is not ASCII, and describes --no-print and --no-copy as requests to the viewer.

Removed

  • --in-place. Deft never changes an input: not through -o, --force, a hard or symbolic link, a folder output, or pictures saved with --images.
  • The archive, subtitle and audio groups. An agent does each audio job with one ffmpeg line.
  • html screenshot and html to-pdf --browser. Deft no longer uses Chrome.
  • The youtube group, deft engine install and update, --offline and --install-engines. Deft no longer downloads videos or programs.
  • Commands an agent does in one ordinary line: file hash, base64, split, join, rename and organize; video crop, resize, rotate, mute, fade, repeat, reverse, stack, thumbnail, extract-audio and extract-subtitles; image diff, invert and sharpen; pdf grayscale and repair; video split (ffmpeg -ss … -to …); data query; sheet transpose; email info.
  • The video group: pad and watermark are one ffmpeg line each.
  • video stabilize: ffmpeg -vf deshake does it in one line, and on real handheld clips deft's two-pass vidstab smeared a third of them.
  • pdf strip: metadata hides in figures, attachments and scripts inside a PDF, and on real files authors' names survived. Deft does not promise a clean file it cannot guarantee.
  • json format, merge and diff: jq does each in one line. xml diff and validate: xmllint does them. yaml format, xml format and xml merge: on real files they lost comments, namespaces or element order by design.
  • html --main: on article pages from sites it had not been tuned on, it kept the article alone on 20 of 32; comment boxes, subscribe forms and related lists differ on every site. trafilatura does this job.
  • pdf redact: a redaction that misses a word is a leak, and on real files it missed text in attachments, comments and fonts it could not decode. Deft does not promise safety it cannot give.
  • video add-audio, add-subtitles, chunk, compress, convert, frames, from-images, info, merge, speed, strip and to-gif: on real files an agent did each as well with one ffmpeg line.
  • sheet query, filter, sort, select, group, dedupe and join: an agent does these in one line with sqlite3, DuckDB or pandas. Deft no longer includes SQLite.
  • The email and file groups, and the data group, now split by format.
  • Commands whose output was not good enough: pdf to-docx, to-md, to-sheet and to-pdfa; slides to-pdf; md to-pptx; image to-video.

Fixed

  • pdf encrypt output opens in Apple's PDF readers. pdf to-text and search read fonts that came out as garbage before, and ligatures.
  • pdf merge keeps every form and bookmark.
  • HEIC photos from phones come out whole and upright. image strip removes everything after a JPEG's end. image info finds GPS in every format. Display P3 colour survives.
  • image compress never grows a file and fails when it misses a target. image trim --speck ignores dust.
  • Word readers keep footnotes, text boxes and nested tables. EPUB keeps every chapter and refuses DRM. HTML keeps the headline and declared charset.
  • -o works on report commands.
  • Report commands write their result as JSON with -o name.json instead of ignoring -o.
  • Text options keep their spaces, so doc replace --find ' ' works.
  • sheet merge lines columns up by header. sheet extract --range counts from A1 when a sheet starts later. Comma decimals in semicolon files are numbers, and ids such as 12E3 stay text.
  • UTF-16 text is no longer taken for MP3. deft info identifies locked PDFs and directories.
  • deft convert writes every page into a directory. YAML formatting keeps documents apart and warns about comments.

Install: curl -fsSL https://deftcli.com/install.sh | sh

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 08:34

Install on macOS or Linux:

curl -fsSL https://deftcli.com/install.sh | sh

First version. See docs/COMMANDS.md for the full command list.

Added

  • Command groups: pdf, image, video, audio, doc, slides, data, sheet, md, html, epub, email, youtube, file, qr.
  • Top-level commands: convert, info, find, schema, engine, skill, doctor.
  • One-line results starting with ok, partial or error, and --json for structure.
  • Stable error codes, with a hint: when there is a concrete fix.
  • Three layers of help with token budgets enforced by tests, and deft find to search by intent.
  • A generated skill for Claude Code and Codex: deft skill install --agent all.
  • External plugins: a deft-<group> program on the PATH acts as a group.
  • Watermarks, page numbers and subtitles in any script, including Chinese.

Known limits

  • video and audio need ffmpeg, which must be installed by hand. youtube needs yt-dlp.
  • WebP is written losslessly only.
  • PDF rendering uses pure-Rust hayro; quality on complex PDFs still needs checking.
  • Releases cover macOS and Linux. Windows builds and passes unit tests, but has no installer yet.
  • Full end-to-end tests run on macOS only.

Measured

On the 85 supported tasks of a 100-task benchmark, with Codex (gpt-6-luna, medium effort), counting the latest attempt: 85 solved with deft and 78 without, 27% fewer tokens, 57% less time, 3 failed commands against 70. Method and limits are in the README.