Rust edition: 2024
Data flow: db::queries::load_app_data → analytics::build_snapshot → ui::app::App::run
- Only assistant messages count toward usage
- Default database paths:
%APPDATA%/opencode/opencode.db(Windows),~/.local/share/opencode/opencode.db(Linux),~/Library/Application Support/opencode/opencode.db(macOS)
- Domain modules (
db/,cache/,config/) usethiserrorwith their ownerrors.rsandResult<T>alias - User-facing code (
main.rs,app.rs) usescolor_eyre::eyre::Resultwith.wrap_err()
- Cache:
~/.cache/oc-stats/models.json(TTL: 1 hour) - Remote:
https://models.dev/api.json - OpenCode config overrides take priority
- Fallback:
cacheWrite = input,cacheRead = input * 0.1 - Prefer stored cost from database when available
- Config:
~/.config/oc-stats/config.toml - Index:
~/.config/oc-stats/themes.toml - Overrides:
~/.config/oc-stats/themes/*.toml