testimonials 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c80625525a966ca2c3b5000a484ce06e6cb7068a957aa4ae715dbe8dda2670f
4
- data.tar.gz: 79f65cc1e5bee6db4f3ab5269aa41eed082fd244fcf8d84404322118020aa502
3
+ metadata.gz: ca7fa3a534c13036edc28e6206c06b5e4ef82949cafaeee614a2d196509c2176
4
+ data.tar.gz: 140a7b0783d3284076def56a598a0c70bb72f1208b2a6158b62c09d634eeaeb2
5
5
  SHA512:
6
- metadata.gz: 67cf4cad0a6123f44dbb91fd08b77cf29648777d8312e895758ba3891fb5476f9ed2c82a84956c23261f17f0ee3fc22f0373276664e7ecf769a724581d9d6ff5
7
- data.tar.gz: 2407c9a00e87e009d0cd3447259e75987396e4663bbd19fee8e87a6ba8d9c02ee7e883a59a144a76ce362355c091c7020a081b0f703c6989009dc01cbd46b3e1
6
+ metadata.gz: 6eebe2d3c06afff74b999f4a8a29120a97d3a2e78eeb0ff1429df26bf14a9303c66861665489fdb10104c9f7557bca3ad140f466ddb4a4b2a2116d465c3bc302
7
+ data.tar.gz: 343195af39cd476f4a74728ab5e11997efa834806c7213aa3ab3b61bba933a6f2d89ccb6d255a9463b9089f9a4ebba5af078ff968db4b2adfff1fe1c6ad97cb3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.3
4
+
5
+ - Video playback no longer pauses itself moments after play in Firefox: the
6
+ `#t=0.1` poster-frame fragment made Firefox seek a MediaRecorder webm that
7
+ has no seek index, stalling the stream. The fragment is gone (widget and
8
+ dashboard); `preload="metadata"` still paints the first frame in Chrome
9
+ and Firefox.
10
+
11
+ ## 0.1.2
12
+
13
+ - The widget dialog goes full-screen on mobile (no bottom sheet, no animations):
14
+ inputs render at 16px to prevent iOS focus-zoom, the action row gains
15
+ safe-area padding, and the dialog's scroll is contained (no page rubber-banding).
16
+
3
17
  ## 0.1.1
4
18
 
5
19
  - Repository renamed to [yshmarov/testimonials](https://github.com/yshmarov/testimonials);
@@ -17,9 +17,11 @@
17
17
 
18
18
  <div class="card pad" style="margin-bottom: 16px;">
19
19
  <% if @testimonial.video_attached? %>
20
- <%# #t=0.1 makes the browser paint that frame as the thumbnail. %>
20
+ <%# No #t=0.1 fragment: MediaRecorder webm has no seek index, and
21
+ Firefox honors media fragments literally — the pending seek stalls
22
+ playback right after play. preload="metadata" paints the frame. %>
21
23
  <video class="playback" controls preload="metadata"
22
- src="<%= testimonial_video_path(@testimonial) %>#t=0.1"></video>
24
+ src="<%= testimonial_video_path(@testimonial) %>"></video>
23
25
  <p class="muted">
24
26
  <%= link_to "⬇ #{t('testimonials.dashboard.download_video', default: 'Download video')}",
25
27
  testimonial_video_path(@testimonial, download: 1) %>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Testimonials
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.3'
5
5
  end
@@ -390,7 +390,13 @@
390
390
  playback.controls = true;
391
391
  playback.playsInline = true;
392
392
  playback.preload = "metadata";
393
- playback.src = state.existingVideoUrl + "#t=0.1";
393
+ // No #t=0.1 fragment here either (see the review-stage comment):
394
+ // MediaRecorder webm has no seek index, and Firefox honors the
395
+ // fragment literally — the pending seek stalls playback a moment
396
+ // after play. preload="metadata" already paints the first frame in
397
+ // Chrome and Firefox; iOS shows the controls on a blank frame, which
398
+ // beats a player that pauses itself.
399
+ playback.src = state.existingVideoUrl;
394
400
  wrap.appendChild(playback);
395
401
  wrap.appendChild(attachedVideoChip(form, wrap, playback, function () {
396
402
  state.removeExistingVideo = true;
@@ -1035,6 +1041,22 @@
1035
1041
  ".tml-record-label,.tml-chip-remove{color:#3b82f6}",
1036
1042
  ".tml-chip{background:rgba(59,130,246,.12)}",
1037
1043
  ".tml-hint,.tml-nps-legend,.tml-record-hint{color:#9aa2ab}",
1044
+ "}",
1045
+ // The dialog is the scrollable region; keep its scroll from chaining
1046
+ // into the host page (rubber-banding through the backdrop on touch).
1047
+ "#tml-dialog{overscroll-behavior:contain}",
1048
+ // Full-screen on mobile — no bottom sheet, no animation. Placed last,
1049
+ // with selectors at least as specific as the desktop rules above, so
1050
+ // these declarations win the cascade at equal specificity.
1051
+ "@media (max-width:480px){",
1052
+ "#tml-overlay{padding:0;align-items:stretch;justify-content:stretch}",
1053
+ "#tml-dialog{left:0;right:0;top:0;bottom:0;width:100%;max-width:none;",
1054
+ "height:100vh;height:100dvh;max-height:100dvh;border-radius:0;margin:0}",
1055
+ // 16px stops iOS Safari's auto-zoom when a field gets focus.
1056
+ "#tml-dialog textarea,#tml-dialog input[type=text],#tml-dialog input[type=email],#tml-dialog select{font-size:16px}",
1057
+ // The action row has no padding of its own; give it the home-indicator
1058
+ // safe area so Submit/Cancel never sit under the bar.
1059
+ "#tml-dialog .tml-actions{padding-bottom:calc(0px + env(safe-area-inset-bottom))}",
1038
1060
  "}"
1039
1061
  ].join("");
1040
1062
  var style = document.createElement("style");
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testimonials
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yaroslav Shmarov