Files
dotfiles/CHANGELOG.md
2025-12-16 08:53:28 -05:00

184 lines
6.1 KiB
Markdown

# Changelog
All notable changes to this dotfiles project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.1.0] - 2025-12-16
### Added
#### Shell Startup Optimization
- **Deferred Loading** - Heavy plugins and functions load after first prompt displays
- **Cached Command Checks** - `_has_cmd()` function caches `command -v` results for faster lookups
- **Lazy kubectl** - kubectl completions only load when first used (saves ~200-500ms)
- **Background Tasks** - Dotfiles sync check runs fully async with `&!`
- **Compile Script** (`dotfiles-compile.sh`) - Pre-compile zsh files to `.zwc` bytecode for 20-50ms speedup
#### Smart Path Resolution
- **`_df_run()` Helper** - All aliases use full path with fallback to PATH
- Fixes "command not found" errors on fresh installs
- Scripts work even before symlinks are created or PATH is set
#### New Aliases
- `dfcompile` - Compile zsh files for faster startup
- `dfcd` - Navigate to dotfiles directory (replaces `df` to avoid disk utility conflict)
### Changed
#### Script Reorganization
- Renamed `bin/shell-stats.sh``bin/dotfiles-stats.sh`
- Renamed `bin/vault.sh``bin/dotfiles-vault.sh`
- Renamed `bin/update-dotfiles.sh``bin/dotfiles-update.sh`
- Moved `bin/setup-wizard.sh``setup/setup-wizard.sh`
- Moved `bin/setup-espanso.sh``setup/setup-espanso.sh`
- Removed deprecated `bin/deploy-zshtheme-systemwide.sh`
#### Alias System Overhaul
- All command aliases now use `_df_run()` function wrapper
- Uses full path `$_df_dir/bin/script.sh` with fallback to PATH lookup
- Better error messages when scripts not found
- Removed `df` alias (conflicts with disk free utility)
#### .zshrc Optimizations
- Reduced default plugins (removed `docker`, `docker-compose`, `kubectl` from immediate load)
- Disabled oh-my-zsh auto-update check on every load (`DISABLE_AUTO_UPDATE="true"`)
- Tool aliases (eza, bat) now set up in deferred loading
- FZF configuration deferred until after prompt
- Vault secrets loaded with full path to avoid command_not_found issues
- Background sync check uses full script path
### Fixed
- **Fresh Install Bug** - "Command not found: dotfiles-sync.sh" error on new user accounts
- **Path Resolution** - Scripts now work before `~/.local/bin` is in PATH
- **Smart Suggest Conflicts** - Background tasks no longer trigger `command_not_found_handler`
### Removed
- `df` alias (conflicted with `df` disk utility)
- Heavy plugins from default load (now lazy-loaded)
- `bin/deploy-zshtheme-systemwide.sh` (redundant with installer)
---
## [1.0.0] - 2025-12-15
### Added
#### Core Features
- **Interactive Setup Wizard** (`setup-wizard.sh`) - Beautiful TUI installer using `gum` with fallback to basic prompts
- **Dynamic MOTD** (`motd.zsh`) - Compact system info on shell start (uptime, CPU, memory, docker, git status)
- **Command Palette** (`command-palette.zsh`) - Raycast-style fuzzy launcher triggered by Ctrl+Space or Ctrl+P
- **Smart Suggestions** (`smart-suggest.zsh`) - Typo correction for 100+ common mistakes + alias recommendations
- **Shell Analytics** (`dotfiles-stats.sh`) - Dashboard showing command usage, suggestions, and activity heatmap
- **Secrets Vault** (`dotfiles-vault.sh`) - Encrypted storage for API keys using age/gpg
- **Password Manager Integration** (`password-manager.zsh`) - Unified CLI for 1Password, LastPass, Bitwarden
- **Dotfiles Sync** (`dotfiles-sync.sh`) - Multi-machine synchronization with watch mode
- **Dotfiles Doctor** (`dotfiles-doctor.sh`) - Health checker with auto-fix capability
- **Version Tracking** (`dotfiles-version.sh`) - Compare local vs remote versions
#### Password Manager Support
- 1Password CLI (`op`) installation and integration
- LastPass CLI (`lpass`) installation and integration
- Bitwarden CLI (`bw`) installation and integration
- Unified `pw` command with fuzzy search support
#### Configuration
- Centralized `dotfiles.conf` for all settings
- Git identity configuration (generated, not hardcoded)
- Feature toggles for all optional components
- Machine-specific config support via `.zshrc.local`
#### Installation
- `--wizard` flag for interactive TUI installation
- `--uninstall` flag to remove symlinks and restore backups
- `--purge` flag to completely remove dotfiles
- `--skip-deps` flag for faster re-runs
- Auto-detection of installed dependencies
- Automatic zsh plugin installation
#### Zsh Theme
- Two-line prompt with git integration
- Command timer for long-running commands
- Root detection (red prompt for root)
- Smart path truncation
#### Espanso
- 100+ text expansion snippets
- Personal snippet template
- Setup script for personalization
#### Snapper (Arch/CachyOS)
- Btrfs snapshot management functions
- limine-snapper-sync integration
- Boot menu validation
#### Documentation
- Comprehensive README with feature overview
- Detailed SETUP_GUIDE with troubleshooting
- ESPANSO reference with all snippets
- SNAPPER guide for btrfs users
### Changed
- Optimized `.zshrc` with lazy-loading for NVM and virtualenvwrapper
- Streamlined `adlee.zsh-theme` (removed unused functions)
- Git config now generated from `dotfiles.conf` instead of hardcoded
### Removed
- Hardcoded git credentials from `.gitconfig`
- Redundant code in theme file
- Duplicate `export ZSH=` statements
---
## Version History
### Versioning Scheme
- **Major** (1.x.x): Breaking changes, major feature additions
- **Minor** (x.1.x): New features, non-breaking changes
- **Patch** (x.x.1): Bug fixes, documentation updates
### Checking Your Version
```bash
dfv
# or
dotfiles-version.sh
```
### Updating
```bash
dfu
# or
dotfiles-update.sh
```
---
## Roadmap
### Planned for 1.2.0
- [ ] Multiple theme support with live preview
- [ ] Project scaffolding templates
- [ ] SSH key generation helper
- [ ] Machine profiles (work, personal, server)
### Planned for 1.3.0
- [ ] Remote machine bootstrap script
- [ ] Neovim configuration support
---
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Update CHANGELOG.md
5. Bump version in `dotfiles.conf`
6. Submit a pull request