- Add setup instructions for system-wide and org/repo webhooks
- Fix sidebar to sort log file groups by most recent file timestamp
- Maintains chronological order when viewing logs across different git commits
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Split the monolithic gitea/helpers.ts (which had Discord imports and created circular dependencies) into three focused libs:
1. **gitea/** — Pure API client: fetchPR, fetchReviewComments, convertUsername, threadName. No side effects or external deps.
2. **discord/** — Discord client setup: bot login, event listeners, slash commands. Now isolated from Gitea internals.
3. **bridge/** — New integration layer: webhook handler, DB mappings (Gitea PR ↔ Discord thread), Discord helpers, and createPRComment.
Dependencies now flow one direction: bridge → gitea and bridge → discord. No circular imports.
Added:
- Barrel exports (index.ts) for each lib with public API
- README.md for each lib documenting the barrel exports
- Comprehensive spike README.md with setup guide and architecture explanation
- Integration tests for webhooks (callback-based, no race conditions)
- Unit tests for pure API functions
- CLAUDE.md with links to each lib's README
This architecture makes it possible for AI to understand a lib by reading just its README, keeping context focused and small.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>