Skip to content

Promote dev → main - #16

Merged
AdrianLlopart merged 29 commits into
mainfrom
dev
Jun 20, 2026
Merged

Promote dev → main#16
AdrianLlopart merged 29 commits into
mainfrom
dev

Conversation

@AdrianLlopart

Copy link
Copy Markdown
Contributor

Automated promotion of devmain, dispatched by @AdrianLlopart.

AdrianLlopart and others added 29 commits June 18, 2026 13:55
Add a new "03 — See it run" section directly under the architecture
diagram: a tabbed (Benchmarks / Simulation / Deployment) autoscroll of
square, rounded clips. Each clip autoplays muted on loop; hovering any
clip pauses the row and reveals a fullscreen affordance; clicking opens
a full-resolution modal (Escape / backdrop / close button dismiss it,
restoring autoscroll).

Clips are auto-discovered at build time via import.meta.glob from
src/videos/<category>/ — drop a file named
<benchmark>_<rskill>_<success|fail>.mp4 and it appears, with the
benchmark/rskill chips and the SUCCESS/FAIL status pill parsed from the
filename. Status dots use the existing --live / --red tokens; modal is
portaled to body so it layers above the nav. Respects
prefers-reduced-motion (static, scrollable; no autoplay).

Remove the now-deprecated "Run it three ways" block from the
architecture section (its Benchmark/Simulate/Deploy tabs are superseded
by the showcase) and its orphaned CSS. Renumber section eyebrows to stay
sequential and reorder the nav link to match scroll order.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
…order

- Move the SUCCESS/FAIL pill into a top bar laid out as a 3-column grid
  (benchmark · status · rskill), so the status sits inline, centered
  between the two name chips instead of floating over the video center.
- Only duplicate the strip when it actually overflows its container: the
  seamless-loop copy is then always off-screen, so a clip is never visible
  twice at once. When the clips fit, each is shown once, centered, with no
  scroll. Overflow is tracked with a ResizeObserver.
- Randomize clip order once per page load (Fisher–Yates).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
Each clip now defers its src until the card first scrolls into view, then
plays while on-screen and pauses when it leaves (IntersectionObserver,
120px pre-roll margin). Only the handful of visible clips ever fetch or
play, so the strip scales to many/large videos without buffering them all
at once. Adds preload="none" and a poster slot (used once a CDN/manifest
provides poster frames).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
Move showcase videos off the repo onto the public OpenRAL/website-media
HF dataset (CDN-backed). The gallery now reads src/videos/manifest.json —
the only tracked artifact — instead of globbing local files, so no video
bytes enter git or the JS bundle.

Each clip is encoded into three web assets: a poster, a square 640px muted
`preview` for the autoscroll strip, and a ≤1080p `full` clip (with audio)
for the modal. The strip lazy-loads previews; the heavy full file is
fetched only when a clip is expanded. An 8 MB source becomes a ~480 KB
strip preview.

Adds scripts/build-media.mjs + `npm run media`: drop a raw clip into
media/<category>/, run it, and it's encoded, uploaded, and added to the
manifest. media/ and media-dist/ are gitignored.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
Add a 'Showcase videos' section explaining how to publish a clip (drop into
media/, run npm run media, commit the manifest) and correct the sections
list to include the showcase and match the real page order.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
The center-top status pill collided with long benchmark/rskill chips. The
top bar now holds just benchmark (left) and rskill (right); the SUCCESS/FAIL
pill moves to the bottom-right corner, and the hover expand icon moves to
center so the two never overlap. Adds a bottom legibility wash.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
…fore contact

New order: Install → The problem & our answer → Architecture → What's inside →
rSkills → See it run → Get in touch. Resequences eyebrows (01–07), reorders the
nav to match scroll order, and updates the README sections list.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
The diff console was centered (max-width 860, margin auto) while the install
terminal is left-aligned (max-width 900). Match its width and left-align it so
both consoles share the same left/right edges.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PxVX8QDC2gmULaJxXN3tXu
feat: autoscroll video showcase ("See it run"); remove "Run it three ways"
Replaces the simple mug pick-and-place demo with a complete 50-step
robot task: audio prompt → S2 plan with 7 subtasks → navigate kitchen
→ LocateAnything + object detector for bottle and glass → grasp failure
+ replan + retry → pour → place glass → return bottle to fridge →
recall glass → navigate back → handover. Dataset append fires only at
the end of the episode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VrG8X6a67Ef4ZPGzPq19jR
… labels

- detect.stream entries interleaved at each navigation phase to show
  continuous background scene monitoring
- recall token renamed to spatial_mem.recall to be explicit about the
  spatial memory subsystem being queried
- subtask plan lines now reference ExecuteRSkill(grasp/pour/handover)
  to make clear these are RSkill invocations from the first planning step

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VrG8X6a67Ef4ZPGzPq19jR
…subtask plan

- open_door and close_door now map to skill: "open_door" chip instead
  of borrowing "grasp"
- s2.subtask[5] explicitly lists ExecuteRSkill(open_door, place, close_door)
  so the plan phase reflects all three RSkills used in the fridge sequence
- add "open_door" to CHIPS array

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VrG8X6a67Ef4ZPGzPq19jR
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VrG8X6a67Ef4ZPGzPq19jR
feat: extend hero terminal to full Coca-Cola fetch scenario
Add a new "07 — Mission control" section showing the OpenRAL deployment
dashboard inside the signature console window, between the video showcase
and contact (Contact renumbered 07→08, nav link + scroll-spy added).

The dashboard is shown fully expanded; scroll-revealed callout bubbles flank
it in the gutters on alternating sides, each tied to a window-edge dot by a
connector line. The eight callouts (deployment identity, command center,
sensor feeds, spatial perception, reasoner decision, embodiment & safety,
telemetry metrics, activity log) name real regions of the observability
dashboard in OpenRAL vocabulary. Callouts anchor to the measured image
top/height (ResizeObserver) so they stay aligned at any width, fade in
edge-inwards, collapse to a stacked list below 860px, and respect
prefers-reduced-motion. An expand button opens a focus-trapped, full-res
lightbox.

Asset: dashboard-view.webp (134 KB, full 1280×3564) with width/height set
for zero layout shift and lazy loading.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGLveMxztXG214MFaEvuX
Replace the static screenshot with the recorded dashboard walkthrough
(dashboard-navigation.webm, same 1280×3564 frame, 30s loop). The still WebP
becomes the video poster (instant paint, zero CLS) and the reduced-motion
fallback. The clip uses preload="none" and only plays while on screen via an
IntersectionObserver, pausing when it scrolls away — so the ~4 MB file isn't
fetched until needed. Callout positions are unchanged: they anchor to the
measured media element, which is now the video.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGLveMxztXG214MFaEvuX
- Use the walkthrough trimmed of its first 6s (24.5s loop, re-encoded
  VP9, 3.0 MB).
- LIVE indicator dot is now the green --live token with a soft green glow,
  blinking (note: intentional deviation from DESIGN.md's white-only LIVE,
  per request).
- Remove the expand button and the full-res lightbox (component, modal,
  portal and related styles).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGLveMxztXG214MFaEvuX
The hero agent console rendered the whole LIVE indicator (label included) in
green. Make the "LIVE" word white in both the hero console and the dashboard,
keeping the green blinking status dot.

Update DESIGN.md to codify the convention: the green blinking live-dot and the
muted-red form-error rose are the two sanctioned chromas; the "LIVE" label and
all success ticks stay white.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGLveMxztXG214MFaEvuX
Add three topic options to the contact form's first select — a new rSkill, a
real deployment, and an evaluation on sim and real environments — alongside
the existing general question and partnership.

Theme the native dropdown to OpenRAL's dark aesthetic: color-scheme: dark so
the popup renders dark, styled <option> background/checked states, and extra
right padding so the longest label clears the custom arrow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGLveMxztXG214MFaEvuX
Swap the native <select> for a fully themeable select-only listbox (ARIA APG
combobox + listbox): combobox button, listbox popup, focus moves to the list
with aria-activedescendant, and full keyboard support (Up/Down, Home/End,
Enter/Space, Escape, Tab). Click-outside closes; a hidden input mirrors the
value so the existing form submit (form.audience.value) is unchanged.

The popup now uses OpenRAL's Surface fill, hairline border, deep shadow and
white check/active states — consistent across all browsers (the native popup
couldn't be themed). Remove the now-dead native-select styles from Contact.css.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGLveMxztXG214MFaEvuX
Keep the Resources entry as "License" and the copyright as "© 2026 OpenRAL".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013zGLveMxztXG214MFaEvuX
feat(dashboard): annotated "Mission control" section
Implemented Vercel Speed Insights for the OpenRAL website

## Changes Made

### 1. Fetched Latest Documentation
- Retrieved the official Vercel Speed Insights quickstart documentation from https://vercel.com/docs/speed-insights/quickstart
- Confirmed the correct installation steps for React/Vite projects

### 2. Installed Package
- Added `@vercel/speed-insights` version ^2.0.0 to dependencies
- Used npm (the project's package manager) to install the package
- Updated package-lock.json to reflect the new dependency

### 3. Integrated SpeedInsights Component
- Modified `src/App.jsx` to import the SpeedInsights component from `@vercel/speed-insights/react`
- Added the `<SpeedInsights />` component to both render paths in the App component:
  - Privacy page route
  - Main application route
- Placed the component alongside the existing `<Analytics />` component for consistency

### 4. Verified Implementation
- Successfully built the project using `npm run build`
- Build completed without errors in 1.51s
- Generated optimized production assets in the `dist/` directory
- No linter configured in the project (no lint script available)
- No tests configured in the project (no test script available)

## Files Modified

- **src/App.jsx** - Added SpeedInsights import and component instances
- **package.json** - Added @vercel/speed-insights dependency
- **package-lock.json** - Updated with new dependency resolution

## Implementation Details

The SpeedInsights component was added following the official Vercel documentation for React projects. It works similarly to the existing Analytics component and will:
- Track Core Web Vitals metrics (LCP, FID, CLS, etc.)
- Report performance data to Vercel's Speed Insights dashboard
- Work automatically once deployed to Vercel

The component is lightweight and only loads when needed, ensuring minimal impact on page performance.

## Next Steps

To enable Speed Insights in production:
1. Deploy the changes to Vercel
2. Navigate to the Speed Insights section in the Vercel project dashboard
3. Click "Enable" if prompted
4. Wait for deployment to complete and data to start collecting

The Speed Insights data will begin appearing in the Vercel dashboard after the first page views in production.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
…hts-dskzdt

Install Vercel Speed Insights
Regenerated by build-media.mjs after replacing the 2 placeholder
benchmark clips with the real benchmark + simulation showcase set on
the OpenRAL/website-media HF dataset. Without this commit Vercel builds
the stale 2-clip manifest, whose assets were deleted from the dataset.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CE73PjmTtLLdSfEk19nzGC
Compose each deploy run's sim view and dashboard view into one
equal-height side-by-side clip, encoded into the deployment category.
build-media.mjs now letterboxes deployment previews into the 640px
square (the wide composite would otherwise be center-cropped to the
seam). Manifest grows to 25 clips (19 benchmark + 4 sim + 2 deploy).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CE73PjmTtLLdSfEk19nzGC
navigatekitchen_nav2_success -> robocasa-navigation_ros2-nav_success
openarm_charger_fail -> tabletop-charger_openarm_fail

Old-named dataset dirs deleted on HF; manifest regenerated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CE73PjmTtLLdSfEk19nzGC
See it run:
- Every tab's marquee now scrolls right-to-left. Previously alternate
  tabs (e.g. Simulation) reversed direction via data-reverse; that
  alternation is removed so all clips move the same way.
- The click-to-expand modal now sizes the dialog to each clip's real
  aspect ratio (read from loadedmetadata). Wide deployment composites
  (sim + dashboard side-by-side) open at full width instead of being
  squeezed into a square-ish box, so they play at genuine high res.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HMtLer5QRMnAYX9DYYW6Y1
…-jmf3fn

fix(showcase): uniform right-to-left scroll + hi-res deployment modal
@AdrianLlopart
AdrianLlopart merged commit 61766a4 into main Jun 20, 2026
2 checks passed
@vercel

vercel Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
website Ready Ready Preview, Comment Jun 20, 2026 8:16am

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