()
| 7726 | var output = document.getElementById('terminalOutput'); |
| 7727 | if (!output) return; |
| 7728 | output.scrollTop = output.scrollHeight; |
| 7729 | output.focus({ preventScroll: true }); |
| 7730 | } |
| 7731 | |
| 7732 | function renderTerminal() { |
| 7733 | var selected = state.jobs.find(function(item){ return item.id === state.selectedSessionId; }) || state.jobs[0]; |
| 7734 | var sessionBadge=document.getElementById('terminalSessionBadge'); if(sessionBadge) sessionBadge.textContent=(selected && selected.label) || state.selectedSessionId || 'web-shell'; |
| 7735 | if (!selected) return; |
| 7736 | state.selectedSessionId = selected.id; |
| 7737 | document.getElementById('terminalOutput').textContent = selected.log_tail || ''; |
| 7738 | var canAcceptInput = selected.kind === 'web-shell' || selected.running; |
| 7739 | document.getElementById('terminalComposer').disabled = !canAcceptInput; |
| 7740 | document.getElementById('terminalExtraKeys').style.opacity = canAcceptInput ? '1' : '0.55'; |
| 7741 | renderSessionsOverlay(); |
| 7742 | applyTerminalZoom(); |
| 7743 | } |
| 7744 | |
| 7745 | async function loadWebSettingsMeta() { |
| 7746 | try { |
| 7747 | var data = await apiGet('/api/settings/meta'); |
| 7748 | var meta = data.meta || {}; |
| 7749 | var el; |
| 7750 | el = document.getElementById('webPromptUsername'); if (el) el.value = meta.prompt_username || (state.config && state.config.display_name) || 'DedSec'; |
no test coverage detected