scripts/gen-i18n.py writes ui/i18n.js from the server's catalogues where the same sentence exists and from its own table otherwise; the pages pick the language from the browser and fall back to English. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
79 lines
3.5 KiB
HTML
79 lines
3.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="color-scheme" content="dark light">
|
|
<title>LLeMbas</title>
|
|
<link rel="stylesheet" href="tokens.css">
|
|
<link rel="stylesheet" href="app.css">
|
|
<script src="theme.js"></script>
|
|
<script src="i18n.js" defer></script>
|
|
<script src="app.js" defer></script>
|
|
</head>
|
|
<body>
|
|
<main class="card" aria-labelledby="title">
|
|
<header class="brand">
|
|
<img src="logo-mark.svg" alt="" width="40" height="40">
|
|
<div>
|
|
<h1 id="title"><b>LL</b>e<b>M</b>bas</h1>
|
|
<p class="muted">Desktop <span id="version"></span></p>
|
|
</div>
|
|
</header>
|
|
|
|
<section aria-labelledby="server-h">
|
|
<h2 id="server-h" data-i18n>Server</h2>
|
|
<form id="server-form" class="field" novalidate>
|
|
<label for="address" data-i18n>Address of your LLeMbas server</label>
|
|
<div class="row">
|
|
<input id="address" name="address" type="text" inputmode="url" autocomplete="url"
|
|
placeholder="https://ai.example" spellcheck="false" required>
|
|
<button type="submit" class="btn btn--primary" data-i18n>Connect</button>
|
|
</div>
|
|
<p class="hint" id="server-hint" aria-live="polite" data-i18n>Sign in there as you would in a browser.</p>
|
|
</form>
|
|
</section>
|
|
|
|
<section aria-labelledby="agent-h" id="agent-section" hidden>
|
|
<h2 id="agent-h" data-i18n>Agent</h2>
|
|
<p class="muted" data-i18n>The agent lets agent chats on your server work in this computer's projects.
|
|
It is the LLeMbas CLI, built in, running in the background while the app runs.</p>
|
|
<p class="status" id="agent-status" aria-live="polite"></p>
|
|
<div class="row row--buttons">
|
|
<button type="button" class="btn" id="link" data-i18n>Link this computer</button>
|
|
<button type="button" class="btn" id="toggle" data-i18n>Start the agent</button>
|
|
<button type="button" class="btn btn--primary" id="open" data-i18n>Open the server</button>
|
|
</div>
|
|
</section>
|
|
|
|
<section aria-labelledby="folders-h" id="folders-section" hidden>
|
|
<h2 id="folders-h" data-i18n>Project folders</h2>
|
|
<p class="muted" data-i18n>Agent chats from your server can work in these folders and anything inside
|
|
them — nowhere else on this computer. Start one in the server's Agents tab, on “Local”.</p>
|
|
<ul class="folders" id="folders"></ul>
|
|
<p class="status" id="folders-status" aria-live="polite"></p>
|
|
<div class="row row--buttons">
|
|
<button type="button" class="btn btn--primary" id="add-folder" data-i18n>Add folder…</button>
|
|
</div>
|
|
<div class="settings-grid">
|
|
<div class="field">
|
|
<label for="max-mode" data-i18n>The most an agent chat may do here</label>
|
|
<select id="max-mode">
|
|
<option value="manual" data-i18n>Manual — asks first</option>
|
|
<option value="edit" data-i18n>Edit — asks before commands</option>
|
|
<option value="auto" data-i18n>Auto — asks nothing</option>
|
|
<option value="plan" data-i18n>Plan — changes nothing</option>
|
|
</select>
|
|
<p class="hint" data-i18n>A chat asking for more is lowered to this.</p>
|
|
</div>
|
|
<div class="field">
|
|
<span class="label" data-i18n>Terminal</span>
|
|
<label class="check"><input type="checkbox" id="terminal"> <span data-i18n>Let the server open a terminal here</span></label>
|
|
<p class="hint" data-i18n>A shell as you, in one of these folders.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|