Skip to content

FPV viewer: post clarifications, restyled figures, and viewer fixes (consolidated)#83

Merged
itamarwe merged 9 commits into
masterfrom
claude/fpv-viewer-consolidated-yvwp30
Jul 5, 2026
Merged

FPV viewer: post clarifications, restyled figures, and viewer fixes (consolidated)#83
itamarwe merged 9 commits into
masterfrom
claude/fpv-viewer-consolidated-yvwp30

Conversation

@itamarwe

@itamarwe itamarwe commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Consolidates the still-open tail of the FPV chain (#79 and #81) into one PR against master, so there's a single thing to review/merge instead of a multi-hop chain. master already has #78 (the initial viewer embed), and #80/#82 are already merged into the now-superseded claude/blog-post-clarifications-yvwp30 branch — all of that content is included here too, rebased cleanly onto current master (verified the trees were identical before replaying).

Once this merges, #79 and #81 can be closed (their content is fully included here) and their branches deleted.

Post content (previously #79)

  • Annotations reframed around extracting the flight segments — the propaganda framing is removed entirely (post + figure docstring).
  • Intro simplified — no S3/manifest/technical details; the viewer is framed as making the dataset accessible to the community.
  • Honest caveats: some annotations are auto-generated and not yet manually reviewed; not every clip has a 3-D scene, some existing reconstructions are rough, and both will be gradually improved.
  • Reconstruction pipeline walkthrough (new figure scene_pipeline.png): raw clip → extract flight → enhance frames → select the attack run → recover camera path + point cloud.
  • Scale-ambiguity explainer (new figure scale_ambiguity.png): why a monocular reconstruction can't know its own real-world scale, and what anchors it.
  • "Explore the strike" framing (was "Fly"/"Debrief") throughout, tied to the pipeline and challenges.
  • Restyled breakdown figures (annotated_clip.png, footage_breakdown.png): rounded segments with gaps, narrative callouts, a flight-vs-edit bracket, full value labeling — all still computed from the real dataset snapshot.
  • tool_flow.png's 3-D panel now uses a real screenshot of the scene viewer instead of an illustrative point cloud.

Viewer fixes (previously #80/#81/#82, all patches to the built bundle — durable fix belongs upstream in fpv-drone-strikes-lebanon-dataset)

  • Removed the scene viewer's measure button (caused horizontal overflow; no size-reference dialog when selecting points) and its non-functional fullscreen button.
  • Gallery search autofill fully suppressed: autocomplete="off", autocorrect="off", spellcheck="false", and name="site-search-query" (a long, specific name so iOS doesn't misclassify the field).
  • Video page: the <video> now has poster={thumbnailUrl} and a centered play-button overlay, replacing the black screen that showed before playback started.

Verified headlessly (served public/ and rendered with headless Chromium) that all four fixes hold together in this rebased branch: the search input carries name="site-search-query" + the autofill attributes, the video page's DOM shows the poster URL and play overlay, and the scene page has no measure-btn/fullscreen-btn markup.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT


Generated by Claude Code

claude added 9 commits July 5, 2026 19:57
…onest caveats

- Reframe the annotation section around extracting the flight segments;
  drop the propaganda framing entirely (post + figure docstring).
- Simplify the intro: the viewer exists to make the dataset accessible
  to the community, without the storage/technical details.
- Add caveats: some annotations are auto-generated and not yet manually
  reviewed; not all 3-D scenes are extracted yet and some are rough —
  both will be gradually added and improved.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT
- Restyle the two breakdown charts (annotated-clip timeline + footage
  breakdown): rounded segments with gaps on isotropic inch-based axes,
  narrative callouts (banner / freeze at impact / replay), a signal-vs-
  edit bracket, and a value row that labels every segment type including
  the slivers that previously overflowed or went unlabeled.
- Merge consecutive same-type segment markers so spans measure correctly
  (fixes a doubled banner_start reading as a 0-second banner).
- Lighten the pause/freeze color to #5b6675 for >=3:1 contrast on black
  (checked with a palette validator).
- tool_flow: replace the illustrative point-cloud glyph with a real
  screenshot of the Biranit scene viewer, retitle the panel 'Debrief the
  strike'.
- Reframe 'fly the strike' language around debriefing: new section title,
  intro wording, and a paragraph on replaying and learning from a strike
  after the fact.

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

- New paragraph + schematic (scene_pipeline.png) walking the reconstruction
  pipeline: raw clip -> annotations extract the flight -> enhance/equalize
  frames -> select the attack run -> model recovers camera path + point cloud.
- Expand the 3-D caveats into an upfront challenges paragraph: compressed
  source footage yields noisy geometry, the model sometimes maps the sky
  (stray-point haze), smoke around impact, and unreviewed auto annotations
  propagating downstream.
- Rename 'Debrief the strike' to 'Explore the strike' in the section title,
  body copy, alt text, and the tool_flow panel.
- research README: document the new figure, the real capture in tool_flow,
  and the pillow dependency.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT
- Challenges: add that the reconstruction is scale-ambiguous — a small
  near object and a large far one project to the same pixels, so the
  model recovers shape but not size. Anchoring one known real-world
  size in the 3-D scene scales the whole model and makes heights,
  distances and speeds real.
- New concept figure scale_ambiguity.png (view cone, two houses filling
  the same view, known-size door annotation); documented in the script
  docstring and research README.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT
The measure button caused horizontal overflow and had no size-reference
dialog when selecting points; the fullscreen button didn't work. Both
React elements are replaced with null in the built SceneView chunk
(surgical patch of the bundled app; the real removal belongs upstream in
fpv-drone-strikes-lebanon-dataset when the viewer is next rebuilt).
Verified headlessly: gallery and scene routes render with no JS errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT
The post and the tool_flow panel described the measure tool as live;
with the button removed for now, describe it as held back until scenes
are anchored to real-world scale (which ties into the scale-ambiguity
challenge already in the post).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT
The search input had no autocomplete attribute, so browsers offered
their autofill/history dropdown over it. Adds autocomplete=off (plus
autocorrect=off / spellcheck=false) to the input in the built bundle;
verified in the rendered DOM headlessly. Upstream fix belongs in
fpv-drone-strikes-lebanon-dataset alongside the button removals.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT
…k screen

The <video> element had no poster attribute, so before metadata loaded
(or if playback never started) the player was just a black box. Wraps
the video in a .video-stage container, sets poster=thumbnailUrl (same
field the gallery cards already use), and adds a centered play-button
overlay (reusing the existing play/pause handler) that's shown only
while paused and disappears once playback starts.

Verified headlessly: rendered DOM shows the poster attribute pointing
at the real CDN thumbnail and the overlay button positioned over the
video; JS passes node --check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVLz2Gms21jzv8S6NE1XaT
autocomplete=off alone wasn't enough — with no name attribute, iOS/Chrome
fall back to heuristics on the placeholder/aria-label text and still
offer autofill. Adds name="site-search-query" (long and specific, per
Apple's own guidance, so it isn't mistaken for a contact-form field like
name="q" would be). Verified in the rendered DOM headlessly.

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

vercel Bot commented Jul 5, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
itamarwe-github-io Ready Ready Preview, Comment Jul 5, 2026 8:00pm

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