continuo 0.12.0

Runtime service composition for multi-service Rust applications: typed component resolution, dependency-ordered lifecycle, reload, runnable tasks, graceful drain, and finalization.
Documentation
:root{color-scheme:dark;--bg:#0d0f13;--card:#15181f;--line:#292e39;--muted:#8d96a8;--accent:#a6f0cb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#edf0f7;background:var(--bg)}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit}button,a.button{cursor:pointer}
.rail{width:76px;background:#11141a;border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;display:flex;align-items:center;flex-direction:column;gap:24px;padding:24px 0}
.mark{width:40px;color:var(--accent)}.rail-link{font-size:25px;color:var(--muted);padding:8px 12px;border-radius:10px}.selected{color:var(--accent);background:#a6f0cb12}.rail-bottom{margin-top:auto;color:var(--muted)}
.shell{margin-left:76px}header{height:86px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 48px}.wordmark{font-size:25px;font-weight:700;letter-spacing:-1px}.wordmark span{font-size:14px;color:var(--muted);font-weight:400;letter-spacing:0;margin-left:18px}
.environment{font:10px ui-monospace,monospace;letter-spacing:1.6px;color:var(--muted);display:flex;align-items:center;gap:10px}.environment i{width:6px;height:6px;background:var(--accent);border-radius:50%}
main{max-width:1280px;padding:44px 48px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:34px}.eyebrow{font:10px ui-monospace,monospace;letter-spacing:1.8px;color:var(--muted)}h1{font-size:clamp(30px,3.4vw,46px);letter-spacing:-1.8px;line-height:1.18;margin:15px 0}h1 span{color:var(--muted)}.intro,.muted{color:var(--muted);font-size:14px;line-height:1.6}.build-tag{font:11px ui-monospace,monospace;border-left:2px solid var(--accent);padding-left:16px;line-height:2;letter-spacing:1px}.build-tag span{color:var(--muted);letter-spacing:0}
.grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:22px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 16px 60px #0002}.counter-card{background:radial-gradient(ellipse at 20% 5%,#23372e55,transparent 65%),var(--card)}.card-heading{display:flex;justify-content:space-between;align-items:center}.badge{font:10px ui-monospace,monospace;padding:6px 10px;border-radius:20px;border:1px solid #a6f0cb35;color:var(--accent);background:#a6f0cb0a}.badge.neutral{color:var(--muted);border-color:var(--line)}
.counter-display{display:flex;flex-direction:column;padding:38px 0 28px}.counter-caption{font-size:13px;color:var(--muted)}#count{font-size:clamp(60px,7vw,94px);font-weight:500;letter-spacing:-5px;line-height:1.2;font-variant-numeric:tabular-nums;transition:color .2s}#count.changed{color:var(--accent)}.stream-state{font-size:11px;color:var(--muted);margin-top:10px}
.controls{display:flex;flex-wrap:wrap;gap:8px}button,.button{display:inline-block;border:1px solid #363d4b;border-radius:8px;background:#1c212b;color:#e2e8f0;padding:10px 14px;font-size:12px;transition:background .15s,transform .15s}button:hover,.button:hover{background:#293141;transform:translateY(-1px)}.primary{background:var(--accent);border-color:var(--accent);color:#11281d;font-weight:650}.primary:hover{background:#c3f8de}
.initial-hit{font-size:11px;color:var(--muted);margin-top:14px}.initial-hit h1{display:none}.runtime-details{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.runtime-details code{display:block;color:var(--muted);font:11px ui-monospace,monospace;line-height:1.8;overflow-wrap:anywhere;margin-top:10px}
h2{font-size:22px;letter-spacing:-.7px;margin:8px 0 0}.file-tag{font:10px ui-monospace,monospace;color:var(--muted);background:#0d0f13;border:1px solid var(--line);padding:7px 9px;border-radius:7px}.editor-heading{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-bottom:0;background:#101319;padding:6px 12px;border-radius:9px 9px 0 0;font:10px ui-monospace,monospace;color:var(--muted)}
.config-hints{margin-top:24px;display:grid;gap:10px}.config-hints div{display:flex;gap:14px;font-size:11px}.config-hints code{min-width:80px;color:#e2e8f0}.config-hints span{color:var(--muted)}
.flow-strip{display:flex;align-items:center;justify-content:space-between;margin-top:28px;border:1px solid var(--line);border-radius:12px;padding:24px;background:#11141a}.flow-strip div{display:grid;grid-template-columns:24px 1fr;column-gap:10px;row-gap:5px}.step{grid-row:span 2;color:var(--accent);font:10px ui-monospace,monospace;padding-top:3px}.flow-strip strong{font-size:12px;font-weight:500}.flow-strip small{font-size:10px;color:var(--muted)}.arrow{color:#48515f;padding:0 10px}
footer{display:flex;justify-content:space-between;margin-top:28px;font-size:11px;color:var(--muted)}footer strong{font-weight:500;color:#b5bece}footer nav{display:flex;gap:22px}footer a:hover{color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(max-width:850px){.grid{grid-template-columns:1fr}.flow-strip{flex-wrap:wrap;gap:20px}.arrow{display:none}.build-tag{display:none}header{padding:0 24px}main{padding:28px 24px}}
.manual-config-note{margin-top:18px;padding:14px 16px;border-left:3px solid #a6f0cb;background:#a6f0cb0a;border-radius:0 8px 8px 0;font-size:12px;line-height:1.7}.manual-config-note strong{color:#a6f0cb}.manual-config-note p{margin:5px 0 0;color:var(--muted)}.manual-config-note code{overflow-wrap:anywhere;color:#e2e8f0}
@media(max-width:520px){.rail{width:54px}.shell{margin-left:54px}.mark{width:30px}.rail-link{font-size:20px;padding:6px}.wordmark span,.environment{display:none}.card{padding:20px}footer{flex-direction:column;gap:14px}.editor-footer{align-items:flex-start;flex-direction:column}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.service-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}.service-card h2{margin-top:24px;font-size:28px}.service-metrics{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:28px 0 0}.service-metrics dt{font-size:11px;color:var(--muted)}.service-metrics dd{margin:8px 0 0;font-size:22px;font-variant-numeric:tabular-nums}.command-card{margin-top:24px}.command-card .controls{margin-top:24px}button:disabled{opacity:.5;cursor:wait}
button:disabled{cursor:not-allowed}button:disabled:hover{transform:none}
.counter-value-row{display:flex;align-items:center;gap:24px}.hit-button{font-size:clamp(24px,3vw,38px);font-weight:500;padding:12px 20px;border-radius:14px;color:var(--accent);border-color:#a6f0cb40;background:#a6f0cb0a;min-width:82px;font-variant-numeric:tabular-nums}.hit-button:hover{background:#a6f0cb18}.hit-controls{flex-shrink:0}