1
0
Fork 0
mirror of https://github.com/imjasonh/cnotes synced 2026-07-08 09:05:17 +00:00
Commit graph

22 commits

Author SHA1 Message Date
Jason Hall
01ba9278ba
Only register PostToolUse hook during installation
Since cnotes only handles PostToolUse events (and ignores all others),
update the installation to only register for that specific event rather
than all available hook events. This reduces unnecessary hook calls.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 16:59:28 -04:00
Jason Hall
f32928189d
Fix go run detection by checking for go-build in any cache location
- Add checks for /go-build/ and /Caches/go-build/ patterns
- Clean up settings.json again to remove go-build cache entry
2025-07-21 15:29:46 -04:00
Jason Hall
bae042b031
Prevent go run install and clean up settings
- Block installation when executable contains 'go-build' in path
- Clean up .claude/settings.json to only include properly installed cnotes
- Remove changelog line from README as requested
2025-07-21 15:02:20 -04:00
Jason Hall
47abf1a0ce
Prevent cnotes installation from temporary directories
- Add check for os.TempDir() and /tmp/ prefix
- Resolve symlinks to handle macOS temp directory structure
- Guide users to use 'go install' for proper installation
2025-07-21 14:57:34 -04:00
Jason Hall
3cfe51703e
Implement proper deduplication using last event timestamp tracking 2025-07-21 14:51:00 -04:00
Jason Hall
aedefe6391
Fix missing user prompts by increasing time buffer to 60 seconds 2025-07-21 14:45:14 -04:00
Jason Hall
cc4541b256
Add configurable emojis for user and assistant messages 2025-07-21 14:41:19 -04:00
Jason Hall
588abf835d
Add conversational flow to cnotes show command 2025-07-21 14:31:48 -04:00
Jason Hall
a98459ed4d
Refactor install output to use multi-line string template
- Replace multiple fmt.Printf/Println calls with single fmt.Printf
- Use Go's multi-line string literal with backticks
- Cleaner and more maintainable code structure
2025-07-21 14:05:16 -04:00
Jason Hall
def9a335f2
Add small delay to ensure transcript is written before parsing
- Add 100ms delay before reading transcript
- Ensures user prompts are captured even if transcript writing is async
- Should fix issue where user prompts weren't appearing in git notes
2025-07-21 14:03:30 -04:00
Jason Hall
5577e350b3
Update install command output to accurately describe cnotes functionality
- Remove misleading descriptions of hook validation features
- Clearly state that cnotes monitors git commits and captures conversation context
- Add helpful commands for using cnotes (show, list, backup/restore)
- Emphasize key features: cross-session context and activity since last commit
2025-07-21 13:58:12 -04:00
Jason Hall
a6e6602bf8
Fix duplicate content in git notes by filtering since last commit
- Add ExtractContextSince method to filter conversation by timestamp
- Get previous commit time and only include activity since then
- Change labels to 'User prompts since last commit' and 'Tool interactions since last commit'
- Each commit now only captures its own unique conversation context
- Prevents accumulation of duplicate content across commits in same session
2025-07-21 13:38:30 -04:00
Jason Hall
4f8189cef8
Add stdin timeout and update documentation
- Add 2-second timeout for stdin input to prevent hanging
- Update README with pronunciation guide and go install instructions
- Fix command references in documentation from ./cnotes to cnotes
- Update settings.json to use /Users/jason/go/bin/cnotes run
- Improve generated by message formatting in notes output

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 13:02:15 -04:00
Jason Hall
324ad33ccc
Refactor to cnotes: focused git notes tool
BREAKING CHANGE: Complete restructure from hooks to cnotes

Major Changes:
- Removed all hook handler code except git commit detection
- Simplified to focused git notes functionality only
- Renamed binary from 'hooks' to 'cnotes'
- Restructured CLI: cnotes (hook handler), cnotes show, cnotes install, etc.
- Updated module path to github.com/imjasonh/cnotes
- Rewrote README and CLAUDE.md for new focused scope

New Command Structure:
- cnotes           # Main hook handler (receives Claude Code calls)
- cnotes show      # Pretty-print conversation notes
- cnotes install   # Configure Claude Code to use cnotes
- cnotes backup    # Backup conversation notes
- cnotes restore   # Restore notes from backup
- cnotes list      # List commits with notes

This creates a much cleaner, focused tool specifically for git conversation notes.
2025-07-21 12:52:39 -04:00
Jason Hall
ad3c31ffea
Improve conversation excerpt formatting in notes show command
- Added formatConversationExcerpt function to properly unescape JSON strings
- Replaced escaped newlines (\n) with actual newlines for readability
- Unescaped quotes, backslashes, tabs, and other JSON escape sequences
- Tool interactions and conversation context now display with proper formatting
- Much more readable output with proper line breaks and structure

The conversation context is now properly formatted and easy to read instead of being one long escaped string.
2025-07-21 12:45:50 -04:00
Jason Hall
997a55970f
Add pretty-printed Markdown show command for conversation notes
- Added 'hooks notes show [commit]' command that defaults to HEAD
- Formats conversation context in readable Markdown with proper sections
- Shows commit info, session details, tools used, commit context, and conversation excerpt
- Updated documentation to recommend the show command over raw git notes
- Enhanced user experience for viewing conversation context

Usage:
  ./hooks notes show       # Show notes for latest commit
  ./hooks notes show abc123 # Show notes for specific commit
2025-07-21 12:43:34 -04:00
Jason Hall
7b6cdffa8a
Add git notes preservation system with backup/restore functionality
- Added WarnAboutGitNotesLoss hook that warns before destructive git operations
- Implemented comprehensive backup/restore system for conversation notes
- Added CLI commands: hooks notes backup/restore/list
- Configured git to automatically copy notes during rebase operations
- Created backup.go with full notes backup and restoration functionality

This ensures conversation context is never lost during rebasing, squashing, or other destructive git operations.
2025-07-21 12:39:13 -04:00
Jason Hall
45ef980233
Scaffold all 7 hook events and eliminate type casting
- Add missing hook handlers: Stop, SubagentStop, PreCompact
- Replace all string type casting with proper JSON unmarshaling
- Change ToolUseRequest.Parameters from map[string]interface{} to json.RawMessage
- Update helper methods to use json.Unmarshal directly to typed structs
- Replace speech notifications with simple logging notifications
- Update documentation to reflect all hook events and remove speech references
- Add comprehensive CLAUDE.md with architecture overview and development guidance

All hooks now use type-safe JSON handling without .(string) assertions.
Complete coverage of Claude Code events: PreToolUse, PostToolUse,
UserPromptSubmit, Notification, Stop, SubagentStop, PreCompact.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 12:01:55 -04:00
Jason Hall
c61b579243
Complete hooks implementation with comprehensive features
- Add project-level settings support (.claude/settings.json)
- Implement regex-based dangerous command detection
- Add typed tool input parsing (BashToolInput, FileToolInput)
- Replace terminal-notifier with speech-only notifications
- Add contextual spoken messages for prompts and notifications
- Implement timeout handling for hook execution
- Add comprehensive goimports automation for Go files
- Support global, local, and project hook configurations
- Fix JSON field mapping to match Claude Code expectations
- Add extensive logging and error handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 11:27:18 -04:00
Jason Hall
9cfbafb584
Switch to terminal-notifier for visual notifications
- Replaced go-toast with terminal-notifier for better reliability
- Visual notifications now require: brew install terminal-notifier
- Speech notifications continue to work with built-in say command
- Cleaner implementation with no deprecation warnings

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 11:27:15 -04:00
Jason Hall
f36813078c
Add notification hook with macOS speech synthesis
- Speaks Claude notifications using the 'say' command
- Handles both permission requests and regular notifications
- Only runs on macOS systems
- Non-blocking execution to avoid delays

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 11:27:11 -04:00
Jason Hall
2e7a2badba
Initial implementation of Claude Code hooks in Go
- Easy-to-use hook registration system
- Built-in hooks for bash validation, file protection, and logging
- Automatic goimports formatting for modified Go files
- CLI with install/uninstall commands
- Comprehensive documentation and examples

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 11:27:08 -04:00