mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 15:30:39 +00:00
fix(usage): format near-million token counts as millions (#39129)
Co-authored-by: CurryMessi <curry-messi@users.noreply.github.com>
This commit is contained in:
@@ -269,6 +269,7 @@ Docs: https://docs.openclaw.ai
|
||||
- Voice-call plugin schema parity: add missing manifest `configSchema` fields (`webhookSecurity`, `streaming.preStartTimeoutMs|maxPendingConnections|maxPendingConnectionsPerIp|maxConnections`, `staleCallReaperSeconds`) so gateway AJV validation accepts already-supported runtime config instead of failing with `additionalProperties` errors. (#38892) Thanks @giumex.
|
||||
- Agents/OpenAI WS reconnect retry accounting: avoid double retry scheduling when reconnect failures emit both `error` and `close`, so retry budgets track actual reconnect attempts instead of exhausting early. (#39133) Thanks @scoootscooob.
|
||||
- Daemon/Windows schtasks runtime detection: use locale-invariant `Last Run Result` running codes (`0x41301`/`267009`) as the primary running signal so `openclaw node status` no longer misreports active tasks as stopped on non-English Windows locales. (#39076) Thanks @ademczuk.
|
||||
- Usage/token count formatting: round near-million token counts to millions (`1.0m`) instead of `1000k`, with explicit boundary coverage for `999_499` and `999_500`. (#39129) Thanks @CurryMessi.
|
||||
|
||||
## 2026.3.2
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ describe("usage-format", () => {
|
||||
expect(formatTokenCount(999)).toBe("999");
|
||||
expect(formatTokenCount(1234)).toBe("1.2k");
|
||||
expect(formatTokenCount(12000)).toBe("12k");
|
||||
expect(formatTokenCount(999_499)).toBe("999k");
|
||||
expect(formatTokenCount(999_500)).toBe("1.0m");
|
||||
expect(formatTokenCount(2_500_000)).toBe("2.5m");
|
||||
});
|
||||
|
||||
|
||||
@@ -25,7 +25,12 @@ export function formatTokenCount(value?: number): string {
|
||||
return `${(safe / 1_000_000).toFixed(1)}m`;
|
||||
}
|
||||
if (safe >= 1_000) {
|
||||
return `${(safe / 1_000).toFixed(safe >= 10_000 ? 0 : 1)}k`;
|
||||
const precision = safe >= 10_000 ? 0 : 1;
|
||||
const formattedThousands = (safe / 1_000).toFixed(precision);
|
||||
if (Number(formattedThousands) >= 1_000) {
|
||||
return `${(safe / 1_000_000).toFixed(1)}m`;
|
||||
}
|
||||
return `${formattedThousands}k`;
|
||||
}
|
||||
return String(Math.round(safe));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user