aion-server 0.8.0

Aion workflow server library: HTTP, gRPC, WebSocket, and worker endpoints. Run it with the `aion` binary from the aion-cli crate.
Documentation
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="theme-color" content="#121218" />
    <title>Aion Dashboard — not embedded</title>
    <style>
      :root {
        color-scheme: dark;
        --bg: #121218;
        --panel: #1b1b24;
        --border: #2c2c38;
        --fg: #e6e6ef;
        --muted: #9a9ab0;
        --accent: #7c83ff;
        --code-bg: #0d0d12;
      }
      * {
        box-sizing: border-box;
      }
      body {
        margin: 0;
        min-height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        background: var(--bg);
        color: var(--fg);
        font:
          15px/1.6 ui-sans-serif,
          system-ui,
          -apple-system,
          "Segoe UI",
          Roboto,
          sans-serif;
        padding: 2rem;
      }
      main {
        width: 100%;
        max-width: 640px;
        background: var(--panel);
        border: 1px solid var(--border);
        border-radius: 14px;
        padding: 2.25rem 2.5rem;
        box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
      }
      h1 {
        margin: 0 0 0.25rem;
        font-size: 1.5rem;
        letter-spacing: -0.01em;
      }
      .badge {
        display: inline-block;
        margin-bottom: 1.25rem;
        padding: 0.2rem 0.6rem;
        font-size: 0.72rem;
        font-weight: 600;
        letter-spacing: 0.04em;
        text-transform: uppercase;
        color: var(--accent);
        background: rgba(124, 131, 255, 0.12);
        border: 1px solid rgba(124, 131, 255, 0.35);
        border-radius: 999px;
      }
      p {
        margin: 0 0 1rem;
        color: var(--muted);
      }
      h2 {
        margin: 1.75rem 0 0.5rem;
        font-size: 0.95rem;
        color: var(--fg);
      }
      pre {
        margin: 0 0 0.75rem;
        padding: 0.85rem 1rem;
        background: var(--code-bg);
        border: 1px solid var(--border);
        border-radius: 8px;
        overflow-x: auto;
      }
      code {
        font:
          13px/1.5 ui-monospace,
          SFMono-Regular,
          "SF Mono",
          Menlo,
          monospace;
        color: #cdd2ff;
      }
      a {
        color: var(--accent);
      }
      footer {
        margin-top: 2rem;
        padding-top: 1.25rem;
        border-top: 1px solid var(--border);
        font-size: 0.82rem;
        color: var(--muted);
      }
    </style>
  </head>
  <body>
    <main>
      <span class="badge">Dashboard not embedded</span>
      <h1>Aion server is running</h1>
      <p>
        The HTTP/JSON API, gRPC, and WebSocket endpoints on this port are live.
        This binary was built <strong>without</strong> the
        <code>embed-dashboard</code> feature, so the web UI is not bundled in.
      </p>

      <h2>Develop the dashboard (live, with hot reload)</h2>
      <p>
        Run the Vite dev server; it proxies API calls to this server via
        <code>VITE_*</code> config and CORS:
      </p>
      <pre><code>cd apps/aion-dashboard
bun install
bun run dev   # http://localhost:5173</code></pre>

      <h2>Ship the dashboard inside this binary</h2>
      <p>Build the bundle, then build the server with the embed feature:</p>
      <pre><code>cargo xtask build-dashboard
cargo build -p aion-cli --features release   # or: -p aion-server --features embed-dashboard</code></pre>

      <footer>
        Aion · durable workflow execution. See
        <code>apps/aion-dashboard/README.md</code> and
        <code>docs/demo/FAILOVER-DEMO.md</code> for details.
      </footer>
    </main>
  </body>
</html>