diff --git a/frontend/src/lib/components/TerminalTab.svelte b/frontend/src/lib/components/TerminalTab.svelte index 5c516c2..621dc6e 100644 --- a/frontend/src/lib/components/TerminalTab.svelte +++ b/frontend/src/lib/components/TerminalTab.svelte @@ -148,8 +148,8 @@ cursorStyle: 'bar', cursorInactiveStyle: 'outline', fontFamily: "'JetBrains Mono Variable', 'JetBrains Mono', monospace", - fontSize: 13, - lineHeight: 1.4, + fontSize: 14, + lineHeight: 1.35, letterSpacing: 0, theme: TERM_THEME, allowProposedApi: true, @@ -360,6 +360,11 @@ padding: 12px 4px 12px 16px; height: 100%; } + /* Paint xterm's own background to cover any fractional-pixel gaps */ + .terminal-container :global(.xterm-viewport), + .terminal-container :global(.xterm-screen) { + background-color: #0a0c0b !important; + } .terminal-container :global(.xterm-viewport) { scrollbar-width: thin; scrollbar-color: rgba(94, 140, 88, 0.18) transparent; @@ -383,27 +388,50 @@ .tab-scroll::-webkit-scrollbar { display: none; } + .term-tab { + position: relative; + } + .term-tab::after { + content: ''; + position: absolute; + right: 0; + top: 25%; + bottom: 25%; + width: 1px; + background: var(--color-border); + } + .term-tab:last-child::after { + display: none; + } + .term-tab-active::after { + display: none; + } + /* Hide separator on tab right before active tab */ + .term-tab:has(+ .term-tab-active)::after { + display: none; + }
{#if !isRunning}
-
-
-
+
+
-
- Terminal unavailable - Start the capsule to connect +
+ Terminal unavailable + Start the capsule to connect
{:else} - -
-
+ +
+ +
{#each sessions as session (session.id)} + -
- - {#if activeSession} -
-
- {#if activeSession.state === 'connected'} - - - - - - Live - - {:else if activeSession.state === 'connecting'} - - - Connecting - - {:else if activeSession.state === 'error'} - - Error - - {#if activeSession.errorMessage} - {activeSession.errorMessage} - {/if} - {:else if activeSession.state === 'disconnected'} - - Disconnected - + +
+ + + {#if activeSession} +
+ {#if activeSession.state === 'error' && activeSession.errorMessage} + {activeSession.errorMessage} + {/if} + + {#if (activeSession.state === 'disconnected' || activeSession.state === 'error') && activeSession.ptyTag} + {/if} {#if activeSession.ptyTag} - - {activeSession.ptyTag} + {activeSession.ptyTag} {/if}
- -
- {#if activeSession.state === 'disconnected' || activeSession.state === 'error'} - {#if activeSession.ptyTag} - - {/if} - {/if} -
-
- {/if} + {/if} +
-
+
{#each sessions as session (session.id)}
-
-
-
+
+
-
- No active sessions - All terminal sessions have been closed +
+ No active sessions + All terminal sessions have been closed