| Age | Commit message (Collapse) | Author |
|
|
|
In runInTmuxChild, the primary failure is the child runFn error; the
echo-through failure is secondary context. Wrap the primary error with
%w (keeping copyErr as %v, since fmt.Errorf allows only one %w) so
errors.Is/As work across the chain.
Audited all other fmt.Errorf %v/%s sites in internal/ and cmd/: they
format strings, ints, status codes, or an []error aggregate (syncer),
none of which is a single primary error to unwrap, so they stay as-is.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
RegisterProvider now returns an error for an empty name, a nil factory,
or a duplicate registration instead of panicking, making registration
composable and testable without recover(). RegisterAllProviders caches
the one-time registration error (sync.Once cannot return a value) and
returns it to every caller.
Updated all call sites: hexailsp, hexaicli and hexaiaction propagate the
error with context; test TestMains fail fast via panic. Added unit tests
covering empty name, nil factory, duplicate, success and idempotent
re-registration.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Code quality fixes from audit:
- Log silently discarded errors in status sinks and stats.Update call sites
- Fix json.Marshal errors silently ignored in LSP handlers
- Replace time.Sleep in tests with channel signaling (mcp) and fake clock (stats)
- Make context cancellation work in production time.Sleep sites (handlers_document, cmdentry)
- Remove init()-based provider registration from llm package; use explicit RegisterAllProviders()
- Add WaitGroup goroutine tracking to MCP server Run()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
|
|
tmux-only flow; update docs and Magefile
|
|
internal/hexaiaction; move tests; update Magefile and docs
|