Fusion AI, powered by HAL 8: red eye, Standard | Incognito, code, media and voice #2

Merged
jerry merged 3 commits from feat/fusion-ai-hal8 into main 2026-09-27 00:56:48 +00:00
Owner

The chat button becomes Fusion AI, powered by HAL 8.

  • The robot head is replaced by HAL 8's real red eye.
  • "Powered by Claude" becomes POWERED BY HAL 8.
  • Standard | Incognito in pill form is the only control.
  • Chat, code, web search, images, video and voice are always on.

The widget:

  • lives in fusion/fusion.js and fusion/fusion.css, loaded on demand, with the CSS inlined into the bundle by tools/fusion_inject.py (idempotent);
  • holds no key. It posts to HAL 8's public route /v1/public/fusion/chat (HAL 8 PR on feat/fusion-public), which enforces the $1/day budget and the per-visitor limits;
  • runs Python code blocks in the visitor's browser via Pyodide;
  • takes voice in and reads the answer aloud through the browser's Web Speech API;
  • keeps Standard history in this browser only. Incognito keeps nothing and clears itself when the visitor leaves the tab;
  • renders markdown safely: everything is escaped, links and media must be https or HAL 8 file links, and there is no raw HTML.

I tested it against a local SSE stub. It showed:

  • a streamed answer, lists and source links;
  • code Run and Copy;
  • an image and a video;
  • the Incognito tint and no storage;
  • Standard history restored after Incognito;
  • the limit card on a 429.

Merge after the HAL 8 route is live.

🤖 Generated with Claude Code

The chat button becomes **Fusion AI, powered by HAL 8**. - The robot head is replaced by HAL 8's real red eye. - "Powered by Claude" becomes POWERED BY HAL 8. - **Standard | Incognito** in pill form is the only control. - Chat, code, web search, images, video and voice are always on. The widget: - lives in `fusion/fusion.js` and `fusion/fusion.css`, loaded on demand, with the CSS inlined into the bundle by `tools/fusion_inject.py` (idempotent); - holds no key. It posts to HAL 8's public route `/v1/public/fusion/chat` (HAL 8 PR on `feat/fusion-public`), which enforces the $1/day budget and the per-visitor limits; - runs Python code blocks in the visitor's browser via Pyodide; - takes voice in and reads the answer aloud through the browser's Web Speech API; - keeps Standard history in this browser only. Incognito keeps nothing and clears itself when the visitor leaves the tab; - renders markdown safely: everything is escaped, links and media must be https or HAL 8 file links, and there is no raw HTML. I tested it against a local SSE stub. It showed: - a streamed answer, lists and source links; - code Run and Copy; - an image and a video; - the Incognito tint and no storage; - Standard history restored after Incognito; - the limit card on a 429. Merge after the HAL 8 route is live. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jerry added 2 commits 2026-09-27 00:20:18 +00:00
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>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jerry added 1 commit 2026-09-27 00:56:27 +00:00
HAL 8's signed file links carry no extension, so a clip linked as
[video](...) rendered as a plain link. A HAL 8 file labelled video/clip
is now a player, and a HAL 8 file embedded as an image that will not
decode is swapped for one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jerry merged commit b9b9fe06d8 into main 2026-09-27 00:56:48 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jerry/apex-fusion-site#2
No description provided.