error-handling-logging #1

Open
dubey wants to merge 5 commits from error-handling-logging into master

5 Commits

Author SHA1 Message Date
e5ace49fb7 daemon done 2025-10-16 07:21:05 -04:00
db7073d21c Use git config for commit author instead of hardcoded 'User'
- Update CreateCommit to accept separate authorName and authorEmail
- Add GetGitConfig method to read user.name and user.email from config
- GetGitConfig checks local repo config first, then global config
- Update save.go to read author from git config before creating commits
- Update workstream_manager.go to extract author from git commit
- Update daemon/snapshot.go to use proper email for daemon commits
- Update git/rebase.go to preserve author email during rebases

Fixes issue where commits showed 'User <onyx@local>' instead of 
actual git user.name and user.email from config.
2025-10-15 20:53:24 -04:00
d8923e903e Fix error-handling-logging workstream base branch to master
Manually corrected the base_branch in .onx/workstreams.json from 
'main' to 'master' to match the repository's actual default branch.

This workstream was created before the dynamic branch detection fix, 
so it incorrectly recorded 'main' as the base branch.
2025-10-15 20:45:35 -04:00
3ee6d63c61 Fix hardcoded 'main' branch - detect default branch dynamically
- Add getDefaultBranchName() method to WorkstreamManager
- Detects repo default by checking HEAD symbolic ref and fallback
- Update CreateWorkstream to use dynamic default branch detection
- Update 'onx new' CLI flag default to empty string
- Manager now determines correct default branch automatically

Fixes bug where 'onx new feature' always used 'main' even when repo 
uses 'master' as the default branch. Now workstreams correctly detect 
and use the repository's actual default branch.
2025-10-15 19:36:36 -04:00
900bdeaf79 Implement error handling and structured logging
- Add structured logging with zap library (internal/utils/logger.go)
  - Support for Debug, Info, Warn, Error, Fatal log levels
  - JSON format for file logs, console format for stdout
  - Logs written to .onx/logs/onx.log
  - Configurable log levels and output modes

- Create comprehensive error types (internal/errors/errors.go)
  - OnyxError struct with Code, Message, Cause, and Hint fields
  - Error codes for all major error categories
  - Helper constructors for common errors
  - Recovery hints for better user experience

- Add panic recovery mechanisms to daemon (internal/daemon/daemon.go)
  - Wrap main event loop with panic recovery
  - Graceful degradation on partial failures
  - Detailed error logging with stack traces
  - Recovery wrapper for snapshot creation
  - Replace standard log package with structured logging

This implements items 44-46 from the checklist.
2025-10-15 19:32:41 -04:00