From 839d7257ea240e4f0602fc4ceff1283612a6a459 Mon Sep 17 00:00:00 2001 From: andy-xu-db <310751426+andy-xu-db@users.noreply.github.com> Date: Mon, 31 Aug 2026 16:11:21 +0000 Subject: [PATCH 1/5] Redesign usage summary --- src/ucode/usage.py | 27 ++++++++++++++++++--------- tests/test_usage.py | 19 ++++++++++++++----- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/ucode/usage.py b/src/ucode/usage.py index dc392796..70bcbdab 100644 --- a/src/ucode/usage.py +++ b/src/ucode/usage.py @@ -636,24 +636,32 @@ def render_usage_summary( if usage_day == today: daily_total += token_total + today_text = format_token_count(daily_total) + weekly_text = format_token_count(weekly_total) + monthly_text = format_token_count(monthly_total) + metric_width = 13 lines = [ heading(f"Usage Summary for {requester_name}"), "", - "[bold green]✓[/bold green] Databricks AI Gateway usage", - f"{label('Today:')} {value(format_token_count(daily_total) + ' tokens')}", - f"{label('Last 7 days:')} {value(format_token_count(weekly_total) + ' tokens')}", - f"{label('Last 30 days:')} {value(format_token_count(monthly_total) + ' tokens')}", + "[bold green]✓[/bold green] [bold]Databricks AI Gateway Token Usage[/bold]", + muted(" ─────────────────────────────────────"), + f" {value(f'{today_text:<{metric_width}}')}" + f"{value(f'{weekly_text:<{metric_width}}')}" + f"{value(monthly_text)}", + f" {muted('today'.ljust(metric_width))}" + f"{muted('7 days'.ljust(metric_width))}" + f"{muted('30 days')}", ] if active_tools_last_week: - tool_text = ", ".join(tool_displays[tool] for tool in active_tools_last_week) - lines.append(f"{label('Active tools:')} {value(tool_text)}") + tool_text = " · ".join(tool_displays[tool] for tool in active_tools_last_week) + lines.extend(["", f" 🤖 {label('Top Harnesses:')} {value(tool_text)}"]) if weekly_model_usage: top_models = sorted( weekly_model_usage.values(), key=lambda u: (-u.total, u.name.lower()), )[:3] - models_text = ", ".join(usage.name for usage in top_models) - lines.append(f"{label('Top models this week:')} {value(models_text)}") + models_text = " · ".join(usage.name for usage in top_models) + lines.append(f" ⭐ {label('Top Models:')} {value(models_text)}") weekly_cost = sum( ( model_usage_cost(usage, price_lookup) or Decimal(0) @@ -662,7 +670,8 @@ def render_usage_summary( Decimal(0), ) if weekly_cost > 0: - lines.append(f"{label('Est. cost (7 days):')} {value(format_cost_usd(weekly_cost))}") + cost_text = f"{format_cost_usd(weekly_cost)} estimated cost · last 7 days" + lines.append(f" 💰 {value(cost_text)}") lines.extend(render_budget_lines(budget_spend)) return "\n".join(lines) diff --git a/tests/test_usage.py b/tests/test_usage.py index 6ade58d4..7f37ae31 100644 --- a/tests/test_usage.py +++ b/tests/test_usage.py @@ -513,6 +513,10 @@ def test_today_total(self): records = [self._make_record(0, "claude", 5000)] result = render_usage_summary(records, "user", {"claude": "Claude Code"}) assert "5.0K" in result + assert "Databricks AI Gateway Token Usage" in result + assert "today" in result + assert "7 days" in result + assert "30 days" in result def test_weekly_total_includes_past_week(self): records = [ @@ -525,9 +529,14 @@ def test_weekly_total_includes_past_week(self): assert "3.0K" in result or "3" in result def test_active_tools_listed(self): - records = [self._make_record(0, "claude", 1000)] - result = render_usage_summary(records, "user", {"claude": "Claude Code"}) - assert "Claude Code" in result + records = [ + self._make_record(0, "claude", 1000), + self._make_record(0, "codex", 1000), + ] + result = render_usage_summary( + records, "user", {"claude": "Claude Code", "codex": "Codex"} + ) + assert "🤖 [bold]Top Harnesses:[/bold] [cyan]Claude Code · Codex[/cyan]" in result def test_top_models_listed(self): records = [ @@ -583,8 +592,8 @@ def test_top_models_uses_per_model_token_totals(self): ) # Top-models line is full names only, ranked by per-model token totals # (claude-opus-4 236.1K > gpt-5 13.3K > claude-haiku-4.5 920). - assert "Top models this week:" in result - assert "claude-opus-4, gpt-5, claude-haiku-4.5" in result + assert "⭐ [bold]Top Models:[/bold]" in result + assert "claude-opus-4 · gpt-5 · claude-haiku-4.5" in result # No token counts in this line — those live in the per-model table. assert "236.1K" not in result From b50a4cddaa769298fb207810c09df7314cdf975c Mon Sep 17 00:00:00 2001 From: andy-xu-db <310751426+andy-xu-db@users.noreply.github.com> Date: Mon, 31 Aug 2026 16:15:49 +0000 Subject: [PATCH 2/5] Format usage summary test --- tests/test_usage.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/test_usage.py b/tests/test_usage.py index 7f37ae31..c5ab0a9e 100644 --- a/tests/test_usage.py +++ b/tests/test_usage.py @@ -533,9 +533,7 @@ def test_active_tools_listed(self): self._make_record(0, "claude", 1000), self._make_record(0, "codex", 1000), ] - result = render_usage_summary( - records, "user", {"claude": "Claude Code", "codex": "Codex"} - ) + result = render_usage_summary(records, "user", {"claude": "Claude Code", "codex": "Codex"}) assert "🤖 [bold]Top Harnesses:[/bold] [cyan]Claude Code · Codex[/cyan]" in result def test_top_models_listed(self): From 7fa562a9654445f74cd1ff9c9ca2b14f96eaba12 Mon Sep 17 00:00:00 2001 From: andy-xu-db <310751426+andy-xu-db@users.noreply.github.com> Date: Mon, 31 Aug 2026 16:20:38 +0000 Subject: [PATCH 3/5] Clarify usage summary metrics --- src/ucode/usage.py | 13 +++++-------- tests/test_usage.py | 16 +++++++++------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/ucode/usage.py b/src/ucode/usage.py index 70bcbdab..88aa24a5 100644 --- a/src/ucode/usage.py +++ b/src/ucode/usage.py @@ -639,18 +639,15 @@ def render_usage_summary( today_text = format_token_count(daily_total) weekly_text = format_token_count(weekly_total) monthly_text = format_token_count(monthly_total) - metric_width = 13 + token_table = render_box_table( + ["Today", "Last 7 days", "Last 30 days"], + [[f"{today_text} tokens", f"{weekly_text} tokens", f"{monthly_text} tokens"]], + ) lines = [ heading(f"Usage Summary for {requester_name}"), "", "[bold green]✓[/bold green] [bold]Databricks AI Gateway Token Usage[/bold]", - muted(" ─────────────────────────────────────"), - f" {value(f'{today_text:<{metric_width}}')}" - f"{value(f'{weekly_text:<{metric_width}}')}" - f"{value(monthly_text)}", - f" {muted('today'.ljust(metric_width))}" - f"{muted('7 days'.ljust(metric_width))}" - f"{muted('30 days')}", + token_table, ] if active_tools_last_week: tool_text = " · ".join(tool_displays[tool] for tool in active_tools_last_week) diff --git a/tests/test_usage.py b/tests/test_usage.py index c5ab0a9e..07aae51d 100644 --- a/tests/test_usage.py +++ b/tests/test_usage.py @@ -514,9 +514,10 @@ def test_today_total(self): result = render_usage_summary(records, "user", {"claude": "Claude Code"}) assert "5.0K" in result assert "Databricks AI Gateway Token Usage" in result - assert "today" in result - assert "7 days" in result - assert "30 days" in result + assert "┃ Today" in result + assert "Last 7 days" in result + assert "Last 30 days" in result + assert "│ 5.0K tokens" in result def test_weekly_total_includes_past_week(self): records = [ @@ -687,11 +688,12 @@ def fake_render_box_table(headers, table_rows, max_widths=None): "Using SQL warehouse `wh` (RUNNING).", f"No usage for Claude Code in the last {USAGE_BREAKDOWN_DAYS} days.", ] - assert len(rendered_tables) == 1 + assert len(rendered_tables) == 2 + assert rendered_tables[0] == [["100 tokens", "100 tokens", "300 tokens"]] # One per-model row for codex: full model name "gpt-5", 1 request, 80 input / 20 output. - assert rendered_tables[0][0][0] == "gpt-5" - assert rendered_tables[0][0][1] == "1" - assert rendered_tables[0][0][2] == "80" + assert rendered_tables[1][0][0] == "gpt-5" + assert rendered_tables[1][0][1] == "1" + assert rendered_tables[1][0][2] == "80" assert "gemini" not in "\n".join(printed).lower() assert "900" not in "\n".join(printed) From 1c3a07bf0892ce19100e48eaf02c99e7ce8f2f59 Mon Sep 17 00:00:00 2001 From: andy-xu-db <310751426+andy-xu-db@users.noreply.github.com> Date: Mon, 31 Aug 2026 16:35:56 +0000 Subject: [PATCH 4/5] Refine usage summary emphasis --- src/ucode/usage.py | 9 +++++++-- tests/test_usage.py | 23 ++++++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/ucode/usage.py b/src/ucode/usage.py index 88aa24a5..2504b12b 100644 --- a/src/ucode/usage.py +++ b/src/ucode/usage.py @@ -643,6 +643,9 @@ def render_usage_summary( ["Today", "Last 7 days", "Last 30 days"], [[f"{today_text} tokens", f"{weekly_text} tokens", f"{monthly_text} tokens"]], ) + for token_text in {today_text, weekly_text, monthly_text}: + plain_value = f"{token_text} tokens" + token_table = token_table.replace(plain_value, value(plain_value)) lines = [ heading(f"Usage Summary for {requester_name}"), "", @@ -667,8 +670,10 @@ def render_usage_summary( Decimal(0), ) if weekly_cost > 0: - cost_text = f"{format_cost_usd(weekly_cost)} estimated cost · last 7 days" - lines.append(f" 💰 {value(cost_text)}") + lines.append( + f" 💰 {label('Estimated Cost for Last 7 Days:')} " + f"{value(format_cost_usd(weekly_cost))}" + ) lines.extend(render_budget_lines(budget_spend)) return "\n".join(lines) diff --git a/tests/test_usage.py b/tests/test_usage.py index 07aae51d..9d82c802 100644 --- a/tests/test_usage.py +++ b/tests/test_usage.py @@ -517,7 +517,7 @@ def test_today_total(self): assert "┃ Today" in result assert "Last 7 days" in result assert "Last 30 days" in result - assert "│ 5.0K tokens" in result + assert "│ [cyan]5.0K tokens[/cyan]" in result def test_weekly_total_includes_past_week(self): records = [ @@ -549,6 +549,27 @@ def test_top_models_listed(self): result = render_usage_summary(records, "user", {"claude": "Claude Code"}) assert "claude-sonnet-4" in result + def test_estimated_cost_label(self): + records = [ + { + "tool": "claude", + "usage_day": date.today(), + "total_tokens_used": 1_000_000, + "model_tokens": ( + '[{"model":"databricks-claude-sonnet-4","tokens":1000000,' + '"input":1000000,"output":0}]' + ), + } + ] + result = render_usage_summary( + records, + "user", + {"claude": "Claude Code"}, + price_lookup={"claudesonnet4": ModelPrice(Decimal("4.12"), None, None)}, + ) + assert "Estimated Cost for Last 7 Days:" in result + assert "$4.12" in result + def test_includes_budget_spend_when_available(self): records = [self._make_record(0, "claude", 1000)] result = render_usage_summary( From d309779afdb33d4aa11b8e4ba65279e800c31cf0 Mon Sep 17 00:00:00 2001 From: andy-xu-db <310751426+andy-xu-db@users.noreply.github.com> Date: Tue, 1 Sep 2026 14:33:30 +0000 Subject: [PATCH 5/5] Refresh PR after conflict resolution