Releases: YASoftwareDev/dotfiles
Releases · YASoftwareDev/dotfiles
v1.1.1
What's fixed
- Physical Ctrl no longer sends Escape — replaced
setxkbmap caps:ctrl_modifier+xcape Caps_Lock=Escapewith anxmodmap-based approach that assigns Caps Lock the unique keysymHyper_L; xcape watchesHyper_Lonly, leavingControl_L/Control_Runtouched - GNOME: remapping no longer silently resets on login —
gnome-settings-daemonoverwrites xkb settings after.xprofileruns; fixed by addingx11/.config/autostart/caps-remap.desktopwhich re-fires after the session is ready - Caps Lock toggle fully disabled —
clear Lockvia xmodmap removes the toggle;setxkbmapoption alone did not reliably disable it install-x11.shno longer aborts underset -euo pipefailif the xmodmapadd Controlstep returnsBadValue
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 200thresholdx11/.config/autostart/caps-remap.desktop— GNOME autostart entry (above)
Notes
v1.1.0
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 cachescripts/install-x11.sh— buildsxcapefrom source, symlinksx11/.xprofile, and applies Caps Lock remapping immediatelyx11/.xprofile— Caps Lock dual-function: Ctrl when held, Escape when tapped (viasetxkbmap+xcape)update.sh— addedxcapeto known tools with source-build support,--checkoutput, and sudo guard
Changed
install.sh— post-install hints now include font and X11 remapping steps forworkstationanddockerprofilesREADME.md— added Font section with per-terminal setup instructions (GNOME Terminal, Konsole, Terminator, Alacritty, kitty, urxvt, VS Code); addedx11/.xprofileto directory structure and symlink table
v1.0.4
Fixed
lib/utils.shdetect_sudo(): rewritten as a pure probe — no output, nosudo -vinteractive call; eliminates duplicate warnings and unexpected password prompts at startuplib/utils.shrun_checks(): replaced single hardcoded message with 4-state$SUDO_STATUSswitch (root/sudo_passwordless/sudo_password/nosudo);sudo_passwordcase demoted fromlog_ok(✓) tolog_infosince credentials are not yet validatedmodules/neovim.sh:sudo -vcredential refresh moved to after the GitHub tarball download (insideif $CAN_SUDO), preventing 15-minute cache expiry during slow downloadsmodules/neovim.sh/modules/zsh.sh: addedsudo -n truepre-check before each late-phasesudo -vcall; emitslog_warnif cache may have expired so the user is not surprised by a promptget.sh: cosmetic sudo preflight check now respectsNOSUDO=1— no longer reports "✓ sudo" when sudo is explicitly disabled
Added
NOSUDO=1env var support across all entry points: forces user-local (~/.local/bin) install path and skips all apt/sudo operations even whensudois technically available; documented ininstall.sh,update.sh, andget.shusage headerslib/utils.shrun_checks(): profile-aware sudo footprint note — lists exactly which operations will usesudofor 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_pkgsarrays — single declaration drives bothlog_infodisclosure andapt_installcall, eliminating list duplication
Changed
update.sh: baredetect_sudocall replaced with explicitlog_info+ 4-state$SUDO_STATUSmessaging giving accurate context for the update pathmodules/tools.sh_install_ruff: disclosure now usesuv tool bin-dir(PATH shim location) instead ofuv tool dir(venv location)
v1.0.3
Added
- No-sudo support: when
sudois unavailable,modules/base.shnow fetches prebuilt binaries (rg,fd,jq,delta,eza,fzf,zoxide) from GitHub releases into~/.local/bininstead 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 pathsmodules/zsh.sh: guard that skips oh-my-zsh, plugins, and zshrc setup whenzshis not available; prints actionable reinstall hinttest.sh:nosudoprofile — verifies all~/.local/binbinaries are present and functional; confirmssudois absent in the test environmenttest-local.sh:--profile nosudoflag and--skip-nosudoflag;run_nosudorunner builds viaDockerfile.nosudoand runs the nosudo test suite.github/workflows/install.yml:install-nosudojob — matrix across Ubuntu 20.04 / 22.04 / 24.04 as a non-root user with nosudo
Changed
modules/base.sh:install_baserestructured — apt path and no-sudo path are symmetric branches; prints PATH hint when binaries land in~/.local/binmodules/base.sh_install_zoxide/_install_delta/_install_eza: apt /.debfallbacks now guarded with$CAN_SUDOto avoid false errorslib/utils.sh: no-sudo warning message updated to mention~/.local/bin
v1.0.2
Removed
nvim: removedcsv.vimplugin (chrisbra/csv.vim) — no longer needed
v1.0.1
Fixed
get.sh: auto-installgitandcurlviaapt-getwhen running as root on apt-based systems — bareubuntu:20.04containers now need zero manual pre-installs (_apt_bootstraphelper runsapt-get updateat most once)get.sh: sudo preflight check now correctly reports "running as root" instead of the misleading "apt package installs will be skipped" warningmodules/zsh.sh_set_default_shell:$USERunbound variable crash in root containers replaced with$(id -un)modules/zsh.sh_set_default_shell: hardcodedsudo usermodreplaced with$SUDO usermod— works on minimal images withoutsudoinstalledmodules/zsh.sh_set_default_shell:$SHELLunbound variable crash guarded with${SHELL:-}modules/zsh.sh_set_default_shell: emptyzsh_pathguard prevents silent false-positive "already installed" and crashes onusermod
Added
modules/zsh.sh:_patch_bashrc_for_docker— when/.dockerenvis detected, appendsexec zshguard to~/.bashrcsodocker exec -it … bashsessions auto-switch to zsh; fires for all profiles includingdockerinstall.sh: warns whenworkstationprofile is selected inside a Docker container, suggesting the lighterdockerprofileget.sh: Docker usage documented in header — Option A (combined one-liner) and Option B (docker cpfor zero in-container pre-reqs)
v1.0.0 — Complete overhaul
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/serverconfigs - CI pipeline with Docker-based test matrix and Bash test suite
deltaas git pager (replacesdiff-so-fancy)ruffformatter (replacesblack+isort)zoxideshell integration
Changed
install.shrewritten: pre-checks, modular structure, profile-aware package selectionupdate.shrewritten: modular, idempotent steps (zsh, tmux, nvim, git tools)gitconfiguses[includeIf]local-override pattern- Tmux plugin install automated — no longer requires manual
<prefix>+I - Zsh
fzf-tabpreview usesezainstead ofls
Removed
- Vim (
vim/) config replaced by Neovim - Personal utility scripts
_download_binunused helper
Fixed
- Tmux plugins restricted to workstation profile only
- Zsh history setopts and
share_historyplacement localkeyword outside function causing shell crashget.sh: non-git destination guard, soft-fail on pull errors
v0.3.0
Tmux, Vim, Zsh, and Git config updates.
v0.2.0
Added
- Git and CMake source-build install scripts
- ShellCheck, shfmt, cheat packages
- Ranger config files,
colored-man-pageszsh 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
Initial dotfiles: Zsh (oh-my-zsh + fzf), Tmux, Vim, and monolithic install.sh.