This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
async function loadFeatures(){
|
||||
const fallback = [
|
||||
["Terminal", "VT-style surface, tabs, split panes, Unicode"],
|
||||
["Connections", "Local shell, SSH, Telnet, Serial profile model"],
|
||||
["UX", "Command palette, shortcuts, quake window, restored sessions"],
|
||||
["Footprint", "Rust core + Tauri shell instead of Electron"]
|
||||
];
|
||||
let rows = fallback;
|
||||
try {
|
||||
const { invoke } = window.__TAURI__.core;
|
||||
rows = (await invoke('workspace_summary')).map(x => [x.feature, x.detail]);
|
||||
} catch (_) {}
|
||||
document.getElementById('features').innerHTML = rows.map(([f,d]) => `<li><b>${f}</b>: ${d}</li>`).join('');
|
||||
}
|
||||
loadFeatures();
|
||||
@@ -0,0 +1,41 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Rabby</title>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<aside class="sidebar">
|
||||
<div class="brand"><span class="logo">▰</span><div><strong>Rabby</strong><small>Rust + Tauri terminal</small></div></div>
|
||||
<button class="primary">+ New tab</button>
|
||||
<nav>
|
||||
<a class="active">⌘ Local Shell</a>
|
||||
<a>🔐 SSH: production</a>
|
||||
<a>☎ Telnet lab</a>
|
||||
<a>🔌 Serial /dev/ttyUSB0</a>
|
||||
</nav>
|
||||
<section><h3>Features</h3><ul id="features"><li>Loading Rust backend…</li></ul></section>
|
||||
</aside>
|
||||
<main>
|
||||
<header class="tabs">
|
||||
<div class="tab active">Local Shell <span>●</span></div><div class="tab">Prod SSH</div><div class="spacer"></div><button>Command palette</button><button>Quake mode</button>
|
||||
</header>
|
||||
<section class="workspace">
|
||||
<div class="pane large"><div class="chrome">bash — rabby-core tests</div><pre>$ cargo test -p rabby-core
|
||||
running 6 tests
|
||||
test slug_normalizes_profile_ids ... ok
|
||||
test profile_validation_rejects_empty_command ... ok
|
||||
test split_panes_count_nested_leaves ... ok
|
||||
test split_ratio_has_sane_bounds ... ok
|
||||
test workspace_adds_tabs_for_known_profiles ... ok
|
||||
test feature_matrix_covers_tabby_readme_capabilities ... ok
|
||||
|
||||
Rabby keeps Tabby-style UX while moving the app shell to Rust/Tauri.</pre></div>
|
||||
<div class="pane"><div class="chrome">profile inspector</div><div class="cards"><article><b>Session restore</b><p>Tabs and split tree are represented in Rust.</p></article><article><b>Small footprint target</b><p>No Electron runtime; static HTML/CSS plus Tauri backend.</p></article></div></div>
|
||||
</section>
|
||||
</main>
|
||||
<script src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
:root{font-family:Inter,ui-sans-serif,system-ui;color:#dce7ff;background:#090d18}*{box-sizing:border-box}body{margin:0;display:flex;min-height:100vh;background:radial-gradient(circle at 70% 10%,#203d7a55,transparent 38%),#090d18}.sidebar{width:290px;padding:22px;border-right:1px solid #263149;background:#0d1324cc;backdrop-filter:blur(14px)}.brand{display:flex;gap:12px;align-items:center;margin-bottom:24px}.logo{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#7c5cff,#00d4ff);box-shadow:0 0 34px #3b82f6}.brand small{display:block;color:#8ea0c5}.primary,button{border:1px solid #34425f;background:#141d33;color:#e8f0ff;border-radius:10px;padding:10px 13px}button.primary{width:100%;background:linear-gradient(135deg,#5d5fef,#16c5d9);border:0;font-weight:700}nav{display:grid;gap:8px;margin:22px 0}nav a{padding:11px 12px;border-radius:10px;color:#aebfe4}.active,nav a:hover{background:#1d2a49;color:white}h3{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:#6f82aa}ul{padding-left:20px;color:#aebfe4;line-height:1.5}main{flex:1;display:flex;flex-direction:column}.tabs{height:62px;display:flex;gap:8px;align-items:center;padding:0 18px;border-bottom:1px solid #263149;background:#0b1020}.tab{padding:12px 16px;border-radius:12px 12px 0 0;background:#10182d;color:#aebfe4}.tab.active{background:#18233d;color:#fff}.tab span{color:#20e3b2}.spacer{flex:1}.workspace{flex:1;display:grid;grid-template-columns:1.35fr .65fr;gap:16px;padding:18px}.pane{border:1px solid #273753;border-radius:18px;background:#0c1222;overflow:hidden;box-shadow:0 24px 70px #0008}.chrome{height:42px;display:flex;align-items:center;padding:0 16px;background:#111a30;border-bottom:1px solid #273753;color:#8fa4d0;font-size:13px}pre{margin:0;padding:22px;color:#8df7c8;font:15px/1.6 'SFMono-Regular',Consolas,monospace}.cards{display:grid;gap:14px;padding:16px}article{padding:16px;border-radius:14px;background:#121d34;border:1px solid #283957}article p{color:#9fb0d4}
|
||||
Reference in New Issue
Block a user