Releases: cheat/cheat
4.5.2
Bug Fixes
- Static binaries: Build with
CGO_ENABLED=0to produce fully static binaries (#744) - Editor env vars: Respect
$VISUALand$EDITORenvironment variables at runtime (#589) .gitin path: Fix cheatsheets being silently skipped when the cheatpath contains a directory ending in.git(#711)
Other Changes
- Remove dead Homebrew formula bump workflow
- Move ADRs from
doc/adr/toadr/for discoverability
4.5.1
Bug fixes
-
Fix first-run experience (#721, #730, #771): Declining community cheatsheets during initial setup no longer causes errors on subsequent runs.
config.New()now skips missing cheatpaths with a warning instead of a fatal error. -
Fix
--initoutput (#773):cheat --initnow comments out the community cheatpath by default and includes clone instructions, so the output works as a config file without modification. -
Fix stdin buffering in installer prompts: The installer's interactive prompts now read stdin without buffering, allowing
cheatto be scripted (e.g.,printf "y\nn\n" | cheat). -
Fix frontmatter parsing on Windows: Line ending detection in cheatsheet frontmatter now inspects file content instead of checking
runtime.GOOS, fixing parsing failures when files have Unix line endings on Windows.
Other changes
- CI modernized: Go 1.26, GitHub Actions v4/v5, Windows added to test matrix
- Dependencies updated (addresses dependabot CVEs in golang.org/x/crypto, golang.org/x/net)
- End-to-end integration tests added for first-run experience
- Dockerfile updated to Go 1.26
4.5.0
Bug Fixes
- Fix inverted pager detection logic (returned error string instead of path)
- Fix
repo.Cloneignoring destination directory parameter - Fix sheet loading using
appendon pre-sized slices, causing nil entries - Clean up partial files on copy failure
- Trim whitespace from editor config during loading
Security
- Add path traversal protection for cheatsheet names
Performance
- Move regex compilation outside search loop
- Replace O(n²) string concatenation with
strings.Joinin search
Build & Testing
- Remove
go:generate; embed config and usage as string literals - Parallelize release builds
- Add fuzz testing infrastructure
- Improve test coverage from 38.9% to 50.2%
Documentation
- Fix inaccurate code examples in HACKING.md
- Add missing
--confand--alloptions to man page - Add ADRs for path traversal, env parsing, and search parallelization
- Update CONTRIBUTING.md to reflect project policy
4.4.2
- Bump
chromato newest version - Remove
plan9support due to build failure - Upgrade to
yaml.v3
4.4.1
- Update dependencies
- Make minor changes to appease
revive(linter)
4.4.0
- Update dependencies
- Remove errant
yaml.v1dependency, and useyaml.v2everywhere. - Add experimental support for the following platforms:
- aix
- dragonfly
- illumos
- ios
- netbsd
- openbsd
- plan9
- solaris
4.3.3
4.3.2
- chore(deps): update dependencies
- Do not strip leading or trailing newlines. Doing so had interferred with users' intended cheatsheet layouts. (#663 )
- Move
Frontmatter.ParsetoSheet.parse, and delete thefrontmatterpackage.Sheet.parsemore accurately describes the parser's behavior. - Update
INSTALLING.mdwith more package information. (#677) - Fix an issue whereby
make cleanfiled to remove assets created bymake generate. - Fix a subsequent issue whereby
make generatewas being run too late in themake buildtarget, which resulted in a build failure. - Improve the configuration documentation in
configs/conf.yml(#656). - Resolve an issue whereby cheatsheets contained within
gitsubmodules were ignored due to a regression introduced in4.3.1. (#694 ) - chore: bump version to
4.3.2