Releases: matthewsinclair/utilz
Releases · matthewsinclair/utilz
v1.3.1: lnrel utility
What's New
lnrel - Relative Symlink Creator
New utility that creates symlinks with relative paths. Computes the relative path from the link's directory to the target using GNU realpath, then creates a symlink with that relative path. Relative symlinks are portable — they survive directory tree moves.
Features:
- Automatic
grealpath/realpathdetection for macOS/Linux portability - Strips backslash escapes from paths (handles the common tab-completion-in-quotes pattern)
- Supports dangling symlinks (target need not exist)
- Single-arg form defaults to basename in current directory
- 12 comprehensive tests
Usage:
# Link to a file (creates ./file.txt in cwd)
lnrel /path/to/file.txt
# Explicit link name
lnrel ../shared/config.yaml config.yaml
# Cross-directory
lnrel /opt/data/db.sqlite ./data/db.sqlitePlatform requirements: GNU coreutils on macOS (brew install coreutils). Built-in on Linux.
CI Updates
- coreutils added to macOS CI brew install
- lnrel added to Linux CI test loop
Full Changelog: v1.3.0...v1.3.1
v1.3.0: pdf2md and xtrct
New Utilities
pdf2md — PDF to Markdown Converter
- 7-stage pipeline using pdfplumber: char extraction, stats, line grouping, heading detection (H1-H6 by font size), list detection, header/footer removal, markdown emission
- Bash wrapper with Python venv auto-management at
lib/.venv/ --pagesrange selection,-ofile output,--verboseprogress- 15 BATS tests
xtrct — Schema-driven Semantic Data Extraction
- Uses Claude API with descriptive JSON schemas to extract structured data
- Supports
json,csv, andtableoutput formats - PDF input auto-converts via pdf2md; stdin piping supported
ANTHROPIC_API_KEYfail-fast before venv creation- 12 BATS tests (8 tier-1 always, 4 tier-2 require API key)
Composable Pipeline
pdf2md invoice.pdf | xtrct --schema invoice_schema.jsonOther Changes
- CI updated with
python3-venvfor Ubuntu - Both utilities added to Linux test loop
- 10 utilities total
Utilz v1.2.1
syncz v1.3.0 — Bidirectional Sync & Scriptable Confirm
Added
- syncz — Bidirectional sync mode (
--bidi)- Two-way sync with automatic orphan detection using
find+comm - Orphan resolution: interactive prompts,
--delete(silent),--confirm yes/no/all(scriptable) - Two-pass rsync (dir1→dir2, dir2→dir1) with newer-wins strategy
- rsync
--deletenever passed in bidi mode (orphan resolution handles deletions) --source-winsand--dest-winsblocked in bidi mode
- Two-way sync with automatic orphan detection using
- syncz —
--confirmoptional argument (yes,no,all)- Auto-answers all prompts for fully scriptable operation
- Works in both unidirectional and bidirectional modes
- Peek-ahead parsing preserves positional argument compatibility
Fixed
- syncz: empty orphan arrays caused silent exit on bash 3.2 (
set -e+&&short-circuit) - syncz:
--confirm yes --deletenow correctly deletes (macOS rsync missing delete count in stats)
Changed
- syncz version bumped to 1.3.0
- Framework version bumped to 1.2.1
Testing
- 21 new tests (66 total), all passing on macOS and Linux
v1.2.0 - Add syncz directory-to-directory syncer
What's New
syncz - New utility: simple directory-to-directory syncer using rsync
Features
- Three conflict resolution strategies: newer-wins (default), source-wins, dest-wins
- Confirmation modes:
--confirm(Y/N/A per-step),--force(no prompts),--just-do-it(single Y/N) --deletewith safety gate (requires--confirm,--force, or--just-do-it)--backupcreates.syncz-bakcopies of overwritten files--excludepattern support (repeatable)--dry-runwith summary and itemized change listing--verboseand--progressmodes- Uses
-rlptDinstead of-ato avoid group/owner warnings for non-root syncs
Other Changes
- rsync dependency check in
utilz doctor - syncz added to Linux CI test loop
- Framework version bumped to 1.2.0
- 45 comprehensive BATS tests
See CHANGELOG.md for full details.