跳到主要内容
    ↑↓ 选择↵ 打开esc 关闭
    davidaayers

    Go Usage

    @davidaayers/opencode-go-usage-plugin·v0.1.4·界面与主题

    OpenCode TUI plugin: OpenCode Go plan usage (5h/weekly/monthly) from the official usage API

    GitHub 星标

    0

    月装机量

    446

    近 7 天 24

    综合评分

    36.2

    生态多维模型

    最近提交

    8 天前

    2026-09-27

    快速安装与配置

    opencode.json

    写入当前项目的 opencode.json,只对这个仓库生效。

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["@davidaayers/opencode-go-usage-plugin@0.1.4"]
    }

    OpenCode 启动时会通过内嵌运行时自动加载 npm 依赖并缓存至本地目录,无需手动在全局环境执行安装。

    An OpenCode TUI sidebar plugin that shows your OpenCode Go plan usage (5h / weekly / monthly) from the official usage API — no dashboard scraping.

    Go Usage
    5h █▏░░░░░ wk ████▏░░ mo ███████
    22% · 2h   81% · 7d   100% · 28d
    

    Features

    • Plan gauges — three eighth-block gauges (5h / wk / mo) sized to the sidebar, with percent and reset countdown beneath each
    • Proximity colors — gauge and percent ramp through theme tokens as limits approach: success <50% → accent 50–74% → warning 75–89% → error ≥90% or rate-limited
    • Compact prompt line — Go month 100% in the prompt bar when the sidebar is hidden, showing the binding constraint
    • Official API — polls GET https://opencode.ai/zen/go/v1/usage with your existing Go key; zero config, no page scraping
    • Live updates — 60s polling plus refresh on message/session events
    • Silent by design — hidden entirely when no opencode-go key is present or the session is not using Go

    Install

    opencode plugin --global @davidaayers/opencode-go-usage-plugin
    

    Or from inside OpenCode: press ctrl+p → "Install Plugin" → @davidaayers/opencode-go-usage-plugin. Restart OpenCode and the block appears in the sidebar once the session uses an opencode-go model.

    From source

    OpenCode TUI plugins load from the plugin array in ~/.config/opencode/tui.json (or a project-level tui.json) — not from opencode.jsonc, whose plugin array is server-side only. Adding a TUI-only module to opencode.jsonc will make the server fail to load it.

    // ~/.config/opencode/tui.json
    {
      "plugin": [
        "file:///absolute/path/to/opencode-go-usage-plugin/src/go-usage.tsx"
      ]
    }
    

    How It Works

    • Usage windows: polls the official endpoint (Bearer auth with the opencode-go key from ~/.local/share/opencode/auth.json) every 60s and on message/session events. Each window reports percent (0–100), status (ok / rate-limited), and resetsAt.
    • Rendering: SolidJS JSX via @opentui/solid, registered into the sidebar_content and session_prompt_right slots through @opencode-ai/plugin/tui. Colors come from the active OpenCode theme.
    • Sidebar geometry: the session sidebar is a fixed 42 columns (37 usable after padding); the gauge columns are sized so the widest possible row (100% · 28d) fits exactly.

    Development

    bun install
    bun run build           # compile src/go-usage.tsx -> dist/tui.js (run by prepack)
    bun run typecheck
    bun scratch-repro.tsx   # headless render capture
    

    Source lives in src/go-usage.tsx; the published entrypoint is the compiled dist/tui.js, built by build.mjs. The build runs @opentui/solid's Solid transform so JSX compiles to reactive bindings (not eager jsx() calls), leaves the host imports (@opentui/core, @opentui/solid, solid-js) external, and stays unminified so OpenCode's loader can rewrite them to its own copies.

    Roadmap

    Cross-repository follow-up work is tracked in the OpenCode Plugins project.

    Changelog

    See CHANGELOG.md for release history.

    License

    MIT © 2026 David Ayers

    同类生态推荐