Skip to content

Releases: YASoftwareDev/dotfiles

v1.1.1

17 Mar 09:38

Choose a tag to compare

What's fixed

  • Physical Ctrl no longer sends Escape — replaced setxkbmap caps:ctrl_modifier + xcape Caps_Lock=Escape with an xmodmap-based approach that assigns Caps Lock the unique keysym Hyper_L; xcape watches Hyper_L only, leaving Control_L/Control_R untouched
  • GNOME: remapping no longer silently resets on logingnome-settings-daemon overwrites xkb settings after .xprofile runs; fixed by adding x11/.config/autostart/caps-remap.desktop which re-fires after the session is ready
  • Caps Lock toggle fully disabledclear Lock via xmodmap removes the toggle; setxkbmap option alone did not reliably disable it
  • install-x11.sh no longer aborts under set -euo pipefail if the xmodmap add Control step returns BadValue

What's new

  • x11/caps-remap.sh — single source of truth for the remapping logic; inline docs cover mechanism, Wayland limitation, startx/xinit gap, keycode assumption, Hyper_L mod4 side-effect, and the -t 200 threshold
  • x11/.config/autostart/caps-remap.desktop — GNOME autostart entry (above)

Notes

  • Wayland: xmodmap and xcape have no effect. Use xremap or keyd instead.
  • startx / no display manager: .xprofile is not sourced — add a call to caps-remap in ~/.xinitrc.
  • The -t 200 xcape threshold (tap must be < 200 ms) can be adjusted in caps-remap.sh if taps feel missed.

v1.1.0

16 Mar 17:52

Choose a tag to compare

What's new

Added

  • scripts/install-fonts.sh — installs MesloLGS NF (4 variants) to ~/.local/share/fonts/; no sudo required; validates downloads and refreshes fontconfig cache
  • scripts/install-x11.sh — builds xcape from source, symlinks x11/.xprofile, and applies Caps Lock remapping immediately
  • x11/.xprofile — Caps Lock dual-function: Ctrl when held, Escape when tapped (via setxkbmap + xcape)
  • update.sh — added xcape to known tools with source-build support, --check output, and sudo guard

Changed

  • install.sh — post-install hints now include font and X11 remapping steps for workstation and docker profiles
  • README.md — added Font section with per-terminal setup instructions (GNOME Terminal, Konsole, Terminator, Alacritty, kitty, urxvt, VS Code); added x11/.xprofile to directory structure and symlink table

v1.0.4

14 Mar 00:28

Choose a tag to compare

Fixed

  • lib/utils.sh detect_sudo(): rewritten as a pure probe — no output, no sudo -v interactive call; eliminates duplicate warnings and unexpected password prompts at startup
  • lib/utils.sh run_checks(): replaced single hardcoded message with 4-state $SUDO_STATUS switch (root / sudo_passwordless / sudo_password / nosudo); sudo_password case demoted from log_ok (✓) to log_info since credentials are not yet validated
  • modules/neovim.sh: sudo -v credential refresh moved to after the GitHub tarball download (inside if $CAN_SUDO), preventing 15-minute cache expiry during slow downloads
  • modules/neovim.sh / modules/zsh.sh: added sudo -n true pre-check before each late-phase sudo -v call; emits log_warn if cache may have expired so the user is not surprised by a prompt
  • get.sh: cosmetic sudo preflight check now respects NOSUDO=1 — no longer reports "✓ sudo" when sudo is explicitly disabled

Added

  • NOSUDO=1 env var support across all entry points: forces user-local (~/.local/bin) install path and skips all apt/sudo operations even when sudo is technically available; documented in install.sh, update.sh, and get.sh usage headers
  • lib/utils.sh run_checks(): profile-aware sudo footprint note — lists exactly which operations will use sudo for the active $PROFILE
  • Per-tool pre-install disclosure in all installer modules: each tool now logs its target version and destination path before downloading (unified pattern across modules/base.sh, modules/neovim.sh, modules/tools.sh, modules/zsh.sh, modules/tmux.sh)
  • modules/base.sh: DRY _pkgs arrays — single declaration drives both log_info disclosure and apt_install call, eliminating list duplication

Changed

  • update.sh: bare detect_sudo call replaced with explicit log_info + 4-state $SUDO_STATUS messaging giving accurate context for the update path
  • modules/tools.sh _install_ruff: disclosure now uses uv tool bin-dir (PATH shim location) instead of uv tool dir (venv location)

v1.0.3

14 Mar 00:28

Choose a tag to compare

Added

  • No-sudo support: when sudo is unavailable, modules/base.sh now fetches prebuilt binaries (rg, fd, jq, delta, eza, fzf, zoxide) from GitHub releases into ~/.local/bin instead of aborting
  • _install_ripgrep, _install_fd, _install_jq — dedicated helpers for no-sudo binary installs (musl tarball or single-binary releases)
  • _install_delta / _install_eza — extended with no-sudo tarball path alongside existing .deb / PPA paths
  • modules/zsh.sh: guard that skips oh-my-zsh, plugins, and zshrc setup when zsh is not available; prints actionable reinstall hint
  • test.sh: nosudo profile — verifies all ~/.local/bin binaries are present and functional; confirms sudo is absent in the test environment
  • test-local.sh: --profile nosudo flag and --skip-nosudo flag; run_nosudo runner builds via Dockerfile.nosudo and runs the nosudo test suite
  • .github/workflows/install.yml: install-nosudo job — matrix across Ubuntu 20.04 / 22.04 / 24.04 as a non-root user with no sudo

Changed

  • modules/base.sh: install_base restructured — apt path and no-sudo path are symmetric branches; prints PATH hint when binaries land in ~/.local/bin
  • modules/base.sh _install_zoxide / _install_delta / _install_eza: apt / .deb fallbacks now guarded with $CAN_SUDO to avoid false errors
  • lib/utils.sh: no-sudo warning message updated to mention ~/.local/bin

v1.0.2

14 Mar 00:27

Choose a tag to compare

Removed

  • nvim: removed csv.vim plugin (chrisbra/csv.vim) — no longer needed

v1.0.1

14 Mar 00:27

Choose a tag to compare

Fixed

  • get.sh: auto-install git and curl via apt-get when running as root on apt-based systems — bare ubuntu:20.04 containers now need zero manual pre-installs (_apt_bootstrap helper runs apt-get update at most once)
  • get.sh: sudo preflight check now correctly reports "running as root" instead of the misleading "apt package installs will be skipped" warning
  • modules/zsh.sh _set_default_shell: $USER unbound variable crash in root containers replaced with $(id -un)
  • modules/zsh.sh _set_default_shell: hardcoded sudo usermod replaced with $SUDO usermod — works on minimal images without sudo installed
  • modules/zsh.sh _set_default_shell: $SHELL unbound variable crash guarded with ${SHELL:-}
  • modules/zsh.sh _set_default_shell: empty zsh_path guard prevents silent false-positive "already installed" and crashes on usermod

Added

  • modules/zsh.sh: _patch_bashrc_for_docker — when /.dockerenv is detected, appends exec zsh guard to ~/.bashrc so docker exec -it … bash sessions auto-switch to zsh; fires for all profiles including docker
  • install.sh: warns when workstation profile is selected inside a Docker container, suggesting the lighter docker profile
  • get.sh: Docker usage documented in header — Option A (combined one-liner) and Option B (docker cp for zero in-container pre-reqs)

v1.0.0 — Complete overhaul

11 Mar 22:54

Choose a tag to compare

Complete overhaul of the dotfiles infrastructure: modular profiles, Neovim, CI, and bootstrap.

Added

  • get.sh — one-line bootstrap to install any profile on a fresh machine
  • Neovim config with full modern plugin stack: LSP (mason), blink.cmp, Treesitter, Telescope, conform.nvim (format-on-save), gitsigns, which-key, flash.nvim, trouble, and 20+ colorschemes
  • Profile system: separate workstation / server configs
  • CI pipeline with Docker-based test matrix and Bash test suite
  • delta as git pager (replaces diff-so-fancy)
  • ruff formatter (replaces black + isort)
  • zoxide shell integration

Changed

  • install.sh rewritten: pre-checks, modular structure, profile-aware package selection
  • update.sh rewritten: modular, idempotent steps (zsh, tmux, nvim, git tools)
  • gitconfig uses [includeIf] local-override pattern
  • Tmux plugin install automated — no longer requires manual <prefix>+I
  • Zsh fzf-tab preview uses eza instead of ls

Removed

  • Vim (vim/) config replaced by Neovim
  • Personal utility scripts
  • _download_bin unused helper

Fixed

  • Tmux plugins restricted to workstation profile only
  • Zsh history setopts and share_history placement
  • local keyword outside function causing shell crash
  • get.sh: non-git destination guard, soft-fail on pull errors

v0.3.0

11 Mar 22:54

Choose a tag to compare

Tmux, Vim, Zsh, and Git config updates.

v0.2.0

11 Mar 22:54
6f00ffb

Choose a tag to compare

Added

  • Git and CMake source-build install scripts
  • ShellCheck, shfmt, cheat packages
  • Ranger config files, colored-man-pages zsh plugin
  • Nerd Font patching instructions

Changed

  • Vim plugin manager migrated from Vundle to vim-plug
  • Sudo requirements relaxed for CMake and Git installs

v0.1.0

11 Mar 22:54

Choose a tag to compare

Initial dotfiles: Zsh (oh-my-zsh + fzf), Tmux, Vim, and monolithic install.sh.