Skip to content

[bug]: TUI SideBar does not show #87

@anthonyhaussman

Description

@anthonyhaussman

Pre-flight checks

  • I searched existing issues and did not find a duplicate.
  • I verified this on the current production released OpenCode version, or I explain why not below.

OpenCode version tested

1.14.48

opencode-quota version tested

v3.8.2

Bug summary

Since I upgraded to the latest version of opencode-quota, the sidebar panel no longer shows Quota.

Image

Steps to reproduce

  1. Clean cache directory: rm -rf ~/.cache/opencode
  2. Run opencode
  3. Execute /quota

Expected behavior

The SideBar panel returns quota information

Actual behavior

The SideBar panel does not return quota information

Relevant logs/output

# Quota Status (opencode-quota v3.8.2) (/quota_status) 19:40 12/05/2026
toast:
- configSource: files
- configPaths: /home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json)
- precedence: global defaults -> workspace overrides
- global_config_paths: /home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json)
- workspace_config_paths: (none)
- setting_sources: enableToast<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | formatStyle<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | percentDisplayMode<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | enabledProviders<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | showSessionTokens<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | tuiSidebarPanel.enabled<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | tuiCompactStatus.enabled<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | tuiCompactStatus.homeBottom<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | tuiCompactStatus.sessionPrompt<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json) | tuiCompactStatus.suppressWhenNativeProviderQuota<=/home/anthony/.config/opencode/opencode-quota/quota-toast.json (opencode-quota/quota-toast.json)
- enabledProviders: copilot,google-gemini-cli
- onlyCurrentModel: false
- currentModel: (error: session.get returned no modelID)
tui:
- workspace_root: /home/anthony
- config_root: /home/anthony
- config_configured: true
- inferred_selected_config_path: /home/anthony/.config/opencode/tui.jsonc
- present_config_paths: /home/anthony/.config/opencode/tui.jsonc
- candidate_config_paths: /home/anthony/.config/opencode/tui.json | /home/anthony/.config/opencode/tui.jsonc | /home/anthony/tui.json | /home/anthony/tui.jsonc | /home/anthony/.opencode/tui.json | /home/anthony/.opencode/tui.jsonc
- quota_plugin_configured: true
- quota_plugin_paths: /home/anthony/.config/opencode/tui.jsonc
- providers:
  - anthropic: disabled unavailable
  - copilot: enabled available
  - openai: disabled unavailable
  - cursor: disabled unavailable
  - qwen-code: disabled unavailable
  - alibaba-coding-plan: disabled unavailable
  - synthetic: disabled unavailable
  - chutes: disabled unavailable
  - crof: disabled unavailable
  - google-antigravity: disabled unavailable
  - google-gemini-cli: enabled available
  - zai: disabled unavailable
  - zhipu: disabled unavailable
  - nanogpt: disabled unavailable
  - minimax-coding-plan: disabled unavailable
  - minimax-china-coding-plan: disabled unavailable
  - kimi-for-coding: disabled unavailable
  - opencode-go: disabled unavailable
paths:
- opencode_dirs: data=/home/anthony/.local/share/opencode config=/home/anthony/.config/opencode cache=/home/anthony/.cache/opencode state=/home/anthony/.local/state/opencode
- auth.json: preferred=/home/anthony/.local/share/opencode/auth.json present=/home/anthony/.local/share/opencode/auth.json candidates=/home/anthony/.local/share/opencode/auth.json
- qwen oauth auth configured: false
- qwen_oauth_source: (none)
- qwen_local_plan: (none)
- alibaba auth configured: false
- alibaba_api_key_source: (none)
- alibaba_api_key_checked_paths: /home/anthony/.config/opencode/opencode.jsonc
- alibaba_api_key_auth_paths: /home/anthony/.local/share/opencode/auth.json
- alibaba coding plan fallback tier: lite
- alibaba_coding_plan: (none)
openai:
- auth_configured: false
- auth_source: (none)
- token_status: (none)
- token_expires_at: (none)
- account_email: (none)
- account_id: (none)
anthropic:
- cli_installed: false
- cli_version: (none)
- auth_status: unknown
- quota_supported: false
- quota_source: (none)
- checked_commands: claude --version
- message: Claude CLI (`claude`) is not installed or not on PATH.
cursor:
- plan: none
- included_api_usd: (none)
- billing_cycle_start_day: (calendar month)
- auth_state: missing
- auth_selected_path: (none)
- auth_present_paths: /home/anthony/.local/share/opencode/auth.json
- auth_candidate_paths: /home/anthony/.local/share/opencode/auth.json | /home/anthony/.config/cursor/cli-config.json | /home/anthony/.config/cursor/auth.json | /home/anthony/.cursor/cli-config.json | /home/anthony/.cursor/auth.json
- plugin_enabled: false
- canonical_plugin_package: @playwo/opencode-cursor-oauth
- provider_configured: false
- config_matches: (none)
- config_checked_paths: /home/anthony/.config/opencode/opencode.json | /home/anthony/.config/opencode/opencode.jsonc | /home/anthony/opencode.json | /home/anthony/opencode.jsonc
- cycle_source: calendar_month
- cycle_reset_at: 2026-05-31T22:00:00.000Z
- api_usage: $0.00 across 0 messages
- auto_composer_usage: $0.00 across 0 messages
- total_cursor_usage: $0.00 across 0 messages
- unknown_cursor_models: 0
- qwen free local quota: path=/home/anthony/.local/state/opencode/opencode-quota/qwen-local-quota.json exists=false
- qwen free local usage: daily=0/1000 rpm=0/60 (default state)
- alibaba coding plan local quota: path=/home/anthony/.local/state/opencode/opencode-quota/alibaba-coding-plan-local-quota.json exists=false
minimax:
- auth_state: none
- api_key_configured: false
- api_key_source: (none)
- api_key_checked_paths: /home/anthony/.config/opencode/opencode.jsonc
- api_key_auth_paths: /home/anthony/.local/share/opencode/auth.json
minimax_china:
- auth_state: none
- api_key_configured: false
- api_key_source: (none)
- api_key_checked_paths: /home/anthony/.config/opencode/opencode.jsonc
- api_key_auth_paths: /home/anthony/.local/share/opencode/auth.json
kimi:
- auth_state: none
- api_key_configured: false
- api_key_source: (none)
- api_key_checked_paths: /home/anthony/.config/opencode/opencode.jsonc
- api_key_auth_paths: /home/anthony/.local/share/opencode/auth.json
opencode_go:
- config_state: none
- config_source: (none)
- config_checked_paths: /home/anthony/.config/opencode/opencode-quota/opencode-go.json
- selected_windows: rolling,weekly,monthly
zai:
- auth_state: none
- api_key_configured: false
- api_key_source: (none)
- api_key_checked_paths: /home/anthony/.config/opencode/opencode.jsonc
- api_key_auth_paths: /home/anthony/.local/share/opencode/auth.json
zhipu:
- auth_state: none
- api_key_configured: false
- api_key_source: (none)
- api_key_checked_paths: /home/anthony/.config/opencode/opencode.jsonc
- api_key_auth_paths: /home/anthony/.local/share/opencode/auth.json
synthetic:
- synthetic api key: configured=false checked=/home/anthony/.config/opencode/opencode.jsonc
chutes:
- chutes api key: configured=false checked=/home/anthony/.config/opencode/opencode.jsonc
crof:
- crof api key: configured=false checked=/home/anthony/.config/opencode/opencode.jsonc
nanogpt:
- api_key_configured: false
- api_key_source: (none)
- api_key_checked_paths: /home/anthony/.config/opencode/opencode.jsonc
- api_key_auth_paths: /home/anthony/.local/share/opencode/auth.json
copilot_quota_auth:
- pat_state: absent
- billing_mode: user_quota
- billing_scope: user
- quota_api: copilot_internal_user
- billing_api_access_likely: true
- remaining_totals_state: available
- pat_checked_paths: /home/anthony/.config/opencode/copilot-quota-token.json
- oauth_configured: true key=github-copilot refresh=true access=true
- effective_source: oauth
- override: none
- live_probe: success
- live_entry_1: [Copilot] (personal) percent_remaining=52 reset_at=2026-06-01T00:00:00.000Z
google_antigravity:
- auth_state: missing
- selected_accounts_path: (none)
- present_accounts_paths: (none)
- candidate_accounts_paths: /home/anthony/.config/opencode/antigravity-accounts.json | /home/anthony/.local/share/opencode/antigravity-accounts.json
- account_count: 0
- valid_account_count: 0
- companion_package_state: missing
- companion_package_path: (none)
- companion_error: Install opencode-antigravity-auth separately to enable Google Antigravity quota
- token_cache_path: /home/anthony/.cache/opencode/opencode-quota/google-access-tokens.json exists=true
- opencode db: preferred=/home/anthony/.local/share/opencode/opencode.db present=/home/anthony/.local/share/opencode/opencode.db candidates=/home/anthony/.local/share/opencode/opencode.db
google_gemini_cli:
- auth_state: present
- auth_source: google
- account_count: 1
- valid_account_count: 1
- companion_package_state: present
- companion_package_path: /home/anthony/.cache/opencode/packages/opencode-gemini-auth@latest/node_modules/opencode-gemini-auth/dist/index.js
- live_probe: success
- live_entry_1: [Gemini CLI] percent_remaining=14 reset_at=2026-05-13T14:59:02Z
storage:
- sessions_in_db: 270
- messages_in_db: 2,353
- assistant_messages_in_db: 1,828
pricing_snapshot:
- pricing: source=https://models.dev/api.json active_source=runtime generated_at=2026-05-12T17:33:36.466Z units=USD per 1M tokens
- selection: configured=auto active=runtime
- runtime_paths: snapshot=/home/anthony/.cache/opencode/opencode-quota/modelsdev-pricing.runtime.min.json refresh_state=/home/anthony/.cache/opencode/opencode-quota/modelsdev-pricing.refresh-state.json
- staleness: age_ms=399,623 max_age_ms=604,800,000 stale=false
- refresh_policy: auto_refresh_days=7
- refresh: last_attempt_at=2026-05-12T17:33:36.466Z last_success_at=2026-05-12T17:33:36.466Z last_failure_at=(none) last_result=success
- providers: anthropic,google,moonshotai,openai,xai,zai
- coverage_seen: priced_keys=9 mapped_but_missing=0 unpriced_keys=0
  - anthropic: models=23 priced_models_seen=3 mapped_but_missing_models_seen=0 unpriced_models_seen=0
  - google: models=36 priced_models_seen=6 mapped_but_missing_models_seen=0 unpriced_models_seen=0
  - moonshotai: models=7 priced_models_seen=0 mapped_but_missing_models_seen=0 unpriced_models_seen=0
  - openai: models=48 priced_models_seen=0 mapped_but_missing_models_seen=0 unpriced_models_seen=0
  - xai: models=26 priced_models_seen=0 mapped_but_missing_models_seen=0 unpriced_models_seen=0
  - zai: models=13 priced_models_seen=0 mapped_but_missing_models_seen=0 unpriced_models_seen=0
supported_providers_pricing:
- anthropic: pricing=yes (models.dev snapshot provider)
- copilot: pricing=yes (connector (priced via models.dev openai))
- openai: pricing=yes (models.dev snapshot provider)
- cursor: pricing=partial (API-pool models map to official pricing; Auto/Composer use bundled static Cursor rates)
- qwen-code: pricing=no (local request-count estimate (free tier, no token pricing API))
- alibaba-coding-plan: pricing=no (local request-count estimate (tiered rolling windows, no token pricing API))
- synthetic: pricing=no (subscription request quota (not token-priced))
- chutes: pricing=no (no local usage observed)
- crof: pricing=no (request quota + credits (not token-priced))
- google-antigravity: pricing=yes (connector (priced via models.dev google/anthropic))
- google-gemini-cli: pricing=yes (connector (priced via models.dev google))
- zai: pricing=yes (models.dev snapshot provider)
- zhipu: pricing=no (no local usage observed)
- nanogpt: pricing=no (subscription request quota + account balance (not token-priced))
- minimax-coding-plan: pricing=no (no local usage observed)
- minimax-china-coding-plan: pricing=no (no local usage observed)
- kimi-for-coding: pricing=no (request quota via Kimi Code API (not token-priced))
- opencode-go: pricing=no (subscription percentage quota via dashboard scraping (not token-priced))
unpriced_models:
- none
unknown_pricing:
- none

If not tested on current production OpenCode, explain why

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions