Repository navigation
Releases
Releases · firstprayer/deft
deft 0.2.0
Added
gpsgroup: GPX and KML conversion, distance, time and climb.json,toml,yamlandxmlgroups replacedata. Each converts to the others; JSON, TOML and YAML validate against a JSON Schema; TOML and YAML merge and diff; TOML formats.deft findsays when no command does a job.
Changed
pdf ocrwrites the recognised text to a.txtfile and no longer writes a searchable PDF.-ois required. Pages that already have text give that text.image striptakes 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,onand dates, which older parsers misread. - Word readers keep footnotes, endnotes, text boxes, nested tables, content controls and list levels, and
doc replacereaches notes. doc to-htmlembeds pictures. Pictures in PDFs keep their natural size.gps infoandgps converttreat track segments separately, andclimb_mignores rises under 2 m.md to-pdf,md to-docx,md to-epub,html to-pdfandhtml to-docxdownload 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 ocrreads 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 numberwithout--positionmoves the number off existing text or pictures, to the first free corner, and says where it went; a given--positionis kept, with a warning when it is taken.pdf to-textpoints topdf ocrfor scans of any length, and keeps word spaces in tightly justified text.pdf decryptdecrypts attachments that are encrypted on their own, or refuses; it no longer writes a file that is still encrypted.pdf encryptwarns that Apple viewers cannot open a file whose password is not ASCII, and describes--no-printand--no-copyas 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,subtitleandaudiogroups. An agent does each audio job with one ffmpeg line. html screenshotandhtml to-pdf --browser. Deft no longer uses Chrome.- The
youtubegroup,deft engine installandupdate,--offlineand--install-engines. Deft no longer downloads videos or programs. - Commands an agent does in one ordinary line:
file hash,base64,split,join,renameandorganize;video crop,resize,rotate,mute,fade,repeat,reverse,stack,thumbnail,extract-audioandextract-subtitles;image diff,invertandsharpen;pdf grayscaleandrepair;video split(ffmpeg -ss … -to …);data query;sheet transpose;email info. - The
videogroup:padandwatermarkare one ffmpeg line each. video stabilize:ffmpeg -vf deshakedoes 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,mergeanddiff:jqdoes each in one line.xml diffandvalidate:xmllintdoes them.yaml format,xml formatandxml 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,stripandto-gif: on real files an agent did each as well with one ffmpeg line.sheet query,filter,sort,select,group,dedupeandjoin: an agent does these in one line with sqlite3, DuckDB or pandas. Deft no longer includes SQLite.- The
emailandfilegroups, and thedatagroup, now split by format. - Commands whose output was not good enough:
pdf to-docx,to-md,to-sheetandto-pdfa;slides to-pdf;md to-pptx;image to-video.
Fixed
pdf encryptoutput opens in Apple's PDF readers.pdf to-textandsearchread fonts that came out as garbage before, and ligatures.pdf mergekeeps every form and bookmark.- HEIC photos from phones come out whole and upright.
image stripremoves everything after a JPEG's end.image infofinds GPS in every format. Display P3 colour survives. image compressnever grows a file and fails when it misses a target.image trim --speckignores dust.- Word readers keep footnotes, text boxes and nested tables. EPUB keeps every chapter and refuses DRM. HTML keeps the headline and declared charset.
-oworks on report commands.- Report commands write their result as JSON with
-o name.jsoninstead of ignoring-o. - Text options keep their spaces, so
doc replace --find ' 'works. sheet mergelines columns up by header.sheet extract --rangecounts 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 infoidentifies locked PDFs and directories. deft convertwrites 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
Install on macOS or Linux:
curl -fsSL https://deftcli.com/install.sh | shFirst 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,partialorerror, and--jsonfor 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 findto 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
videoandaudioneed ffmpeg, which must be installed by hand.youtubeneeds 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.