FF - #1
Open
oddtazz wants to merge 1278 commits into
Open
Conversation
fix: colorization errors
Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.10 to 0.0.11. - [Release notes](https://github.com/mattn/go-isatty/releases) - [Commits](mattn/go-isatty@v0.0.10...v0.0.11) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
…attn/go-isatty-0.0.11 chore(deps): bump github.com/mattn/go-isatty from 0.0.10 to 0.0.11
Bumps [github.com/alecthomas/chroma](https://github.com/alecthomas/chroma) from 0.6.9 to 0.7.0. - [Release notes](https://github.com/alecthomas/chroma/releases) - [Changelog](https://github.com/alecthomas/chroma/blob/master/.goreleaser.yml) - [Commits](alecthomas/chroma@v0.6.9...v0.7.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
…lecthomas/chroma-0.7.0 chore(deps): bump github.com/alecthomas/chroma from 0.6.9 to 0.7.0
Modifies `bin/build_release.sh` to compile releases for ARM versions 5, 6, and 7.
chore: dependencies and build script
Bumps [github.com/alecthomas/chroma](https://github.com/alecthomas/chroma) from 0.7.0 to 0.7.1. - [Release notes](https://github.com/alecthomas/chroma/releases) - [Changelog](https://github.com/alecthomas/chroma/blob/master/.goreleaser.yml) - [Commits](alecthomas/chroma@v0.7.0...v0.7.1) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
…lecthomas/chroma-0.7.1 chore(deps): bump github.com/alecthomas/chroma from 0.7.0 to 0.7.1
* 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`.
The `Makefile` `build-release` target now zips all executables after compilation.
…526) Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.11 to 0.0.12. - [Release notes](https://github.com/mattn/go-isatty/releases) - [Commits](mattn/go-isatty@v0.0.11...v0.0.12) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Bumps [gopkg.in/yaml.v2](https://github.com/go-yaml/yaml) from 2.2.7 to 2.2.8. - [Release notes](https://github.com/go-yaml/yaml/releases) - [Commits](go-yaml/yaml@v2.2.7...v2.2.8) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
* makefile wip * feat: adds Makefile Adds a `Makefile` for managing build-related tasks. * chore: updates dependencies * chore: updates dependencies * chore: updates bin scripts - Removes `build_release.sh` - Places deprecation notice in `build_devel.sh`, as its purpose has been superceded by the `Makefile`. * chore: updates bin scripts - Removes `build_release.sh` - Places deprecation notice in `build_devel.sh`, as its purpose has been superceded by the `Makefile`. * fix: Makefile Makes several corrections and improvements to the `Makefile`: - Previously, the `ifeq` rules were not behaving as intended, due to false assumptions regarding how `make` fundamentally behaves. Malfunctioning imperative-style programming has been replaced with declarative rules to repair this issue. - Previously, all release executables were zipped after compilation. In order to spare non-Windows users from (possibly) needing to install a package to unzip the executables, all non-Windows binaries are now compressed with `gzip`. (Windows executables are still compressed with `zip`.) - Removes a bit of needlessly verbosity in several rules and paths. * chore: updates dependencies * chore: bumps version to 3.3.1
* chore: trivial Makefile changes Trivial `Makefile` changes regarding file pathing. * chore: build flags - Passes `-trimpath` flag to build tasks - Creates `make ci` task and modifies `travis.yml` to use it - Bumps version to `3.3.2`
Previously, `build-release` would produce `.gz` files which had the execute permission set. This modifies the `Makefile` to `chmod -x` the `.gz` files after compression.
Makes some adjustments to the behaviors of `make tags` and `make distclean`.
Resolves an error whereby `make build` would fail to call `go generate` prior to calling `go build`.
- Generally reduces the complexity demonstrated in the example configs. The prior complexity appears to have confused some new users. - Removes the `dotfiles` references in the example configs. This idiom likewise appears to have confused some new users. - Adds some instruction regarding how to download and configure the "community" cheatsheets (`cheat/cheatsheets`).
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`.
`cheat` now attempts to auto-generate a config file if one cannot be found on the filesystem.
feat(configs): config auto-generation
Refactors the reading of multiple envvars out of `config.Paths` in order to facilitate cleaner unit-testing.
…loudflare/circl-1.3.7 chore(deps): bump github.com/cloudflare/circl from 1.3.6 to 1.3.7
Bug fixes: - Fix inverted pager detection logic (returned error instead of path) - Fix repo.Clone ignoring destination directory parameter - Fix sheet loading using append on pre-sized slices - Clean up partial files on copy failure - Trim whitespace from editor config Security: - Add path traversal protection for cheatsheet names Performance: - Move regex compilation outside search loop - Replace string concatenation with strings.Join in search Build: - Remove go:generate; embed config and usage as string literals - Parallelize release builds - Add fuzz testing infrastructure Testing: - Improve test coverage from 38.9% to 50.2% - Add fuzz tests for search, filter, tags, and validation Documentation: - Fix inaccurate code examples in HACKING.md - Add missing --conf and --all options to man page - Add ADRs for path traversal, env parsing, and search parallelization - Update CONTRIBUTING.md to reflect project policy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Bump Go from 1.19 to 1.26 and update all dependencies - Rewrite CI workflow with matrix strategy (Linux, macOS, Windows) - Update GitHub Actions to current versions (checkout@v4, setup-go@v5) - Update CodeQL actions from v1 to v3 - Fix cross-platform bug in mock/path.go (path.Join -> filepath.Join) - Clean up dependabot config (weekly schedule, remove stale ignore) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Resolve symlinks in temp dir paths (macOS /var -> /private/var) - Pre-create non-empty community dir to ensure clone fails reliably regardless of network access on CI runners Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add .gitattributes to force LF in mock files (Windows autocrlf) - Fix parse.go: detect line endings from content instead of runtime.GOOS - Add fail-fast: false to CI matrix; trigger on all branch pushes - Skip chmod-based tests on Windows (permissions work differently) - Use filepath.Join for expected paths in Windows path tests - Use platform-appropriate invalid paths in error tests - Add Windows absolute path test case for ValidateSheetName - Skip Unix-specific integration tests on Windows 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>
Prompt() created a new bufio.NewReader(os.Stdin) on each call, which buffered all piped input on the first call and left nothing for subsequent prompts. This made cheat un-scriptable (e.g., piping answers via printf). Fix by reading one byte at a time from os.Stdin directly. Also adds an end-to-end integration test for the first-run experience (regression test for #721, #771, #730) and bumps the Dockerfile to Go 1.26. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cheat --init now comments out the community cheatpath by default and includes a git clone instruction with the resolved path. This prevents warnings about missing directories when users save the --init output as their config without also cloning community cheatsheets. Closes #773 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Eliminates glibc version mismatch errors when running release binaries on systems with older glibc versions. Closes #744 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This workflow has been failing for years due to an expired/missing COMMITTER_TOKEN. Homebrew maintains their own automated version bump pipeline, making this redundant. 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>
Searching for `.git/` in file paths incorrectly matched directory names ending with `.git` (e.g., `personal.git/cheat/hello`), causing sheets under such paths to be silently skipped. Fix by requiring the path separator on both sides (`/.git/`), so `.git` is only matched as a complete path component. Rewrites test suite with comprehensive coverage for all six documented edge cases, including the #711 scenario and combination cases (e.g., a real .git directory inside a .git-suffixed parent). Closes #711 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move `doc/adr/` to `adr/` for discoverability. Remove the generic ADR README — `ls adr/` serves the same purpose. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a note explaining that syntax highlighting is powered by Chroma, with a link to Chroma's supported languages list. Closes #766 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>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: walk up directory tree to find .cheat directory (#602)
Add a --brief flag that lists cheatsheets with only title and tags, omitting the file path column. Can be used standalone (-b) or combined with --list (-lb), and composes with existing filters (-t, -p). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
The plan9/amd64 build fails because the vendored cyphar/filepath-securejoin uses syscall.ELOOP, which doesn't exist on plan9. Upstream fix (cyphar/filepath-securejoin#51) is stalled. Given ~0 user demand (46 downloads total, one release), remove the target rather than carry a local patch. Closes #774 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mutation testing (56 mutations, 10 modules) identified 7 surviving mutations. Added 5 targeted tests to kill all actionable survivors. Remaining 2 are logically equivalent condition reorderings in filter.go. Overall mutation score: 96.4%. New tests: - TestHasMalformedYAML: YAML unmarshal error path - TestInvalidateInvalidCheatpath: cheatpath.Validate() delegation - TestIndentTrimsWhitespace: TrimSpace behavior - TestColorizeDefaultSyntax: default "bash" lexer - TestColorizeExplicitSyntax: lexer differentiation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace docopt-go with spf13/cobra, giving cheat a built-in `--completion` flag that dynamically generates shell completions for bash, zsh, fish, and powershell. This replaces the manually-maintained static completion scripts and resolves the root cause of multiple completion issues (#768, #705, #633, #632, #476). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Iterates over configured cheatpaths and runs git pull on each one that is a git repository with a clean worktree. Supports SSH remotes via key file discovery and SSH agent fallback. Works with --path filtering. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.