Commit 0bdb322
authored
Add village visualization for orchestrator dashboard, user gtwall support (#2)
* feat(ui): add steampunk village visualization for agent orchestration
Interactive SVG village where AI delegates appear as geese walking between
role-specific buildings (library for researchers, forge for generics, factory
for workers, etc.) via A* pathfinding with tiered terrain costs.
Includes:
- Real-time SSE dashboard with delegate registry, wall feed, and workshop
- ASCII map system with visual editor (editor.html)
- Standalone fullscreen village page (village.html)
- Map validator script with pathfinding analysis (scripts/validate-map)
- Pub/sub state management, lit-html rendering, zero build step
- 3 CDN deps: lit-html, marked, DOMPurify (version-pinned)
Security: CSP headers, DOMPurify + lit-html auto-escaping, parameterized
SQL, read-only DB, input validation, subprocess_exec (not shell).
Accessibility: WCAG AA contrast, ARIA roles/states, keyboard navigation,
focus trapping, prefers-reduced-motion support.
Crossfire-reviewed to 9/10 by independent models.
* fix: address PR crossfire findings
- Remove dead parent_session query param from SSE URL
- Math.round → Math.floor for path start tile (prevents tile jump mid-walk)
- Add aria-live/role=log to bulletin feed for screen reader announcements
- Add aria-expanded to village toggle button
- Add aria-label to wall-post textarea
- Add viewport meta to editor.html
- Fix e.target.role → getAttribute('role') for cross-browser compat
- Document CSP unsafe-inline rationale and localhost trust model
- Tighten speech bubble positioning (y=-60, closer to goose)
- Trailing newlines on HTML files
* chore: biome lint fixes and crossfire polish
- Sort imports per biome organizeImports (editor.js, village.js)
- Remove unused BUILDING_CHARS import from editor.js
- Lowercase hex literal 0xFFFF → 0xffff (tiles.js)
- Use template literal for string concat (village.js)
- Biome check now passes clean (0 errors, 0 warnings)
Crossfire: both reviewers APPROVE at 9/10
* docs: mention village in README
* docs: add village dashboard screenshot to README
* fix: wall post error handling and speech timer comment
- Check resp.ok on wall post fetch; keep dialog open on failure
- Add comment explaining setTimeout(8100) = SPEECH_DURATION_MS + 100ms buffer
Addresses feedback from external PR review.1 parent 53d4fa6 commit 0bdb322
20 files changed
Lines changed: 2756 additions & 32 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
16 | 19 | | |
17 | 20 | | |
18 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
| 33 | + | |
32 | 34 | | |
33 | 35 | | |
34 | 36 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
88 | | - | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
89 | 93 | | |
90 | 94 | | |
91 | 95 | | |
| |||
Loading
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
12 | 14 | | |
13 | 15 | | |
14 | 16 | | |
15 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
16 | 45 | | |
17 | 46 | | |
18 | 47 | | |
| |||
22 | 51 | | |
23 | 52 | | |
24 | 53 | | |
| 54 | + | |
| 55 | + | |
25 | 56 | | |
26 | 57 | | |
27 | 58 | | |
| |||
395 | 426 | | |
396 | 427 | | |
397 | 428 | | |
| 429 | + | |
| 430 | + | |
398 | 431 | | |
399 | 432 | | |
400 | 433 | | |
| |||
438 | 471 | | |
439 | 472 | | |
440 | 473 | | |
| 474 | + | |
| 475 | + | |
441 | 476 | | |
442 | 477 | | |
443 | 478 | | |
444 | | - | |
| 479 | + | |
445 | 480 | | |
446 | 481 | | |
447 | 482 | | |
| |||
458 | 493 | | |
459 | 494 | | |
460 | 495 | | |
461 | | - | |
| 496 | + | |
| 497 | + | |
462 | 498 | | |
463 | 499 | | |
464 | 500 | | |
465 | 501 | | |
466 | 502 | | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
467 | 540 | | |
468 | | - | |
| 541 | + | |
| 542 | + | |
469 | 543 | | |
470 | 544 | | |
471 | 545 | | |
| |||
480 | 554 | | |
481 | 555 | | |
482 | 556 | | |
| 557 | + | |
483 | 558 | | |
484 | 559 | | |
485 | 560 | | |
486 | | - | |
| 561 | + | |
487 | 562 | | |
488 | 563 | | |
489 | 564 | | |
| |||
0 commit comments