A 32 s trailer rendered in Blender from the Apex Universe scene. The
pane in it is the real widget replaying answers Fusion AI gave on the
live route, voiced by ElevenLabs Brian, with an original score.
fusion/launch/ holds the 16:9 cut, its poster and English captions.
The HAL 8 section gets a 'Meet Fusion AI' card (Talk to Fusion AI opens
the widget through a fusion:open event), and the widget's welcome
screen a 'Watch the launch film' chip that plays it in a lightbox.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hub's assistant becomes a consumer HAL 8 chat:
- The button is HAL 8's red eye (the real logo); the header reads POWERED BY HAL 8.
- One control, a Standard | Incognito pill. Standard keeps the conversation in this browser;
Incognito keeps nothing and asks the server for no retention.
- Always on, no toggles: chat and code (copy; Python runs in the browser via Pyodide), images and
video inline, web answers with their sources, voice in (speech recognition) and read-aloud.
- Streams from HAL 8's public Fusion endpoint (hal8.odyssey-works.io/v1/public/fusion/chat); the
browser never holds a key. Limits come back as a friendly "see you tomorrow" card.
- A small safe markdown renderer: everything escaped, https-only links and media, HAL 8-relative
file links resolved against HAL 8.
- tools/fusion_inject.py replaces the old assistant block idempotently (between /*F8-BEGIN*/ and
/*F8-END*/) and inlines fusion/fusion.css.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Markets section listed three Base pairs from DexScreener and an
empty "Prime tokens" box. It now shows every venue where AP3X trades:
- Base: Aerodrome USDC (the reference price), QuickSwap cbBTC, the two
Uniswap V3 pools DexScreener does not index and the Aerodrome cbADA
pool it lists without a price - the last three read straight from
the chain in one batched eth_call (publicnode, CORS-open; the
out-of-range WETH pool is flagged and earns no TVL credit)
- Cardano: VyFi ADA/cstAP3X, ADA/cAP3X, cAP3X/cstAP3X from Koios
address_info (reserves summed across UTxOs), Minswap V2 cAP3X/ADA and
NIGHT/cAP3X from the pool datum found by the LP asset name, priced by
the Minswap aggregator; DexHunter stands in when Koios is down
- LBank AP3X/USDT through the site-origin proxy, shown as what it is:
no trades in days, spread, dead volume
- USDC.e on Nexus gets its own card (ApexScan: supply, holders, largest
holder, all-time transfers, Stargate bridge link) in place of the
Prime tokens box, which had nothing to list
- "One asset, four chains": AP3X, bAP3X, cAP3X, cstAP3X with the
cstAP3X redemption rate computed live (vault / issued) so the
receipt's premium is explained, not mispriced
- marks are the HAL 8 wallet's own PNGs plus each venue's mark, token
image with a chain badge, embedded so the page stays one file
- feeds have deadlines, per-panel parsers, an error boundary, tiered
refresh (quota'd feeds every 9 min, fast ones every 90 s), hidden-tab
pause, a refresh cooldown, and honest fallbacks (ADA/USD from Minswap
when CoinGecko is down, cAP3X/USD from reserves when the aggregator
429s, placeholders when DexScreener is down)
- chain pulse now says mainnet; HeroLightning's ResizeObserver no longer
throws after unmount; stake-pool saturation reads OSAM's field
Koios and LBank are reached via /api/koios/* and /api/lbank/* on this
origin (Caddy reverse proxies in the HAL 8 repo, PR #142) because
neither answers with a usable CORS header.
README documents the feeds; tools/bundle.py decodes and re-encodes the
bundled page byte-exactly so the next edit does not touch escaped text.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UPpFgu6wXiDfJv8ghoUwBJ