fix(chat): make context meter strictly backend-reported
Remove misleading local/cumulative token fallback in ContextDetailSheet and hide 0% badge when context used is unknown.
This commit is contained in:
1 parent
107701077d
commit
6fe62f9646
5 files changed
+23
-13
No files matched your search
@@ -51,12 +51,12 @@ fun ContextDetailSheet(
|
||||
sheetState = sheetState,
|
||||
) {
|
||||
val full = fullTokens ?: 0L
|
||||
val used = usedTokens ?: breakdown.inputTokens
|
||||
val fraction = if (full > 0L) min(1f, used.toFloat() / full.toFloat()) else 0f
|
||||
val fraction = if (full > 0L && usedTokens != null) min(1f, usedTokens.toFloat() / full.toFloat()) else 0f
|
||||
val pct = (fraction * 100).toInt()
|
||||
val statusColors = LocalHermesStatusColors.current
|
||||
val barColor =
|
||||
when {
|
||||
usedTokens == null -> MaterialTheme.colorScheme.primary
|
||||
pct >= 90 -> statusColors.error
|
||||
pct >= 70 -> statusColors.warning
|
||||
else -> MaterialTheme.colorScheme.primary
|
||||
@@ -83,7 +83,7 @@ fun ContextDetailSheet(
|
||||
verticalAlignment = Alignment.Bottom,
|
||||
) {
|
||||
Text(
|
||||
text = formatTokens(used),
|
||||
text = if (usedTokens != null) formatTokens(usedTokens) else "—",
|
||||
style = MaterialTheme.typography.headlineSmall,
|
||||
fontWeight = FontWeight.Bold,
|
||||
color = barColor,
|
||||
@@ -115,7 +115,12 @@ fun ContextDetailSheet(
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = "$pct% of context window used",
|
||||
text =
|
||||
if (usedTokens != null) {
|
||||
"$pct% of context window used"
|
||||
} else {
|
||||
stringResource(R.string.context_window_usage_unavailable)
|
||||
},
|
||||
style = MaterialTheme.typography.labelMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
)
|
||||
|
||||
@@ -56,12 +56,12 @@ fun ContextUsageChip(
|
||||
val full = fullTokens
|
||||
if (full == null || full <= 0L) return
|
||||
|
||||
val used = usedTokens ?: 0L
|
||||
val fraction = min(1f, used.toFloat() / full.toFloat())
|
||||
val fraction = if (usedTokens != null) min(1f, usedTokens.toFloat() / full.toFloat()) else 0f
|
||||
val pct = (fraction * 100).toInt()
|
||||
val statusColors = LocalHermesStatusColors.current
|
||||
val barColor =
|
||||
when {
|
||||
usedTokens == null -> MaterialTheme.colorScheme.primary
|
||||
pct >= 90 -> statusColors.error
|
||||
pct >= 70 -> statusColors.warning
|
||||
else -> MaterialTheme.colorScheme.primary
|
||||
@@ -90,7 +90,7 @@ fun ContextUsageChip(
|
||||
Text(
|
||||
text =
|
||||
if (usedTokens != null) {
|
||||
"${formatTokens(used)} / ${formatTokens(full)} context"
|
||||
"${formatTokens(usedTokens)} / ${formatTokens(full)} context"
|
||||
} else {
|
||||
"— / ${formatTokens(full)} context"
|
||||
},
|
||||
@@ -111,12 +111,14 @@ fun ContextUsageChip(
|
||||
maxLines = 1,
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = "$pct%",
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
color = barColor,
|
||||
maxLines = 1,
|
||||
)
|
||||
if (usedTokens != null) {
|
||||
Text(
|
||||
text = "$pct%",
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
color = barColor,
|
||||
maxLines = 1,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Box(
|
||||
|
||||
Reference in new issue
Block a user