Skip to content

Comments

v0.0.8: opencode agent, conversation minimap, data layer refactor#5

Merged
butttons merged 14 commits intomainfrom
feat/v0.0.8
Feb 20, 2026
Merged

v0.0.8: opencode agent, conversation minimap, data layer refactor#5
butttons merged 14 commits intomainfrom
feat/v0.0.8

Conversation

@butttons
Copy link
Owner

@butttons butttons commented Feb 20, 2026

Summary

Add OpenCode as a third supported agent, introduce a conversation minimap for navigating long sessions, restyle scrollbars, refactor the worker's data layer into a Result-typed module, and add contributor attribution across the UI.

Changes

CLI

  • OpenCode agent support: Plugin adapter, search text extractor, and residue setup opencode command
  • OpenCode plugin hardening: Process exit handler and idle data dump to prevent lost sessions

Worker

  • OpenCode agent support: Session mapper for rendering OpenCode conversations
  • Conversation minimap: IDE-style minimap on the commit permalink page for navigating long sessions
  • Scrollbar styling: Custom scrollbars matching the zinc dark theme
  • Contributors section: Show contributors on home, org, and repo pages
  • Data layer refactor: Split monolithic db.ts into a typed data layer with Result types, migrate all routes and tests

Docs

  • OpenCode references: Add opencode to README, AGENTS.md, landing page, setup guide, how-it-works, and reference page

Tests

  • CLI: Search text extractor tests for OpenCode agent
  • Worker: OpenCode mapper tests, migrated existing test suites to new data layer utilities

- Link to demo.residue.dev below hero CTA buttons.
- Gitignore seed-demo.sh and wrangler.local.demo.jsonc.
- New Contributors component renders full-width rows with avatar initial, commit/conversation counts with icons, and last active time.
- DB.getContributors() queries by global/org/repo scope via discriminated union.
- Shown on home (after agent breakdown), org (after heatmap), repo (after stats chart).
- Monolithic db.ts was 950 lines and growing unwieldy for navigation
- Each data layer method now returns Result<T, DBError> for explicit error handling
- DL middleware creates once per request instead of new DB() in every handler
- Only sessions route migrated so far, remaining routes/tests pending
- Replace all new DB(c.env.DB) with c.var.DL in routes, middleware
- Update Hono types from { Bindings: Env } to AppEnv
- Handle Result unwrapping at each call site
- Replace new DB(env.DB) with createDL({ db: env.DB }) in all test files
- Update method calls and unwrap Result values in assertions
- Remove old monolithic DB class
- Plugin source (session.created, session.compacted hooks), setup command, worker mapper, search text extractor
- Test fixtures from real opencode session data
IDE-style minimap sidebar for navigating long conversations.
Fixed position on desktop, syncs with tab switching.
@butttons butttons merged commit aeba45b into main Feb 20, 2026
2 checks passed
@butttons butttons deleted the feat/v0.0.8 branch February 20, 2026 10:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant