Repository navigation
Spec up front: Watch on sets the text-size floor; 4K is a render setting - #47
Merged
Merged
Conversation
The 44 px floor was written for 1080 wide. On-screen size depends on the text's share of the frame and where the film is watched, not on resolution, so the floor is tiered by a new BRIEF line, Watch on: phone (84/44/65), desktop (84/44/48) or feed, a landscape film in a phone feed (150/80/115); 4K is written at 1080p and rendered at 2x. bin/vh new fills Watch on and Resolution from the type and frame, takes --watch and --res, and refuses 4K for the hand-drawn engine. The readability check and the scoring dimension go by the target screen. playbook/01 gets spec defaults per type and when to ask; spec is a nameable decision.
- A phone turned sideways shows a 16:9 film about 640–760 px wide (limited by its height), so the desktop check scales to 640 px and secondary text lands at about 15–23 px; default computer players about 850–1000. - 4K presets must match the frame (portrait-4k, square-4k; none for 4:5); Manim -qk --fps 30; 2D canvases sized and ctx.scale'd by devicePixelRatio, Three.js setPixelRatio (the intro film hard-codes 1); crop a 4K frame to check sharpness. - bin/vh new refuses contradictory targets (feed for a vertical or square frame, phone for a landscape one) and defaults landscape memes to feed; CI checks each refusal's message, edit -> phone and the 4K alias. - playbook/01: what bin/vh new actually fills, an ask rule whose example names no platform, a platform-to-target mapping, the review page's real label (我替你定了 / delegated), 08 and 09 rows; 4:5 is phone; leftovers renamed.
…ndscape in the target check
ZLHad
marked this pull request as ready for review
October 2, 2026 05:29
ZLHad
enabled auto-merge (squash)
October 2, 2026 05:29
# Conflicts: # CHANGELOG.md
ZLHad
added a commit
that referenced
this pull request
Oct 4, 2026
…ing (#47) The BRIEF gains Watch on (phone, feed: a landscape film in a phone feed, desktop: a computer or a phone turned sideways) and Resolution (1080p, 4k); bin/vh new fills them from the type and frame, takes --watch and --res, and refuses 4K for the hand-drawn engine and targets that contradict the frame. The text-size floor is tiered by target in 1080p composition px (phone 84/44/65, desktop 84/44/48, feed 150/80/115), since on-screen size depends on the text's share of the frame, not the resolution; 4K is written at 1080p and rendered at 2x (matching HyperFrames preset; Manim -qk --fps 30; canvases and Three.js sized by devicePixelRatio). The readability check and the scoring dimension (目标屏可读) go by the target screen. playbook/01 gets spec defaults per type, a platform-to-target mapping and when to ask; spec is a nameable decision.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Research note 06 (#46) left one question open: the 44 px floor was written for a 1080-wide frame, so should it scale for landscape? The maintainer's answer:
One clarification shaped the design. On-screen text size depends on the text's share of the frame and the size of the player window, not on the resolution, because players scale the video to fit. So the floor is set per viewing target in 1080p composition pixels, and 4K is a render setting: write at 1080p and render at 2×. HyperFrames supports this with
render --resolution 4k, which keeps the composition and doubles the device scale factor.What changes
Watch on: phone | feed | desktop.feedmeans a landscape film shown in a phone feed, not rotated.Resolution: 1080p | 4k.bin/vh new:--watchand--resto override them.--res 4kfor the hand-drawn engine, which has no 4K output.playbook/03§4, TASTE_CHECKLIST tts: group elevenlabs character timestamps into words #6), in 1080p composition px. Each tier is chosen so secondary text appears at about 15 px on a phone in the two phone tiers, and 18–23 px on desktop.The docs recommend a separate vertical cut over feed-sized text.
playbook/02's phone test scales to 360 px for phone and feed and 800 px for desktop, and adds a desktop command.playbook/01gets a spec section with defaults per type and when to ask: only when the platform is unknown and the answer would change the frame or the floor.specrow, andspecbecomes a nameable decision in director mode (CLAUDE.md, DECISIONS template, both READMEs).engines/README.mdgets an "出 4K" subsection: canvases must be sized bydevicePixelRatio, or they come out blurry.-qk) and Remotion (--scale=2).Checks
tools/ci.sh --committed(also withVH_BASH=/bin/bash): all passed, including the three newbin/vh newchecks.bin/vh effort standardprints the new floor line.