dmslanes/lanes

Lanes - team task boards with roles, history and an MCP endpoint for Claude and ChatGPT

A remix template · 0 remixes · Remix dmslanes/lanes

app/web/static/index.html

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Lanes</title>
<link rel="icon" href="/static/lanes.svg" type="image/svg+xml">
<link rel="stylesheet" href="/static/lanes.css">
</head>
<body>
<header class="top">
  <a class="brand" href="/" aria-label="Lanes home"><img src="/static/lanes.svg" alt="" width="26" height="26"><span>Lanes</span></a>
  <select id="ws" aria-label="Workspace"></select>
  <nav class="views">
    <button data-view="boards" class="on">Boards</button>
    <button data-view="plate">My plate</button>
    <button data-view="overdue">Overdue</button>
    <button data-view="people">People</button>
  </nav>
  <span id="who" class="who"></span>
</header>

<main id="main"></main>

<dialog id="cardDlg">
  <form method="dialog" id="cardForm">
    <header><span id="cardNo" class="num"></span><button class="x" value="cancel" aria-label="Close">×</button></header>
    <label>Title<input name="title" maxlength="200" required></label>
    <label>Description<textarea name="description" rows="4" maxlength="5000"></textarea></label>
    <div class="row">
      <label>Assignee<select name="assignee"></select></label>
      <label>Due<input name="due_date" type="date"></label>
    </div>
    <label>Labels <small>comma separated</small><input name="labels"></label>
    <div class="deps"><span class="lab">Blocked by</span><span id="blockers"></span>
      <input id="blockIn" placeholder="card #" inputmode="numeric" aria-label="Blocked by card number"><button type="button" id="blockAdd" class="link">Add</button></div>
    <div class="ai"><button type="button" id="aiChecklist" class="link">✦ Turn into a checklist</button><button type="button" id="aiSimilar" class="link">✦ Find similar cards</button></div>
    <ul id="similar" class="history"></ul>
    <div class="actions">
      <button type="button" id="delCard" class="danger link">Delete card</button>
      <button value="save" class="primary">Save</button>
    </div>
    <h4>History</h4>
    <ol id="history" class="history"></ol>
  </form>
</dialog>

<template id="tplEmpty"><section class="empty">
  <h1>Start a workspace</h1>
  <p>A workspace is your team. You own it, invite people as members (can edit) or viewers (read only), and keep your boards in it.</p>
  <form id="newWs" class="inline"><input name="name" placeholder="Workspace name, e.g. Acme" required maxlength="200"><button class="primary">Create</button></form>
</section></template>

<script src="/static/lanes.js" defer></script>
</body>
</html>