Recorded the demos at a 10:6 screen ratio and sized the home page to them. - #3056
Conversation
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 4 minutes Limit details: You’ve used all 2 included reviews currently available. Your 80 included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour. You’re in a promotional period — use the checkbox below to run this review for free:
On-demand reviews are free for the next 31 days. After that, they cost $0.25 per reviewed file. How can I continue?Run this review now using the option above, or comment You can also wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (18)
📒 Files selected for processing (16)
Comment |
This comment has been minimized.
This comment has been minimized.
2 similar comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3056 +/- ##
==========================================
- Coverage 87.06% 86.65% -0.41%
==========================================
Files 106 99 -7
Lines 4970 4811 -159
Branches 47 3 -44
==========================================
- Hits 4327 4169 -158
+ Misses 643 642 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
f0898e2 to
a01cb57
Compare
|
Code coverage (threshold: 90%) Per-class coverage |
This comment has been minimized.
This comment has been minimized.
2 similar comments
This comment has been minimized.
This comment has been minimized.
|
Code coverage (threshold: 90%) Per-class coverage |
|
📖 Documentation preview for this pull request has been deployed to Netlify: https://6a8792c58605cb4cd11aa9a3--vortex-docs.netlify.app This preview is rebuilt on every commit and is not the production documentation site. |
Summary
The recorded terminal demos were 80x42, which renders almost square at an aspect of 1.04. The home page was built for a 140-column demo it no longer had: the hero tile hardcoded
aspect-ratio: 1280 / 705withobject-fit: cover, so an 80-column asset was silently centre-cropped by about 43%, and the dialog rendered the full 42-row terminal at 903px inside a 511px scrollable box. The same recording was therefore framed two different ways, which is what made the hero and the dialog look like two different videos.All nine demos are re-recorded at 80x27, a 16:10 shape matching a MacBook screen, and the home page is sized to them.
The rows are no longer configured by hand.
VideoRecorder::rowsForAspect()derives them from the columns and a wanted aspect, so each video declares only its column count andASPECT_RATIO = 2560 / 1600is stated once. A recording can no longer end up an arbitrary shape because one of a pair of numbers was edited without the other.The recording pipeline itself is unchanged: timings, values and pacing are exactly what the commands produced.
Changes
Recording shape
VideoRecorder::rowsForAspect(int $cols, float $aspect)solvescols / (rows * FONT_SIZE * LINE_HEIGHT)for the rows, and refuses a non-positive width or aspect.VIDEOSentries drop theirrowskey and keep onlycols; the rows are computed at record time.svg-term-render.jsgains a--font-sizeflag, so PHP owns the cell metric the calculation depends on rather than the formula relying on a value hardcoded in the renderer. Verified behaviour-neutral: rendering an existing cast with the flag produced byte-identical output.Home page
.pngposter rather than the animated.svg. It also fixes the animated SVG continuing to play behind the dialog, which nothing could pause.fit="width"and derives its own height, and the dialog takes it. That is what makes it hug exactly, because the player's rendered ratio drifts with size - measured at 1.475, 1.513 and 1.534 - as its font size rounds to whole pixels, so no fixed ratio hugs at every size.Production-grade Drupal, since 2017hero badge is removed, markup and CSS. The sharedvtx-pulsekeyframes stay, since the tile's live dot uses them.AsciinemaPlayerforwards afitoption, with test coverage.Verification
Measured in a browser at three viewports after the change. The dialog hugs the player exactly at each - zero horizontal and vertical gap - and stays within the viewport:
196 Jest tests pass; eslint, prettier and cspell are clean; the docs build is clean.
Screenshots
Before / After