fix(tui): make resume picker full-screen
This commit is contained in:
@@ -1,69 +1,51 @@
|
||||
terminal 92x32 buffer=normal length=32 base=0 viewport=0
|
||||
lifecycle started=1 stopped=0 progress=inactive
|
||||
title "DSH snapshot"
|
||||
cursor hidden column=0 viewportRow=31 bufferRow=31
|
||||
cursor hidden column=6 viewportRow=4 bufferRow=4
|
||||
buffer
|
||||
0| " DEEPSEEK HARNESS"
|
||||
style 1-8 fg=bright-blue bold
|
||||
style 10-16 bold
|
||||
1| " Snapshot agent ready."
|
||||
style 1-21 fg=bright-black
|
||||
2| " deepseek-v4-flash • main-session"
|
||||
style 1-34 dim
|
||||
3| "────────────────────────────────────────────────────────────────────────────────────────────"
|
||||
style 0-91 dim
|
||||
4| " "
|
||||
style 1-1 inverse
|
||||
5| "────────────────────────────────────────────────────────────────────────────────────────────"
|
||||
style 0-91 dim
|
||||
6| "deepseek-v4-flash /workspace/project ↑0 ↓0 0% context tools:collapsed"
|
||||
style 0-43 dim
|
||||
style 65-91 dim
|
||||
7-8| <blank>
|
||||
9| " ╭ Resume session ──────────────────────────────────────────────────────────────────────╮ "
|
||||
style 2-89 fg=bright-blue
|
||||
10| " │ Search: title or session id │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-10 fg=bright-black
|
||||
style 12-30 dim
|
||||
style 89-89 fg=bright-blue
|
||||
11| " │ │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 89-89 fg=bright-blue
|
||||
12| " │ › Untitled session │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-21 fg=bright-blue bold
|
||||
style 89-89 fg=bright-blue
|
||||
13| " │ 2026-07-23T08:00:00.000Z · no completed turn · route unavailable │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-69 fg=bright-black
|
||||
style 89-89 fg=bright-blue
|
||||
14| " │ current · live · main-session │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-34 dim
|
||||
style 89-89 fg=bright-blue
|
||||
15| " │ unavailable: current session │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-33 fg=yellow
|
||||
style 89-89 fg=bright-blue
|
||||
16| " │ Resume selector design │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 89-89 fg=bright-blue
|
||||
17| " │ 2024-01-01T00:00:08.000Z · turn 1: completed · deepseek/deepseek-v4-pro │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-76 fg=bright-black
|
||||
style 89-89 fg=bright-blue
|
||||
18| " │ persisted · earlier-session │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-32 dim
|
||||
style 89-89 fg=bright-blue
|
||||
19| " │ │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 89-89 fg=bright-blue
|
||||
20| " │ Type to search • ↑/↓ navigate • Enter resume • Esc cancel │ "
|
||||
style 2-2 fg=bright-blue
|
||||
style 4-60 dim
|
||||
style 89-89 fg=bright-blue
|
||||
21| " ╰──────────────────────────────────────────────────────────────────────────────────────╯ "
|
||||
style 2-89 fg=bright-blue
|
||||
22-31| <blank>
|
||||
0| " "
|
||||
1| " Resume session (1 of 2) "
|
||||
style 2-24 fg=bright-blue bold
|
||||
2| " "
|
||||
3| " ╭──────────────────────────────────────────────────────────────────────────────────────╮ "
|
||||
style 2-89 dim
|
||||
4| " │ ⌕ │ "
|
||||
style 2-2 dim
|
||||
style 6-6 inverse
|
||||
style 89-89 dim
|
||||
5| " ╰──────────────────────────────────────────────────────────────────────────────────────╯ "
|
||||
style 2-89 dim
|
||||
6| " "
|
||||
7| " /workspace/project "
|
||||
style 2-19 fg=bright-black
|
||||
8| " "
|
||||
9| " ❯ Untitled session "
|
||||
style 2-19 fg=bright-blue bold
|
||||
10| " 2026-07-23T08:00:00.000Z · no completed turn · route unavailable "
|
||||
style 2-67 fg=bright-black
|
||||
11| " current · live · main-session "
|
||||
style 2-32 dim
|
||||
12| " unavailable: current session "
|
||||
style 2-31 fg=yellow
|
||||
13| " Resume selector design "
|
||||
14| " 2024-01-01T00:00:08.000Z · turn 1: completed · deepseek/deepseek-v4-pro "
|
||||
style 2-74 fg=bright-black
|
||||
15| " persisted · earlier-session "
|
||||
style 2-30 dim
|
||||
16| " "
|
||||
17| " "
|
||||
18| " "
|
||||
19| " "
|
||||
20| " "
|
||||
21| " "
|
||||
22| " "
|
||||
23| " "
|
||||
24| " "
|
||||
25| " "
|
||||
26| " "
|
||||
27| " "
|
||||
28| " "
|
||||
29| " "
|
||||
30| " Type to search • ↑/↓ navigate • Enter resume • Esc clear/cancel "
|
||||
style 2-70 dim
|
||||
31| " "
|
||||
|
||||
@@ -159,8 +159,6 @@ describe('TUI config', () => {
|
||||
questionDialogMaxHeight: 20,
|
||||
modelDialogWidth: 72,
|
||||
modelDialogMaxHeight: 20,
|
||||
resumeDialogWidth: 88,
|
||||
resumeDialogMaxHeight: 24,
|
||||
fileSearchMaxResults: 20,
|
||||
fileSearchMaxEntries: 10_000,
|
||||
fileSearchExcludedDirectories: ['.git', 'node_modules'],
|
||||
@@ -179,8 +177,6 @@ describe('TUI config', () => {
|
||||
questionDialogMaxHeight: 14,
|
||||
modelDialogWidth: 64,
|
||||
modelDialogMaxHeight: 16,
|
||||
resumeDialogWidth: 84,
|
||||
resumeDialogMaxHeight: 22,
|
||||
fileSearchMaxResults: 7,
|
||||
fileSearchMaxEntries: 123,
|
||||
fileSearchExcludedDirectories: ['.git', 'generated'],
|
||||
@@ -198,8 +194,6 @@ describe('TUI config', () => {
|
||||
questionDialogMaxHeight: 14,
|
||||
modelDialogWidth: 64,
|
||||
modelDialogMaxHeight: 16,
|
||||
resumeDialogWidth: 84,
|
||||
resumeDialogMaxHeight: 22,
|
||||
fileSearchMaxResults: 7,
|
||||
fileSearchMaxEntries: 123,
|
||||
fileSearchExcludedDirectories: ['.git', 'generated'],
|
||||
@@ -269,7 +263,7 @@ describe('resume command and /resume', () => {
|
||||
await dispose(result)
|
||||
})
|
||||
|
||||
it('opens a newest-active-first searchable selector and Esc cancels without side effects', async () => {
|
||||
it('opens a newest-active-first searchable selector and Esc clears before cancelling', async () => {
|
||||
const older = header('older-session', 500, '/workspace')
|
||||
const newer = header('newer-session', 2000, '/workspace')
|
||||
const handoff = vi.fn<NonNullable<TuiRuntime['handoffResume']>>()
|
||||
@@ -296,7 +290,11 @@ describe('resume command and /resume', () => {
|
||||
expect(output).not.toContain('foreign-session')
|
||||
result.terminal.send('Older')
|
||||
await tick()
|
||||
expect(result.terminal.output).toContain('Search: Older')
|
||||
expect(result.terminal.output).toContain('⌕ Older')
|
||||
result.terminal.send('\x1b')
|
||||
await tick()
|
||||
expect(result.terminal.output.slice(result.terminal.output.lastIndexOf('Resume session')))
|
||||
.not.toContain('⌕ Older')
|
||||
result.terminal.send('\x1b')
|
||||
await tick()
|
||||
expect(handoff).not.toHaveBeenCalled()
|
||||
@@ -325,7 +323,9 @@ describe('resume command and /resume', () => {
|
||||
result.terminal.send('\x7f')
|
||||
result.terminal.send('\x7f')
|
||||
await tick()
|
||||
expect(result.terminal.output).toContain('Search: title or session id')
|
||||
const cleared = result.terminal.output.slice(result.terminal.output.lastIndexOf('Resume session'))
|
||||
expect(cleared).toContain('⌕ ')
|
||||
expect(cleared).not.toContain('zz')
|
||||
result.terminal.send('\r')
|
||||
await tick()
|
||||
expect(result.terminal.output).toContain('current session')
|
||||
@@ -349,7 +349,7 @@ describe('resume command and /resume', () => {
|
||||
result.terminal.send('/resume')
|
||||
result.terminal.send('\r')
|
||||
await tick(); await tick()
|
||||
expect(result.terminal.output).toContain('1/3')
|
||||
expect(result.terminal.output).toContain('(1 of 3)')
|
||||
await dispose(result)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user