mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-27 20:33:38 +00:00
mini: reserve headroom before showing usage (#38659)
This commit is contained in:
parent
4184149b90
commit
edaee143d9
2 changed files with 26 additions and 3 deletions
|
|
@ -6,6 +6,8 @@ export function footerWidthPolicy(width: number) {
|
|||
}
|
||||
}
|
||||
|
||||
const USAGE_HEADROOM = 8
|
||||
|
||||
export function footerStatuslinePolicy(input: {
|
||||
width: number
|
||||
mainWidth: number
|
||||
|
|
@ -18,10 +20,10 @@ export function footerStatuslinePolicy(input: {
|
|||
}) {
|
||||
let remaining = input.width - input.mainWidth - (input.commandWidth ?? 0)
|
||||
let hasSection = input.commandWidth !== undefined
|
||||
const include = (width: number | undefined) => {
|
||||
const include = (width: number | undefined, headroom = 0) => {
|
||||
if (width === undefined) return false
|
||||
const required = width + (hasSection ? 3 : 1)
|
||||
if (remaining < required) return false
|
||||
if (remaining < required + headroom) return false
|
||||
remaining -= required
|
||||
hasSection = true
|
||||
return true
|
||||
|
|
@ -40,7 +42,7 @@ export function footerStatuslinePolicy(input: {
|
|||
(showAgent || input.agentWidth === undefined) &&
|
||||
contextComplete &&
|
||||
(showVariant || input.variantWidth === undefined) &&
|
||||
include(input.usageWidth)
|
||||
include(input.usageWidth, USAGE_HEADROOM)
|
||||
|
||||
return {
|
||||
showAgent,
|
||||
|
|
|
|||
|
|
@ -1522,6 +1522,27 @@ test("direct footer shows full usage metadata when room is available", async ()
|
|||
}
|
||||
})
|
||||
|
||||
test("direct footer omits usage when it would fill the statusline", async () => {
|
||||
const app = await renderFooter({
|
||||
state: { phase: "running", model: "GPT-5.6 SoL", usage: "8.4K (1%) · $0.01" },
|
||||
currentVariant: "high",
|
||||
mono: true,
|
||||
width: 66,
|
||||
})
|
||||
|
||||
try {
|
||||
await app.renderOnce()
|
||||
const frame = app.captureCharFrame()
|
||||
|
||||
expect(frame).toContain("esc interrupt")
|
||||
expect(frame).toContain("GPT-5.6 SoL high")
|
||||
expect(frame).toContain("ctrl+p cmd")
|
||||
expect(frame).not.toContain("8.4K")
|
||||
} finally {
|
||||
app.cleanup()
|
||||
}
|
||||
})
|
||||
|
||||
test("direct footer hides routine activity and shows explicit notices", async () => {
|
||||
let status = ""
|
||||
const app = await renderFooter({
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue