vane 0.9.0

A flow-based reverse proxy with multi-layer routing and programmable pipelines.
pipeline:
  internal.terminator.response:
    input:
      status: 200
      headers:
        content-type: 'text/html; charset=utf-8'
      body: |
        <!DOCTYPE html>
        <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Vane</title>
            <style>
              :root { --bg: #000; --fg: #fff; --gray: #333; --text-gray: #888; --hover: #111; }
              body { background: var(--bg); color: var(--fg); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; margin: 0; display: flex; align-items: center; justify-content: center; height: 100vh; -webkit-font-smoothing: antialiased; }
              .wrap { max-width: 800px; padding: 2rem; width: 100%; }
              .brand { font-size: 0.75rem; letter-spacing: 0.2em; color: var(--text-gray); text-transform: uppercase; margin-bottom: 1.5rem; font-weight: 600; }
              h1 { font-size: 3.5rem; font-weight: 800; letter-spacing: -0.05em; margin: 0 0 1rem 0; line-height: 1.1; }
              .sub { color: var(--text-gray); font-size: 1.25rem; margin-bottom: 3rem; font-weight: 400; }
              .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
              .card { border: 1px solid var(--gray); border-radius: 8px; padding: 1.5rem; text-decoration: none; color: inherit; transition: 0.2s ease; display: block; }
              .card:hover { border-color: var(--fg); background: var(--hover); }
              .card strong { display: block; margin-bottom: 0.5rem; font-size: 1rem; }
              .card span { color: var(--text-gray); font-size: 0.875rem; line-height: 1.4; display: block; }
              @media (max-width: 600px) { h1 { font-size: 2.5rem; } .grid { grid-template-columns: 1fr; } }
            </style>
          </head>
          <body>
            <div class="wrap">
              <div class="brand">Flow Engine</div>
              <h1>Vane is Ready to Proxy.</h1>
              <p class="sub">Edit your configuration to continue exploring.</p>
              <div class="grid">
                <a href="https://github.com/canmi21/vane" class="card" target="_blank">
                  <strong>Star on GitHub &rarr;</strong>
                  <span>Support the project and get the latest updates.</span>
                </a>
                <a href="https://vane.canmi.app/docs" class="card" target="_blank">
                  <strong>Documentation &rarr;</strong>
                  <span>Read the full guides on routing and plugins.</span>
                </a>
              </div>
            </div>
          </body>
        </html>