Merge pull request #7090 from Lstarsky0/fix/status-cost-unknown-not-zero

This commit is contained in:
Hunter Bown authored and GitHub committed 2026-10-26 04:28:56 +08:00
commit e6c400e294
5 files changed
+21 -7

No files matched your search

@@ -187,6 +187,7 @@ pub struct ConfigStatusView {
pub cache_miss_tokens: u32,
pub cost: f64,
pub currency: CommandCurrency,
pub cost_label: Option<String>,
pub metrics: StatusMetrics,
pub ascii_safe: bool,
pub tool_outputs: StatusToolOutputs,
@@ -186,6 +186,19 @@ fn project_status(app: &App) -> ConfigStatusView {
cache_miss_tokens: app.session.displayed_total_cache_miss_tokens(),
cost: app.session_cost_for_currency(app.cost_currency),
currency: to_command_currency(app.cost_display_currency(app.cost_currency)),
cost_label: match app.cumulative_usage_chip() {
chip @ crate::route_billing::UsageChip::PricedSubtotal { .. } => {
crate::route_billing::format_usage_chip(&chip, app.ui_locale)
}
crate::route_billing::UsageChip::Unknown(_) => Some(
codewhale_localization::tr(
app.ui_locale,
codewhale_localization::MessageId::CmdCostUnknownValue,
)
.into_owned(),
),
_ => None,
},
metrics,
ascii_safe: crate::tui::color_compat::ascii_safe_enabled(),
tool_outputs: outputs,
@@ -1,5 +1,5 @@
{
"message": "codewhale 0.10.2\n\n Route: deepseek · baseline-{provider}-model · reasoning max\n Directory: <WORKSPACE>\n Project docs: AGENTS.md\n Mode: Work · approvals ask · shell off · workspace\n Safety: no OS sandbox on this platform (workspace-write requested, not enforced), network requested off, not enforced\n MCP: 0 configured\n\n Context window: 0.0% used (48 / 1000000 tokens)\n Window source: catalog · Cloud facts: off\n Window override: [providers.deepseek] context_window in config.toml\n Session: baseline-{model}-session · 0 cells · 0 API messages\n Session tokens: 0 in · 0 out · 1234 total · cache not reported\n Session cost: $0.0000\n Session metrics: 4 turns\n Tool outputs: no large outputs tracked\n\n Per-turn tokens: /tokens · Footer items: /statusline\n",
"message": "codewhale 0.10.2\n\n Route: deepseek · baseline-{provider}-model · reasoning max\n Directory: <WORKSPACE>\n Project docs: AGENTS.md\n Mode: Work · approvals ask · shell off · workspace\n Safety: no OS sandbox on this platform (workspace-write requested, not enforced), network requested off, not enforced\n MCP: 0 configured\n\n Context window: 0.0% used (48 / 1000000 tokens)\n Window source: catalog · Cloud facts: off\n Window override: [providers.deepseek] context_window in config.toml\n Session: baseline-{model}-session · 0 cells · 0 API messages\n Session tokens: 0 in · 0 out · 1234 total · cache not reported\n Session cost: unknown\n Session metrics: 4 turns\n Tool outputs: no large outputs tracked\n\n Per-turn tokens: /tokens · Footer items: /statusline\n",
"error": false,
"action": "None"
}
@@ -146,6 +146,7 @@ fn status_view() -> ConfigStatusView {
cache_miss_tokens: 0,
cost: 0.00001,
currency: CommandCurrency::Usd,
cost_label: None,
metrics: StatusMetrics::default(),
ascii_safe: false,
tool_outputs: StatusToolOutputs::default(),
@@ -220,12 +220,11 @@ fn format_status(view: &ConfigStatusView, locale: &Messages) -> String {
MessageId::StatusLabelSessionTokens,
&session_tokens(view, locale),
);
push_row(
&mut out,
locale,
MessageId::StatusLabelSessionCost,
&super::money::format_cost_amount_precise(view.cost, view.currency),
);
let cost = view
.cost_label
.clone()
.unwrap_or_else(|| super::money::format_cost_amount_precise(view.cost, view.currency));
push_row(&mut out, locale, MessageId::StatusLabelSessionCost, &cost);
// The full, untrimmed session metrics strip (the footer sheds groups to
// fit; here every group that has evidence is printed). It keeps its own
// template because the label and metrics form one localized sentence.