feat: add clean public routes for alpine ui
This commit is contained in:
@@ -10,6 +10,7 @@ DoD:
|
|||||||
- Alpine UI pages have consistent feedback and shell state
|
- Alpine UI pages have consistent feedback and shell state
|
||||||
- Settings page exposes only honest live functionality and clearly marks deferred capabilities
|
- Settings page exposes only honest live functionality and clearly marks deferred capabilities
|
||||||
- Wizard live actions have stable loading and feedback behavior on real backend requests
|
- Wizard live actions have stable loading and feedback behavior on real backend requests
|
||||||
|
- Public UI routes use clean canonical paths instead of exposing `/html/...`
|
||||||
|
|
||||||
## Next
|
## Next
|
||||||
|
|
||||||
|
|||||||
+13
-13
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="index.html" class="nav-logo">
|
<a href="/" class="nav-logo">
|
||||||
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
||||||
<span class="nav-logo-text">Crank</span>
|
<span class="nav-logo-text">Crank</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<div class="ws-dropdown-label">Your workspaces</div>
|
<div class="ws-dropdown-label">Your workspaces</div>
|
||||||
<div id="ws-dropdown-list"></div>
|
<div id="ws-dropdown-list"></div>
|
||||||
<div class="ws-dropdown-footer">
|
<div class="ws-dropdown-footer">
|
||||||
<button class="ws-dropdown-create" onclick="window.location.href='workspace-setup.html?mode=create'">
|
<button class="ws-dropdown-create" onclick="window.location.href='/workspace-setup?mode=create'">
|
||||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
||||||
Create workspace
|
Create workspace
|
||||||
</button>
|
</button>
|
||||||
@@ -48,11 +48,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="index.html" class="nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="nav-link active" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="nav-link active" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
<div class="user-dropdown-name">Operator</div>
|
<div class="user-dropdown-name">Operator</div>
|
||||||
<div class="user-dropdown-role" id="user-ws-role">Admin · acme-workspace</div>
|
<div class="user-dropdown-role" id="user-ws-role">Admin · acme-workspace</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="user-dropdown-item" onclick="window.location.href='settings.html'">
|
<button class="user-dropdown-item" onclick="window.location.href='/settings'">
|
||||||
<svg width="13" height="13"><use href="icons/general/settings.svg#icon"/></svg>
|
<svg width="13" height="13"><use href="icons/general/settings.svg#icon"/></svg>
|
||||||
<span data-i18n="nav.settings">Settings</span>
|
<span data-i18n="nav.settings">Settings</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -87,11 +87,11 @@
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div class="mobile-nav">
|
<div class="mobile-nav">
|
||||||
<a href="index.html" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="mobile-nav-link active" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="mobile-nav-link active" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ═══════════════════ PAGE ═══════════════════ -->
|
<!-- ═══════════════════ PAGE ═══════════════════ -->
|
||||||
|
|||||||
+12
-12
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="index.html" class="nav-logo">
|
<a href="/" class="nav-logo">
|
||||||
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
||||||
<span class="nav-logo-text">Crank</span>
|
<span class="nav-logo-text">Crank</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
<div class="ws-dropdown-label">Your workspaces</div>
|
<div class="ws-dropdown-label">Your workspaces</div>
|
||||||
<div id="ws-dropdown-list"></div>
|
<div id="ws-dropdown-list"></div>
|
||||||
<div class="ws-dropdown-footer">
|
<div class="ws-dropdown-footer">
|
||||||
<button class="ws-dropdown-create" onclick="window.location.href='workspace-setup.html?mode=create'">
|
<button class="ws-dropdown-create" onclick="window.location.href='/workspace-setup?mode=create'">
|
||||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
||||||
Create workspace
|
Create workspace
|
||||||
</button>
|
</button>
|
||||||
@@ -60,11 +60,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="index.html" class="nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="nav-link active" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="nav-link active" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
@@ -103,11 +103,11 @@
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div class="mobile-nav">
|
<div class="mobile-nav">
|
||||||
<a href="index.html" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="mobile-nav-link active" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="mobile-nav-link active" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ═══════════════════ PAGE ═══════════════════ -->
|
<!-- ═══════════════════ PAGE ═══════════════════ -->
|
||||||
|
|||||||
+12
-12
@@ -21,7 +21,7 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="index.html" class="nav-logo">
|
<a href="/" class="nav-logo">
|
||||||
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
||||||
<span class="nav-logo-text">Crank</span>
|
<span class="nav-logo-text">Crank</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<div class="ws-dropdown-label">Your workspaces</div>
|
<div class="ws-dropdown-label">Your workspaces</div>
|
||||||
<div id="ws-dropdown-list"></div>
|
<div id="ws-dropdown-list"></div>
|
||||||
<div class="ws-dropdown-footer">
|
<div class="ws-dropdown-footer">
|
||||||
<button class="ws-dropdown-create" onclick="window.location.href='workspace-setup.html?mode=create'">
|
<button class="ws-dropdown-create" onclick="window.location.href='/workspace-setup?mode=create'">
|
||||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
||||||
Create workspace
|
Create workspace
|
||||||
</button>
|
</button>
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="index.html" class="nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="nav-link active" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="nav-link active" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
<button class="nav-hamburger" aria-label="Menu"><span></span><span></span><span></span></button>
|
<button class="nav-hamburger" aria-label="Menu"><span></span><span></span><span></span></button>
|
||||||
@@ -84,11 +84,11 @@
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div class="mobile-nav">
|
<div class="mobile-nav">
|
||||||
<a href="index.html" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="mobile-nav-link active" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="mobile-nav-link active" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="page">
|
<div class="page">
|
||||||
|
|||||||
+12
-12
@@ -21,7 +21,7 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="index.html" class="nav-logo">
|
<a href="/" class="nav-logo">
|
||||||
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
||||||
<span class="nav-logo-text">Crank</span>
|
<span class="nav-logo-text">Crank</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<div class="ws-dropdown-label">Your workspaces</div>
|
<div class="ws-dropdown-label">Your workspaces</div>
|
||||||
<div id="ws-dropdown-list"></div>
|
<div id="ws-dropdown-list"></div>
|
||||||
<div class="ws-dropdown-footer">
|
<div class="ws-dropdown-footer">
|
||||||
<button class="ws-dropdown-create" onclick="window.location.href='workspace-setup.html?mode=create'">
|
<button class="ws-dropdown-create" onclick="window.location.href='/workspace-setup?mode=create'">
|
||||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
||||||
Create workspace
|
Create workspace
|
||||||
</button>
|
</button>
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="index.html" class="nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
<button class="nav-hamburger" aria-label="Menu"><span></span><span></span><span></span></button>
|
<button class="nav-hamburger" aria-label="Menu"><span></span><span></span><span></span></button>
|
||||||
@@ -84,11 +84,11 @@
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div class="mobile-nav">
|
<div class="mobile-nav">
|
||||||
<a href="index.html" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="page">
|
<div class="page">
|
||||||
|
|||||||
+12
-12
@@ -21,7 +21,7 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="index.html" class="nav-logo">
|
<a href="/" class="nav-logo">
|
||||||
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
||||||
<span class="nav-logo-text">Crank</span>
|
<span class="nav-logo-text">Crank</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<div class="ws-dropdown-label">Your workspaces</div>
|
<div class="ws-dropdown-label">Your workspaces</div>
|
||||||
<div id="ws-dropdown-list"></div>
|
<div id="ws-dropdown-list"></div>
|
||||||
<div class="ws-dropdown-footer">
|
<div class="ws-dropdown-footer">
|
||||||
<button class="ws-dropdown-create" onclick="window.location.href='workspace-setup.html?mode=create'">
|
<button class="ws-dropdown-create" onclick="window.location.href='/workspace-setup?mode=create'">
|
||||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
||||||
Create workspace
|
Create workspace
|
||||||
</button>
|
</button>
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="index.html" class="nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="nav-link active" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="nav-link active" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
<button class="nav-hamburger" aria-label="Menu"><span></span><span></span><span></span></button>
|
<button class="nav-hamburger" aria-label="Menu"><span></span><span></span><span></span></button>
|
||||||
@@ -84,11 +84,11 @@
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div class="mobile-nav">
|
<div class="mobile-nav">
|
||||||
<a href="index.html" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="mobile-nav-link" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="mobile-nav-link active" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="mobile-nav-link active" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="page">
|
<div class="page">
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="../../index.html" class="nav-logo">
|
<a href="/" class="nav-logo">
|
||||||
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
||||||
<span class="nav-logo-text">Crank</span>
|
<span class="nav-logo-text">Crank</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<div class="ws-dropdown-label">Your workspaces</div>
|
<div class="ws-dropdown-label">Your workspaces</div>
|
||||||
<div id="ws-dropdown-list"></div>
|
<div id="ws-dropdown-list"></div>
|
||||||
<div class="ws-dropdown-footer">
|
<div class="ws-dropdown-footer">
|
||||||
<button class="ws-dropdown-create" onclick="window.location.href='../workspace-setup.html?mode=create'">
|
<button class="ws-dropdown-create" onclick="window.location.href='/workspace-setup?mode=create'">
|
||||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
||||||
Create workspace
|
Create workspace
|
||||||
</button>
|
</button>
|
||||||
@@ -47,11 +47,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="../../index.html" class="nav-link active" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="nav-link active" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="../agents.html" class="nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="../api-keys.html" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="../logs.html" class="nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="../usage.html" class="nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
@@ -90,11 +90,11 @@
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div class="mobile-nav">
|
<div class="mobile-nav">
|
||||||
<a href="../../index.html" class="mobile-nav-link active" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="mobile-nav-link active" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="../agents.html" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="../api-keys.html" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="../logs.html" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="../usage.html" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ═══════════════════ WIZARD SHELL ═══════════════════ -->
|
<!-- ═══════════════════ WIZARD SHELL ═══════════════════ -->
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
<!-- Top bar -->
|
<!-- Top bar -->
|
||||||
<div class="ws-setup-topbar">
|
<div class="ws-setup-topbar">
|
||||||
<a href="index.html" class="ws-setup-logo">
|
<a href="/" class="ws-setup-logo">
|
||||||
<div class="ws-setup-logo-mark">
|
<div class="ws-setup-logo-mark">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="18" height="18" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="18" height="18" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/></svg>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+13
-13
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
<!-- ═══════════════════ NAVBAR ═══════════════════ -->
|
||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="index.html" class="nav-logo">
|
<a href="/" class="nav-logo">
|
||||||
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
<div class="nav-logo-mark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" fill="white"><path fill-rule="evenodd" d="M 10.000,1.800 L 12.287,3.962 L 15.408,3.557 L 15.987,6.650 L 18.750,8.157 L 17.400,11.000 L 18.750,13.843 L 15.987,15.350 L 15.408,18.443 L 12.287,18.038 L 10.000,20.200 L 7.713,18.038 L 4.592,18.443 L 4.013,15.350 L 1.250,13.843 L 2.600,11.000 L 1.250,8.157 L 4.013,6.650 L 4.592,3.557 L 7.713,3.962 Z M 12.800,11.000 A 2.8 2.8 0 1 0 7.200,11.000 A 2.8 2.8 0 1 0 12.800,11.000 Z"/><path fill-rule="evenodd" d="M 11.791,15.604 Q 16.083,17.179 21.375,21.154 A 2.00 2.00 0 1 1 23.625,17.846 Q 19.782,15.610 14.940,10.973 Z M 24.300,19.500 A 1.8 1.8 0 1 0 20.700,19.500 A 1.8 1.8 0 1 0 24.300,19.500 Z"/><path d="M 10.0,9.7 L 11.3,11.0 L 10.0,12.3 L 8.7,11.0 Z" fill="rgba(0,0,0,0.3)"/></svg></div>
|
||||||
<span class="nav-logo-text">Crank</span>
|
<span class="nav-logo-text">Crank</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<div class="ws-dropdown-label">Your workspaces</div>
|
<div class="ws-dropdown-label">Your workspaces</div>
|
||||||
<div id="ws-dropdown-list"></div>
|
<div id="ws-dropdown-list"></div>
|
||||||
<div class="ws-dropdown-footer">
|
<div class="ws-dropdown-footer">
|
||||||
<button class="ws-dropdown-create" onclick="window.location.href=(window.APP_BASE||'')+'html/workspace-setup.html?mode=create'">
|
<button class="ws-dropdown-create" onclick="window.location.href='/workspace-setup?mode=create'">
|
||||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
<svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M8 3v10M3 8h10"/></svg>
|
||||||
Create workspace
|
Create workspace
|
||||||
</button>
|
</button>
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<a href="index.html" class="nav-link active" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="nav-link active" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="nav-right">
|
<div class="nav-right">
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<div class="user-dropdown-name">Operator</div>
|
<div class="user-dropdown-name">Operator</div>
|
||||||
<div class="user-dropdown-role">Admin · acme-workspace</div>
|
<div class="user-dropdown-role">Admin · acme-workspace</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="user-dropdown-item" @click="openDropdown = null; window.location.href='html/settings.html'">
|
<button class="user-dropdown-item" @click="openDropdown = null; window.location.href='/settings'">
|
||||||
<svg width="13" height="13"><use href="icons/general/settings.svg#icon"/></svg>
|
<svg width="13" height="13"><use href="icons/general/settings.svg#icon"/></svg>
|
||||||
<span data-i18n="nav.settings">Settings</span>
|
<span data-i18n="nav.settings">Settings</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -95,11 +95,11 @@
|
|||||||
|
|
||||||
<!-- Mobile nav dropdown -->
|
<!-- Mobile nav dropdown -->
|
||||||
<div class="mobile-nav" x-show="navOpen" x-transition @click.stop>
|
<div class="mobile-nav" x-show="navOpen" x-transition @click.stop>
|
||||||
<a href="index.html" class="mobile-nav-link active" data-i18n="nav.operations">Operations</a>
|
<a href="/" class="mobile-nav-link active" data-i18n="nav.operations">Operations</a>
|
||||||
<a href="html/agents.html" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
<a href="/agents" class="mobile-nav-link" data-i18n="nav.agents">Agents</a>
|
||||||
<a href="html/api-keys.html" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
<a href="/api-keys" class="mobile-nav-link" data-i18n="nav.apikeys">API Keys</a>
|
||||||
<a href="html/logs.html" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
<a href="/logs" class="mobile-nav-link" data-i18n="nav.logs">Logs</a>
|
||||||
<a href="html/usage.html" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
<a href="/usage" class="mobile-nav-link" data-i18n="nav.usage">Usage</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ═══════════════════ PAGE ═══════════════════ -->
|
<!-- ═══════════════════ PAGE ═══════════════════ -->
|
||||||
|
|||||||
+2
-2
@@ -22,11 +22,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function loginUrl() {
|
function loginUrl() {
|
||||||
return (window.APP_BASE || '') + 'html/login.html';
|
return (window.CrankRoutes && window.CrankRoutes.login) || '/login';
|
||||||
}
|
}
|
||||||
|
|
||||||
function homeUrl() {
|
function homeUrl() {
|
||||||
return (window.APP_BASE || '') + 'index.html';
|
return (window.CrankRoutes && window.CrankRoutes.home) || '/';
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearUserMirror() {
|
function clearUserMirror() {
|
||||||
|
|||||||
@@ -356,7 +356,8 @@ document.addEventListener('alpine:init', function() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
editOperation(operation) {
|
editOperation(operation) {
|
||||||
window.location.href = (window.APP_BASE || '') + 'html/wizard/?mode=edit&operationId=' + encodeURIComponent(operation.id);
|
window.location.href = ((window.CrankRoutes && window.CrankRoutes.wizard) || '/wizard/')
|
||||||
|
+ '?mode=edit&operationId=' + encodeURIComponent(operation.id);
|
||||||
},
|
},
|
||||||
|
|
||||||
async deleteOperation(id) {
|
async deleteOperation(id) {
|
||||||
@@ -428,7 +429,7 @@ document.addEventListener('alpine:init', function() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
handleNewOperation() {
|
handleNewOperation() {
|
||||||
window.location.href = (window.APP_BASE || '') + 'html/wizard/';
|
window.location.href = (window.CrankRoutes && window.CrankRoutes.wizard) || '/wizard/';
|
||||||
},
|
},
|
||||||
|
|
||||||
handleLogout() {
|
handleLogout() {
|
||||||
|
|||||||
+13
-18
@@ -1,20 +1,15 @@
|
|||||||
/**
|
|
||||||
* config.js — auto-detects base paths based on current page location.
|
|
||||||
* Must be loaded before workspace.js and other navigation-using scripts.
|
|
||||||
*/
|
|
||||||
(function() {
|
(function() {
|
||||||
var p = window.location.pathname;
|
window.APP_BASE = '/';
|
||||||
// html/wizard/ is two levels deep from root
|
window.DATA_URL = '/data/';
|
||||||
if (/\/html\/wizard\//.test(p)) {
|
window.CrankRoutes = {
|
||||||
window.APP_BASE = '../../';
|
home: '/',
|
||||||
window.DATA_URL = '../../data/';
|
login: '/login',
|
||||||
// html/*.html is one level deep from root
|
agents: '/agents',
|
||||||
} else if (/\/html\//.test(p)) {
|
apiKeys: '/api-keys',
|
||||||
window.APP_BASE = '../';
|
logs: '/logs',
|
||||||
window.DATA_URL = '../data/';
|
usage: '/usage',
|
||||||
// root level (index.html)
|
settings: '/settings',
|
||||||
} else {
|
workspaceSetup: '/workspace-setup',
|
||||||
window.APP_BASE = '';
|
wizard: '/wizard/'
|
||||||
window.DATA_URL = 'data/';
|
};
|
||||||
}
|
|
||||||
}());
|
}());
|
||||||
|
|||||||
+2
-2
@@ -84,7 +84,7 @@
|
|||||||
if (dropdown) {
|
if (dropdown) {
|
||||||
dropdown.style.display = 'none';
|
dropdown.style.display = 'none';
|
||||||
}
|
}
|
||||||
window.location.href = (window.APP_BASE || '') + 'html/settings.html#profile';
|
window.location.href = ((window.CrankRoutes && window.CrankRoutes.settings) || '/settings') + '#profile';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
if (dropdown) {
|
if (dropdown) {
|
||||||
dropdown.style.display = 'none';
|
dropdown.style.display = 'none';
|
||||||
}
|
}
|
||||||
window.location.href = (window.APP_BASE || '') + 'html/settings.html';
|
window.location.href = (window.CrankRoutes && window.CrankRoutes.settings) || '/settings';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,14 +189,14 @@ document.addEventListener('DOMContentLoaded', async function() {
|
|||||||
var backToCatalog = document.getElementById('back-to-catalog');
|
var backToCatalog = document.getElementById('back-to-catalog');
|
||||||
if (backToCatalog) {
|
if (backToCatalog) {
|
||||||
backToCatalog.addEventListener('click', function() {
|
backToCatalog.addEventListener('click', function() {
|
||||||
window.location.href = (window.APP_BASE || '') + 'index.html';
|
window.location.href = (window.CrankRoutes && window.CrankRoutes.home) || '/';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var closeBtn = document.querySelector('.progress-close');
|
var closeBtn = document.querySelector('.progress-close');
|
||||||
if (closeBtn) {
|
if (closeBtn) {
|
||||||
closeBtn.addEventListener('click', function() {
|
closeBtn.addEventListener('click', function() {
|
||||||
window.location.href = (window.APP_BASE || '') + 'index.html';
|
window.location.href = (window.CrankRoutes && window.CrankRoutes.home) || '/';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ async function submitForm() {
|
|||||||
setFormDirty(false);
|
setFormDirty(false);
|
||||||
|
|
||||||
if (workspaceFormState.isCreateMode) {
|
if (workspaceFormState.isCreateMode) {
|
||||||
window.location.href = (window.APP_BASE || '') + 'html/workspace-setup.html';
|
window.location.href = (window.CrankRoutes && window.CrankRoutes.workspaceSetup) || '/workspace-setup';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ function renderWorkspaceList() {
|
|||||||
'</div>';
|
'</div>';
|
||||||
}).join('') +
|
}).join('') +
|
||||||
'<div class="ws-dropdown-divider"></div>' +
|
'<div class="ws-dropdown-divider"></div>' +
|
||||||
'<a class="ws-dropdown-mgmt-link" href="' + (window.APP_BASE || '') + 'html/workspace-setup.html" onclick="var dd=document.getElementById(\'ws-dropdown\');if(dd)dd.style.display=\'none\'">' +
|
'<a class="ws-dropdown-mgmt-link" href="' + ((window.CrankRoutes && window.CrankRoutes.workspaceSetup) || '/workspace-setup') + '" onclick="var dd=document.getElementById(\'ws-dropdown\');if(dd)dd.style.display=\'none\'">' +
|
||||||
'<svg width="14" height="14"><use href="' + (window.APP_BASE || '') + 'icons/general/settings.svg#icon"/></svg>' +
|
'<svg width="14" height="14"><use href="' + (window.APP_BASE || '') + 'icons/general/settings.svg#icon"/></svg>' +
|
||||||
'Workspace settings' +
|
'Workspace settings' +
|
||||||
'</a>';
|
'</a>';
|
||||||
|
|||||||
@@ -1,10 +1,96 @@
|
|||||||
server {
|
server {
|
||||||
listen 3000;
|
listen 3000;
|
||||||
server_name _;
|
server_name _;
|
||||||
|
absolute_redirect off;
|
||||||
|
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
index index.html;
|
index index.html;
|
||||||
|
|
||||||
|
location = / {
|
||||||
|
try_files /index.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /index.html {
|
||||||
|
return 302 /;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /login {
|
||||||
|
try_files /html/login.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /agents {
|
||||||
|
try_files /html/agents.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /api-keys {
|
||||||
|
try_files /html/api-keys.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /logs {
|
||||||
|
try_files /html/logs.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /usage {
|
||||||
|
try_files /html/usage.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /settings {
|
||||||
|
try_files /html/settings.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /workspace-setup {
|
||||||
|
try_files /html/workspace-setup.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /wizard {
|
||||||
|
return 302 /wizard/;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /wizard/ {
|
||||||
|
try_files /html/wizard/index.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/wizard/(.+)$ {
|
||||||
|
rewrite ^/wizard/(.+)$ /html/wizard/$1 break;
|
||||||
|
try_files $uri =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/login.html {
|
||||||
|
return 302 /login;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/agents.html {
|
||||||
|
return 302 /agents;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/api-keys.html {
|
||||||
|
return 302 /api-keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/logs.html {
|
||||||
|
return 302 /logs;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/usage.html {
|
||||||
|
return 302 /usage;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/settings.html {
|
||||||
|
return 302 /settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/workspace-setup.html {
|
||||||
|
return 302 /workspace-setup$is_args$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/wizard/ {
|
||||||
|
return 302 /wizard/$is_args$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /html/wizard/index.html {
|
||||||
|
return 302 /wizard/;
|
||||||
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/ /index.html;
|
try_files $uri $uri/ /index.html;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user