working multisession web linux terminal
This commit is contained in:
+70
-30
@@ -12,31 +12,6 @@
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ── Auth modal ─────────────────────────────────────────────────── -->
|
||||
<div class="m-overlay" id="authOverlay">
|
||||
<div class="m-card">
|
||||
<div class="auth-card">
|
||||
<div class="auth-logo"><em>>_</em> GoTermix</div>
|
||||
<div class="auth-sub">Authentication required</div>
|
||||
|
||||
<label class="m-label" for="fUser">Username</label>
|
||||
<input class="m-input" type="text" id="fUser"
|
||||
autocomplete="username" placeholder="username" spellcheck="false">
|
||||
|
||||
<label class="m-label" for="fPass">Password</label>
|
||||
<input class="m-input" type="password" id="fPass"
|
||||
autocomplete="current-password" placeholder="password">
|
||||
|
||||
<div class="auth-err" id="authErr"></div>
|
||||
|
||||
<button class="auth-btn" id="authBtn" onclick="doAuth()">
|
||||
<div class="auth-spin"></div>
|
||||
<span class="btn-text">Sign in</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Upload modal ───────────────────────────────────────────────── -->
|
||||
<div class="m-overlay hidden" id="upOverlay" onclick="bgClose(event,'upOverlay')">
|
||||
<div class="m-card">
|
||||
@@ -122,16 +97,16 @@
|
||||
<span class="status-label" id="statusLabel">connecting...</span>
|
||||
</div>
|
||||
<div class="tb-right">
|
||||
<!-- Split left/right (Alt+\) -->
|
||||
<button class="tb-btn" onclick="splitPane('h')" title="Split left/right (Alt+\)">
|
||||
<!-- Split left/right (Alt+H) -->
|
||||
<button class="tb-btn" onclick="splitPane('h')" title="Split left/right (Alt+H)">
|
||||
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<rect x="2" y="3" width="20" height="18" rx="2"/>
|
||||
<line x1="12" y1="3" x2="12" y2="21"/>
|
||||
</svg>
|
||||
Split H
|
||||
</button>
|
||||
<!-- Split top/bottom (Alt+-) -->
|
||||
<button class="tb-btn" onclick="splitPane('v')" title="Split top/bottom (Alt+-)">
|
||||
<!-- Split top/bottom (Alt+V) -->
|
||||
<button class="tb-btn" onclick="splitPane('v')" title="Split top/bottom (Alt+V)">
|
||||
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<rect x="2" y="3" width="20" height="18" rx="2"/>
|
||||
<line x1="2" y1="12" x2="22" y2="12"/>
|
||||
@@ -155,6 +130,15 @@
|
||||
</svg>
|
||||
Link
|
||||
</button>
|
||||
<!-- Info / shortcuts -->
|
||||
<button class="tb-btn tb-info" onclick="openModal('infoOverlay')" title="Keyboard shortcuts & help">
|
||||
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<circle cx="12" cy="12" r="10"/>
|
||||
<line x1="12" y1="8" x2="12" y2="8" stroke-linecap="round" stroke-width="2.5"/>
|
||||
<line x1="12" y1="12" x2="12" y2="16"/>
|
||||
</svg>
|
||||
Info
|
||||
</button>
|
||||
<!-- End Session -->
|
||||
<button class="tb-btn tb-danger" onclick="endSession()" title="End session — clears saved layout, next open starts fresh">
|
||||
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
@@ -183,13 +167,69 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Info modal ─────────────────────────────────────────────────── -->
|
||||
<div class="m-overlay hidden" id="infoOverlay" onclick="bgClose(event,'infoOverlay')">
|
||||
<div class="m-card" style="max-width:520px;">
|
||||
<div class="m-head">
|
||||
<span class="m-title">
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<circle cx="12" cy="12" r="10"/>
|
||||
<line x1="12" y1="8" x2="12" y2="8"/><line x1="12" y1="12" x2="12" y2="16"/>
|
||||
</svg>
|
||||
GoTermix — Quick Reference
|
||||
</span>
|
||||
<button class="m-x" onclick="closeModal('infoOverlay')">×</button>
|
||||
</div>
|
||||
<div class="m-body" style="padding:16px 20px 20px;">
|
||||
|
||||
<div class="info-section-label">Tabs</div>
|
||||
<table class="info-table">
|
||||
<tr><td><kbd>Alt+T</kbd></td><td>New tab</td></tr>
|
||||
<tr><td><kbd>Alt+W</kbd></td><td>Close active tab</td></tr>
|
||||
<tr><td><kbd>Alt+Shift+←/→</kbd></td><td>Switch to previous / next tab</td></tr>
|
||||
<tr><td>Right-click tab label</td><td>Rename tab</td></tr>
|
||||
</table>
|
||||
|
||||
<div class="info-section-label">Split panes</div>
|
||||
<table class="info-table">
|
||||
<tr><td><kbd>Alt+H</kbd></td><td>Split active pane left / right</td></tr>
|
||||
<tr><td><kbd>Alt+V</kbd></td><td>Split active pane top / bottom</td></tr>
|
||||
<tr><td><kbd>Alt+X</kbd></td><td>Close active pane</td></tr>
|
||||
<tr><td>Drag divider</td><td>Resize panes</td></tr>
|
||||
<tr><td>Click pane</td><td>Focus pane</td></tr>
|
||||
</table>
|
||||
|
||||
<div class="info-section-label">Copy & paste</div>
|
||||
<table class="info-table">
|
||||
<tr><td><kbd>Ctrl+Shift+C</kbd></td><td>Copy selection</td></tr>
|
||||
<tr><td><kbd>Ctrl+V</kbd></td><td>Paste from clipboard</td></tr>
|
||||
<tr><td>Mouse drag</td><td>Select text</td></tr>
|
||||
</table>
|
||||
|
||||
<div class="info-section-label">Word navigation (shell readline)</div>
|
||||
<table class="info-table">
|
||||
<tr><td><kbd>Ctrl+←</kbd></td><td>Word backward</td></tr>
|
||||
<tr><td><kbd>Ctrl+→</kbd></td><td>Word forward</td></tr>
|
||||
</table>
|
||||
|
||||
<div class="info-section-label">Session & files</div>
|
||||
<table class="info-table">
|
||||
<tr><td>Link button</td><td>Copy shareable workspace URL — open on any device to resume all tabs & splits</td></tr>
|
||||
<tr><td>End button</td><td>Clear saved layout; next visit starts fresh</td></tr>
|
||||
<tr><td>Upload button</td><td>Upload file to server (lands in active shell's cwd by default)</td></tr>
|
||||
<tr><td>Down button</td><td>Download file from server by path</td></tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── Toast ──────────────────────────────────────────────────────── -->
|
||||
<div class="toast" id="toast"></div>
|
||||
|
||||
<script>
|
||||
// Workspace context — injected server-side, consumed by app.js
|
||||
const WORKSPACE_ID = "[[WORKSPACE_ID]]";
|
||||
const AUTHED = [[AUTHED]];
|
||||
</script>
|
||||
<script src="/static/app.js"></script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user