Skip to content

feat(media): set the volume from a panel over the mute button - #279

Merged
vite-hub[bot] merged 4 commits into
mainfrom
feat/media-volume
Oct 30, 2026
Merged

vite-hub[bot] merged 4 commits into
mainfrom
feat/media-volume

Conversation

@onmax

@onmax onmax commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

The player only had a mute button, so a reader couldn't set how loud it plays. This adds a vertical volume slider in a small panel above the mute button.

Audio Video
Volume panel open over an audio player's mute button Volume panel open over a video player's mute button, dark

How it shows

  • Where: the panel floats centered above the mute button, with a vertical slider (writing-mode: vertical-lr, silent at the bottom), like YouTube's and Netflix's. The seek bar keeps its width, so nothing in the bar moves. Over a video, the panel takes about 10rem of height from the bottom edge, so a video shorter than about 160px clips its top.
  • When: it opens while the pointer is over the button or the panel, while the slider is being dragged, and when keyboard focus (:focus-visible) reaches the button. A mouse click on mute doesn't leave it open. A transparent strip covers the gap between the button and the panel, so the pointer can cross it without the panel closing.
  • Motion: opacity plus scale .96 → 1 from its bottom edge, next to the button, 150ms cubic-bezier(.32,.72,0,1). It closes faster (100ms ease-in). It's a CSS transition, so it can reverse partway through. With prefers-reduced-motion there's no transition.
  • Touch: no panel on (hover:none) or (pointer:coarse). Phones set the volume with their own buttons, and iOS ignores media.volume.

How it behaves

  • ArrowUp and ArrowDown move it in 5% steps; Home and End go to silent and full. It reads as "95%".
  • Turning it to 0 mutes the player, and dragging it up from a muted player unmutes it. A muted player's slider shows 0.
  • If the volume is at 0, Unmute plays at full volume. Otherwise the button would do nothing.

Checks

  • vp test run packages/media: 14 passed, including a new markup assertion.
  • playwright test e2e/media.e2e.ts: 9 passed in Chromium, and the volume test passed in Firefox (--browser=firefox). WebKit doesn't launch on this machine, so Safari's vertical slider and thumb offset are unchecked. A new test covers hover, crossing the gap, clicking to zero, Unmute from zero, and the Tab path. The touch test now also checks that the panel is gone.
  • I did not run the full pnpm ready locally; CI runs it.

@vite-hub

vite-hub Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor
Session Status Started Duration
Pending Completed Not started —
View session Last seen running 2026-10-30T12:15:23.035Z 1s

Latest result

Pull request merged.

Final answers

Session

Pull request merged.

Session

Waiting for GitHub merge request cb806f1b-834c-47c4-9a20-e6cb3c0ff973.

Session

Pushed a44802a, resolving the merge conflict while preserving the volume panel and typeset video fixes. Pullfrog’s reverse-navigation and Codex’s short-video findings remain fixed; both threads are resolved. Media `vp test run test`: 14 passed. Focused Playwright: 4 passed. Focused lint, formatting, and `git diff --check` passed. Awaiting hosted checks.

Session

Pushed a44802a, resolving the merge conflict while preserving the volume panel and typeset video fixes. Pullfrog’s reverse-navigation and Codex’s short-video findings remain fixed; both threads are resolved. Media `vp test run test`: 14 passed. Focused Playwright: 4 passed. Focused lint, formatting, and `git diff --check` passed. Awaiting hosted checks.

Session

Pushed a44802a, resolving the merge conflict while preserving the volume panel and typeset video fixes. Pullfrog’s reverse-navigation and Codex’s short-video findings remain fixed; both threads are resolved. Media `vp test run test`: 14 passed. Focused Playwright: 4 passed. Focused lint, formatting, and `git diff --check` passed. Awaiting hosted checks.

Session

Pushed a44802a, resolving the merge conflict while preserving the volume panel and typeset video fixes. Pullfrog’s reverse-navigation and Codex’s short-video findings remain fixed; both threads are resolved. Media `vp test run test`: 14 passed. Focused Playwright: 4 passed. Focused lint, formatting, and `git diff --check` passed. Awaiting hosted checks.

Session

Pushed a44802a, resolving the merge conflict while preserving the volume panel and typeset video fixes. Pullfrog’s reverse-navigation and Codex’s short-video findings remain fixed; both threads are resolved. Media `vp test run test`: 14 passed. Focused Playwright: 4 passed. Focused lint, formatting, and `git diff --check` passed. Awaiting hosted checks.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T11:49:52.478140Z 92ca9c9 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

Reverse keyboard navigation skips the new volume control, so this accessibility regression should be fixed before merging.

Reviewed changes Checked the new media volume panel across its generated markup, runtime synchronization, responsive styling, documentation, and browser/package test coverage.

  • Volume control markup Adds a range input in a floating panel grouped with the mute button for audio and video players.
  • Media synchronization Mirrors volume and muted into the slider, accessibility text, icon state, and data-muted, including zero-volume unmute behavior.
  • Responsive interaction Opens the panel for pointer and keyboard focus, suppresses it on coarse/no-hover devices, and handles RTL and reduced motion.
  • Coverage and documentation Describes the interaction and tests pointer use, forward tabbing, volume updates, and touch suppression.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using gpt-5.6-sol | 𝕏

Comment thread packages/media/src/styles.ts Resolved

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 92ca9c924c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/media/src/styles.ts Resolved
@pkg-pr-new

pkg-pr-new Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

comark-annotate

pnpm add https://pkg.pr.new/comark-annotate@279

comark-badge

pnpm add https://pkg.pr.new/comark-badge@279

comark-cards

pnpm add https://pkg.pr.new/comark-cards@279

comark-carousel

pnpm add https://pkg.pr.new/comark-carousel@279

comark-cast

pnpm add https://pkg.pr.new/comark-cast@279

comark-charts

pnpm add https://pkg.pr.new/comark-charts@279

comark-chat

pnpm add https://pkg.pr.new/comark-chat@279

comark-chips

pnpm add https://pkg.pr.new/comark-chips@279

comark-cjk

pnpm add https://pkg.pr.new/comark-cjk@279

comark-code

pnpm add https://pkg.pr.new/comark-code@279

comark-code-notes

pnpm add https://pkg.pr.new/comark-code-notes@279

comark-colors

pnpm add https://pkg.pr.new/comark-colors@279

comark-comments

pnpm add https://pkg.pr.new/comark-comments@279

comark-critic

pnpm add https://pkg.pr.new/comark-critic@279

comark-deflist

pnpm add https://pkg.pr.new/comark-deflist@279

comark-details

pnpm add https://pkg.pr.new/comark-details@279

comark-diagrams

pnpm add https://pkg.pr.new/comark-diagrams@279

comark-diff

pnpm add https://pkg.pr.new/comark-diff@279

comark-embed

pnpm add https://pkg.pr.new/comark-embed@279

comark-fields

pnpm add https://pkg.pr.new/comark-fields@279

comark-figure

pnpm add https://pkg.pr.new/comark-figure@279

comark-file-tree

pnpm add https://pkg.pr.new/comark-file-tree@279

comark-footnotes

pnpm add https://pkg.pr.new/comark-footnotes@279

comark-github

pnpm add https://pkg.pr.new/comark-github@279

comark-icon

pnpm add https://pkg.pr.new/comark-icon@279

comark-include

pnpm add https://pkg.pr.new/comark-include@279

comark-keys

pnpm add https://pkg.pr.new/comark-keys@279

comark-links

pnpm add https://pkg.pr.new/comark-links@279

comark-linter

pnpm add https://pkg.pr.new/comark-linter@279

comark-magic-move

pnpm add https://pkg.pr.new/comark-magic-move@279

comark-mark

pnpm add https://pkg.pr.new/comark-mark@279

comark-mathml

pnpm add https://pkg.pr.new/comark-mathml@279

comark-media

pnpm add https://pkg.pr.new/comark-media@279

comark-metrics

pnpm add https://pkg.pr.new/comark-metrics@279

comark-outline

pnpm add https://pkg.pr.new/comark-outline@279

comark-properties

pnpm add https://pkg.pr.new/comark-properties@279

comark-qr

pnpm add https://pkg.pr.new/comark-qr@279

comark-quiz

pnpm add https://pkg.pr.new/comark-quiz@279

comark-reading-time

pnpm add https://pkg.pr.new/comark-reading-time@279

comark-sources

pnpm add https://pkg.pr.new/comark-sources@279

comark-steps

pnpm add https://pkg.pr.new/comark-steps@279

comark-table

pnpm add https://pkg.pr.new/comark-table@279

comark-tabs

pnpm add https://pkg.pr.new/comark-tabs@279

comark-tests

pnpm add https://pkg.pr.new/comark-tests@279

comark-ui

pnpm add https://pkg.pr.new/comark-ui@279

comark-xref

pnpm add https://pkg.pr.new/comark-xref@279

comark-zoom

pnpm add https://pkg.pr.new/comark-zoom@279

commit: a44802a

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No new issues found in this increment; the existing review disposition is unchanged.

Reviewed changes Checked the vertical-slider update since the prior Pullfrog review.

  • Reoriented volume control Centered the panel above Mute and changed the range to a bottom-to-top vertical slider.
  • Adjusted browser styling Added engine-specific vertical track dimensions and WebKit thumb alignment.
  • Updated interaction coverage Changed the pointer path and keyboard assertion to exercise the vertical control.

Pullfrog  | Fix it ➔ | View workflow run | Using gpt-5.6-sol | 𝕏

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes Checked the keyboard-accessibility and short-video fixes added since the prior Pullfrog review.

  • Restored reverse navigation Kept the volume slider in sequential focus order while visually closed and added Shift+Tab coverage for both video and audio controls.
  • Exposed the full vertical range Allowed the volume panel to extend above short videos while preserving rounded video corners, with coverage for reaching the full-volume endpoint.
  • Preserved closed-panel interaction Disabled pointer events while the opacity-hidden panel is closed and updated pointer assertions around the vertical layout.

Pullfrog  | View workflow run | Using gpt-5.6-sol | 𝕏

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes Checked the merge reconciliation added since the prior Pullfrog review.

  • Preserved the typeset layout fix Kept margin:0 on the wrapped video so page typography cannot push it down and crop its bottom edge.
  • Preserved the volume overflow fix Retained the inherited video radius and unclipped wrapper so the vertical volume panel remains reachable above short frames.
  • Kept both regressions covered Confirmed the existing typeset flush-frame test and short-video full-volume test exercise the merged behaviors.

Pullfrog  | View workflow run | Using gpt-5.6-sol | 𝕏

@vite-hub
vite-hub Bot merged commit d47f458 into main Oct 30, 2026
5 checks passed
@vite-hub
vite-hub Bot deleted the feat/media-volume branch October 30, 2026 12:28
@github-actions github-actions Bot mentioned this pull request Oct 30, 2026
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