|
13 | 13 | <meta property="og:description" content="Minimal, high-performance AI coding agent for your terminal. ~8MB RAM idle, ~36MB binary. Built in Rust." /> |
14 | 14 | <meta property="og:url" content="https://dirge-code.github.io/" /> |
15 | 15 | <meta property="og:type" content="website" /> |
| 16 | +<meta property="og:image" content="https://dirge-code.github.io/img/dirge1.jpg" /> |
| 17 | +<meta name="twitter:card" content="summary_large_image" /> |
| 18 | +<meta name="twitter:image" content="https://dirge-code.github.io/img/dirge1.jpg" /> |
16 | 19 | <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text y='28' font-size='28'>⚡</text></svg>" /> |
17 | 20 | <style> |
18 | 21 | /* ─── RESET & BASE ──────────────────────────────────────────── */ |
|
216 | 219 | .hs b{display:block;font-size:28px;font-weight:700;line-height:1;color:var(--fg-hi)} |
217 | 220 | .hs span{display:block;margin-top:6px;font-size:10px;letter-spacing:0.1em;text-transform:uppercase;color:var(--fg-mute)} |
218 | 221 |
|
219 | | -/* ─── TERMINAL (always-dark mock) ──────────────────────────── */ |
220 | | -.term{ |
221 | | - background:var(--t-bg);border:1px solid var(--border); |
222 | | - margin-top:14px;font-size:13px;line-height:1.8; |
223 | | - overflow:hidden;font-family:var(--mono); |
224 | | - border-radius:6px; |
| 222 | +/* ─── dirge TUI recreation (phosphor theme, always dark) ───── */ |
| 223 | +.tui-win{ |
| 224 | + margin-top:14px;border:1px solid var(--border);border-radius:8px; |
| 225 | + overflow:hidden;background:#04080c; |
225 | 226 | } |
226 | | -.term-head{ |
| 227 | +.tui-bar{ |
227 | 228 | display:flex;align-items:center;gap:10px; |
228 | | - padding:9px 14px;border-bottom:1px solid #21262d; |
229 | | - background:var(--t-panel); |
| 229 | + padding:9px 14px;background:#0d1117;border-bottom:1px solid #1b2027; |
| 230 | +} |
| 231 | +.tui-bar .dots{display:flex;gap:6px} |
| 232 | +.tui-bar .dots i{width:9px;height:9px;border-radius:50%;display:inline-block} |
| 233 | +.tui-bar .dots i:nth-child(1){background:#f85149} |
| 234 | +.tui-bar .dots i:nth-child(2){background:#d29922} |
| 235 | +.tui-bar .dots i:nth-child(3){background:#3fb950} |
| 236 | +.tui-bar .t{font-size:11px;color:#8b949e;letter-spacing:0.04em;font-family:var(--mono)} |
| 237 | + |
| 238 | +.tui{ |
| 239 | + --ph-bg:#04080c;--ph-line:#1c7a3f;--ph-label:#46d479; |
| 240 | + --ph-fg:#83e3a3;--ph-bright:#d6f9e3;--ph-dim:#4f7a60; |
| 241 | + --ph-add-bg:#0c3a1d;--ph-add:#74e58f;--ph-del-bg:#3a1416;--ph-del:#ef8e8e; |
| 242 | + --ph-amber:#d8c45a;--ph-cyan:#5fd0d0; |
| 243 | + background:var(--ph-bg);color:var(--ph-fg); |
| 244 | + font-family:var(--mono);font-size:11px;line-height:1.5;padding:15px 14px 12px; |
| 245 | +} |
| 246 | +.tui-grid{display:grid;grid-template-columns:134px 1fr 148px;gap:11px;align-items:start} |
| 247 | +.tui-col{display:flex;flex-direction:column;gap:15px;min-width:0} |
| 248 | + |
| 249 | +.pnl{position:relative;border:1px solid var(--ph-line);padding:10px 9px 8px;border-radius:3px;min-width:0} |
| 250 | +.pnl > .pl{ |
| 251 | + position:absolute;top:-6px;left:9px;background:var(--ph-bg); |
| 252 | + padding:0 5px;color:var(--ph-label);font-size:8.5px;letter-spacing:0.14em;white-space:nowrap; |
230 | 253 | } |
231 | | -.term-dots{display:flex;gap:6px} |
232 | | -.term-dots i{width:9px;height:9px;border-radius:50%;display:inline-block} |
233 | | -.term-dots i:nth-child(1){background:#f85149} |
234 | | -.term-dots i:nth-child(2){background:#d29922} |
235 | | -.term-dots i:nth-child(3){background:#3fb950} |
236 | | -.term-title{font-size:11px;color:var(--t-dim);letter-spacing:0.06em;margin-left:4px} |
237 | | -.term-body{padding:18px 18px 22px;min-height:160px;color:var(--t-green2)} |
238 | | -.tl{white-space:pre-wrap;word-break:break-all} |
239 | | -.tp{color:var(--t-blue)} |
240 | | -.tc{color:var(--t-text)} |
241 | | -.to{color:var(--t-dim)} |
242 | | -.tg{color:var(--t-green)} |
243 | | -.tw{color:var(--t-amber)} |
244 | | -.ti{color:var(--t-blue)} |
245 | | -.td{color:var(--t-mute)} |
246 | | -.cursor{display:inline-block;width:8px;height:14px;background:var(--t-green2);vertical-align:-2px;margin-left:2px;animation:blink 1s steps(1) infinite} |
| 254 | +.pnl p{margin:0;color:var(--ph-fg);line-height:1.55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} |
| 255 | +.dimt{color:var(--ph-dim)} |
| 256 | +.brt{color:var(--ph-bright)} |
| 257 | +.amb{color:var(--ph-amber)} |
| 258 | +.cy{color:var(--ph-cyan)} |
| 259 | +.ok{color:var(--ph-add)} |
| 260 | +.banner{color:var(--ph-bright);letter-spacing:0.42em;font-size:13px;text-align:center;padding:5px 0 3px} |
| 261 | + |
| 262 | +.log p{white-space:normal;margin-bottom:2px} |
| 263 | +.log .step{padding-left:12px;text-indent:-12px} |
| 264 | +.diff{margin-top:9px;border:1px solid var(--ph-line);border-radius:3px;overflow:hidden} |
| 265 | +.diff .dh{padding:4px 8px;color:var(--ph-dim);border-bottom:1px solid #11331f;font-size:10px} |
| 266 | +.diff .ln{padding:1px 9px;white-space:pre;font-size:10.5px;overflow:hidden;text-overflow:ellipsis} |
| 267 | +.diff .del{background:var(--ph-del-bg);color:var(--ph-del)} |
| 268 | +.diff .add{background:var(--ph-add-bg);color:var(--ph-add)} |
| 269 | + |
| 270 | +.tui-status{ |
| 271 | + margin-top:13px;border-top:1px solid #11331f;padding-top:9px; |
| 272 | + font-size:10px;color:var(--ph-dim);display:flex;align-items:center;gap:8px;flex-wrap:wrap; |
| 273 | +} |
| 274 | +.tui-status .run{color:var(--ph-add)} |
| 275 | +.tcur{display:inline-block;width:7px;height:12px;background:var(--ph-add);vertical-align:-2px;animation:blink 1s steps(1) infinite} |
247 | 276 | @keyframes blink{50%{opacity:0}} |
248 | 277 |
|
| 278 | +@media(max-width:720px){ |
| 279 | + .tui-grid{grid-template-columns:1fr} |
| 280 | + .tui .side{display:none} |
| 281 | + .diff .ln{font-size:11px} |
| 282 | +} |
| 283 | + |
249 | 284 | /* ─── FEATURES ──────────────────────────────────────────────── */ |
250 | 285 | .feat-grid{ |
251 | 286 | display:grid;grid-template-columns:repeat(3,1fr); |
@@ -442,22 +477,92 @@ <h1><em>dirge</em> — The Minimal<br>Rust Coding Agent</h1> |
442 | 477 | <div class="hs"><b>8</b><span>Providers</span></div> |
443 | 478 | </div> |
444 | 479 |
|
445 | | - <div class="term"> |
446 | | - <div class="term-head"> |
447 | | - <span class="term-dots"><i></i><i></i><i></i></span> |
448 | | - <span class="term-title">session — dirge</span> |
| 480 | + <!-- dirge's actual TUI (phosphor theme), recreated in CSS --> |
| 481 | + <div class="tui-win"> |
| 482 | + <div class="tui-bar"> |
| 483 | + <span class="dots"><i></i><i></i><i></i></span> |
| 484 | + <span class="t">dirge — ~/src/scittle-voxel</span> |
449 | 485 | </div> |
450 | | - <div class="term-body"> |
451 | | - <div class="tl"><span class="tp">$</span> <span class="tc">dirge</span></div> |
452 | | - <div class="tl"><span class="td">▸ dirge v0.2.1 · phosphor · deepseek-v4-pro</span></div> |
453 | | - <div class="tl"><span class="td">▸ 25 tools · 3 MCP servers · 1 plugin · memory loaded</span></div> |
454 | | - <div class="tl"></div> |
455 | | - <div class="tl"><span class="tp">▸</span> <span class="tc">refactor the error handling in auth.rs</span></div> |
456 | | - <div class="tl"><span class="td">… thinking …</span></div> |
457 | | - <div class="tl"><span class="tg">✓</span> read <span class="td">src/auth.rs</span></div> |
458 | | - <div class="tl"><span class="tg">✓</span> edit <span class="td">src/auth.rs (+38 lines, tree-sitter validated)</span></div> |
459 | | - <div class="tl"><span class="tg">✓</span> bash <span class="td">cargo test (12 passed)</span></div> |
460 | | - <div class="tl"><span class="tp">▸</span> <span class="td">done.</span><span class="cursor"></span></div> |
| 486 | + <div class="tui"> |
| 487 | + <div class="tui-grid"> |
| 488 | + |
| 489 | + <!-- LEFT --> |
| 490 | + <div class="tui-col side"> |
| 491 | + <div class="pnl"> |
| 492 | + <span class="pl">AGENT STATUS</span> |
| 493 | + <div class="banner">D I R G E</div> |
| 494 | + </div> |
| 495 | + <div class="pnl"> |
| 496 | + <span class="pl">CONTEXT</span> |
| 497 | + <p>ctx <span class="ok">▓▓░░░░░░░░</span> 1%</p> |
| 498 | + <p class="dimt">11.5k / 1.0M · cmp:0</p> |
| 499 | + </div> |
| 500 | + <div class="pnl"> |
| 501 | + <span class="pl">ACTIVITY</span> |
| 502 | + <p>edit voxel.html</p> |
| 503 | + <p>read voxel.html</p> |
| 504 | + <p>skill paren-check</p> |
| 505 | + <p class="dimt">bash cd …/scittle</p> |
| 506 | + </div> |
| 507 | + </div> |
| 508 | + |
| 509 | + <!-- CENTER --> |
| 510 | + <div class="tui-col"> |
| 511 | + <div class="pnl log"> |
| 512 | + <span class="pl">AGENT LOG STREAM</span> |
| 513 | + <p><span class="cy"><dirge></span> <span class="brt">Now I have the plan:</span></p> |
| 514 | + <p><span class="amb">Goal:</span> add FPS-style mouse-look + wheel height to <span class="cy">voxel.html</span></p> |
| 515 | + <p class="step">1. add <span class="cy">:mouseX</span>/<span class="cy">:mouseY</span> delta fields to <span class="cy">input</span></p> |
| 516 | + <p class="step">2. add mousemove + wheel listeners (pointer lock)</p> |
| 517 | + <p class="step">3. consume deltas in <span class="cy">update-camera</span>, reset per frame</p> |
| 518 | + |
| 519 | + <div class="diff"> |
| 520 | + <div class="dh">EDIT — voxel.html <span class="ok">(+2 lines, validated)</span></div> |
| 521 | + <div class="ln del">-(def input</div> |
| 522 | + <div class="ln del">- #js {:forwardBackward 0.0</div> |
| 523 | + <div class="ln del">- :lookUp false})</div> |
| 524 | + <div class="ln add">+(def input</div> |
| 525 | + <div class="ln add">+ #js {:forwardBackward 0.0</div> |
| 526 | + <div class="ln add">+ :lookUp false</div> |
| 527 | + <div class="ln add">+ :mouseX 0.0</div> |
| 528 | + <div class="ln add">+ :mouseY 0.0})</div> |
| 529 | + </div> |
| 530 | + </div> |
| 531 | + </div> |
| 532 | + |
| 533 | + <!-- RIGHT --> |
| 534 | + <div class="tui-col side"> |
| 535 | + <div class="pnl"> |
| 536 | + <span class="pl">SYSTEM LOAD</span> |
| 537 | + <p>CPU <span class="dimt">[##......]</span> 24%</p> |
| 538 | + <p>MEM <span class="dimt">[####....]</span> 55%</p> |
| 539 | + </div> |
| 540 | + <div class="pnl"> |
| 541 | + <span class="pl">MCP</span> |
| 542 | + <p><span class="ok">●</span> chiasmus</p> |
| 543 | + <p><span class="ok">●</span> rlm</p> |
| 544 | + <p><span class="ok">●</span> wavescope</p> |
| 545 | + <p><span class="ok">●</span> lattice</p> |
| 546 | + </div> |
| 547 | + <div class="pnl"> |
| 548 | + <span class="pl">LSP</span> |
| 549 | + <p><span class="ok">●</span> clojure-lsp</p> |
| 550 | + </div> |
| 551 | + <div class="pnl"> |
| 552 | + <span class="pl">MODIFIED</span> |
| 553 | + <p>voxel.html</p> |
| 554 | + </div> |
| 555 | + </div> |
| 556 | + |
| 557 | + </div> |
| 558 | + |
| 559 | + <div class="tui-status"> |
| 560 | + <span>scittle-voxel</span><span class="dimt">·</span> |
| 561 | + <span>deepseek-v4-pro</span><span class="dimt">·</span> |
| 562 | + <span>11k/1.0M (1%)</span><span class="dimt">·</span> |
| 563 | + <span>3 msgs</span><span class="dimt">·</span> |
| 564 | + <span class="run">running [code]</span><span class="tcur"></span> |
| 565 | + </div> |
461 | 566 | </div> |
462 | 567 | </div> |
463 | 568 | </section> |
|
0 commit comments