Synchronize initial terminal open layout

This commit is contained in:
Frank Song
2026-04-28 22:36:39 +08:00
committed by Hermes Agent
parent 70417359e3
commit 940c82b2da
2 changed files with 23 additions and 3 deletions
+10 -3
View File
@@ -418,18 +418,25 @@ async function toggleComposerTerminal(force){
return;
}
const {panel,inner}= _terminalEls();
const messages=_terminalMessagesEl();
if(!panel)return;
clearTimeout(TERMINAL_UI.closeTimer);
panel.hidden=false;
_initTerminalResizeHandle();
_resetTerminalHeightForViewport();
if(messages)messages.classList.add('terminal-expanding-from-dock');
_setTerminalChromeState('expanded');
TERMINAL_UI.open=true;
TERMINAL_UI.collapsed=false;
_syncTerminalTranscriptSpace(true,{immediate:true});
if(messages)void messages.offsetHeight;
requestAnimationFrame(()=>{
panel.classList.add('is-open');
window.setTimeout(_fitTerminal,80);
setTimeout(()=>{
if(messages)messages.classList.remove('terminal-expanding-from-dock');
},120);
});
TERMINAL_UI.open=true;
_syncTerminalTranscriptSpace(true);
if(workspace)workspace.textContent=_terminalWorkspaceName();
syncTerminalButton();
if(!TERMINAL_UI.resizeObserver&&window.ResizeObserver){
TERMINAL_UI.resizeObserver=new ResizeObserver(()=>_fitTerminal());
+13
View File
@@ -88,6 +88,19 @@ def test_terminal_open_reserves_transcript_space():
assert "scrollToBottom" in terminal_js
def test_terminal_initial_open_settles_transcript_space_before_reveal():
terminal_js = _read("static/terminal.js")
open_block = terminal_js.split("async function toggleComposerTerminal", 1)[1].split("function collapseComposerTerminal", 1)[0]
assert "messages.classList.add('terminal-expanding-from-dock')" in open_block
assert "_syncTerminalTranscriptSpace(true,{immediate:true});" in open_block
assert "void messages.offsetHeight;" in open_block
assert "panel.classList.add('is-open')" in open_block
assert "messages.classList.remove('terminal-expanding-from-dock')" in open_block
assert open_block.index("_syncTerminalTranscriptSpace(true,{immediate:true});") < open_block.index("panel.classList.add('is-open')")
assert open_block.index("void messages.offsetHeight;") < open_block.index("panel.classList.add('is-open')")
def test_terminal_collapsed_state_preserves_pty_and_output_surface():
html = _read("static/index.html")
terminal_js = _read("static/terminal.js")