Skip to content

Releases: 11ways/sym

v1.0.7

Choose a tag to compare

@roelvangils roelvangils released this 15 Jun 11:38

Changed

  • sym snapshot restore now parses snapshots with jq when it is available, reading name/target pairs NUL-delimited so any value survives intact. Without jq, it falls back to a hardened text scan using parameter expansion (no per-line sed subprocess).

Fixed

  • The snapshot json_unescape helper now decodes a literal backslash followed by n (or r/t) correctly. The 1.0.6 single-pass version could misread the encoded \\n as 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

Choose a tag to compare

@roelvangils roelvangils released this 15 Jun 11:30

Fixed

  • sym snapshot restore now JSON-unescapes link names and targets, mirroring the escaping applied by sym 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

Choose a tag to compare

@roelvangils roelvangils released this 15 Jun 10:34

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. Both sym cl.sh cl and sym cl cl.sh now produce the same link.

sym v1.0.4

Choose a tag to compare

@roelvangils roelvangils released this 15 Jun 10:34

Added

  • sym doctor — one-shot setup diagnostics. Checks bash version, that
    $SYM_DIR exists and is writable, $PATH membership, $SYM_STATE_DIR
    writability, broken-link count, availability of core dependencies,
    whether a native realpath is 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=json emits a structured
    document with a summary tally. Exits non-zero on any FAIL entry so
    post-install scripts and CI can verify setup.

sym v1.0.3

Choose a tag to compare

@roelvangils roelvangils released this 15 Jun 10:34

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_DIR state as JSON. Default snapshot
    location: $SYM_STATE_DIR/snapshots/.
  • SYM_STATE_DIR environment variable (default ~/.local/share/sym) for
    undo journal and snapshot storage.

Changed

  • sym verify now exits non-zero when broken links are found, so CI and
    pre-commit hooks can rely on its exit status.
  • create and edit now 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 restore verify that $SYM_DIR is writable before mutating,
    with a clearer error message when it isn't.
  • fix, batch_create, batch_rm, and snapshot restore install a
    SIGINT/SIGTERM trap so Ctrl-C exits with a warning and code 130
    instead of leaving no trace.
  • Path resolution uses an internal _realpath helper with a pure-bash
    fallback, so sym works on systems that don't ship realpath.

sym v1.0.2

Choose a tag to compare

@roelvangils roelvangils released this 15 Jun 10:34

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, and sym <existing-link> <new> could falsely report valid
    relative symlinks as broken.
  • sym verify and sym fix no longer risk aborting under set -e when a
    counter is incremented from 0 (((x++)) returns exit status 1 in that
    case). Counters now use x=$((x+1)).
  • sym ls --format=json and --format=csv now 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/sym to 11ways/sym
    in help output and documentation.
  • Removed EXIT CODES section from --help output (still documented in the
    man page).
  • Corrected author name capitalization to "Roel Van Gils" across all files.

sym v1.0.1

Choose a tag to compare

@roelvangils roelvangils released this 31 Oct 17:30

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/sym

Linux/macOS (One-line):

curl -fsSL https://raw.githubusercontent.com/11ways/sym/main/install.sh | bash

Features

  • 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

Choose a tag to compare

@roelvangils roelvangils released this 31 Oct 17:02

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 -v operator 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/sym

Linux/macOS (One-line):

curl -fsSL https://raw.githubusercontent.com/11ways/sym/main/install.sh | bash

Features

  • 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.