Files
KrisHD_AI/public/settings.html
T
2026-09-30 11:05:13 +02:00

325 lines
17 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<link rel="icon" type="image/svg+xml" href="/img/favicon.svg">
<meta charset="UTF-8" />
<title>Elsewhere Settings</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=Manrope:wght@400;500;600;700;800&display=swap"
rel="stylesheet">
<script src="/js/theme-bootstrap.js?v=20260909-account-controls"></script>
<link rel="stylesheet" href="/css/style.css?v=20260909-account-controls" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/shell.css?v=20260909-account-controls">
</head>
<body class="site-page settings-page" data-theme="fakegpt" data-theme-mode="light">
<!-- site-header -->
<main id="main" class="settings-shell page-content">
<header class="market-header market-header-simple">
<div>
<p class="eyebrow">Elsewhere settings</p>
<h1>Preferences</h1>
</div>
</header>
<p id="settingsNotice" class="status">Loading settings...</p>
<section class="settings-layout">
<aside class="settings-nav" aria-label="Settings sections" role="tablist">
<button class="settings-nav-item active" type="button" role="tab" aria-selected="true"
data-settings-view="personal">Account</button>
<button class="settings-nav-item" type="button" role="tab" aria-selected="false"
data-settings-view="design">Appearance</button>
<button id="diagnosticsNavItem" class="settings-nav-item hidden" type="button" role="tab"
aria-selected="false" data-settings-view="diagnostics">Diagnostics</button>
</aside>
<div class="settings-content">
<section class="settings-view active" role="tabpanel" data-settings-panel="personal">
<div class="settings-panel">
<div class="settings-section-header">
<div>
<p class="eyebrow">Profile</p>
<h2>Username</h2>
</div>
</div>
<form id="usernameForm" class="settings-form-stack">
<label class="field">
<span>Current username</span>
<input id="currentUsername" readonly />
</label>
<label class="field">
<span>New username</span>
<input id="newUsername" autocomplete="username" />
</label>
<label class="field">
<span>Current password</span>
<input id="usernamePassword" type="password" autocomplete="current-password" />
</label>
<button id="saveUsername" type="submit">Save username</button>
</form>
</div>
<div class="settings-panel">
<div class="settings-section-header">
<div>
<p class="eyebrow">Security</p>
<h2>Password</h2>
</div>
</div>
<form id="passwordForm" class="settings-form-stack">
<label class="field">
<span>Current password</span>
<input id="currentPassword" type="password" autocomplete="current-password" />
</label>
<label class="field">
<span>New password</span>
<input id="newPassword" type="password" autocomplete="new-password" />
</label>
<label class="field">
<span>Repeat new password</span>
<input id="repeatPassword" type="password" autocomplete="new-password" />
</label>
<button id="savePassword" type="submit">Save password</button>
</form>
</div>
<div class="settings-panel">
<div class="settings-section-header">
<div>
<p class="eyebrow">Account data</p>
<h2>Export and sessions</h2>
<p class="subtitle">Download your account data or sign out every active browser session.
</p>
</div>
</div>
<div class="persona-actions">
<button id="exportAccount" type="button" class="secondary-action">Export account</button>
<button id="logoutAllSessions" type="button" class="secondary-action">Logout all
sessions</button>
</div>
</div>
<div class="settings-panel">
<div class="settings-section-header">
<div>
<p class="eyebrow">Danger zone</p>
<h2>Delete account</h2>
<p class="subtitle">This permanently removes your account, chats, personas, templates,
and market activity.</p>
</div>
</div>
<div class="persona-actions">
<button id="deleteAccount" type="button" class="secondary-action danger">Delete
account</button>
</div>
</div>
</section>
<section class="settings-view" role="tabpanel" aria-hidden="true"
data-settings-panel="my-roleplay-companions">
<div class="settings-panel">
<div class="settings-section-header">
<div>
<p class="eyebrow">Create & manage</p>
<h2>My personas</h2>
</div>
<div class="market-header-actions action-pair">
<button id="createAiCharacter" type="button" class="secondary-action">Create AI
Character</button>
<button id="createUserPersona" type="button" class="secondary-action">Create User
Persona</button>
</div>
</div>
<h3>AI Characters</h3>
<div id="settingsAiCharacterList" class="persona-list"></div>
<h3>User Personas</h3>
<div id="settingsUserPersonaList" class="persona-list"></div>
</div>
</section>
<section class="settings-view" role="tabpanel" aria-hidden="true" data-settings-panel="design">
<div class="settings-panel settings-panel-compact">
<div class="settings-section-header">
<div>
<p class="eyebrow">Appearance</p>
<h2>Make yourself at home</h2>
<p class="subtitle">Choose a style for your conversation space.</p>
</div>
</div>
<div class="settings-theme-row">
<label class="field">
<span>Style</span>
<select id="settingsThemeSelect">
<option value="fakegpt">Grove</option>
<option value="fraud">Parchment</option>
<option value="germini">Aurora</option>
<option value="slopilot">Current</option>
<option value="beta-ai">Iris</option>
<option value="confusity">Graphite</option>
</select>
</label>
<label class="field">
<span>Light or dark</span>
<select id="themeModeSelect">
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label>
<label class="field">
<span>Workspace mode</span>
<select id="workspaceModeSelect">
<option value="basic">Basic</option>
<option value="advanced">Advanced</option>
</select>
</label>
</div>
</div>
</section>
<section class="settings-view" role="tabpanel" aria-hidden="true" data-settings-panel="diagnostics">
<div class="settings-panel">
<div class="settings-section-header">
<div>
<p class="eyebrow">Admin</p>
<h2>Model diagnostics</h2>
<p class="subtitle">Backend status, model inventory, latency, and configuration
warnings.</p>
</div>
<button id="refreshDiagnostics" type="button" class="secondary-action">Refresh</button>
</div>
<div class="diagnostics-grid">
<div class="diagnostics-card">
<span>Status</span>
<strong id="diagnosticsStatus">Unknown</strong>
<p id="diagnosticsBackend" class="subtitle">Backend unavailable</p>
</div>
<div class="diagnostics-card">
<span>Latency</span>
<strong id="diagnosticsLatency">n/a</strong>
<p id="diagnosticsCheckedAt" class="subtitle">Not checked yet</p>
</div>
<div class="diagnostics-card">
<span>Models</span>
<strong id="diagnosticsModelCount">0</strong>
<p id="diagnosticsCacheAge" class="subtitle">Cache age n/a</p>
</div>
<div class="diagnostics-card">
<span>Active requests</span>
<strong id="diagnosticsActiveRequests">0</strong>
<p id="diagnosticsLastFailure" class="subtitle">No recorded failures</p>
</div>
</div>
<div class="diagnostics-columns">
<div>
<h3>Available models</h3>
<div id="diagnosticsModels" class="diagnostics-list"></div>
</div>
<div>
<h3>Config warnings</h3>
<div id="diagnosticsWarnings" class="diagnostics-list"></div>
</div>
</div>
</div>
</section>
</div>
</section>
</main>
<div id="settingsPersonaModal" class="modal-overlay hidden">
<div class="modal-card persona-modal-card" role="dialog" aria-modal="true" aria-labelledby="settingsPersonaFormTitle" tabindex="-1">
<div class="modal-header">
<div class="persona-modal-heading">
<p class="eyebrow">Persona editor</p>
<h3 id="settingsPersonaFormTitle">Create persona</h3>
</div>
<button id="settingsPersonaClose" type="button" class="icon-button">Close</button>
</div>
<form id="settingsPersonaForm" class="persona-form">
<div class="persona-form-intro">
<p id="settingsPersonaHelper" class="persona-helper">Create a persona for roleplay chats.</p>
</div>
<p id="settingsPersonaFormNotice" class="status hidden"></p>
<div class="persona-form-grid">
<label class="field field-wide">
<span>Persona for</span>
<select id="settingsPersonaType">
<option value="assistant">AI Character</option>
<option value="user">Your persona</option>
</select>
</label>
<label class="field">
<span>Name</span>
<input id="settingsPersonaName" placeholder="Persona name" required />
</label>
<label class="field">
<span>Pronouns</span>
<input id="settingsPersonaPronouns" placeholder="e.g. she/her, they/them" />
</label>
<label class="field field-wide">
<span>Appearance</span>
<textarea id="settingsPersonaAppearance" rows="3" placeholder="Describe their look"></textarea>
</label>
<label class="field field-wide">
<span>Background</span>
<textarea id="settingsPersonaBackground" rows="3"
placeholder="Backstory, history, role, or origins"></textarea>
</label>
<label class="field field-wide">
<span>Details</span>
<textarea id="settingsPersonaDetails" rows="4"
placeholder="Personality traits, voice, goals, quirks, boundaries, style"></textarea>
</label>
<label id="settingsPersonaExamplesField" class="field field-wide hidden">
<span>Example dialogues</span>
<div class="dialogue-format-card" aria-hidden="true">
<p class="dialogue-format-label">Format</p>
<pre class="dialogue-format-example">{{character}}: Hello, my name is marc
{{user}}: Hi, Marc!
{{character}}: Nice to meet you</pre>
</div>
<textarea id="settingsPersonaExampleDialogues" rows="5"
placeholder="Write example exchanges that define the character's tone, phrasing, pacing, and personality."></textarea>
</label>
</div>
<div class="persona-actions">
<button id="settingsPersonaSave" type="submit" class="primary-action">Save persona</button>
</div>
</form>
</div>
</div>
<div id="settingsPopupModal" class="modal-overlay hidden">
<div class="modal-card popup-card" role="dialog" aria-modal="true" aria-labelledby="settingsPopupTitle"
aria-describedby="settingsPopupDescription">
<div class="modal-header">
<div class="persona-modal-heading">
<p id="settingsPopupEyebrow" class="eyebrow">Action</p>
<h3 id="settingsPopupTitle">Confirm action</h3>
</div>
<button id="settingsPopupClose" type="button" class="icon-button">Close</button>
</div>
<div class="popup-content">
<p id="settingsPopupDescription" class="subtitle">Please confirm this action.</p>
<label id="settingsPopupField" class="field">
<span id="settingsPopupInputLabel">Value</span>
<input id="settingsPopupInput" type="text" autocomplete="off" />
</label>
</div>
<div class="popup-actions">
<button id="settingsPopupCancel" type="button" class="secondary-action">Cancel</button>
<button id="settingsPopupConfirm" type="button">Confirm</button>
</div>
</div>
</div>
<script type="module" src="/js/settings.js?v=20260930-account-fixes"></script>
<script type="module" src="/js/workspaceNavigation.js?v=20260909-account-controls"></script>
</body>
</html>