mirror of
https://github.com/tiennm99/claude-code-usage-bubble.git
synced 2026-10-14 16:17:13 +00:00
73 lines
3.9 KiB
Markdown
73 lines
3.9 KiB
Markdown
---
|
|
title: OpenCode Go provider support and providers terminology
|
|
description: >-
|
|
Add OpenCode Go as a usage provider and rename user-facing Models wording to
|
|
Providers.
|
|
status: in-progress
|
|
priority: P2
|
|
branch: main
|
|
tags:
|
|
- providers
|
|
- opencode-go
|
|
- usage
|
|
- ui-copy
|
|
blockedBy: []
|
|
blocks: []
|
|
created: '2026-06-02T04:20:10.983Z'
|
|
createdBy: 'ck:plan'
|
|
source: skill
|
|
---
|
|
|
|
# OpenCode Go Provider Support And Providers Terminology
|
|
|
|
## Overview
|
|
|
|
Add OpenCode Go as a third selectable usage provider beside Claude Code and Codex. Rename the app's user-facing "Models" menu/copy to "Providers" because the app chooses quota sources/services, not individual model IDs.
|
|
|
|
I agree with the rename. OpenCode itself still has a `/models` command, but this app's menu toggles Claude Code, Codex, and OpenCode Go providers. Internals already use `ProviderId`, so the naming is conceptually aligned.
|
|
|
|
## Codebase Findings
|
|
|
|
- Rust Win32 app; usage abstraction lives under `src/usage/*`.
|
|
- Current extension points: `UsageProvider`, `ProviderId`, `Registry`, `CredentialSource`, `RefreshHint`.
|
|
- Two-provider assumptions remain in `src/settings.rs`, `src/app.rs`, `src/tray/mod.rs`, `src/tray/badge.rs`, `src/panel.rs`, `src/usage_color.rs`, i18n TOMLs, and README.
|
|
- OpenCode official docs say Go is configured as an OpenCode provider, uses `/connect`, stores credentials in `~/.local/share/opencode/auth.json`, has 5h/weekly/monthly dollar-value limits, and current usage is visible in the console.
|
|
- User decision: OpenCode Go should display four bars in two parts: upper part is weekly usage, lower part is monthly usage. Each part has the same two concepts as current Claude/Codex: usage percent and remaining time. Keep Claude/Codex on their existing two-bar presentation unless a separate UI redesign decides otherwise.
|
|
- OpenCode docs expose model endpoints and `https://opencode.ai/zen/go/v1/models`, but do not document a stable usage endpoint. Do not fake usage percentages.
|
|
- Phase 1 found the OpenCode console computes `weeklyUsage` and `monthlyUsage` with `usagePercent` and `resetInSec`, but only through an authenticated console server query. `opencode stats` is local cost/token history and cannot drive the requested Go bars.
|
|
|
|
## Related Plans
|
|
|
|
- `plans/260516-0707-cleanroom-rewrite/plan.md`: introduced current provider abstraction; related, no blocking dependency.
|
|
- `plans/260523-ui-ux-improvement-plan/plan.md`: overlaps labels/tooltips; related, no blocking dependency.
|
|
|
|
## Phases
|
|
|
|
| Phase | Name | Status |
|
|
|-------|------|--------|
|
|
| 1 | [Research OpenCode Go contracts](./phase-01-research-opencode-go-contracts.md) | Blocked |
|
|
| 2 | [Refactor provider metadata and settings](./phase-02-refactor-provider-metadata-and-settings.md) | Completed |
|
|
| 3 | [Implement OpenCode Go provider](./phase-03-implement-opencode-go-provider.md) | Pending |
|
|
| 4 | [Rename Models UI to Providers](./phase-04-rename-models-ui-to-providers.md) | In Progress |
|
|
| 5 | [Verify and document](./phase-05-verify-and-document.md) | Pending |
|
|
|
|
## Dependencies
|
|
|
|
Phase 1 gates Phase 3. If no stable OpenCode Go usage source is found, pause before Phase 3 and ask user whether to defer usage support or ship a limited connectivity/auth detector.
|
|
|
|
Phase 2 is implemented. Phase 4 provider wording is implemented; OpenCode Go remains listed but disabled until Phase 1's quota-source decision is resolved.
|
|
|
|
## Success Criteria
|
|
|
|
- OpenCode Go can be enabled/disabled independently without breaking Claude Code or Codex.
|
|
- Existing settings migrate safely; at least one provider remains enabled.
|
|
- UI and README say "Providers" where the app means selectable services.
|
|
- No guessed OpenCode Go usage. Weekly/monthly percent and reset-time data comes from verified source, or feature pauses.
|
|
- `cargo test` and `cargo build --release` pass.
|
|
|
|
## Sources
|
|
|
|
- OpenCode Go docs: https://dev.opencode.ai/docs/go/
|
|
- OpenCode CLI docs: https://opencode.ai/docs/cli/
|
|
- Current repo README: `README.md`
|