Skip to content

deft 0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Nov 08:52
· 1 commit to main since this release

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