aboutsummaryrefslogtreecommitdiff
path: root/githooks/pre-commit
Commit message (Collapse)AuthorAgeFilesLines
* fix(githooks): stop the secret scan passing when it read nothingCraig Jennings44 hours1-3/+19
| | | | | | | | | - The scan piped git diff into grep and swallowed failures with || true. - grep exits 1 on no matches, which is normal, so the guard had to stay. - But it also hid a git failure, leaving nothing to scan and reporting clean. - Now the diff is read on its own and a git failure aborts the commit. - The staged-file list feeding the paren check had the same hole. - New bats tests drive a broken git and pin both paths.
* fix: correct four wrong behaviors and drop three dead code pathsCraig Jennings44 hours1-1/+1
| | | | | | | | | | | | - yt-dlp downloads claimed completion when tsp had merely queued them. - A fresh machine opened org links in EWW, not Chrome. - ArchWiki search raised a raw error instead of the install hint. - The pre-commit hook kept running when its cd failed. - Removed a second device-grouping implementation nothing called. - Removed a redundant epub advice that ran on every file visit. - Removed a buffer-burying clause naming a mode Emacs doesn't define. - Moved the Hugo bindings onto the custom prefix map. - The ArchWiki docs path is now a variable, making it testable.
* chore: two-pass case handling in pre-commit secret scanCraig Jennings8 days1-5/+17
| | | | Split the patterns into a case-sensitive pass (AWS/sk-/PEM) and a case-insensitive one (keyword=value), so mixed-case base64 in an embedded image blob stops tripping the uppercase AWS-key pattern and blocking real commits.
* chore: sync bundled claude rules and git hooksCraig Jennings2026-05-251-1/+1
| | | | Routine sync of the .claude/rules and git hooks distributed with the language bundle. Adds the cross-project, emacs, interaction, todo-format, triggers, and working-files rules; refreshes the elisp and elisp-testing rules, the elisp validation hook, and the pre-commit hook.
* feat(ai-quick-ask): add cj/gptel-quick-ask one-shot commandCraig Jennings2026-05-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New module `modules/ai-quick-ask.el`. Bound to `C-; a q` via `cj/ai-keymap` ("quick ask"). `cj/gptel-quick-ask` reads a prompt in the minibuffer, creates a transient `*GPTel-Quick*` buffer in `cj/gptel-quick-mode` (a special-mode derivative with `q` / `escape` / `c` bindings), inserts "Q: <prompt>" plus a response marker, then calls `gptel-request` with `:stream t` so the answer streams into the buffer. Doesn't touch `*AI-Assistant*`, doesn't autosave. Two follow-up commands work in the buffer: - `cj/gptel-quick-dismiss` (`q` / `escape`): delete the window and kill the buffer. Idempotent when the buffer is absent. - `cj/gptel-quick-continue` (`c`): extract the prompt + response, seed them into `*AI-Assistant*` under proper org headings (matching the `cj/gptel--fresh-org-prefix` shape), display the side window, then dismiss the quick buffer. 13 tests cover the pure helpers (initial-text shape, response extraction across normal / multi-line / no-marker / empty inputs, seed-text shape), the ask path (buffer created in right mode, prompt recorded, gptel-request called, empty-prompt error), the dismiss path (kills buffer / no-op when absent), and the continue path (seeds `*AI-Assistant*`, dismisses quick buffer, errors outside a quick buffer). `gptel-request` is stubbed in tests so nothing hits the network.
* chore(hooks): add tracked pre-commit hook via githooks/Craig Jennings2026-04-191-0/+50
Portable setup: pre-commit lives in githooks/ (tracked), activated by `make install-hooks` which sets core.hooksPath. Survives fresh clones. The hook does two things on staged changes: - Scans added lines for common credential patterns (AWS keys, sk-* tokens, BEGIN PRIVATE KEY blocks, api_key/password literals) - Runs check-parens on staged .el files Bypass with `git commit --no-verify` for confirmed false positives.