Skip to content

feat(deck): real robot photographs replace all three placeholder slates (deck-real-photos) - #29

Merged
OriNachum merged 1 commit into
mainfrom
deck-real-photos
Jul 22, 2026
Merged

feat(deck): real robot photographs replace all three placeholder slates (deck-real-photos)#29
OriNachum merged 1 commit into
mainfrom
deck-real-photos

Conversation

@OriNachum

Copy link
Copy Markdown
Contributor

Real robot photographs replace all three placeholder slates. The drop-in
contract held exactly as designed — the photos were converted to WebP at the
manifest's existing pixel targets and saved over the same filenames, so no
src, thumbSrc, or dimension changed.

Slot assignment

By what each frame actually shows, not by the source filenames:

Slot Photo Crop
reachy-mini-hero Reachy Mini table portrait, facing the lens, antennas rising out of frame, blurred marble fireplace behind 4:3 → 16:9, 1920×1080
reachy-mini-action Reachy Mini close-up mid-gesture, head tilted up and back on its jointed neck, warm blurred interior already ~3:2 → 1800×1200
so101-hero SO-ARM101 raised and reaching in side profile, gripper open, LeRobot sticker visible 4:3 → 16:9, 1920×1080

A fourth candidate (a desk scene with a laptop and a person's hands) went
unused: at 1003×564 it is well below the action slot's 1800×1200 target and
would look soft projected.

Alt text rewritten — not cosmetic

The previous alt text described intended shots and is factually wrong about
these frames. It claimed "a single camera eye" (Reachy has two lenses),
"a person's hand beside it for scale" (no hand is in the action frame), and
the arm "at rest … folded into the home pose" (it is extended and
reaching). A screen-reader user is told what the alt says, so it has to match
the photograph that ships. Each slot's subject and the shot-brief doc are
updated the same way, and both drop the placeholder framing.

Verification

20/20 node tests, astro build clean, 23/23 presentation checks, 56 pytest,
markdownlint clean. Slide 4, the close cards (dark theme), and the Presentations
index thumbs screenshot-reviewed. File sizes stay in the documented band:
39–98 KB full, 6–11 KB thumbs. Version 0.18.0 → 0.18.1.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FqTq59W6wi1YZqxGf228Tt

  • org (Claude)

@OriNachum

Copy link
Copy Markdown
Contributor Author

/agentic_review

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Replace presentation deck placeholders with real robot photos

✨ Enhancement 📝 Documentation ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

AI Description

• Replace three presentation deck placeholder slates with real robot WebP photographs.
• Rewrite per-slot subject and alt text to match the shipped frames for accessibility.
• Bump version to 0.18.1 and document the change in the changelog.
Diagram

graph TD
  A["Deck slides"] --> B["presentation-photos.ts"] --> C[("WebP photos")]
  D["presentation-photos.md"] --> B
  E["Version + changelog"] --> B
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Build-time image pipeline (generate thumbs + validate constraints)
  • ➕ Removes manual thumbnail/export steps; fewer opportunities for mismatched sizes/aspect ratios
  • ➕ Can enforce file size/dimension budgets in CI to protect performance
  • ➖ Adds build complexity/dependencies (e.g., sharp) and can slow builds
  • ➖ More invasive than the current “drop-in replacement” contract
2. Hashed/unique filenames with manifest updates (cache-busting)
  • ➕ Ensures clients always fetch updated images without relying on cache invalidation
  • ➖ Breaks the drop-in contract (would require code updates on every re-shoot)
  • ➖ More churn across the deck + docs for a simple asset refresh

Recommendation: The current approach (drop-in replacement at stable filenames/dimensions) is the right tradeoff for this deck: it keeps code references stable while allowing re-shoots. If image swaps become frequent or reviewers keep needing to manually verify constraints, consider adding lightweight CI checks (dimensions/size budget) or a build-time thumbnail generator later.

Files changed (11) +50 / -41 · 6 not counted

Enhancement (7) +15 / -15
reachy-mini-action-thumb.webpReplace Reachy Mini action thumbnail with real photo thumb not counted

Replace Reachy Mini action thumbnail with real photo thumb

• Overwrites the existing thumbnail asset with a new WebP derived from the real Reachy Mini action photograph, keeping the same filename contract.

site-astro/public/presentations/reachy-mini-action-thumb.webp

reachy-mini-action.webpReplace Reachy Mini action full-size image with real photo not counted

Replace Reachy Mini action full-size image with real photo

• Overwrites the existing full-size asset with a new WebP of the real Reachy Mini action frame, preserving the manifest’s expected path and pixel target.

site-astro/public/presentations/reachy-mini-action.webp

reachy-mini-hero-thumb.webpReplace Reachy Mini hero thumbnail with real photo thumb not counted

Replace Reachy Mini hero thumbnail with real photo thumb

• Overwrites the existing thumbnail asset with a WebP thumbnail of the real Reachy Mini hero photograph, keeping the same public path.

site-astro/public/presentations/reachy-mini-hero-thumb.webp

reachy-mini-hero.webpReplace Reachy Mini hero full-size image with real photo not counted

Replace Reachy Mini hero full-size image with real photo

• Overwrites the existing full-size hero asset with a WebP derived from the real Reachy Mini portrait, maintaining the stable filename/dimension contract.

site-astro/public/presentations/reachy-mini-hero.webp

so101-hero-thumb.webpReplace SO-ARM101 hero thumbnail with real photo thumb not counted

Replace SO-ARM101 hero thumbnail with real photo thumb

• Overwrites the existing thumbnail asset with a new WebP thumbnail of the SO-ARM101 hero photograph, preserving the expected filename.

site-astro/public/presentations/so101-hero-thumb.webp

so101-hero.webpReplace SO-ARM101 hero full-size image with real photo not counted

Replace SO-ARM101 hero full-size image with real photo

• Overwrites the existing full-size hero asset with a WebP derived from the real SO-ARM101 reaching frame, keeping the same path and target dimensions.

site-astro/public/presentations/so101-hero.webp

presentation-photos.tsRewrite photo manifest text (subject + alt) for shipped frames +15/-15

Rewrite photo manifest text (subject + alt) for shipped frames

• Updates module-level documentation to reflect that the repo now contains real photos rather than placeholders. Rewrites each slot’s 'subject' and alt text to accurately describe the new photographs while keeping src/thumb paths and dimension targets unchanged.

site-astro/src/data/presentation-photos.ts

Documentation (2) +33 / -24
CHANGELOG.mdAdd 0.18.1 entry describing deck photo replacement +6/-0

Add 0.18.1 entry describing deck photo replacement

• Adds a 0.18.1 release entry documenting the swap from placeholder slates to real robot photographs. Notes that filenames/dimensions stayed stable and that alt/subject text was rewritten to match the shipped frames.

CHANGELOG.md

presentation-photos.mdUpdate shot brief to reflect real photos and new alt-text guidance +27/-24

Update shot brief to reflect real photos and new alt-text guidance

• Rewrites the slot table and alt-text table to describe the actual photographs now shipping. Updates replacement instructions to emphasize revisiting 'subject'/alt on re-shoots and refreshes the documented file-size ranges.

docs/presentation-photos.md

Other (2) +2 / -2
pyproject.tomlBump project version to 0.18.1 +1/-1

Bump project version to 0.18.1

• Updates the project version from 0.18.0 to 0.18.1 to reflect the deck photo refresh release.

pyproject.toml

uv.lockUpdate lockfile version to 0.18.1 +1/-1

Update lockfile version to 0.18.1

• Updates the editable project package version in uv.lock to match the 0.18.1 release bump.

uv.lock

The drop-in contract held exactly as designed: three real photographs
converted to WebP at the manifest's existing pixel targets and saved
over the same filenames, so no `src`, `thumbSrc`, or dimension changed.

Slot assignment follows what each frame actually shows, not the source
filenames:
- reachy-mini-hero  <- a Reachy Mini table portrait facing the lens,
  antennas rising out of frame, blurred marble fireplace behind
  (cropped 4:3 -> 16:9, 1920x1080)
- reachy-mini-action <- a Reachy Mini close-up mid-gesture, head tilted
  up and back on its jointed neck (already ~3:2, 1800x1200)
- so101-hero <- the SO-ARM101 raised and reaching in side profile,
  gripper open (cropped 4:3 -> 16:9, 1920x1080)

Alt text and `subject` are rewritten per slot. This is not cosmetic:
the previous text described *intended* shots and is now factually wrong
about these frames — it claimed "a single camera eye" (Reachy has two
lenses), "a person's hand beside it for scale" (no hand is in the
action frame), and the arm "at rest ... folded into the home pose" (it
is extended and reaching). A screen-reader user is told what the alt
says, so it has to match the photograph that ships. Module and doc
prose likewise drop the placeholder framing.

A fourth candidate (a desk scene with a laptop and hands) went unused:
at 1003x564 it is below the action slot's 1800x1200 target and would
be soft projected.

Verified: 20/20 node tests, astro build clean, 23/23 presentation
checks, 56 pytest, markdownlint clean; slide 4, the close cards, and
the index thumbs screenshot-reviewed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FqTq59W6wi1YZqxGf228Tt
@sonarqubecloud

Copy link
Copy Markdown

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Qodo Logo

@OriNachum
OriNachum merged commit 4b6f035 into main Jul 22, 2026
7 checks passed
@OriNachum
OriNachum deleted the deck-real-photos branch July 22, 2026 16:52
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