Skip to content

馃悰 Keep screenshot properties separate from options - #355

Merged
Robdel12 merged 3 commits into
mainfrom
rd/fix-screenshot-properties-contract
Sep 8, 2026
Merged

馃悰 Keep screenshot properties separate from options#355
Robdel12 merged 3 commits into
mainfrom
rd/fix-screenshot-properties-contract

Conversation

@Robdel12

@Robdel12 Robdel12 commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Why

properties is the user-owned metadata bag. Generated viewport fields and reserved-name filtering blurred that contract, deleting legitimate user keys or treating them as Vizzly settings. Local TDD also unwrapped nested properties objects and sanitized away user values.

Approach

Preserve user JSON metadata and keep comparison settings at the top level. Read identity dimensions from the captured bitmap, stop framework clients from generating viewport metadata, and remove invented browser/dimension defaults from file uploads and SHA checks.

Local SDKs send the same flat request shape as the released stable JavaScript client. There is no screenshot format marker or nested-property guessing. Released cloud payload handling remains isolated in the API's existing compatibility module, selected by CLI User-Agent version and removable when those releases are unsupported.

Local validation retains nested metadata and rejects unsafe object keys and non-JSON values. The merged upload-error tracking remains intact.

Evidence

Real CLI tests exercise saved TDD reports and cloud uploads with nested user properties, including a key literally named properties. The generated CLI payload also passes through the current API normalizer without losing metadata; released cloud-format compatibility was checked separately.

The full CLI suite passes on Node 24: 1,928 passed and six platform skips. Ember, Vitest, Storybook, static-site, Ruby, and Swift unit suites pass, along with the production build, type checks, full lint, and formatting.

Stop generating viewport metadata and stop filtering option-shaped property names. Keep released local request handling isolated behind an explicit format version so current property bags remain untouched.
Keep JSON metadata intact in TDD while rejecting unsafe object keys and non-JSON values. Mark Swift requests with the current local format so a user key named properties is not unwrapped. Cover saved local reports and cloud uploads through real CLI runs.
@Robdel12
Robdel12 force-pushed the rd/fix-screenshot-properties-contract branch from 21aadd7 to 468205c Compare September 8, 2026 06:07
@Robdel12
Robdel12 enabled auto-merge (squash) September 8, 2026 06:07
@Robdel12
Robdel12 disabled auto-merge September 8, 2026 06:10
Use the flat local request shape already sent by the released stable client. Preserve nested user metadata without guessing at old wrappers; released cloud-format handling remains quarantined in the API compatibility module.
@Robdel12
Robdel12 enabled auto-merge (squash) September 8, 2026 06:15
@Robdel12
Robdel12 merged commit b7411c6 into main Sep 8, 2026
33 of 36 checks passed
@Robdel12
Robdel12 deleted the rd/fix-screenshot-properties-contract branch September 8, 2026 06:17
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