Menu
akurai-tasks
publicLatest change e13960fdf7749264d4d955b218a4568c8dd1671b - feat: add persistent IDP login screen by Ólafur Búi Ólafsson
<!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" />
<title>AkurAI Tasks</title>
<link rel="stylesheet" href="/styles.css" />
<script type="module" src="/app.js"></script>
</head>
<body>
<section id="login-screen" class="login-screen" aria-labelledby="login-title" hidden>
<div class="login-card">
<span class="login-mark" aria-hidden="true">A</span>
<p class="overline">AkurAI Tasks</p>
<h1 id="login-title">Sign in</h1>
<button id="login-button" class="button primary" type="button">Sign in with AkurAI ID</button>
</div>
</section>
<a class="skip-link" href="#board">Skip to board</a>
<header class="topbar">
<a class="brand" href="/" aria-label="AkurAI Tasks home"><span class="brand-mark">A</span><span>AkurAI</span><strong>Tasks</strong></a>
<div class="topbar-actions">
<span id="health" class="health" role="status"><span aria-hidden="true"></span>Connecting</span>
<button id="new-project" class="button secondary" type="button">New project</button>
<button id="new-task" class="button primary" type="button" disabled>New task</button>
<button id="session-button" class="icon-button" type="button" aria-label="Session settings">Operator</button>
</div>
</header>
<main class="workspace">
<aside class="sidebar" aria-label="Projects">
<div class="sidebar-heading">
<span>Projects</span>
<span class="sidebar-tools"><span id="project-count" class="count">0</span><button id="sidebar-new-project" type="button">Add</button></span>
</div>
<nav id="projects" class="project-list" aria-label="Project list"></nav>
<div class="sidebar-footer">
<p>One command core</p>
<p>REST · MCP · CLI · Web</p>
</div>
</aside>
<section class="content" aria-labelledby="project-title">
<header class="project-header">
<div>
<p id="project-key" class="overline">No project selected</p>
<h1 id="project-title">Project board</h1>
<p id="project-repos" class="project-repos">Create or select a project to begin.</p>
</div>
<div class="view-actions" aria-label="Board views">
<button class="view-button active" type="button" data-view="board">Board</button>
<button class="view-button" type="button" data-view="frontier">Ready frontier</button>
</div>
</header>
<div id="loading" class="loading-board" aria-label="Loading board" hidden>
<div></div><div></div><div></div><div></div>
</div>
<div id="empty" class="empty-state">
<span class="empty-index">00</span>
<h2>Central work starts here.</h2>
<p>Add a project and register its repositories. Tasks can then be pulled through one durable workflow.</p>
<button id="empty-create" class="button primary" type="button">Create first project</button>
</div>
<div id="board" class="board" tabindex="-1" hidden></div>
<div id="frontier" class="frontier" hidden></div>
</section>
</main>
<dialog id="project-dialog" class="dialog">
<form id="project-form">
<div class="dialog-heading">
<div><p class="overline">Workspace</p><h2>Create project</h2></div>
<button class="icon-button close-dialog" type="button" aria-label="Close">Close</button>
</div>
<label>Project key<input name="key" maxlength="24" pattern="[A-Z0-9-]+" placeholder="AKURAI" required /></label>
<label>Project name<input name="name" maxlength="120" placeholder="AkurAI Services" required /></label>
<label>Repositories<textarea name="repos" rows="3" placeholder="olibuijr/api olibuijr/web"></textarea><small>One owner/repository per line.</small></label>
<div class="dialog-actions"><button class="button secondary close-dialog" type="button">Cancel</button><button class="button primary" type="submit">Create project</button></div>
</form>
</dialog>
<dialog id="task-dialog" class="dialog">
<form id="task-form">
<div class="dialog-heading">
<div><p class="overline">Work item</p><h2>Create task</h2></div>
<button class="icon-button close-dialog" type="button" aria-label="Close">Close</button>
</div>
<label>Title<input name="title" maxlength="180" required /></label>
<label>Description<textarea name="description" rows="5"></textarea></label>
<div class="form-grid">
<label>Repository<select name="repo"><option value="">Project-wide</option></select></label>
<label>Priority<select name="priority"><option>normal</option><option>high</option><option>critical</option><option>low</option></select></label>
</div>
<div class="dialog-actions"><button class="button secondary close-dialog" type="button">Cancel</button><button class="button primary" type="submit">Create task</button></div>
</form>
</dialog>
<dialog id="task-detail" class="dialog task-detail">
<form method="dialog">
<div class="dialog-heading">
<div><p id="detail-id" class="overline"></p><h2 id="detail-title"></h2></div>
<button class="icon-button close-dialog" type="button" aria-label="Close">Close</button>
</div>
<p id="detail-description" class="dialog-copy"></p>
<dl id="detail-meta" class="detail-meta"></dl>
<div class="detail-section">
<h3>Advance workflow</h3>
<p id="detail-gate" class="gate-copy"></p>
<div class="dialog-actions left"><button id="move-back" class="button secondary" type="button">Previous</button><button id="claim-task" class="button secondary" type="button" hidden>Claim task</button><button id="move-next" class="button primary" type="button">Next state</button></div>
</div>
<div class="detail-section">
<h3>Add evidence</h3>
<div class="inline-form"><input id="evidence-body" placeholder="Command, review, or verification result" /><button id="add-evidence" class="button secondary" type="button">Attach</button></div>
</div>
</form>
</dialog>
<div id="toasts" class="toasts" role="status" aria-live="polite" aria-atomic="false"></div>
</body>
</html>