AkurAI Build
Menu

akurai-tasks

public

Latest 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&#10;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>