Releases: 11ways/sym
Releases · 11ways/sym
Release list
v1.0.7
Changed
sym snapshot restorenow parses snapshots withjqwhen it is available, reading name/target pairs NUL-delimited so any value survives intact. Withoutjq, it falls back to a hardened text scan using parameter expansion (no per-linesedsubprocess).
Fixed
- The snapshot
json_unescapehelper now decodes a literal backslash followed byn(orr/t) correctly. The 1.0.6 single-pass version could misread the encoded\\nas a newline; it now parks escaped backslashes on a sentinel byte before decoding the rest.
Big thanks to @kzenmatthias, whose PR #2 supplied the corrected json_unescape and the parameter-expansion parsing.
v1.0.6
Fixed
sym snapshot restorenow JSON-unescapes link names and targets, mirroring the escaping applied bysym snapshot save. Previously, any link whose name or target contained",\, a newline, tab, or CR was restored to the wrong path, silently producing a broken link.
Thanks to @kzenmatthias for the detailed report (#1).
sym v1.0.5
Added
- Order-forgiving link creation:
sym <a> <b>now accepts the source path and
link name in either order. The argument that points to an existing path (or
that contains a/) is treated as the source; the other becomes the link
name. Bothsym cl.sh clandsym cl cl.shnow produce the same link.
sym v1.0.4
Added
sym doctor— one-shot setup diagnostics. Checks bash version, that
$SYM_DIRexists and is writable,$PATHmembership,$SYM_STATE_DIR
writability, broken-link count, availability of core dependencies,
whether a nativerealpathis present, whether each shell's completion
file is detected on disk, and whether the man page is reachable via
man -w. Output is text by default;--format=jsonemits a structured
document with asummarytally. Exits non-zero on any FAIL entry so
post-install scripts and CI can verify setup.
sym v1.0.3
Added
sym edit <link> <new_target>— first-class retarget verb (atomic).sym completion <bash|zsh|fish>— prints shell completion to stdout.
Homebrew formula auto-installs completions via
generate_completions_from_executable.sym ls --name <glob>— filter listings by a shell glob (works in text,
json, and csv formats).sym create --from <dir>— batch-create links for every top-level file
in a directory (skips dotfiles and directories; idempotent).sym rm --match <glob>— batch-remove links by name glob.sym undo— reverses the most recent create, rm, edit, fix, batch, or
snapshot-restore operation. Single-level history stored in
$SYM_STATE_DIR/last_op.json.sym snapshot save [<file>]/snapshot list/snapshot restore <file>
— capture and restore the full$SYM_DIRstate as JSON. Default snapshot
location:$SYM_STATE_DIR/snapshots/.SYM_STATE_DIRenvironment variable (default~/.local/share/sym) for
undo journal and snapshot storage.
Changed
sym verifynow exits non-zero when broken links are found, so CI and
pre-commit hooks can rely on its exit status.createandeditnow replace existing symlinks atomically via a temp
symlink +rename(2)so there is never a window where the destination
is missing during a swap.create,edit,rm,fix,batch_create,batch_rm, and
snapshot restoreverify that$SYM_DIRis writable before mutating,
with a clearer error message when it isn't.fix,batch_create,batch_rm, andsnapshot restoreinstall a
SIGINT/SIGTERM trap so Ctrl-C exits with a warning and code 130
instead of leaving no trace.- Path resolution uses an internal
_realpathhelper with a pure-bash
fallback, sosymworks on systems that don't shiprealpath.
sym v1.0.2
Fixed
- Relative symlink targets are now resolved against the symlink's directory
instead of the caller's CWD. Previously,sym ls,sym verify,sym fix,
sym info, andsym <existing-link> <new>could falsely report valid
relative symlinks as broken. sym verifyandsym fixno longer risk aborting underset -ewhen a
counter is incremented from 0 (((x++))returns exit status 1 in that
case). Counters now usex=$((x+1)).sym ls --format=jsonand--format=csvnow properly escape special
characters. Filenames containing quotes, commas, backslashes, newlines, or
carriage returns no longer produce invalid output.- The PATH-not-in-PATH warning no longer fires after read-only commands
(ls,info,verify,fix,rm). It now only appears after a create
operation, as intended.
Changed
- Updated GitHub repository references from
roelvangils/symto11ways/sym
in help output and documentation. - Removed
EXIT CODESsection from--helpoutput (still documented in the
man page). - Corrected author name capitalization to "Roel Van Gils" across all files.
sym v1.0.1
sym v1.0.1
Fixed macOS compatibility and Homebrew installation
What's Fixed
✅ macOS Bash 3.2 Compatibility
- Fixed "conditional binary operator expected" error
- Now works with macOS system bash (3.2.57) without GNU tools
✅ No Build Dependencies
- Pre-built man page included in distribution
- Removed pandoc dependency from Homebrew formula
- Faster, simpler installation
✅ Homebrew Installation
- Fixed SHA-256 mismatch issue
- Clean installation without cache conflicts
Installation
macOS (Homebrew):
brew install 11ways/sym/symLinux/macOS (One-line):
curl -fsSL https://raw.githubusercontent.com/11ways/sym/main/install.sh | bashFeatures
- Create, list, inspect, and remove symbolic links
- Verify and fix broken links automatically
- Multiple output formats (text, JSON, CSV)
- Comprehensive man page
- Cross-platform (macOS & Linux)
See the README for full documentation.
sym v1.0.0
sym v1.0.0
A user-friendly symbolic link manager for managing links in ~/.local/bin
What's Fixed in This Release
✅ macOS Compatibility - Fixed bash 3.2 compatibility issue
- Replaced
-voperator with bash 3.2 compatible check - Works on macOS without GNU tools
✅ No Build Dependencies - Pre-built man page included
- Removed pandoc dependency from Homebrew formula
- Man page included in distribution
- Faster installation
Installation
macOS (Homebrew):
brew install 11ways/sym/symLinux/macOS (One-line):
curl -fsSL https://raw.githubusercontent.com/11ways/sym/main/install.sh | bashFeatures
- Create, list, inspect, and remove symbolic links
- Verify and fix broken links automatically
- Multiple output formats (text, JSON, CSV)
- Comprehensive man page
- Cross-platform (macOS & Linux)
See the README for full documentation.