Skip to content

feat(#160): multi-tab terminal demo on the landing site#162

Merged
atlas-apex merged 1 commit into
me2resh:devfrom
atlas-apex:feature/GH-160-multi-tab-terminal-site
May 4, 2026
Merged

feat(#160): multi-tab terminal demo on the landing site#162
atlas-apex merged 1 commit into
me2resh:devfrom
atlas-apex:feature/GH-160-multi-tab-terminal-site

Conversation

@atlas-apex

Copy link
Copy Markdown
Collaborator

Summary

Landing-site site/index.html terminal demo previously played one canonical flow ("one ticket, start to finish") on autoplay. With the v1.2.0 skill surface expansion (4 new skills, 8+ new hooks), one flow no longer represents the framework's breadth.

This PR adds tabs to the terminal chrome — four flows that auto-cycle (or visitors can click directly):

  1. one ticket — existing flow, content unchanged
  2. /handover — adopt an external repo into the portfolio
  3. /setup — first-run framework bootstrap on a fresh fork
  4. /fan-out — spawn 3 parallel agents on independent tickets

Auto-advance: on completion of the active tab's script, the demo pauses ~1.8s, then advances to the next tab. Loops at the end. The user can interrupt by clicking any tab or hitting Replay (which restarts the active tab).

Hero metrics also corrected to current reality alongside the PR #161 fix that catches the same numbers in CLAUDE.md / CHANGELOG.md:

  • Skills: 32 → 39
  • Hooks: 18 → 24

Refs me2resh/apexyard#160 — the release ticket bundles "release v1.2.0" and "landing-site refresh"; this PR delivers the site half. The release-tag half follows once #159 (testing) is closed and #161 (voice + counts bundle) is merged.

Implementation notes

  • HTML chrome — single title span replaced with a role="tablist" of 4 buttons. Each tab carries data-tab=<idx> for the JS dispatcher. Aria semantics: role="tab", aria-selected. Tabs are keyboard-focusable and clickable. Tab strip scrolls horizontally on narrow viewports.
  • CSS — new .shell-demo__tabs flex container + .shell-demo__tab button with an accent underline on is-active. Mobile-responsive padding + font-size at max-width: 720px.
  • JS — refactored the existing IIFE from one script array to an array of four. New setActiveTab(idx) updates ARIA state. play(idx) takes a tab index. End-of-script auto-advances to (idx + 1) % N unless the user clicked away during the pause window. Added a new cmd type for slash-command invocations (renders with the same > prompt prefix as you).
  • prefers-reduced-motion — JS still bails early; the static seed at body-init shows tab 0's content as the no-animation fallback. Same behaviour as before, just clearer about which flow it represents.
  • No JS bundler / build step added — keeps with the framework's static-only landing-site convention. The whole change is one HTML file edit (270+ inserts, 87 deletes).

Testing

  • JS syntaxawk '/multi-tab shell animation/,/})\(\);$/' site/index.html | node --check → clean.
  • HTML balance<div\b open/close count: 0 delta. <script> open/close: balanced.
  • Static seed fallback — body still seeded with tab 0's content; verified with grep against the post-edit file.
  • Hero metric counts match realityls .claude/skills/*/ | wc -l = 39 ✓; ls .claude/hooks/*.sh | grep -v _lib- | wc -l post-chore(#157): remove voice-prompts feature + correct hook/skill counts #161 = 24 ✓.
  • Visual + behaviour smoke (manual) — open site/index.html in a browser:
    • Tab 0 plays on load (canonical one-ticket flow)
    • Auto-advances to tab 1 (/handover) after ~1.8s pause
    • Auto-advances to tab 2 (/setup), tab 3 (/fan-out), then loops back to tab 0
    • Click tab 2 mid-flow → jumps to /setup, restarts that tab from line 1
    • Click Replay on the active tab → restarts that tab from line 1
    • Mobile viewport: tab strip scrolls horizontally if the labels overflow

Glossary

Term Definition
Auto-advance loop When the active tab's script completes, the demo pauses ~1.8s and starts playing the next tab. After the last tab finishes, it cycles back to tab 0. The cycle continues until the user clicks a tab or hits Replay.
Manual override User clicks a tab or Replay button. Cancels the pending auto-advance, restarts the chosen tab from line 1.
Static seed fallback The HTML inside #shell-lifecycle-body at page load. Used when JS is disabled, a script error happens, or prefers-reduced-motion is set. Shows tab 0's content (the canonical one-ticket flow) as the most representative no-animation view.
cmd type New entry-type added in this PR alongside the existing you / sys / ok / muted / blank. Renders a typed slash-command invocation (e.g. /handover legacy-billing-api) with a > prompt prefix. Used by tabs 1–3 to signal "this is the user invoking the skill that drives this flow."

🤖 Generated with Claude Code

Loading
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.

2 participants