Skip to content

Releases: lavantien/dotfiles

v4.4

07 Jan 14:02

Choose a tag to compare

git-update-repos: GitHub CLI Integration

Changed

  • Migrated from public GitHub API to authenticated gh repo list command
  • Now fetches ALL repositories (public and private) via authenticated API
  • Added GitHub CLI (gh) requirement check with helpful error messages
  • Removed curl/wget-based API fetching and pagination logic
  • Simplified JSON parsing using jq when available, falls back to grep/sed

Documentation

  • Updated README Section 11 with comprehensive git-update-repos documentation
  • Added parameters table with Bash and PowerShell equivalents
  • Documented gh CLI requirement and authentication flow
  • Updated script entry point description to mention private repo support

Fixed

  • Fixed issue where only public repositories were being cloned/updated
  • Script now correctly handles all repos for authenticated user via gh CLI

Full changelog: https://github.com/lavantien/dotfiles/blob/main/CHANGELOG.md

v4.3

07 Jan 09:47

Choose a tag to compare

What's Changed

Fixed

Go Package Installation

  • Fixed goimports reinstall issue by normalizing GOPATH paths before comparison
  • Changed from wildcard pattern matching to exact array matching for registry PATH checks
  • Always add $GOPATH/bin to current session PATH unconditionally

Removed

Ruby Runtime & bashcov

  • Removed Ruby runtime from bootstrap (no longer needed)
  • Removed bashcov gem installation
  • Removed ruby from version-check patterns (both PowerShell and Bash)
  • Removed ruby from packages.yaml configuration
  • Updated coverage strategy: kcov is now used exclusively
    • Linux/macOS: native kcov
    • Windows: kcov via Docker

Changed

  • Updated README to reflect kcov-only coverage strategy
  • Removed gem from supported language package managers list
  • Updated coverage tools table to show kcov (via Docker) for Windows

Full changelog: https://github.com/lavantien/dotfiles/blob/main/CHANGELOG.md

v4.2

03 Jan 10:19

Choose a tag to compare

Fixes

Bootstrap Idempotency & PATH Detection

  • Fixed PATH detection for npm, Python, and winget-installed packages
  • Enhanced Initialize-UserPath to add all Scoop app current directories (not just current/bin)
  • Fixed Add-ToPath to use exact matching instead of substring matching
  • Added WinGet Links directory to Refresh-Path preservation list
  • Moved PATH initialization to beginning of Main function for early tool detection

Test Infrastructure

  • Fixed test bugs that were wiping User PATH registry entries
  • Removed dangerous registry PATH cleanup from AfterEach blocks
  • Added safety checks to prevent empty PATH conditions

Changes

  • Updated test counts from 2221 to 3221 (2181 PowerShell + 1040 Bash)
  • Updated idempotence documentation with latest bootstrap output (57 skipped items)
  • Enhanced PATH preservation to include WinGet Links for winget-installed tools
  • Improved coverage reporting to 31.4% combined (42.1% PowerShell + 31.2% Bash)

Full changelog: https://github.com/lavantien/dotfiles/blob/main/CHANGELOG.md

v4.1

02 Jan 09:41

Choose a tag to compare

[4.1] - 2026-01-02

Fixed

  • Script entry point mermaid diagram alignment

Changed

  • Updated coverage reporting with real coverage measurements (43.9% combined: 41.9% PowerShell + 46.9% Bash)
  • Enhanced documentation with sequence diagram in Architecture section
  • Improved documentation structure: removed inline navigation links, kept only footer Back to Top
  • Refined subsection formatting: removed separators within subsections

Coverage

  • PowerShell: 41.91% (818 of 2134 commands)
  • Bash: 46.9% (via kcov)
  • Combined: 43.9%

Full changelog: https://github.com/lavantien/dotfiles/blob/main/CHANGELOG.md

v4.0 - Shell-First Architecture

02 Jan 05:29

Choose a tag to compare

Universal Dotfiles v4.0 - Shell-First Architecture Release

Coverage Security License: MIT Platform


What's New in v4.0

v4.0 is a major architectural redesign that establishes shell scripts as the single source of truth while maintaining full Windows compatibility through thin PowerShell wrappers.

Major Architecture Changes

Shell-First Architecture (.sh as Source of Truth)

  • All core logic now lives in bash scripts - Single implementation to maintain and test
  • PowerShell scripts are thin compatibility wrappers - Call .sh via Git Bash on Windows
  • Windows-native bootstrap - Better platform integration with automatic Git installation
  • Cross-platform parity - Features develop in .sh first, automatically available on Windows
┌─────────────────────────────────────────────────────────────┐
│                    Windows (PowerShell)                     │
├─────────────────────────────────────────────────────────────┤
│  script.ps1  ──►  bash script.sh  ──►  Core Logic           │
│  (wrapper)        (Git Bash)          (source of truth)     │
└─────────────────────────────────────────────────────────────┘

Comprehensive Testing & Coverage

  • 11 BATS test files covering all .sh scripts (backup, bootstrap, deploy, git hooks, healthcheck, restore, sync, uninstall, update-all, git-update-repos)
  • 5 PowerShell test files for wrapper validation
  • Coverage metrics: 46.2% bash coverage, 15% PowerShell coverage, 27.5% combined
  • Automated coverage reporting with badges
  • E2E tests for critical workflows

Configuration System (Optional)

  • YAML-based configuration at ~/.dotfiles.config.yaml
  • Bridge approach config library for both bash and PowerShell
  • Graceful fallbacks to sensible defaults
  • Configurable options: editor preference, theme, installation categories, auto-update

New Features

Bootstrap Enhancements

  • Installation categories: minimal, sdk, full (default)
  • Tool descriptions in summary output for better UX
  • Automatic Git installation on Windows via winget
  • bashcov integration for coverage testing
  • Idempotent operations with detailed skip tracking
  • Phase-based installation: Foundation → SDKs → LSPs → Linters → CLI Tools → MCP Servers → Deploy → Update

Deployment Improvements

  • Automatic .gitconfig cleanup for platform-specific fixes
  • Removes Linuxbrew gh paths on Windows
  • Removes absolute Windows gh.exe paths on Linux/macOS
  • Removes empty helper lines from gitconfig
  • XDG_CONFIG_HOME support for all configs
  • OneDrive-aware PowerShell profile deployment

Platform Support

  • Windows: Git Bash path conversion, lowercase drive letters, automatic Git installation
  • Linux: Enhanced package detection and installation
  • macOS: Apple Silicon and Intel support

New Entry Point Scripts

Script Purpose
uninstall.sh / uninstall.ps1 Remove all deployed configs
healthcheck.sh / healthcheck.ps1 Verify system health
backup.sh / backup.ps1 Create timestamped backups
restore.sh / restore.ps1 Restore from backups
sync-system-instructions.sh / sync-system-instructions.ps1 Sync AI prompts to all repos

Installation

Quick Start

# Clone the repository
git clone https://github.com/lavantien/dotfiles.git ~/dotfiles
cd ~/dotfiles

# Run bootstrap (automatically detects your platform)
./bootstrap.sh           # Linux/macOS
.\bootstrap.ps1          # Windows

# Or with options
./bootstrap.sh -y        # Non-interactive
.\bootstrap.ps1 -y       # Windows non-interactive

Installation Categories

./bootstrap.sh --category minimal    # Package managers, git, CLI tools only
./bootstrap.sh --category sdk        # minimal + Node.js, Python, Go, Rust, dotnet, JDK
./bootstrap.sh --category full       # sdk + all LSPs + linters/formatters + MCP servers (default)

Optional Configuration

Create ~/.dotfiles.config.yaml:

editor: nvim          # Preferred editor (nvim, vim, code)
theme: gruvbox-light  # Theme preference
categories: full      # Installation category
auto_update_repos: false  # Auto-update git repos
backup_before_deploy: false  # Auto-backup before deploy

What Gets Installed

Package Managers

  • Windows: Scoop (CLI tools), winget (heavy apps like Visual Studio, LLVM)
  • Linux: System (apt/dnf/pacman/zypper), Homebrew (optional)
  • macOS: Homebrew (primary)

Core SDKs (always latest)

  • Node.js LTS, Python 3.x, Go, Rust (via rustup), dotnet LTS, OpenJDK LTS

Language Servers (15 total)

  • clangd (C/C++), gopls (Go), rust-analyzer (Rust), pyright (Python)
  • ts_ls (JavaScript/TypeScript), lua-language-server (Lua), csharp-ls (C#)
  • jdtls (Java), intelephense (PHP), docker-language-server (Dockerfile)
  • yaml-language-server (YAML), tombi (TOML), tinymist (Typst), dartls (Dart)

Linters & Formatters (10+ tools)

  • prettier, eslint, ruff, black, isort, mypy, goimports, golangci-lint
  • shellcheck, shfmt, clang-format, clang-tidy, scalafmt, Laravel Pint

Essential CLI Tools

  • fzf, zoxide, bat, eza, lazygit, gh, ripgrep (rg), fd, tokei, difftastic

Claude Code MCP Servers

  • context7 (library documentation), playwright (browser automation), repomix (repo packing)

Testing

# Run all tests
./tests/coverage.sh                    # Bash coverage
.\tests\coverage-report.ps1            # PowerShell coverage

# Run specific test suites
bats tests/bash/bootstrap_test.bats    # Bootstrap tests
bats tests/bash/deploy_test.bats       # Deploy tests
Invoke-Pester tests/powershell         # PowerShell tests

Current Coverage: 27.5% combined (46.2% bash, 15% PowerShell)


Security

  • Comprehensive security review completed (January 2026)
  • 0 HIGH/MEDIUM vulnerabilities found
  • Documented threat model and security design principles
  • See Security section in README

Migration from v3.x

Windows Users

  • Git Bash is now required and will be auto-installed during bootstrap
  • Run .\bootstrap.ps1 -y to update
  • All existing functionality preserved

All Users

  • Optional: Create ~/.dotfiles.config.yaml for custom configuration
  • Run ./deploy.sh / .\deploy.ps1 to update configurations

Full Changelog

See CHANGELOG.md for complete version history including:

  • v3.3.3 - Bootstrap enhancements, PowerShell fixes
  • v3.3 - PowerShell syntax fixes
  • v3.2 - README reorganization
  • v3.1 - Documentation improvements
  • v3.0 - Bridge approach config, testing framework, Claude Code hooks
  • v2.2 - Documentation enhancements
  • v2.1 - Update-all modularization
  • v2.0 - Auto-distribution of system prompts
  • v1.0 - Initial release

Documentation


Support

For issues, questions, or contributions, please visit:


License: MIT

435+ automated tests | 15+ LSP servers | 20+ package managers | Cross-platform

v3.3.3

01 Jan 21:27

Choose a tag to compare

What's Changed

README

  • Enhance opening sentence with comprehensive feature highlights
  • Update Language Servers list from 10 to 15 (feature parity with Neovim)
  • Move CLI tools tokei/difftastic to full category
  • Update Quality Assurance to mention 15+ LSP servers and languages

Bootstrap Scripts (bootstrap.sh & bootstrap.ps1)

  • Add VERSION POLICY section documenting latest-version approach
  • Remove ALL hardcoded version numbers, always use latest
  • Add 5 missing LSP servers: docker, docker-compose, tombi, tinymist, dartls

PowerShell Profile

  • Add -Force to Set-Alias for gl, gcm, gp (override built-in read-only aliases)

Full changelog: v3.2.0...v3.3.3

v3.3

01 Jan 20:37

Choose a tag to compare

Release v3.3

Bug Fixes

PowerShell Syntax Errors

  • Fix Export-ModuleMember error in lib/config.ps1

    • Export-ModuleMember can only be used in .psm1 module files, not regular .ps1 scripts
    • The file is dot-sourced, making the export statement unnecessary and invalid
    • Resolves error: "The Export-ModuleMember cmdlet can only be called from inside a module"
  • Fix null reference error in bootstrap/lib/common.ps1

    • Read-Host can return $null when input is not available from a console
    • Added null check before calling .Trim() on the response
    • Prevents "You cannot call a method on a null-valued expression" error

Documentation

README Updates

  • Test count correction: Updated from "250+" to 384 total tests

    • PowerShell Unit: 124 tests
    • PowerShell E2E: 126 tests
    • Bash Unit: 56 tests
    • Bash E2E: 78 tests
  • Bootstrap script references: Updated to use root ./bootstrap.sh

    • Previously referenced bootstrap/bootstrap.sh (subdirectory)
    • Affects Quick Start, Configuration, Code Coverage, and Updating sections
  • New section: "7. Fresh Install Guide"

    • Detailed breakdown of what gets installed on Windows
    • Detailed breakdown of what gets installed on Linux
    • Installation categories comparison (minimal/sdk/full)
    • "Why These Tools?" rationale section
  • Section renumbering: Sections 8-18 renumbered after adding new section 7

Verification

  • All 35 PowerShell scripts pass syntax validation
  • bootstrap.ps1 runs cleanly without errors on PowerShell 7+
  • Cross-platform compatibility maintained

Full Changelog

  • Modified files: README.md, bootstrap/lib/common.ps1, lib/config.ps1
  • 154 insertions, 37 deletions

v3.2

01 Jan 20:18

Choose a tag to compare

What's Changed

Documentation

  • Reorganize README sections with improved logical flow
  • Add numbered headers (1-17) to all sections for better navigation

Fixes

  • Remove broken WSL gh credential helper on Windows
  • Fix Neovim keybindings section
  • Fix key notation and add Claude Code section
  • Escape special characters in README for proper markdown rendering

Features (v3.0)

  • Bridge approach config system with backward compatibility
  • Optional .dotfiles.config.yaml for customization
  • Command-line flags override config file defaults

Full Changelog since v2.2

  • docs: reorganize README sections and add numbering (f6202fa)
  • fix: remove broken WSL gh credential helper on Windows (8f274a4)
  • chore(release): v3.1 (475c1b8)
  • docs: fix Neovim keybindings section (6efd6a7)
  • docs: update README with accurate Neovim hotkeys only (4b19568)
  • docs: update README with custom Neovim hotkeys only (13fc8cd)
  • docs: add hidden hotkeys and Wezterm hotkeys to README (dddea60)
  • docs: escape special characters in README for proper markdown rendering (83dc163)
  • docs: fix key notation and add Claude Code section (e493f7f)
  • feat(v3.0): bridge approach config system with testing (8677b7b)

Version 3.0.3: Neovim Hotkeys Documentation Update

01 Jan 08:24

Choose a tag to compare

Version 3.0.3 - Neovim hotkeys documentation update.

Changes

Updated README to accurately reflect custom Neovim hotkeys defined in init.lua.

Documentation Changes

Header Update

  • Changed from manual table to From init.lua
  • Shows all custom keybindings as defined

Keybinding Corrections

  • Fixed search forward: now shows (not Space + quote)
  • Removed gk (git stash) as it does not exist in init.lua
  • All keybindings now match actual vim.keymap.set calls

Custom Hotkeys Documented

Editor Mappings (14):

  • q: Quit
  • x: Write and source config
  • quote: Search forward (#)
  • pt: Toggle Typst preview
  • ps: Start Typst preview
  • semicolon: Typst preview pick
  • b: Format buffer (LSP)
  • u: Update plugins
  • e: Fuzzy find everywhere (FzfLua)
  • n: Fuzzy combine (FzfLua)
  • slash: Grep in current buffer (FzfLua)
  • z: Live grep native (FzfLua)
  • f: Find files (FzfLua)

Git Mappings (9):

  • gf: Git files
  • gs: Git status
  • gd: Git diff
  • gh: Git hunks
  • gc: Git commits
  • gl: Git blame
  • gb: Git branches
  • gt: Git tags

LSP Mappings (13):

  • FzfLua commands for diagnostics, calls, actions, symbols, references, implementations, type definitions

Improvements

Cleaner documentation

  • Removed Wezterm hotkeys section (not custom)
  • Removed FzfLua additional commands section (hidden plugin commands)
  • Better organization and readability

Markdown

Proper escaping for GitHub rendering.

Version 3.0.1: Documentation Improvements

01 Jan 08:10

Choose a tag to compare

Version 3.0.1 - Documentation enhancements and hotkey discovery.

New Documentation

Hidden Plugin Commands (FzfLua)

Complete table of 20+ FzfLua commands accessible via :

  • Fuzzy finder everywhere
  • File and directory navigation
  • Git operations (files, status, diff, hunks, commits, blame, branches, tags, stash)
  • LSP tools (finder, diagnostics, calls, actions, symbols, references)
  • Help, keymaps, marks, quickfix, location list

Wezterm Hotkeys

Added documentation for default terminal hotkeys:

Keybinding Action
ALT+Enter Disable default assignment

Theme and Appearance:

  • Color scheme: rose-pine
  • Font: IosevkaTerm Nerd Font (17pt)
  • Window decorations: TITLE | RESIZE
  • Tab bar: Disabled
  • Window padding: 0

Fixes

Markdown Rendering

  • Escape special characters for proper GitHub rendering:
    • Changed <leader> to <Space>
    • Escaped backslash, comma, and dot in LSP mappings
    • Used backticks for special characters

Claude Code Integration

  • Added missing section after Git Hooks with:
    • Quality check hook example
    • TDD guard description
    • Deploy instructions
    • Settings.json configuration

Benefits

Enhanced Discovery

Users can now quickly find:

  • All available FzfLua commands
  • Terminal default hotkeys
  • Proper hotkey notation in documentation

Improved Documentation

  • README renders correctly on GitHub
  • All special characters properly escaped
  • Complete hotkey reference

Upgrade

git pull origin main

Full Changelog

For complete details, see: