teaser: no text overflows anywhere: teaser.textCheck(t) checks every visible text node (scroll size within its element, its box inside its card, every card in frame as drawn), render.ts --animatic runs it at every frame of the whole teaser into animatic-checks.json and tests/teaser.test.ts requires zero problems; reject titles shortened ('No demo account', 'Manifest refused'); fixes it found: terminal and pile rows wrap instead of being cut with an ellipsis, the scan findings wrap, the pile shows only the rows that fit whole (no streaming past the edge), caption, edge word, labels and end card line heights fit their glyphs, builds and products push straight in so the terminal stays in frame
This commit is contained in:
parent
20a764b3ee
commit
49557b4c74
6 changed files with 60 additions and 19 deletions
|
|
@ -65,9 +65,9 @@ export const CAMERA = {
|
|||
pile: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.1, x: 0, y: 10 } },
|
||||
reject: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.0, x: 0, y: 0 } },
|
||||
ask: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.12, x: -60, y: 0 } },
|
||||
builds: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.1, x: 40, y: -40 } },
|
||||
builds: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.1, x: 0, y: -40 } },
|
||||
shots: { from: { z: 0.98, x: 0, y: 0 }, to: { z: 1.08, x: 0, y: 0 } },
|
||||
products: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.1, x: 60, y: -50 } },
|
||||
products: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.1, x: 0, y: -50 } },
|
||||
forms: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.07, x: 30, y: 0 } },
|
||||
consoles: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.0, x: 0, y: 0 } },
|
||||
scan: { from: { z: 1.0, x: 0, y: 0 }, to: { z: 1.08, x: 0, y: -20 } },
|
||||
|
|
@ -190,13 +190,13 @@ export const PILE_TITLES = { privacy: 'App Privacy · answer sheet', steps: 'App
|
|||
/** Real `storebound scan` findings: guideline + one plain line, the scan's own header below in small type.
|
||||
* head = the finding line as printed (tests/teaser.test.ts checks it in the fixture's scan output). */
|
||||
export const REJECTS = [
|
||||
{ fixture: 'teaser', rule: 'Guideline 2.1(a)', title: 'No demo account for the reviewer',
|
||||
{ fixture: 'teaser', rule: 'Guideline 2.1(a)', title: 'No demo account',
|
||||
head: 'BLOCKER 2.1(a) · App Store · Sign-in is required but there is no demo account for App Review' },
|
||||
{ fixture: 'teaser', rule: 'Guideline 5.1.1(v)', title: 'No way to delete the account',
|
||||
head: 'BLOCKER 5.1.1(v) · App Store · Accounts can be created but no in-app account deletion was found' },
|
||||
{ fixture: 'teaser', rule: 'Guideline 5.1.2(i)', title: 'Tracking without asking (ATT)',
|
||||
head: 'HIGH 5.1.2(i) · App Store · Tracking-capable code without App Tracking Transparency (Google AdMob, IDFA)' },
|
||||
{ fixture: 'teaser-manifest', rule: 'ITMS-91064', title: 'Privacy manifest refused at upload',
|
||||
{ fixture: 'teaser-manifest', rule: 'ITMS-91064', title: 'Manifest refused',
|
||||
head: 'BLOCKER Privacy manifest (ITMS-91064) · App Store · Planner/PrivacyInfo.xcprivacy: NSPrivacyTracking true with an empty NSPrivacyTrackingDomains (Apple refuses the build: ITMS-91064)' },
|
||||
];
|
||||
/** The cards land one per beat (s into the shot; scale `land.from` -> 1 in `land.d` s, no shake). The REJECTED stamp
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue