- Remove unused parameters, dead files, and inaccurate doc.go files
- Extract shared helpers, eliminate duplication
- Rename cheatpath.Cheatpath to cheatpath.Path
- Optimize filesystem walks (WalkDir, skip .git)
- Move sheet name validation to sheet.Validate
- Move integration tests to test/integration/
- Consolidate internal/mock into mocks/
- Move fuzz.sh to test/
- Inline loadSheets helper into command callers
- Extract config.New into its own file
- Fix stale references in HACKING.md and CLAUDE.md
- Restore plan9 build target
- Remove redundant and low-value tests
- Clean up project documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously cheat only checked the current working directory for a .cheat
subdirectory. Now it walks upward through ancestor directories, stopping
at the first .cheat directory found. This mirrors how git discovers .git
directories, so users can place .cheat at their project root and have it
work from any subdirectory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously, env vars were only consulted during config generation
and baked into conf.yml. At runtime, the config file value was
always used, making it impossible to override the editor via
environment variables.
Now the precedence is: $VISUAL > $EDITOR > conf.yml > auto-detect.
Closes#589
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- cmdInit (--init) now substitutes EDITOR_PATH, PAGER_PATH, and
WORK_PATH instead of leaving them as literal strings
- Installer now substitutes WORK_PATH and always creates personal
and work directories regardless of community cheatsheet choice
- When community cheatsheets are declined, the community cheatpath
is commented out in the generated config
- config.New() skips nonexistent cheatpaths with a warning instead
of hard-erroring on EvalSymlinks failure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix an issue whereby colorization would output ANSI codes if a pager was
not configured.
The solution here is to stop guessing about the state of the user's
system at runtime, as well as the user's intention. The installer now
chooses an appropriate installer when generating configs, and no longer
bothers searching for pagers at runtime.
Bury the `more` pager default on Linux in an effort to work around the
following problem:
https://github.com/cheat/cheat/issues/681#issuecomment-1201842334
We're satisficing for this kludge because it does not appear to be
possible to actually make `more` perform as expected in all
environments.
- Update the default config file to use `more` instead of `less` as the
default pager, in order to support Windows out-of-the-box. (#655, #665).
- Use `terminal` Chroma formatter (rather than `terminal16m`) in order
to accommodate less capable terminal emulators like `cmd.exe` by
default. Similarly, default to `colorize: false` in configs (changed
from `true`) (#665).
- Comment out default `style` in order to avoid printing ANSI color
codes into terminals without color support (#665)
- Attempt to intelligently choose a default editor, rather than rely on
a hard-coded `vim` in the configs. This should make it easier to use
`cheat` immediately without needing to specify configs. It should also
improve `cheat`'s Windows compatibility. (#665)
Fixes an issue whereby the error message generated when a config file
could not be loaded (due to a symlink resolution failure) would fail to
print the config file path to `stderr`.
* feat: directory-scoped cheatpaths
`cheat` now searches for a `.cheat` directory in the current working
directory. If found, that directory is (temporarily) appended to the slice
of cheatpaths.
* makefile wip
* fix: appeases linter
Appeases linter (`go vet`) by adding quotation marks to YAML struct
tags.
* chore: modifies .gitignore
Adds `tag` to `.gitignore`
* feat: adds Makefile
Adds a `Makefile` for managing build-related tasks.
* chore: documents directory-local paths
Adds documentation regarding the new directory-local cheatpath
functionality.
* chore: updates dependencies
* chore: bumps version to 3.3.0
* chore: updates bin scripts
- Removes `build_release.sh`
- Places deprecation notice in `build_devel.sh`, as its purpose has been
superceded by the `Makefile`.
Repairs the `config` unit-tests which were broken with `3.0.4`. It does
so by providing a simple switch that allows us to disable the resolution
of filesystem symlinks when running tests.
- Re-implemented the project in Golang, and deprecated Python entirely
- Implemented several new, long-requested features
- Refactored cheatsheets into a separate repository