chezmoi Changelog

What's new in chezmoi 2.48.0

Apr 27, 2024
  • Features:
  • e04dcf feat: Add --tree flag to unmanaged command
  • e3 feat: Add --tree flag to managed command
  • e2be feat: Add --tree flag to ignored command
  • a9d0e4 feat: Include name of target in error message
  • Fixes:
  • c758a1c fix: Apply chezmoiignore to dirs in external archives
  • dfcfcf fix: Remove unmanaged files from exact_ directories containing external files
  • ff43 fix: Better detect username on Android/Termux systems
  • Documentation updates:
  • b1b40b2 docs: Add link to article
  • c817ce docs: Document --tree flag
  • fab4b docs: Fix origin URL in quick start guide

New in chezmoi 2.47.4 (Apr 13, 2024)

  • Fixes:
  • d6ad485 fix: Fix potential panic when textconv interpreter is empty
  • b4df44d fix: Fix panic on empty external
  • Documentation updates:
  • 872c584 docs: Add troubleshooting entry on missing /bin/bash on Nix
  • 8b2a435 docs: Add install.doctor to related software
  • 3a3dd13 docs: Add links to articles

New in chezmoi 2.47.3 (Apr 1, 2024)

  • Fixes:
  • 2e4236c fix: Don't traverse into ignored directories when adding files
  • 8a83dcc fix: Skip adding entries in external dirs instead of erroring
  • b366d0e fix: Fix panic when adding children in exact_ dirs
  • ad77158 fix: Increase range of types accepted by promptChoice template function

New in chezmoi 2.47.2 (Mar 17, 2024)

  • Fixes:
  • Fix: pass the --needed flag to pacman
  • Fix: Remove fig support
  • Fix: Explicitly tell user when then should use a config file template
  • Fix: Handle copies in automatic commit messages
  • Fix: Add missing newlines in error messages
  • Documentation updates:
  • Docs: Add link to article
  • Docs: Fix incomplete sentence in usage docs
  • Docs: Add link to article

New in chezmoi 2.47.1 (Mar 3, 2024)

  • Fixes:
  • 59764c8 fix: Fix panic in unmanaged on some dir permission errors
  • dc99169 fix: Make splitList return []any
  • 0405763 fix: Set CHEZMOI_ environment variables for plugins
  • 1f44189 fix: Ensure that all .chezmoi.config template variables have simple types
  • 5bb87f1 fix: a grammar mistake
  • Documentation updates:
  • 85d015b docs: Refactor developer guide
  • 885487b docs: Add link to blog post
  • 18c99c3 docs: Add link to video

New in chezmoi 2.47.0 (Feb 26, 2024)

  • Features:
  • 6788c54 feat: 1Password Secrets Automation Support
  • Fixes:
  • 3b3541c fix: Ensure default mode is set
  • c6b867b fix: Fix marshaling of severities
  • 523fd84 fix: Fix marshaling of autobools
  • 5224e11 fix: Fix marshaling of absolute paths
  • e925b0f fix: Fix --keep-going flag for unmanaged command
  • 5201ddc fix: Don't leak internal default sentinel values in template data
  • 1abcfa5 fix: Fix panic when merging unmanaged file
  • c0b7e92 fix: Don't attempt to add entries in external_ directories
  • d14bdd5 fix: Use uname -o to detect Android in install script
  • 302a3b8 fix: Move documentation of --output flag to correct section
  • ccde612 fix: Prioritize $HOME when Cygwin or msys2 is detected
  • Documentation updates:
  • 3e5f0c8 docs: Fix type of .chezmoi.kernel and .chezmoi.osRelease variables
  • 0269f80 docs: Update docs on auto applying changes on edit in VIM
  • b5fc7b6 docs: Document config vars for command-specific flags
  • f52062e docs: Cross link "See REF" in config variables doc

New in chezmoi 2.46.1 (Feb 11, 2024)

  • Features:
  • Feat: Add update.apply configuration variable
  • Feat: Set CHEZMOI_SOURCE_FILE env var for scripts
  • Fixes:
  • Fix: Fix age/rage check in doctor command
  • Documentation updates:
  • Docs: typo
  • Other:
  • Chore(deps-dev): bump ruff from 0.1.9 to 0.1.15 in /assets

New in chezmoi 2.46.0 (Jan 25, 2024)

  • Features:
  • Feat: Build for Android (Termux)
  • Feat: Support rage as an alternative age encryption command
  • Feat: Add re-add --recursive flag and make it the default
  • Feat: Promote hooks to stable
  • Feat: Promote HCP Vault Secrets template functions to stable
  • Feat: Promote Doppler template functions to stable
  • Feat: Promote edit --watch to stable
  • Fixes:
  • Fix: Defer lookup of git in $PATH for git-repo externals
  • Fix: Change init to default to --config if --config-path is absent
  • Fix: Handle more keepassxc-cli errors
  • Fix: Reduce injection of terminal control characters into keepassxc-cli output
  • Documentation updates
  • Docs: Fix broken release history page
  • Docs: links to testing-templates
  • Docs: combine testing and debugging templates
  • Docs: Add links to article and video
  • Docs: add link
  • Docs: Fix names of age recipients files config variables

New in chezmoi 2.45.0 (Jan 14, 2024)

  • Features:
  • 7d915c0 feat: Scan for secrets with gitleaks when adding files
  • 404878c feat: Add add.encrypt configuration variable
  • Fixes:
  • 3436563 fix: Improve robustness of keepassxc-cli integration in open mode
  • 49791f9 fix: Handle keepassxc-cli localization
  • 85464dd fix: Restore user args to keepassxc-cli in cache password mode
  • 9437b62 fix: Always use forward slashes to separate Windows paths

New in chezmoi 2.43.0 (Jan 3, 2024)

  • Features:
  • feat: Extend rbw and rbwFields template funcs to take extra args
  • feat: Extend remove_ attribute to directories
  • Fixes:
  • fix: Fix detection of changes to remove_ directories
  • fix: Only invoke diff pager if there is diff output
  • fix: Handle implicit directories in externals
  • fix: add missing command annotations
  • fix: Make execute-template --init not read .chezmoitemplates
  • fix: key.txt is not written to home, but home/.config
  • Documentation updates:
  • docs: Add upcoming changes to release history
  • docs: Add link to article
  • docs: Add links to articles
  • docs: Fix guide on clearing state of run_onchange_ scripts
  • Other"
  • chore(deps-dev): bump ruff from 0.1.6 to 0.1.9 in /assets

New in chezmoi 2.42.3 (Dec 17, 2023)

  • Features:
  • 538169a feat: Remove nested subshell check
  • 31780bf feat: Make mackupApplicationsDir func agnostic to mackup's installation method
  • Documentation updates:
  • ef01881 docs: Add github.com/xvzc/chezmoi.nvim to related software
  • e530e7c docs: Add link to article
  • 31e6207 docs: Add link to video
  • 854ea06 docs: Add entry on declarative package installation
  • 0cf9f29 docs: add warning for GitHub SSH key deletion

New in chezmoi 2.42.2 (Dec 2, 2023)

  • Features:
  • a9d389e feat: Add CHEZMOI_COMMAND_DIR env var for hooks
  • Fixes:
  • 649c758 fix: Fix fromJson template function deserializing non-objects
  • c68ddac fix: Handle extra slashes in path arguments

New in chezmoi 2.42.1 (Nov 29, 2023)

  • Fixes:
  • d07689e fix: Set env vars from config file when re-reading config

New in chezmoi 2.42.0 (Nov 26, 2023)

  • Features:
  • 694977b feat: Preserve numeric types when reading from .chezmoidata JSON and JSONC files
  • 1f11386 feat: Preserve integer values in fromJson and fromJsonc template funcs
  • 711a39a feat: Add read-source-state hook
  • Documentation updates:
  • 47609a3 docs: Add admonitions linking remove and forget
  • 8784a67 docs: Add links to blog posts

New in chezmoi 2.41.0 (Nov 14, 2023)

  • Features:
  • 26fd133 feat: Add git-commit-message to generate command
  • c6688d2 feat: Make commit message templates regular templates
  • f7c3745 feat: Add git.commitMessageTemplateFile config variable
  • 1f016e8 feat: Add edit-config-template command
  • Fixes:
  • d9cb6b0 fix: Don't escape HTML characters in JSON strings
  • Documentation updates:
  • b94f954 docs: Document support for the passage password manager
  • a1fba75 docs: add how-to for gpg ? age migration
  • 8d58c3e docs: Fix default value of persistentState variable
  • Other:
  • e8ed4c4 refactor: Allow mkdocs build from any origin

New in chezmoi 2.40.4 (Oct 29, 2023)

  • Fix: Make stdinIsATTY return false if --no-tty is passed.

New in chezmoi 2.40.3 (Oct 12, 2023)

  • Features:
  • b64f2bc feat: Add env config var as an alternative to scriptEnv
  • f47c268 feat: Warn when overriding CHEZMOI_ env vars
  • 7203d6b feat: Set CHEZMOI_ and scriptEnv env vars for all invoked commands
  • Documentation updates:
  • 319dd20 docs: Tidy up release notes

New in chezmoi 2.40.1 (Oct 9, 2023)

  • Features:
  • Fc56533 feat: Add Path Separator and Path List Separator to provided template values.
  • 61f7ed1 feat: Ignore AppleDouble files in externals
  • 4a52e5c feat: find[One]Executable in user-supplied paths
  • Bb6f952 feat: Use Goreleaser's Chocolatey support
  • Fixes:
  • Eecf015 fix: Only invoke diff pager if command modifies filesystem
  • 5c0140d fix: Don't use replace-executable for WinGet installations
  • 7976373 fix: Add chattr +remove support for files
  • Documentation updates:
  • 784d38b doc: Add information how to ignore cache files in external dependencies
  • 66070dc docs: Added an example for promptChoice
  • 5f14f10 docs: Added an example for promptChoiceOnce
  • C96a4b7 docs: Fix cross-function link references

New in chezmoi 2.40.0 (Sep 20, 2023)

  • Features:
  • 2858a0c feat: Implement the path-style flag for status
  • 5918296 feat: Add plugin support
  • 63cda81 feat: Allow overlapping, non-conflicting externals
  • f15b158 feat: Add decryption of non-armored files to age command
  • Fixes:
  • cdd4f16 fix: Use diff pager for all diff output if configured
  • 3667788 fix: provide a consistent error for cd to file
  • Documentation updates:
  • 284baf6 docs: Add links to articles

New in chezmoi 2.39.1 (Sep 6, 2023)

  • Fixes:
  • 46e13ed fix: Ensure default template data when reading .chezmoidata in subdir
  • Documentation updates:
  • fe10a69 docs: Improve developer experience under fish
  • 5b738bd docs: Fix documentation on dirs vs content in .chezmoiignore

New in chezmoi 2.39.0 (Sep 3, 2023)

  • Features:
  • Acb8937 feat: add .chezmoi.targetFile template variable
  • 205fd6c feat: Add age command
  • F6947d3 feat: Add bitwardenSecrets template function
  • Fixes:
  • 40b711d fix: Handle .chezmoidata files in subdirectories when template has already been executed
  • 6fa4fe4 fix: Update goreleaser changelog
  • Documentation updates:
  • A89e0e0 docs: Tweak location of private key in age onetime passphrase how-to
  • Da9f3c6 docs: Use age command in onetime passphrase how-to
  • Fe903d4 docs: Minor expansion of application order docs
  • 02ffbd7 docs: Add link to article

New in chezmoi 2.38.0 (Aug 22, 2023)

  • Other:
  • chore: Update dependencies
  • chore: Miscellaneous website improvements
  • docs: Linuxbrew -> Homebrew
  • feat: Add gitHubReleases and gitHubTags
  • feat: Support nushell scripts on Windows
  • docs: Improve documentation on using separate source files
  • chore: Reformat long lines
  • feat: Add promptChoice and promptChoiceOnce template functions
  • fix: Fix minor issues with promptBool docs and errors
  • chore: Generate release notes from git log, not GitHub
  • chore: Remove dependency on go.uber.org/multierr
  • chore: Use io/fs.Skip{All,Dir} sentinel errors
  • chore: Bump golangci-lint to version 1.54.0
  • chore: Build with Go 1.21.0
  • chore: Update dependencies
  • feat: Restore --autotemplate flag to add command
  • docs: Document --source-path flag
  • fix: Fix race condition in concurrent parsing of externals

New in chezmoi 2.37.0 (Aug 6, 2023)

  • Feat: Read personal mackup config files by @twpayne in #3133
  • Chore(deps): bump github/codeql-action from 2.20.1 to 2.21.2 by @dependabot in #3135
  • Chore: Build with Go 1.20.7 by @twpayne in #3140
  • Feat: Add support for Doppler by @equals03 in #3134
  • Feat: Extend re-add command to accept an optional list of targets by @twpayne in #3146
  • Chore: Update dependencies by @twpayne in #3150
  • Fix: Avoid concurrent map access when evaluating multiple templates by @twpayne in #3155
  • Feat: Add isExecutable template function by @twpayne in #3157
  • Chore: Fix isExecutable tests on Windows by @twpayne in #3158
  • Chore: Update dependencies by @twpayne in #3159

New in chezmoi 2.36.1 (Jul 30, 2023)

  • Fix: Make detection of mackup config dir more robust
  • Fix: Ensure that templates cannot modify each other's data
  • Chore: Move core packages back to internal

New in chezmoi 2.36.0 (Jul 28, 2023)

  • What's Changed:
  • feat: Add .chezmoiexternals directory for multiple externals by @twpayne in #3108
  • fix: Respect setting diff.pager to the empty string as disabling the pager by @twpayne in #3117
  • chore: Update dependencies by @twpayne in #3124
  • feat: Add undocumented mackup command by @twpayne in #3121

New in chezmoi 2.35.2 (Jul 19, 2023)

  • chore: Pass WinGet GitHub Token to release job

New in chezmoi 2.35.1 (Jul 18, 2023)

  • feat: Allow executable bits to be overridden in archive-file externals by @twpayne in #3102
  • docs: Clarify use of exclude patterns in .chezmoiignore by @twpayne in #3103
  • feat: Add work-around for Docker Desktop breaking /etc/hosts by @twpayne in #3104
  • chore: Update dependencies by @twpayne in #3105

New in chezmoi 2.35.0 (Jul 16, 2023)

  • Feat: Add archive-file externals by @twpayne in #3080
  • Fix: Never consider localhost.localdomain in /etc/hosts as the FQDN by @twpayne in #3082
  • Chore: Miscellaneous fixes by @twpayne in #3091
  • Chore: Use golang/govulncheck-action by @twpayne in #3094
  • Feat: Add support for HCP Vault Secrets by @twpayne in #3067
  • Chore: Use Goreleaser's WinGet support by @twpayne in #3059

New in chezmoi 2.34.3 (Jul 4, 2023)

  • fix: Check .chezmoiignore before protected paths by @twpayne in #3052
  • chore: Add actionlint linter by @twpayne in #3053
  • fix: Parse hostnames from all loopback addresses in /etc/hosts by @twpayne in #3055
  • chore: Update dependencies by @twpayne in #3058
  • fix: Respect persistentState config variable by @twpayne in #3066
  • chore: Miscellaneous fixes by @twpayne in #3068
  • docs: Remove reference to tar and /dev/stdin so code works on Windows by @Sacro in #3069
  • chore: Update goreleaser config for version 1.19 by @twpayne in #3071
  • fix: Drop Solaris and Illumos support by @twpayne in #3060
  • chore(deps): bump github.com/rogpeppe/go-internal from 1.10.1-0.20230524175051-ec119421bb97 to 1.11.0 by @dependabot in #3073
  • chore(deps): bump sigstore/cosign-installer from 3.0.5 to 3.1.1 by @dependabot in #3074
  • chore(deps): bump reviewdog/action-misspell from 1.12.4 to 1.13.1 by @dependabot in #3075
  • chore(deps): bump github/codeql-action from 2.20.0 to 2.20.1 by @dependabot in #3076

New in chezmoi 2.34.2 (Jun 17, 2023)

  • chore: Simplify code by using strings.EqualFold, time.Before by @twpayne in #3038
  • chore: Use http.NoBody instead of nil by @alexandear in #3040
  • chore: Miscellaneous clean-ups by @twpayne in #3041
  • fix: Handle multiple files in .chezmoidata directory by @twpayne in #3042
  • chore: Update dependencies by @twpayne in #3043
  • chore(deps): bump golangci/golangci-lint-action from 3.4.0 to 3.6.0 by @dependabot in #3044
  • chore(deps): bump dessant/lock-threads from 4.0.0 to 4.0.1 by @dependabot in #3045
  • chore(deps): bump github/codeql-action from 2.3.5 to 2.20.0 by @dependabot in #3046
  • chore(deps): bump goreleaser/goreleaser-action from 4.2.0 to 4.3.0 by @dependabot in #3047
  • chore(deps): bump actions/checkout from 3.5.2 to 3.5.3 by @dependabot in #3048

New in chezmoi 2.34.1 (Jun 10, 2023)

  • What's Changed:
  • Chore: Build with Go 1.20.5 by @twpayne in #3030
  • Feat: Add git.commitMessageTemplate configuration variable by @twpayne in #3032

New in chezmoi 2.34.0 (Jun 5, 2023)

  • feat: Add support for .chezmoidata directory by @twpayne in #3009
  • chore(deps): bump github/codeql-action from 2.3.3 to 2.3.5 by @dependabot in #3010
  • chore(deps): bump actions/setup-go from 4.0.0 to 4.0.1 by @dependabot in #3012
  • chore: Misc fixes by @twpayne in #3019
  • chore: Update dependencies by @twpayne in #3018
  • chore(deps): bump sigstore/cosign-installer from 3.0.3 to 3.0.5 by @dependabot in #3011
  • chore: Bump golangci-lint to version 1.53.1 by @twpayne in #3020
  • fix: Fix init --debug flag by @twpayne in #3021
  • feat: Add get.chezmoi.io/lb and chezmoi.io/getlb install scripts by @twpayne in #3024
  • chore: Update dependencies by @twpayne in #3026
  • fix: Fix parsing of flags to secret keyring delete command by @twpayne in #3027

New in chezmoi 2.33.6 (May 15, 2023)

  • What's Changed:
  • Chore(deps): bump github.com/cloudflare/circl from 1.3.2 to 1.3.3 by @dependabot in #2991
  • Fix: Only create empty files if they have the empty_ attribute by @twpayne in #2997
  • Chore: Refactor internal handling of remove_ directories by @twpayne in #2999
  • Chore(editorconfig): Remove quotes from editorconfig file by @aarondill in #3000
  • Fix: Set CHEZMOI_SOURCE_DIR env var in init when using .chezmoiroot by @twpayne in #3001
  • Chore: Update dependencies by @twpayne in #3002

New in chezmoi 2.33.5 (May 11, 2023)

  • chore: Build with Go 1.20.4 by @twpayne in #2970
  • chore: Use github.com/alecthomas/assert instead of github.com/stretchr/testify by @twpayne in #2974
  • fix: Fix commands for managed files in exact_ directories by @twpayne in #2980
  • docs: Improved Bitwarden login documentation by @halostatue in #2955
  • chore: Update dependencies by @twpayne in #2983
  • chore(deps): bump github/codeql-action from 2.3.2 to 2.3.3 by @dependabot in #2986
  • chore(deps): bump cpina/github-action-push-to-another-repository from 1.6 to 1.7 by @dependabot in #2987
  • chore(deps): bump reviewdog/action-misspell from 1.12.3 to 1.12.4 by @dependabot in #2985
  • fix: Ensure the sourceDir is updated before creating config file by @twpayne in #2989

New in chezmoi 2.33.4 (May 2, 2023)

  • Fix: Fix init --promptBool for promptBoolOnce template function
  • Docs: update encryption md to account for chezmoiroot
  • Chore(deps): bump sigstore/cosign-installer from 3.0.1 to 3.0.3
  • Chore(deps): bump github/codeql-action from 2.2.9 to 2.3.2
  • Chore(deps): bump actions/checkout from 3.5.0 to 3.5.2
  • Fix: Respect executable file modes in external_ directories
  • Fix: Fix chezmoi rm with files in exact_ directories

New in chezmoi 2.33.3 (Apr 22, 2023)

  • Fix: Correct capitalization of .chezmoi.config template variables by @twpayne in #2943

New in chezmoi 2.33.1 (Apr 8, 2023)

  • chore: Update dependencies by @twpayne in #2889
  • chore: Add rbw version check to doctor command by @twpayne in #2893
  • chore(deps): bump sigstore/cosign-installer from 2.8.1 to 3.0.1 by @dependabot in #2897
  • chore(deps): bump actions/cache from 3.2.6 to 3.3.1 by @dependabot in #2898
  • chore(deps): bump github/codeql-action from 2.2.5 to 2.2.9 by @dependabot in #2899
  • chore(deps): bump actions/checkout from 3.3.0 to 3.5.0 by @dependabot in #2900
  • chore: Update dependencies by @twpayne in #2903
  • chore: Update dependencies by @twpayne in #2908
  • fix: Allow source dir to be a git worktree by @twpayne in #2911
  • fix: Change where fish completions are installed by @J-M0 in #2912
  • chore: Tidy up persistent state tests by @twpayne in #2914
  • chore: Update dependencies by @twpayne in #2915

New in chezmoi 2.33.0 (Mar 24, 2023)

  • What's Changed:
  • Chore(deps): bump google.golang.org/protobuf from 1.29.0 to 1.29.1 by @dependabot in #2856
  • Docs: Miscellaneous fixes by @twpayne in #2860
  • Fix: Don't list entries in git-repo externals as unmanaged by @twpayne in #2862
  • Chore: Minor fixes by @twpayne in #2863
  • Feat: Add support for ejson by @XaF in #2857
  • Chore: Tidy up ejson default key dir by @twpayne in #2870
  • Feat: Add jq template function by @twpayne in #2833
  • Update dependencies by @twpayne in #2874
  • Docs: Add missing jsonc to some formats by @bradenhilton in #2876
  • Docs: Wait for elevated PS process to return by @alexvy86 in #2872
  • Chore: Deprecate --autotemplate by @halostatue in #2877
  • Update build infrastructure by @twpayne in #2881
  • Feat: Set $CHEZMOI_VERBOSE based on --verbose by @halostatue in #2875
  • Fix: Only set $CHEZMOI_VERBOSE when --verbose is set by @twpayne in #2883

New in chezmoi 2.32.0 (Mar 12, 2023)

  • chore: Add test for target-path, .chezmoiscripts, and .chezmoiroot by @twpayne in #2811
  • fix: Allow underscores and dots in GitHub dotfile repo name guesses by @twpayne in #2817
  • Improve chezmoi cd command by @twpayne in #2823
  • docs: Fix typo by @hezhizhen in #2829
  • feat: Add support for the JSONC format by @twpayne in #2827
  • chore: Add test that diff.exclude excludes dirs from external diff tool by @twpayne in #2830
  • feat: Refuse to add chezmoi files to chezmoi by @twpayne in #2822
  • feat: Add pre- and post-command hooks by @twpayne in #2832
  • chore: Update dependencies by @twpayne in #2834
  • chore: Tidy up nolint directives by @twpayne in #2842
  • docs: Updated config / flags documentation information by @halostatue in #2843
  • chore: Miscellaneous password manager cleanups by @twpayne in #2845
  • chore: Remove +build comments from modules by @alexandear in #2846
  • chore: Use run.go instead of deprecated lang-version by @alexandear in #2847
  • feat: Add rbw template function for Bitwarden by @twpayne in #2841
  • chore: Miscellaneous fixes by @twpayne in #2848

New in chezmoi 2.31.1 (Mar 2, 2023)

  • chore: Bump golangci-lint to v1.51.2 by @twpayne in #2782
  • docs: Improve documentation on git-repo externals by @twpayne in #2785
  • chore: Update dependencies by @twpayne in #2788
  • chore: Enable most govet linters by @twpayne in #2794
  • chore: Update dependencies by @twpayne in #2795
  • feat: Add Dashlane password manager support by @twpayne in #2792
  • fix: Detect absolute paths in externals on Windows by @twpayne in #2796
  • feat: Add Dashlane secure notes support by @XaF in #2797
  • chore(deps): bump cpina/github-action-push-to-another-repository from 9e487f29582587eeb4837c0552c886bb0644b6b9 to 0a14457bb28b04dfa1652e0ffdfda866d2845c73 by @dependabot in #2802
  • chore(deps): bump github/codeql-action from 2.2.1 to 2.2.5 by @dependabot in #2803
  • chore(deps): bump actions/cache from 3.2.4 to 3.2.6 by @dependabot in #2804
  • chore: Update dependencies by @twpayne in #2809

New in chezmoi 2.31.0 (Feb 17, 2023)

  • feat: Print a warning when chezmoi add is called with an ignored entry by @twpayne in #2762
  • feat: Cache GitHub API results by default to stay under rate limit by @twpayne in #2763
  • feat: Display progress bars by default when stdout is a TTY by @twpayne in #2767
  • feat(bitwarden): Grab attachment by object name by @cawaltrip in #2765
  • fix: Eliminate [DEFAULT] section for fromIni map by @halostatue in #2770
  • chore: Update dependencies by @twpayne in #2772
  • feat: Add --with-stdin flag to execute-template command by @twpayne in #2774
  • docs: Fix typo, improve grammar in init doc page by @bradenhilton in #2776
  • docs: Improve documentation on externals by @twpayne in #2775
  • chore: Update dependencies by @twpayne in #2781

New in chezmoi 2.30.1 (Feb 12, 2023)

  • Add deleteValueAtPath and pruneEmptyDicts template functions by @twpayne in #2750
  • feat: Extend toPrettyJson template function to take indent by @twpayne in #2751
  • fix: Fix chezmoi target-path when using .chezmoiroot by @twpayne in #2755
  • chore: Use strings.Cut{Prefix,Suffix} by @twpayne in #2756

New in chezmoi 2.30.0 (Feb 6, 2023)

  • Feat: Add zstd compression support by @twpayne in #2715
  • Feat: Add external_ attribute for directories by @twpayne in #2716
  • Chore(deps): bump golangci/golangci-lint-action from 3.3.1 to 3.4.0 by @dependabot in #2720
  • Chore(deps): bump actions/checkout from 3.2.0 to 3.3.0 by @dependabot in #2721
  • Chore(deps): bump github/codeql-action from 2.1.37 to 2.2.1 by @dependabot in #2722
  • Chore(deps): bump actions/upload-artifact from 3.1.1 to 3.1.2 by @dependabot in #2723
  • Chore: Miscellaneous fixes by @twpayne in #2719
  • Chore(deps): bump ludeeus/action-shellcheck from 1.1.0 to 2.0.0 by @dependabot in #2724
  • Chore(deps): bump actions/cache from 3.2.2 to 3.2.4 by @dependabot in #2726
  • Chore(deps): bump goreleaser/goreleaser-action from 4.1.0 to 4.2.0 by @dependabot in #2727
  • Feat: Build with Go 1.20 by @twpayne in #2731
  • Fix: Make chezmoi init --purge-binary always remove binary by @twpayne in #2729
  • Chore: Bump golangci-lint to version 1.51.0 by @twpayne in #2732
  • Docs: Add install command for winget by @bradenhilton in #2735
  • Miscellaneous fixes by @twpayne in #2737
  • Set CHEZMOI* environment variables when running cd command by @twpayne in #2743
  • Docs: Improve documentation on scripts by @twpayne in #2745

New in chezmoi 2.29.3 (Jan 20, 2023)

  • What's Changed:
  • feat: Add --recursive flag to chattr command by @twpayne in #2697
  • feat: Check config file format in doctor command by @twpayne in #2696
  • docs: Fix typo in merge user guide by @mumumumu in #2698
  • fix: Support .zip files with empty internal directories by @szinn in #2701
  • fix: Only prompt once for KeePassXC password by @twpayne in #2704
  • fix: Remove problematic username guessing in init command by @twpayne in #2705
  • New Contributors:
  • @mumumumu made their first contribution in #2698
  • @szinn made their first contribution in #2701

New in chezmoi 2.29.2 (Jan 15, 2023)

  • What's Changed:
  • chore: Update goreleaser config for v1.14 by @twpayne in #2667
  • feat: Add keepassxc.prompt config variable by @jcapiitao in #2677
  • docs: Update documentation on encryption by @twpayne in #2683
  • chore: Update dependencies by @twpayne in #2679
  • chore: Fix umask tests by @twpayne in #2688
  • chore: Update dependencies by @twpayne in #2694

New in chezmoi 2.29.1 (Jan 2, 2023)

  • Fix: Fix init --ssh

New in chezmoi 2.29.0 (Jan 2, 2023)

  • at's Changed
  • feat: Allow .chezmoi{external,ignore,remove} files to have a .tmpl suffix by @twpayne in #2632
  • feat: Add support for source paths in managed command by @twpayne in #2633
  • chore: Update dependencies by @twpayne in #2634
  • docs: Fix passphrase-once encryption instructions by @twpayne in #2636
  • chore: Update dependencies by @twpayne in #2639
  • chore(deps): bump actions/cache from 3.0.11 to 3.2.2 by @dependabot in #2641
  • chore(deps): bump github/codeql-action from 2.1.29 to 2.1.37 by @dependabot in #2642
  • chore(deps): bump goreleaser/goreleaser-action from 3.2.0 to 4.1.0 by @dependabot in #2643
  • chore(deps): bump actions/setup-go from 3.3.1 to 3.5.0 by @dependabot in #2644
  • chore(deps): bump dessant/lock-threads from 3.0.0 to 4.0.0 by @dependabot in #2645
  • feat: Allow cd command to take the destination directory as an argument by @twpayne in #2648
  • fix: Improve error message when state database cannot be locked by @twpayne in #2651
  • fix: Fix authentication when git is not installed by @twpayne in #2650
  • fix: Fix bug where edit --watch only applied the first change by @twpayne in #2654
  • chore: Miscellaneous updates by @twpayne in #2655
  • feat: Add hexDecode and hexEncode template functions by @twpayne in #2658
  • chore(deps): bump actions/checkout from 3.1.0 to 3.2.0 by @dependabot in #2659

New in chezmoi 2.28.0 (Dec 19, 2022)

  • What's Changed:
  • Add lstat template function by @twpayne in #2616
  • Add --path-style option to managed and unmanaged commands by @twpayne in #2617
  • Chore: Build with Go 1.19.4 by @twpayne in #2619
  • Feat: Add verification of external checksums by @twpayne in #2621
  • Chore: Update dependencies by @twpayne in #2623

New in chezmoi 2.27.3 (Dec 5, 2022)

  • chore: Move GitHub Actions off soon-to-be-deprecated Ubuntu 18.04 by @twpayne in #2604
  • chore(deps): bump golangci/golangci-lint-action from 3.3.0 to 3.3.1 by @dependabot in #2605
  • chore(deps): bump github.com/Masterminds/sprig/v3 from 3.2.2 to 3.2.3 by @dependabot in #2607
  • chore(deps): bump reviewdog/action-misspell from 1.12.2 to 1.12.3 by @dependabot in #2606
  • chore: Update dependencies by @twpayne in #2611
  • fix: Don't attempt to run empty scripts by @twpayne in #2612
  • fix: Respect config file umask setting when creating entries by @twpayne in #2613

New in chezmoi 2.27.2 (Nov 25, 2022)

  • fix: Make re-add command respect --interactive flag by @twpayne in #2569
  • feat: Add an optional path argument to the cd command by @twpayne in #2579
  • feat: Make it easier to use non-git VCSes by @twpayne in #2580
  • fix: Allow underscores in SourceHut usernames by @twpayne in #2582
  • fix: Respect diff filter in removes with external diff tool by @twpayne in #2592
  • chore: Release fixes by @twpayne in #2593
  • chore: Update dependencies by @twpayne in #2596

New in chezmoi 2.27.1 (Nov 14, 2022)

  • fix: Don't show always scripts in apply --verbose when excluded from diffs by @twpayne in #2565
  • feat: Remember HTTP username in URL in init command by @twpayne in #2562
  • chore: Make generation of versioninfo.json work without tags or git repo by @twpayne in #2566

New in chezmoi 2.27.0 (Nov 9, 2022)

  • Fix: Revert cpina/github-action-push-to-another-repository version bump by @bradenhilton in #2527
  • Chore: Install Go in test-website and deploy-website jobs by @twpayne in #2528
  • Feat: Suppress newlines from onepasswordRead by @halostatue in #2532
  • Chore(deps): bump golangci/golangci-lint-action from 3.2.0 to 3.3.0 by @dependabot in #2533
  • Feat: Allow modify_ scripts to be executed as templates by @twpayne in #2529
  • Chore: Blacklist buggy version of github.com/bmatcuk/doublestar/v4 by @twpayne in #2537
  • Chore: Build with Go 1.19.3 by @twpayne in #2541
  • Feat: Add line ending template directive by @twpayne in #2540
  • Feat: Add setValueAtPath template function by @twpayne in #2542
  • Fix: Don't merge non-files in merge-all command by @twpayne in #2543
  • Feat: Add --script-contents flag to diff command by @twpayne in #2544
  • Docs: Add line endings directive documentation by @bradenhilton in #2547
  • Docs: Fix typos in Sourcehut repo patterns by @kjerstadius in #2552
  • Chore: Better handle errors when globbing by @twpayne in #2538
  • Feat: Add cat-config and dump-config commands by @twpayne in #2553
  • Chore: Remove unused field by @twpayne in #2554
  • Chore: Refactor handling of annotations by @twpayne in #2555
  • Feat: Allow prompt*Once template functions to take paths by @twpayne in #2557
  • Fix: Fix exclusion of externals by @twpayne in #2558
  • Chore: Update dependencies by @twpayne in #2559
  • Feat: Add completion template function by @twpayne in #2560

New in chezmoi 2.26.0 (Oct 31, 2022)

  • Feat: Improve handling of include and exclude for externals and encrypted files
  • Feat: Extend --include and --exclude flags to include templates
  • Feat: Add per-template configurable delimiters
  • Chore: Fix user guide link in support issue template
  • Chore(deps): bump github/codeql-action from 2.1.26 to 2.1.27
  • Docs: Update homepage
  • Chore(deps): bump dorny/paths-filter from 2.10.2 to 2.11.1
  • Chore(deps): bump actions/cache from 3.0.9 to 3.0.11
  • Chore(deps): bump sigstore/cosign-installer from 2.7.0 to 2.8.0
  • Chore(deps): bump cpina/github-action-push-to-another-repository from 9e487f29582587eeb4837c0552c886bb0644b6b9 to 940a2857e598a6392bd336330b07416c1ae8ea1f
  • Chore: Update dependencies
  • Chore(deps): bump actions/checkout from 3.0.2 to 3.1.0
  • Chore: Tweak template directive implementation
  • Chore: Miscellaneous fixes
  • Feat: Add option to exclude scripts that are always run
  • Fix: Extend template directives functionality
  • Chore: Update dependencies
  • Docs: Add faq entry for templates pre-requisites
  • Docs: Add release notes and release history
  • Docs: Add note on setting .ps1 interpreter to pwsh
  • Chore: Fix comments that start from an incorrect name
  • Chore: Add package descriptions
  • Fix: Include git repo external state in state dump output
  • Docs: Add FAQ entry on snap stdin/stdout redirect bug
  • Chore: Use fs.ModePerm instead of 0o777 for all permissions
  • Chore: GitHub Actions fixes
  • Docs(bitwarden): Correct bitwardenFields example
  • : Populate VERSIONINFO on Windows builds
  • Chore: Update dependencies
  • Docs: Remove duplicate words
  • Chore: Improve error messages from git-repo externals
  • Fix: Construct templateDataMap manually
  • Feat: Add --recurse-submodules flag to init command
  • Feat: Add --recurse-submodules flag to update command
  • Chore: Reorder eqFold template function reference page
  • Chore: Fix refactored --include and --exclude flags
  • Chore: Add test for .chezmoiignore and scripts
  • Chore: Update dependencies
  • Chore: Minor documentation tweaks
  • Chore: Release improvements
  • Chore(deps): bump goreleaser/goreleaser-action from 3.1.0 to 3.2.0
  • Chore(deps): bump actions/upload-artifact from 3.1.0 to 3.1.1
  • Chore(deps): bump actions/setup-go from 3.3.0 to 3.3.1
  • Chore(deps): bump github/codeql-action from 2.1.27 to 2.1.29
  • Chore(deps): bump sigstore/cosign-installer from 2.8.0 to 2.8.1

New in chezmoi 2.25.0 (Oct 15, 2022)

  • docs: Add FAQ entry on multiple source states by @twpayne in #2391
  • chore: Separate out test-release step by @twpayne in #2392
  • chore: Add check for keepassxc-cli version in keepassxcAttachment by @twpayne in #2397
  • chore: Fix typo in entrytypeset.go by @sm1999 in #2400
  • chore: Add test that chezmoi apply uses textconv by @twpayne in #2401
  • fix: Use textconv in interactive diffs by @twpayne in #2402
  • chore(deps): bump actions/cache from 3.0.8 to 3.0.9 by @dependabot in #2410
  • chore(deps): bump github/codeql-action from 2.1.21 to 2.1.26 by @dependabot in #2411
  • feat: Add shell completion for --include and --exclude flags by @twpayne in #2419
  • chore: Bump Go and golangci-lint versions by @twpayne in #2420
  • chore: Update dependencies by @twpayne in #2421
  • chore: Copy github.com/twpayne/go-shell into module by @twpayne in #2422
  • feat: Add eqFold template function by @bradenhilton in #2409
  • feat: Add scriptEnv configuration variable by @twpayne in #2423
  • chore: Set Go version in govulncheck by @twpayne in #2428
  • chore: Only read .chezmoiroot once by @twpayne in #2431
  • feat: Sign release assets by @twpayne in #2394
  • chore: Use build info to set commit and date, if available by @twpayne in #2434
  • chore: Use ReadDir to find config files and templates by @twpayne in #2435
  • chore: Use GitHub native changelogs for releases by @twpayne in #2438
  • feat: Use target paths in automatically generated commit messages by @twpayne in #2439
  • chore: Automatically deploy website after release by @twpayne in #2437
  • feat: 1Password account lookup table by @halostatue in #2425
  • chore: Refactor 1Password account map by @twpayne in #2440
  • docs: Use get.chezmoi.io for install links by @twpayne in #2441
  • feat: Add get.chezmoi.io/ps1 by @twpayne in #2443
  • chore: Fail if multiple config file templates or config files are found by @twpayne in #2444
  • fix: Make chattr {no,}encrypted decrypt and encrypt source file by @twpayne in #2447
  • chore: Update dependencies by @twpayne in #2448
  • feat: Expose template data in environment variables by @twpayne in #2429
  • chore: Use GitHub output in govulncheck workflow by @twpayne in #2450

New in chezmoi 2.24.0 (Sep 26, 2022)

  • Changelog
  • bb8d579 docs: Add FAQ entry on --verbose and --debug flags
  • fb595f2 docs: Add link to article
  • 0f58586 docs: Elaborate on once vs onchange attributes
  • b970bc1 feat: Add always/auto/never options to --refresh-externals flag
  • 21e99c7 feat: Add option to suppress warnings
  • a29abcf feat: Improve performance of the externals cache
  • da407b6 fix: Avoid double read of source state in merge-all and status commands
  • 1fbe862 fix: Preserve case in user template data
  • 9dda54a fix: Respect .chezmoiroot in source-path command with no arguments

New in chezmoi 2.23.0 (Sep 19, 2022)

  • 6e49147 docs: Add hints about escaping diff and merge args in config file template
  • f1b404d docs: Add link to video
  • 2c3a349 docs: Change remote origin from ssh to https
  • 4d68612 docs: Update symlink design question with docs on edit --watch
  • 8b4b856 feat: Add --progress flag to show progress when downloading externals
  • ccb897c feat: Add passhole password manager support
  • 994a0c7 feat: Always set and restore Windows console
  • cf51259 feat: Use bubbletea for user input
  • 8054dff fix: Don't write file specified by --output atomically
  • 80576f5 fix: Ignore commands when creating archives
  • 83f01eb fix: Only read source state if needed in source-path command
  • c1a53e1 fix: Treat git-repo externals as directories of include/exclude purposes

New in chezmoi 2.22.1 (Sep 5, 2022)

  • Fix handling of newlines in comment template function
  • Make includeTemplate function first search in .chezmoitemplates

New in chezmoi 2.22.0 (Sep 1, 2022)

  • Changelog:
  • 6625f29 docs: Add FAQ entry on sharing shell history
  • 097a88c docs: Add note on script execution order
  • 3b6edaf docs: Fix a coloring issue that lines and texts in Mermaid diagrams are hardly visible in dark mode
  • 3e6e26d feat: Add includeTemplate template function
  • bf5b674 feat: Add initial fig support
  • 41644bb feat: Add support for loong64 architecture
  • 7a525b7 fix: Apply changes to directories recursively when editing directories
  • 03a91ca fix: Only use quotes if necessary in toIni template function

New in chezmoi 2.21.1 (Aug 29, 2022)

  • Docs: Add link to package installation
  • Docs: Add summary paragraph
  • Feat: Add edit.apply configuration variable
  • Feat: Add secret.args configuration variable
  • Fix: Detect SSH clones from URL when using builtin git
  • Fix: Fix panic when absolute paths are used in externals
  • Fix: Respect format configuration variable in data, dump, and state commands

New in chezmoi 2.21.0 (Aug 24, 2022)

  • c8399bc docs: Add FAQ entry on init template functions
  • e2ec7c5 docs: Add instructions for using chezmoi with Watchman
  • dc2ec23 docs: Add link to repology.org
  • 4d086c2 docs: Remove unmaintained Guix package
  • 485850f docs: Use install-from-git-working-copy in installation instructions
  • 9e4629f feat: Add --interactive flag
  • 8602622 feat: Add --prompt flag to init command
  • f98264b feat: Add --prompt* flags to init command
  • 02b8954 feat: Add fromIni template function
  • ffbb367 feat: Add gitHubLatestTag template function
  • ac0c759 feat: Add initial --watch flag to edit command
  • 3af5c7f feat: Add toIni template function
  • db4da31 feat: Improve support for external diff commands
  • 84afa19 fix: Handle .chezmoiroot in init command
  • 7583387 fix: Remove broken symbolic links in exact_ directories

New in chezmoi 2.20.0 (Jul 29, 2022)

  • Docs: Add Termux package install instructions
  • Docs: Add dark mode option
  • Docs: Prioritize package installation over curl | sh installation
  • Feat: Add comment template function
  • Feat: Add generate command to generate install script
  • Feat: Add onepasswordRead template function
  • Feat: Add promptBoolOnce, promptIntOnce, and promptStringOnce init template functions
  • Feat: Add replaceAllRegex template function
  • Feat: Make managed command accept destination directory args
  • Feat: Make unmanaged command accept destination directory args
  • Feat: Track source state origins more precisely
  • Fix: Fix dropping of input when prompting for multiple values from piped stdin

New in chezmoi 2.19.0 (Jul 18, 2022)

  • Docs: Add section on muting gpg output
  • Feat: Add fromToml and toToml template functions
  • Feat: Add support for AWS Secrets Manager
  • Feat: Allow dashes in keys in template data in config file
  • Fix: Fix FQDN hostname on FreeBSD
  • Fix: Fix forget command when asked to forget an external
  • Fix: Fix merge command for encrypted files in subdirectories
  • Fix: make install creates the bin/ dir if necessary, and uses the unambiguous --target-directory form of install.

New in chezmoi 2.18.1 (Jun 24, 2022)

  • docs: Add CPU cores/threads template
  • docs: Improve documentation of chezmoi's concepts
  • feat: Re-enable building of snaps

New in chezmoi 2.18.0 (Jun 20, 2022)

  • feat: Stop building snaps

New in chezmoi 2.17.1 (May 30, 2022)

  • Docs:
  • Add information about chezmoi_modify_manager
  • Add link to podcast
  • Fix typo in kubeconfig documentation
  • Organize related software page into sub-sections
  • Fix:
  • Fix dump command in the presence of config file templates
  • Include git repo commands in dump command output

New in chezmoi 2.17.0 (May 26, 2022)

  • Feat: Add uid and gid template variables
  • Feat: Add windowsVersion to builtin template data
  • Fix: Parse $EDITOR and $VISUAL environment variables as shell commands

New in chezmoi 2.16.0 (May 19, 2022)

  • Feat: Add support for Keeper password manager
  • Feat: Build for mips64 and mips64le
  • Feat: Build for riscv64
  • Feat: Complete auto bool, format, and mode flag values
  • Fix: Connect password manager std{in,err} to os.Std{in,err}
  • Fix: Don't complete _chezmoi in zsh completion
  • Fix: Fix use of slashes in glob on Windows

New in chezmoi 2.15.4 (May 10, 2022)

  • Changelog:
  • docs: Add chezmoiexternal related links to user-guide/reference docs
  • docs: Add example of extracting selected files from external archive
  • docs: Add some additional details to contributing-changes.md
  • fix: Fix external archive, sub-directory include, no excludes

New in chezmoi 2.15.3 (May 8, 2022)

  • Docs: Add hint on random access in modify_ scripts
  • Feat: Add --guess-repo option to init command

New in chezmoi 2.15.2 (May 1, 2022)

  • Changelog:
  • cbfe388 docs: Add clarification about all lowercase custom data fields
  • 84ac2e2 docs: Add guide on encrypting files with GPG and a passphrase
  • 8552a4c docs: Add links to blog and video
  • 7b83a17 docs: Add troubleshooting entry on scripts on Termux
  • 4de3fdc docs: Document workaround for #1574
  • d507609 docs: Minor tweaks
  • 956b449 docs: Use index function to access an item in the example
  • 58f9f45 feat: Add glob template function
  • fe0b6cf feat: Build with Go 1.18.1
  • eaa27b3 fix: Don't cache negative results of path lookups

New in chezmoi 2.15.1 (Apr 10, 2022)

  • Docs: Add section on understanding chezmoi's files and directories
  • Docs: Document KeepassXC with YubiKey limitations
  • Docs: Fix path to config file template
  • Docs: Tidy up KeepassXC reference documentation
  • Feat: Use diff.command for all verbose output
  • Fix: Fix apply --verbose when diff.command is set
  • Fix: Fix concurrent map writes on sourcestate.ignoredRelPaths
  • Fix: Ignore exit status 1 from external diff commands

New in chezmoi 2.15.0 (Apr 4, 2022)

  • docs: Add command overview
  • docs: Add link to blog post
  • docs: Add link to podcast
  • docs: Adjust documents for 1Password CLI 2.0.0 changes
  • docs: Document that the ioreg template function is deprecated
  • docs: Factor out GitHub template functions into a separate section
  • docs: Factor out init template functions into a separate section
  • docs: Factor out password manager functions into separate sections
  • docs: Improve FAQ entry on source state filenames
  • docs: Improve docs on empty files in chezmoi edit
  • docs: Update dconf example as dconf only reads stdin
  • docs: Use $VARIABLE instead of
  • feat: Add diff.reverse configuration variable
  • feat: Add ignored command
  • feat: Add keepassxcAttachment template function
  • feat: Build for s390x architecture
  • fix: Fix one line install instructions for Windows
  • fix: Fix op signin for 1Password CLI 2.0.0
  • fix: Fix parsing of multiline KeepassXC attributes
  • fix: Fix use of drives as home directories on Windows
  • fix: Prefer id over label for onepasswordDetailsFields template function

New in chezmoi 2.14.0 (Mar 9, 2022)

  • Add contributors image
  • Add license to website
  • Add link to article
  • Add include and exclude patterns to external archives
  • Add license command
  • Release raw binaries

New in chezmoi 2.13.1 (Mar 4, 2022)

  • Feat: Add scriptTempDir config var for temporary scripts
  • Feat: Change default Python interpreter to python3
  • Fix: Allow user and repo to set in install script
  • Fix: Fix confusing error message when using builtin git to init over SSH

New in chezmoi 2.13.0 (Feb 26, 2022)

  • e8ee359 docs: Add link to article
  • 3f36946 docs: Document extracting a single file from an archive
  • 843ba33 docs: Improve scripts user guide
  • 585adb1 feat: Add initial git-repo external type
  • e299d90 feat: Add option to exclude externals
  • 5f39fec feat: Add status.exclude configuration variable
  • 2451314 feat: Add verify.exclude configuration variable
  • fd47686 feat: Allow overriding GitHub user in shell installer
  • 08991d1 feat: Enable GNOME Keyring support on FreeBSD
  • 881cb7e fix: Correctly cut hostname off at . character

New in chezmoi 2.12.1 (Feb 20, 2022)

  • 1fbc2ae feat: Be more strict about presence of source directory
  • Baac6fc feat: Support arguments in Windows SHELL environment variable

New in chezmoi 2.12.0 (Feb 15, 2022)

  • Feat: Add target-path command
  • Feat: add support for xz archives
  • Fix: Fix bug where chezmoi init --apply did not configure encryption

New in chezmoi 2.11.2 (Feb 3, 2022)

  • fix: Disable problematic concurrent source dir read

New in chezmoi 2.11.1 (Feb 3, 2022)

  • Fix: Fix race condition with multiple .chezmoiignore files

New in chezmoi 2.11.0 (Feb 2, 2022)

  • Changelog:
  • Feat: Add initial support for 1Password CLI 2.0
  • Feat: Add remove_ attribute for directories
  • Feat: Include removed directories in diff output of external diff command
  • Feat: Make chezmoi's core functionality available as a Go module

New in chezmoi 2.10.1 (Jan 24, 2022)

  • Fix: Fix add command when parent dir permissions have changed
  • Fix: Ignore files and directories beginning with . in .chezmoitemplates
  • Fix: Make data and execute-commands not depend on valid source state

New in chezmoi 2.10.0 (Jan 16, 2022)

  • Add chezmoi.io/get install URL
  • Add list command as an alias for managed
  • Append / to completed directories
  • Disable custom completions by default
  • Remove docs command
  • Switch to Material for MkDocs for website

New in chezmoi 2.9.5 (Jan 5, 2022)

  • Changelog
  • feat: Add passFields template function
  • feat: Prompt for 1password password if no session token is set
  • fix: Fix shell completion for relative paths
  • fix: Make exit template function init only

New in chezmoi 2.9.4 (Dec 20, 2021)

  • Feat: Add exit template function
  • Feat: Add secret keyring delete command
  • Feat: Improve inconsistent state error with removes
  • Fix: Add missing --value flag to secret keyring set command
  • Fix: Avoid panic when unknown URL schemes are used
  • Fix: Fix include template function on Windows with absolute path

New in chezmoi 2.9.3 (Dec 13, 2021)

  • Changelog:
  • feat: Add --cache option and .chezmoi.cacheDir template variable
  • feat: Add more intelligent completion of targets, attributes, and docs
  • feat: Follow symlinks in .chezmoitemplates
  • fix: Fix .chezmoiversion check when using dev version

New in chezmoi 2.9.2 (Dec 2, 2021)

  • Fix: Don't mark .chezmoiscripts as suspicious in doctor command
  • Fix: Read .chezmoiversion before other files

New in chezmoi 2.9.1 (Nov 30, 2021)

  • Feat: Add .chezmoi.configFile template variable
  • Feat: Add .chezmoi.workingTree template variable
  • Feat: Extend upgrade command to work on more operating systems
  • Fix: Check for .chezmoiversion outside .chezmoiroot
  • Fix: Fix use of .chezmoiroot in multiple commands

New in chezmoi 2.9.0 (Nov 28, 2021)

  • feat: Add .chezmoiscripts directory
  • ec2b92a feat: Add edit.hardlink config var and edit --hardlink flag
  • 7d31ecb feat: Add fromYaml template function
  • 988fcdc feat: Add state delete-bucket command
  • ff1e81d feat: Add state get-bucket command
  • da41e0f feat: Add toYaml template function
  • 98b6a39 feat: Apply diff.exclude to all diffs
  • 33c3e97 feat: Make verbose settable in the config file
  • 5672e1f fix: .chezmoiremove with * when destDir is /
  • aac0fd6 fix: Handle symlinks in zip archives
  • e7e6932 fix: Respect .chezmoiroot when generating config file

New in chezmoi 2.8.0 (Nov 21, 2021)

  • Changelog
  • feat: Add --persistent-state option for location of persistent state file
  • feat: Add --reverse option to diff command
  • feat: Add .chezmoi.executable template variable
  • feat: Add .chezmoiroot to allow source state to be subdir of source dir
  • feat: Add cache HTTP client to cache downloads in .chezmoiexternal.
  • feat: Add gitHubLatestRelease template function
  • feat: Add support for Homebrew on Linux to upgrade command
  • feat: Add upgrade method to doctor command output
  • feat: Caching the response of the GitHub API
  • feat: Make .chezmoidata. and .chezmoitemplates available in .chezmoiignore
  • fix: Return unparsed gopass output in gopassRaw template func
  • fix: Warn, don't fail, if age version cannot be parsed in doctor command
  • fix: lookPath panics when file does not exists

New in chezmoi 2.7.5 (Nov 8, 2021)

  • 2a39175 feat: Add pinentry as an option for reading passwords
  • 823836c feat: Extend chattr command to change target types
  • bf8a185 fix: Make chezmoi add command respect .chezmoiignore

New in chezmoi 2.7.4 (Nov 2, 2021)

  • Changelog:
  • Add .chezmoi.args template variable
  • Allow equivalent directory entries in source state and externals
  • Create parent directories for externals if needed
  • Fix upgrade command for non-amd64 packages

New in chezmoi 2.7.3 (Oct 23, 2021)

  • feat: Add Illumos support
  • feat: Add Solaris support

New in chezmoi 2.7.2 (Oct 19, 2021)

  • Fix promptString default on Windows

New in chezmoi 2.7.1 (Oct 18, 2021)

  • Feat: Add default argument to promptBool template function
  • Feat: Add default argument to promptInt template function
  • Feat: Add default argument to promptString template function
  • Fix: Apply .chezmoiignore to externals

New in chezmoi 2.6.1 (Oct 3, 2021)

  • Feat: Re-enable building with Go 1.16

New in chezmoi 2.6.0 (Oct 3, 2021)

  • bump assets/chezmoi.io/themes/book
  • Improve docs on externals
  • Add --init flag to all relevant commands
  • Add refreshPeriod option to externals
  • Make chezmoi edit invoke editor with target filenames
  • Fix upgrade command on non-amd64 Linux machines

New in chezmoi 2.5.1 (Sep 30, 2021)

  • Changelog:
  • docs: Add FAQ entry on diff colors not working
  • docs: fix error in HOWTO guide
  • feat: Add --init option to update command
  • feat: Add working tree config option (#1459)
  • feat: Make chezmoi edit with no args open working tree (#1455)
  • fix: Allow modify_ scripts to be encrypted

New in chezmoi 2.5.0 (Sep 23, 2021)

  • Add Vagrant-based tests to CI
  • Add doctor check for multiple config files
  • Add example to onepasswordItemFields documentation
  • Add filter option for externals
  • Add how-to entry on managing file permissions but not contents
  • Add link to podcast
  • Add readonly_ attribute for files and directories
  • Add support for .chezmoiexternal files in subdirectories
  • Add support for readonly attribute to chattr command
  • Allow the format of external archives to be set explicitly
  • Cache Vagrant Boxes in CI
  • Change gitlab link for other people's dotfiles
  • Detect archive format from content if needed
  • Detect when the source directory is already in a git working copy
  • Disable GPG tests on Windows
  • Enable age tests on Windows CI
  • Expand FAQ entry on build from source errors
  • Fix CLI flags not taking precedence over configuration
  • Fix more command line flags overriding config vars
  • Fix permissions for CodeQL analysis
  • Fix permissions in diff output when user sets a stricter umask
  • Guess format of chezmoi archive from output filename
  • Improve consistency of source state read from externals
  • Improve internal logging infrastructure
  • Improve logging in Windows CI
  • Make Makefile more portable
  • Merge test-release job into test-ubuntu
  • 0Minor docs fixes
  • Only create .keep files when adding empty directories
  • Only warn if version or commit are not set in doctor command
  • Propagate failures in Vagrant CI scripts
  • Reduce duplication of Go version in CI
  • Reduce duplication of versions in build and CI system
  • Revert "Disable GPG tests on Windows"
  • Separate OS-specific CI jobs
  • Skp whitespace linting of temporary Vagrant files
  • Support paths containing spaces in VIM integration
  • Tidy up error message when doctor command cannot parse version
  • Update Vagrant-based tests
  • Update dependencies

New in chezmoi 2.4.0 (Sep 11, 2021)

  • Add decrypt command
  • Add doc on detemining whether the machine is a laptop or desktop
  • Add encrypt command
  • Add initial --use-builtin-age flag
  • Build with Go 1.17.1
  • Extend init command to guess the user's username for private repos
  • Fix internal capitalization of age
  • Simplify internal use of auto bools
  • Update dependencies

New in chezmoi 2.3.1 (Sep 9, 2021)

  • Add link to blog post
  • Add link to podcast
  • Add new media links
  • Add onepasswordItemFields template function
  • Append path arguments to diff command if not provided by user
  • Append path arguments to merge command if not provided by user
  • Bump age to version 1.0.0
  • Bump golangci-lint to version 1.42.1
  • Conceal the user's username in doctor command output
  • Require Go 1.17 to build and log Go version in debug mode

New in chezmoi 2.3.0 (Sep 5, 2021)

  • Add how-to entry on using private dotfile repos
  • Add remove_ attribute
  • Add support for zip archives to .chezmoiexternal
  • Add support for zip archives to import command
  • Add umask check to doctor command
  • Add undocumented --safe=false command line flag
  • Bump assets/chezmoi.io/themes/book from 50147be to a656d71
  • Fix install from source documentation
  • Improve contributing docs
  • Log debug information in chezmoi apply
  • Log version and args on startup in debug mode
  • Remove accidentally unimplemented --remove option
  • Remove stale FIXMEs

New in chezmoi 2.2.0 (Aug 30, 2021)

  • Add .chezmoiexternal for external files and archives
  • Add support for encrypted externals
  • Add tests for multiple OSes using Vagrant
  • Check all shell scripts with shellcheck
  • Fix bug when using custom diff tool on a file in a subdirectory
  • Make Makefile more consistent
  • Pass context when reading source state
  • Recognize .tbz2 files as archives
  • Reduce test verbosity on Cirrus CI
  • Remove Cirrus CI
  • Rename internal variables for consistency
  • Suppress initial branch name hints from git in chezmoi init
  • Tidy up code structure
  • Tidy up documentation
  • Update dependencies
  • Update media links
  • Update tests for OpenBSD tar output

New in chezmoi 2.1.6 (Aug 23, 2021)

  • Add --recursive flag to remove command
  • Add executable check to doctor command
  • Add link to podcast and notes
  • Add more explicit documentation on config file location
  • Add more related software
  • Add note on using -- in chattr
  • Add test of the output and fromJson template functions
  • Add windows/arm builds
  • Build with Go 1.17
  • Bump golangci-lint to v1.42.0
  • Create .keep files when adding directories
  • Fix bug where adding a dir with a trailing slash added it twice
  • Fix creation of .keep files when umask is 002
  • Improve how-to on diff and merge customization
  • Improve type safety in encryption code
  • Make remove command remove entries from persistent state
  • Miscellaneous Go 1.17 fixes
  • Tidy up suspicious entries list in doctor command
  • dc319c4 Tidy up test scripts
  • Tranparently decrypt files in merge command

New in chezmoi 2.1.5 (Aug 11, 2021)

  • Add --config-type option so config file can be read from stdin
  • Add function for running idempotent commands
  • Add initial suport for external diff tools
  • Add symlink mode
  • Build with Go 1.16.7
  • Fix chezmoi execute-template --init to not read chezmoidata
  • Fix spacing error in docs
  • Fix the FreeBSD installation method
  • Improve error messages for configurable merge tool arguments
  • Improve internal testing functions
  • Include .exe extension in Windows build artifact name
  • Normalize symlinks on Windows
  • Rename internal function for clarity
  • Tweak doc formatting

New in chezmoi 2.1.4 (Aug 5, 2021)

  • Add inital undocumented mackup add command
  • Bump assets/chezmoi.io/themes/book from e939f40 to 50147be
  • Fix crash when color was set to auto in config file
  • Fix grammar
  • Fix some minor internal inconsistencies
  • Fix tag line in reference manual
  • Make order of arguments to merge command configurable
  • Tidy up order of struct fields
  • Update contributing doc
  • Update dependencies

New in chezmoi 2.1.3 (Jul 31, 2021)

  • Add VCSH to comparison chart
  • Add hidden internal-test command for internal testing
  • Add more media links
  • Allow entering username/password when using builtin git
  • Bump golangci-lint to 1.41.1
  • Correct git archive import features
  • Fix formatting in comparison table
  • Normalize cell length in Markdown table
  • Reduce test verbosity in CI
  • Remove incorrectly documented short option
  • Set the record straight on some bare-git features
  • Tidy up comparison table
  • Tidy up repo guessing code
  • Tidy up username and password requests when using builtin git
  • Update dependencies
  • Update dependencies
  • Update recommended podcast
  • Use golang.org/x/sys/unix package where possible
  • Use target name when editing files
  • Use terminal to read password on Windows

New in chezmoi 2.1.2 (Jul 14, 2021)

  • Add FAQ entry on chezmoi cd
  • Add link to blog
  • Add more media entries
  • Allow install of chezmoi from a powershell where StrictMode is on
  • Allow source directory to be a symlink
  • Build with Go 1.16.6
  • Fix doctor check for suspicious entries
  • Make .chezmoi.kernel template variable more generic
  • Make .chezmoi.osRelease template variable more generic
  • Make modify scripts always overwrite the target without prompting
  • Populate all default template variables
  • Remove .chezmoi.homedir template variable
  • Tidy up issue templates

New in chezmoi 2.1.1 (Jul 11, 2021)

  • Changelog:
  • Fix config file code snippet in HOWTO
  • Fix panic when destination directory is /
  • Improve shell completions
  • Tidy up onepassword template functions
  • Update doc on how to migrate away from chezmoi
  • Use fs.WalkDir function
  • Use script extension to determine interpreter

New in chezmoi 2.1.0 (Jul 3, 2021)

  • Changelog:
  • Add .literal suffix to make all filenames representable
  • Add gopassRaw template function
  • Add literal_ attribute to make more filenames representable
  • Add mozillaInstallHash template function
  • Add optional account arg to onepassword template functions
  • Add passRaw template function
  • Bump assets/chezmoi.io/themes/book from 4540d66 to e939f40
  • Tweak Go modules check

New in chezmoi 2.0.16 (Jun 28, 2021)

  • Add --config-path option to init command
  • Fix FreeBSD install instructions
  • Improve documentation of chezmoi edit
  • Include FreeBSD build in tests
  • Make osRelease and kernelInfo template vars available on all systems where present
  • Prioritize /etc/hosts over /etc/hostname for FQDN hostname
  • Tweak FAQ on chezmoi edit
  • Update dependencies
  • Update dependencies
  • Update docs so that oh-my-zsh tarball goes to TMPDIR instead of HOME
  • Update golangci-lint to v1.41.0

New in chezmoi 2.0.15 (Jun 17, 2021)

  • Update GoReleaser GitHub token

New in chezmoi 2.0.13 (May 28, 2021)

  • Add --ssh option to init command to guess SSH repo URLs
  • Add .chezmoi.sourceFile template variable
  • Add age howto
  • Add findtypos check
  • Add forgotten --include option to add command
  • Add how to for managing part of a file
  • Add how to for using chezmoi with brew bundle
  • Add how to on running a script when another file's contents changes
  • Add link to github.com/hussainweb/ansible-role-chezmoi
  • Add maximum width to docs output
  • Add more media links
  • Add re-add command
  • Add test for template data in chezmoi init --apply
  • Add writeToStdout init template function
  • Bump age version to 1.0.0-rc.2 in tests
  • Bump golangci-lint to v1.40.1
  • Disable exhaustive linter
  • Ensure that parent directory exists in import examples
  • Fix security table of contents
  • Fix typos
  • Fix typos and receiver names
  • Format code blocks in documentation
  • Improve code documentation
  • Improve consistency
  • Improve consistency of reference documentation
  • Include Linux OS release name and version in doctor output, if available
  • Make how to section on ignoring files easier to find
  • Move cmd package to internal/cmd
  • Move internal/cmd to internal/cmds
  • Move security policy into docs
  • Move security policy into docs
  • Only create templates with chezmoi add --autotemplate if a replacement occurred
  • Reference .chezmoidata in template data documentation
  • Remove stale FAQ entry
  • Remove stale docs on diff.format
  • Remove unnecessary SourceRelPaths type
  • Rename function argument for clarity
  • Reword intro commands
  • Tidy up how to
  • Tidy up symlink documentation
  • Tidy up tests
  • Tweak documentation
  • Tweak examples and docs a little more
  • Update Go to 1.16.4
  • Update Windows Subsystem for Linux detection how to
  • Update dependencies
  • Update golangci-lint to 1.40.0
  • Update link to path matching function
  • Use io/fs package instead of os
  • Use neutral names in docs and tests
  • Use pager for docs and make pagers more configurable
  • Use quote function instead of literal quotes in docs
  • Use stringSets for known filenames
  • Use temporary files, instead of stdin/stdout, when calling gpg

New in chezmoi 2.0.12 (May 11, 2021)

  • Add Architecture guide
  • Add another method of detecting OS architecture for robustness
  • Bump chezmoi.io/themes/book from 1e4bcc2 to 6200450
  • Correct and template example in How To guide
  • Don't atempt to use reverse DNS to determine FQDN hostname
  • Handle EINTR from syscall
  • Improve error message when persistent state is locked
  • Improve reliability of Powershell installer
  • Increase verbosity of tests in CI
  • Make chezmoi forget also remove entry from state
  • Move VIM tip from reference to how-to
  • Remove debug code
  • Remove unnecessary AbsPaths type
  • Remove unnecessary RelPaths type
  • Remove unnecessary typecasts
  • Simplify EINTR handling
  • Sort unexported variables after exported ones
  • Suppress warnings in tests about git default branch name
  • Tidy up flag parsing and help output
  • Update dependencies
  • Update last written state when target and actual states are equivalent
  • Update rpm zsh completion directory to match recent Fedora versions.
  • Use /etc/hostname to determine hostname, if available
  • Use c.errorf instead of cmd.Printf
  • Validate generate config before writing it in init command

New in chezmoi 2.0.11 (Apr 27, 2021)

  • Add Makefile targets for coverage
  • Add import --exclude option
  • Add related software documentation
  • Add wget one line install instructions
  • Bump Go version to 1.16.3 on Cirrus CI
  • Do not follow symlinks if the file will be ignored anyway
  • Explicitly document need for data in template action
  • Extend include template function to handle absolute paths
  • Fix checksums.txt upload step
  • Fix panic when using diff --exclude
  • Fix typos in comments
  • Fix typos in docs
  • Fix typos in test comments
  • Ignore whitespace errors in .vscode/settings.json
  • Improve parsing of auto bools
  • Minor tidy-ups
  • Tidy up path handling
  • Update dependencies
  • Warn user when add command would remove encrypted, private, or template attribute
  • Write prompts to stdout, even when --no-tty is specified
  • Fix typo

New in chezmoi 2.0.10 (Apr 15, 2021)

  • Add add.templateSymlinks configuration variable
  • Add diff.exclude configuration variable
  • Add editor config for PowerShell scripts
  • Add infrastructure to read entry type sets from config
  • Add init --data option
  • Add mitigation for when actual state does not match persistent state
  • Add state data, delete, get, and set subcommands
  • Add test for re-adding file with and without --encrypt
  • Add tests with different umask values
  • Added --template-symlinks-home and --template-symlinks-source
  • Consolidate symlink tests
  • Document one-line chezmoi and dotfiles install
  • Don't assume that gpg is installed in tests
  • Make --exclude option per command instead of global
  • Make --template-symlinks option a bool that checks source dir and home dir
  • Make chezmoi init --one-shot also include --purge-binary
  • Only install glibc/musl-specific binaries when they are available
  • Re-enable passing test
  • Release both checksums.txt and chezmoi_${VERSION}_checksums.txt
  • Replace --template-symlinks-home and --template-symlinks-source with --template-symlinks=value
  • Revert to standard actions/cache
  • Store actual umasks in state file
  • Tidy up table of configuration variables
  • Tweak documentation
  • Update Go module version to match tag
  • Update dependencies
  • Update prefix documentation
  • Use default checksums file in install scripts

New in chezmoi 2.0.9 (Apr 5, 2021)

  • Fix import command when destination already exists
  • Update dependencies

New in chezmoi 2.0.8 (Apr 4, 2021)

  • Changelog:
  • Add tests for symmetric GPG encryption
  • Build with Go 1.16.3
  • Bump chezmoi.io/themes/book from 60dfd9a to 1e4bcc2
  • Bump ludeeus/action-shellcheck from 1.0.0 to 1.1.0
  • Fix absolute path check
  • Fix typo
  • Fix typos
  • Tidy up comparison doc
  • Update PowerShell install script to use checksums.txt
  • Update install script to use checksums.txt
  • fix: gpg symmetric passing wrong arguments

New in chezmoi 2.0.7 (Mar 31, 2021)

  • Restore original checksums filename

New in chezmoi 2.0.5 (Mar 30, 2021)

  • Changelog:
  • Add -Force option to Move-Item command.
  • Add darwin/arm64 to install script
  • Add link to blog post
  • Add stdinIsATTY template function
  • Correct function name in documentation
  • Fix issue in example for trying to use existing boolean vars first in How To section: First arg of get doesn't have to be in quotes.
  • Improve install script error handling
  • Make .chezmoi.sourceDir template variable a string
  • Make install script install glibc or musl libc version as appropriate
  • Only evaluate target states when needed
  • Reduce severity of doctor warning if gpg is not installed
  • Simplfy managed test
  • Split large functions into smaller functions
  • Tidy up handling of script working directories
  • Tidy up make generate target
  • Unlock state when running editor or merge command
  • Update dependencies
  • Update golangci-lint to 1.39.0
  • Use the first existing parent directory for a script's working directory.

New in chezmoi 2.0.4 (Mar 25, 2021)

  • Changelog:
  • Add age binary check to doctor command
  • Build libc-specific archives
  • Fix noupgrade build tags
  • Make doctor command more friendly about missing binaries
  • Only update state if target was actually changed
  • Remove stale reference to go generate
  • Update howto to use main instead of master

New in chezmoi 2.0.3 (Mar 22, 2021)

  • Document empty_ for file target types
  • Factor out GitHub client
  • Fix editing of encrypted files in subdirectories
  • Internal tidy-up
  • Remove noembeddocs and nodocs build tags
  • Remove symlinks whose targets are empty
  • Restore upgrade command

New in chezmoi 2.0.2 (Mar 19, 2021)

  • Changelog:
  • Add new attributes to chattr reference documentation.
  • Add removeline test function
  • Add tests for --exclude=encrypted option
  • Connect stderr when invoking encryption tools
  • Detect encryption if group set in config file
  • Extend cat command to print scripts
  • Improve encryption integration tests
  • Remove temporary version override

New in chezmoi 2.0.1 (Mar 18, 2021)

  • Changelog:
  • Fix panic when displaying scripts in diffs
  • Include scripts to be run in diffs by default
  • Use notepad.exe, not vi, as the default editor on Windows

New in chezmoi 1.8.9 (Nov 20, 2020)

  • Merge pull request #936 from zb140/1password-cache-arg

New in chezmoi 1.8.8 (Nov 3, 2020)

  • Merge pull request #924 from twpayne/templating-docs