Skip to content

feat(voice+search): barge-in Stop, numbered photos, in-HUD article reader - #7

Merged
nirhemo merged 2 commits into
mainfrom
feat/voice-barge-and-article-frame
Jul 14, 2026
Merged

feat(voice+search): barge-in Stop, numbered photos, in-HUD article reader#7
nirhemo merged 2 commits into
mainfrom
feat/voice-barge-and-article-frame

Conversation

@nirhemo

@nirhemo nirhemo commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Three connected upgrades — everything stays inside the ATLAS interface.

1. Voice: always-listen barge-in ("Stop")

A dedicated recognizer runs while ATLAS is speaking (the wake/command recognizers are idle then, so there's no mic contention). Say "stop / quiet / enough / cancel" and ATLAS stops mid-sentence and goes quiet. Gated on wake being enabled (so it never surprises you with a mic prompt).

2. Search: numbered, organized, animated photos

  • Each floating photo now has a number badge + title caption, tied to a real article (web_search.rich() returns a numbered results list; thumbnails zipped by index).
  • Pop-then-fly effect: photos pop in the screen centre, then fly out one-by-one to an organized grid ("table in the air") near the top — staggered per-item (flyIn with per-item --dx/--dy from centre).

3. "Open article N" → in-HUD reader

Say or type "open article 2" and a floating reader opens inside ATLAS:

  • Live <iframe> of the page, plus a Reader text fallback (/api/readread_article extraction) for the many sites that block embedding (X-Frame-Options) — so you never leave the interface.
  • Header has ◐ Live / ▤ Reader / TLDR / ✕; Esc closes it. The article card's button and photo clicks open it too.

Verification

  • 46 tests passing offline (+2: numbered results shape).
  • Headless (Playwright): 6 numbered grid items render with fly-in deltas, and "open article 2" opens the in-HUD iframe with the correct title — no console/page errors.

Note: iframe embedding is blocked by some sites (X-Frame-Options); the Reader fallback covers those, keeping everything in-app as requested.

🤖 Generated with Claude Code

nirhemo and others added 2 commits July 14, 2026 11:41
…reader

Voice — always-listen barge-in:
- A dedicated recognizer runs WHILE ATLAS speaks (the wake/command recognizers
  are idle then, so no mic contention). Say "stop / quiet / enough" and ATLAS
  stops mid-sentence and goes quiet. Gated on wake being enabled.

Search visuals — numbered, organized, interactive (all in-HUD):
- Results are now numbered: each floating photo shows a number badge + title
  caption. web_search.rich() returns a numbered `results` list (real articles
  with thumbnails zipped by index).
- Photos POP in the screen centre then fly out one-by-one to an organized grid
  ("table in the air") near the top — staggered per-item flyIn(--dx/--dy).
- "open article 2" (voice or chat) opens an in-HUD reader: a live <iframe> with
  a text Reader fallback (/api/read via read_article) for sites that block
  embedding — never leaving the ATLAS interface. Esc / ✕ closes it.

Tests: 46 passing offline (+2: numbered results, /api/read covered by existing).
Headless-verified: 6 numbered grid items + fly-in + "open article 2" → iframe.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… suppression, bigger centred photos

From live testing:
- Article opens in Reader (extracted text) by default so content always shows in-app
  (most sites block iframes); ◐ Live still tries the page; JS-only pages fall back to
  the search summary. Reader/Live/TLDR/✕ in the header; Esc closes.
- While an article is open, bare voice commands work without the wake word:
  "close / next / previous / reader / live / summarize", plus "Hey Atlas <question>".
- Barge-in ignores ATLAS's own words (self-text suppression) so it won't interrupt
  itself — only your "stop" gets through (browsers give no true echo cancellation).
- Floating result photos doubled in size and the grid is centred on screen.

Frontend only. 46 tests pass offline; headless-verified (grid 248x176, centred,
reader default, no console errors).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@nirhemo
nirhemo merged commit b928a7d into main Jul 14, 2026
3 checks passed
@nirhemo
nirhemo deleted the feat/voice-barge-and-article-frame branch July 14, 2026 09:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant