fix: update footer state when rendering initial messages on resume/continue

This commit is contained in:
Mario Zechner 2025-11-13 00:58:20 +01:00
parent 4019acf1f0
commit 97ac82312f
4 changed files with 125 additions and 16 deletions

View file

@ -36,10 +36,22 @@ export class FooterComponent {
}
}
// Calculate total tokens and % of context window
const totalTokens = totalInput + totalOutput;
// Get last assistant message for context percentage calculation
const lastAssistantMessage = this.state.messages
.slice()
.reverse()
.find((m) => m.role === "assistant") as AssistantMessage | undefined;
// Calculate context percentage from last message (input + output + cacheRead + cacheWrite)
const contextTokens = lastAssistantMessage
? lastAssistantMessage.usage.input +
lastAssistantMessage.usage.output +
lastAssistantMessage.usage.cacheRead +
lastAssistantMessage.usage.cacheWrite
: 0;
const contextWindow = this.state.model.contextWindow;
const contextPercent = contextWindow > 0 ? ((totalTokens / contextWindow) * 100).toFixed(1) : "0.0";
const contextPercent =
contextWindow > 0 ? `${((contextTokens / contextWindow) * 100).toFixed(1)}% (${contextWindow})` : "0.0%";
// Format token counts (similar to web-ui)
const formatTokens = (count: number): string => {

View file

@ -351,6 +351,9 @@ export class TuiRenderer {
// Reset first user message flag for initial render
this.isFirstUserMessage = true;
// Update footer with loaded state
this.footer.updateState(state);
// Render messages
for (let i = 0; i < state.messages.length; i++) {
const message = state.messages[i];