mirror of
https://github.com/Heretek-AI/AetherTable.git
synced 2026-11-07 10:45:58 -10:00
Phase 1-5 remediation + four-gap closure: - Authoritative engine: ids-only combat payloads (deny_unknown_fields), server-side stat blocks, ActionBudget consumption, cover->AC, LoS gating, difficult-terrain Dijkstra, HMAC auth middleware + strict CORS - Honest metrics: live-engine synthetic playtest with trust-boundary probes, MCR = valid/(valid+rejected), benchmark script boots its own engine - Mechanics: condition lifecycle timers, spell slot economy w/ damage caps, topological ModifierSource graph, reaction stack (Shield/Counterspell/OA), X-card full ledger replay restoration - Persistence: sqlx write-through tailer to event_sourcing_log, snapshot persist/hydrate bridge, recursive CTE inventory functions - vtt-wfc: dead solver activated (reseed-retry contradictions, flood-fill single-region guarantee, deterministic dressing); fixed template removed - RBAC: role claims in gateway tokens, identity propagation, entity ownership, spectator/owner enforcement, fog layer ownership at WS - Client: PixiJS v8 board layer, physics dice with server-predetermined faces, Silero VAD, HRTF PannerNode chain, Y.Doc CRDT default transport with HMAC-authenticated ysync relay and LWW fallback Co-Authored-By: Claude <[email protected]>
33 lines
1.8 KiB
HTML
33 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" class="dark">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<!-- SEO: description + crawler directives (Lighthouse SEO checks) -->
|
|
<meta
|
|
name="description"
|
|
content="An AI-native virtual tabletop for D&D 5e — deterministic Rust rules engine, AI Game Master, real-time multiplayer maps, positional voice and procedural dungeons."
|
|
/>
|
|
<title>AI-Native Virtual Tabletop (VTT)</title>
|
|
<!-- Rustic identity fonts — both SIL Open Font License 1.1 (see
|
|
compendium/ATTRIBUTION.md): Cinzel for engraved display headers,
|
|
EB Garamond for in-world serif prose. Loaded via preconnect +
|
|
stylesheet here instead of a CSS @import so the browser can start
|
|
the font fetch in parallel with the JS/CSS bundle instead of
|
|
serializing behind it. -->
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=EB+Garamond:ital,wght@0,400..700;1,400..600&display=swap"
|
|
/>
|
|
<!-- Favicon: d20 gem in brand colors — gold body, book-red facets
|
|
(replaces the leftover violet from the pre-rustic era). -->
|
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d97706' stroke-width='2'><polygon points='12 2 2 7 12 12 22 7 12 2'/><polyline points='2 17 12 22 22 17'/><polyline points='2 12 12 17 22 12'/></svg>" />
|
|
</head>
|
|
<body class="bg-slate-950 text-slate-100 antialiased overflow-hidden select-none">
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.tsx"></script>
|
|
</body>
|
|
</html>
|