fix(tui): set mini terminal title on Linux (#38261)

This commit is contained in:
Simon Klee 2026-07-22 10:35:07 +02:00 committed by GitHub
commit 0e08b7330f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 52 additions and 0 deletions

View file

@ -84,6 +84,7 @@ describe("run interactive runtime", () => {
footer: api,
onResize: () => () => {},
refreshTheme: () => {},
setTitle: () => {},
resetForReplay: () => Promise.resolve(),
close: () => Promise.resolve(),
}
@ -180,6 +181,7 @@ describe("run interactive runtime", () => {
footer: api,
onResize: () => () => {},
refreshTheme: () => {},
setTitle: () => {},
resetForReplay: () => Promise.resolve(),
close: () => Promise.resolve(),
}
@ -199,6 +201,7 @@ describe("run interactive runtime", () => {
const lifecycleStarted = defer<void>()
const painted = defer<void>()
const events: FooterEvent[] = []
const titles: Array<string | undefined> = []
const api = footer(events)
api.idle = () => painted.promise
const event = api.event
@ -265,6 +268,7 @@ describe("run interactive runtime", () => {
footer: api,
onResize: () => () => {},
refreshTheme: () => {},
setTitle: (title) => titles.push(title),
resetForReplay: () => Promise.resolve(),
close: () => Promise.resolve(),
}
@ -282,6 +286,7 @@ describe("run interactive runtime", () => {
history: [{ text: "previous prompt", parts: [] }],
})
expect(events).toContainEqual({ type: "agent", agent: "review" })
expect(titles).toEqual(["Resume"])
expect(events).toContainEqual({
type: "model",
model: "Little Frank · OpenAI · high",
@ -344,6 +349,7 @@ describe("run interactive runtime", () => {
footer: api,
onResize: () => () => {},
refreshTheme: () => {},
setTitle: () => {},
resetForReplay: () => Promise.resolve(),
close: async (input) => {
closedTitle = input.sessionTitle
@ -423,6 +429,7 @@ describe("run interactive runtime", () => {
footer: api,
onResize: () => () => {},
refreshTheme: () => {},
setTitle: () => {},
resetForReplay: () => Promise.resolve(),
close: () => Promise.resolve(),
}

View file

@ -200,6 +200,31 @@ afterEach(() => {
})
describe("V2 mini transport", () => {
test("reports session title changes", async () => {
const events = feed()
events.push(connected())
const titles: string[] = []
const transport = await createSessionTransport({
sdk: sdk({ streams: [events] }),
sessionID: "ses_1",
thinking: false,
footer: footer().api,
onSessionTitle: (title) => titles.push(title),
})
events.push({
id: "evt_renamed",
created: 1,
type: "session.renamed",
durable: durable("ses_1", 1),
data: { sessionID: "ses_1", title: "Greeting" },
})
while (titles.length === 0) await Bun.sleep(0)
expect(titles).toEqual(["Greeting"])
await transport.close()
})
test("formats footer usage with compact tokens and context percentage", async () => {
const events = feed()
events.push(connected())