Repository navigation
feat(screen-plan): follow the final design page; audit treats headless-hidden scrollbars as visible - #110
Draft
devfive-relay-c70423[bot] wants to merge 149 commits into
Conversation
added 30 commits
October 22, 2026 17:15
…s-hidden scrollbars as visible State-variant frames (Desktop 1441, Mobile 361/362, extra form states) fold into their route instead of becoming new screens, and remap moves a route to a newer frame. The runtime audit no longer reports overflow:auto tab strips and tables as clipped just because headless Chromium hides every scrollbar; only scrollbar-width:none still counts.
…itted file writes
…den exclude words
… used for asset file names
…checks, erd gate, merged screen answers
…ope fields and a narrowed recovery call
…ng else can shrink the response
… is shared; add r14 test
Existing envelope spill fixes cover the reported single-frame scenario. Assume synthetic 569-issue metadata reproduces its transport pressure without retaining private design data.
Reuse existing narrowed recovery and spill behavior. Assume top eight serialized JSON fields are the useful diagnostic budget; preserve total retained output bytes when checking the resource envelope.
Reuse one stem for identical image hashes across layer roles and preserve variant identity. Refresh codegen snapshots and fixture checksums for kebab-case asset paths; refresh platform float serialization in the diagnostics snapshot.
Keep existing manifest auto-add behavior, disclose it, select job fields after job attachment, and judge requested captures rather than all discovered assets. Assume nodes paths remain capture-scoped while other paths prefer the assembled reply. Exercise MCP calls and actual output file bytes in regression coverage.
…s (30) Existing original-source defaults already choose WebP q85. Apply the display-width times two cap when omitted and auto-select lossless encoding for alpha graphics with at most 256 colors. Explicit codec and lossless choices remain authoritative.
Keep the existing shared manifest-to-TSX reconciliation, verified by its real-file dedup regression. Add required placeholder paths to reviewChecklist even when acquisition itself is complete.
Resolve node requests to captured fill evidence before determining write state, and avoid reporting a request's own internal fill as a duplicate. Existing partial/resume and request-count regressions remain covered.
Assume legacy plans without app fields remain valid; explicit route app bindings must match. Search all ancestors rather than four levels.
…es (19) Assume existing section-based device renaming is authoritative; reproduce Main Desktop/Mobile alongside another section without a mobile URL.
added 30 commits
October 24, 2026 02:14
…to devfive/3099154426bffbeef8b62999b80bb038/screen-plan-final-frames
…nto devfive/3099154426bffbeef8b62999b80bb038/screen-plan-final-frames
…devfive/3099154426bffbeef8b62999b80bb038/screen-plan-final-frames
…o devfive/3099154426bffbeef8b62999b80bb038/screen-plan-final-frames
…o devfive/3099154426bffbeef8b62999b80bb038/screen-plan-final-frames
…nto devfive/3099154426bffbeef8b62999b80bb038/screen-plan-final-frames # Conflicts: # crates/devup-mcp/src/server/text/devup-project-plan.md
- quote non-identifier lookup keys (button set produced invalid TSX) - treat an aborted OXC parse as a validation error (parserAborted) - expose unbound TEXT nodes in a component set as string props with the Figma copy as default - drop set-canvas placement from variant roots, keep a containing block for absolute descendants - emit cond ? value : undefined instead of cond && value
…ext prop names - account for diagnosed variant-child fallback nodes as ignored trace entries so componentTsx no longer fails the exactly-once check (ApplicationsCard, RnDLinkRow, TechStep) - give non-ASCII declared TEXT properties unique identifiers instead of overwriting defaults
…ops, partial variant maps, boolean props and state selectors - keep typography and Image src scalar across responsive variants - add undefined branches for variant lookups missing union keys - declare and destructure referenced boolean props with collision-free names - map selected/hoevr states to valid selectors; keep src out of pseudo objects
…src off container variant merges - one-sided responsive Image src becomes scalar src plus endpoint visibility - source splitting only applies to Image; container merges never take a leaf variant's src - guard test across all chondrogen fixtures: no scalar arrays, no src on non-Image elements
…nd keep boolean-controlled layers - variant lookups use Definition.source, so icon/mask/src/state styles are no longer dropped (empty Caret/Logo/DropdownOption bodies) - children with a visible property reference count as visible for asset classification (IconButton text layer) - responsive expressions drop redundant trailing inheritance and collapse slot-0-only arrays to scalars - guard test: every declared prop is referenced in the body
…ps href, and treat controls inside links as wired
…primitive as a dynamic target, not unmapped
…itory root holds from an app directory, and status never takes another app's page for a route
…nparsed files, not truncated component lists
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.
Summary
remapmoves an existing route to a newer frame.--hide-scrollbars). Because of that,no-clipped-contentreported plainoverflow-x: autotab strips and tables as clipped content. The runner now probes whether the browser hides scrollbars, and in that case onlyscrollbar-width: nonecounts as an invisible scroller. Covered by a new case intest/layout.test.mjs.componentTsxworks when the root is a component set, a single variant or an instance, and is named after the set.data-figma-node-idis only emitted withfigmaNodeIds: true. Instances resolve to their component. Link hover/focus states sit on the element rendered as the link.limitis an input error. Trash/hidden frames are flagged. BridgereferencePngaccepts a single frame id and reports PNGs it can't render instead of dropping them.confirmno longer overwrites model files and drops columns that exist on disk (55).statuswithoutplanIdreturns recovery actions.intakeon an existing plan offers resume or an archived restart. Column type errors and model drift are reported. Recommendations follow recorded evidence.auditPlanrun fromapps/frontfinds the plan at the monorepo root, and a rerun refreshes its own output. 14 and 15 were already fixed; regression tests added.document.bodyor a failing probe makes that one check inconclusive instead of aborting the run. Checks anchored on node ids absent from the source arenot-runwith a reason.auditPlanreturns the exact dev-server start command (the runner does not start it itself). 46 was already fixed.figma-bridge-setupskill. No instruction to add an audit plugin to the app build config. Component-first workflow: export components withcomponentTsx, record.devup/component-map.json, then assemble pages; no hand-written TSX from Figma nodes.Not done in this PR: the runner starting the dev server itself (60), a
devup_figma_bridge ensuretool and stale-host/out-of-view next actions in status (48), section-level export (65), and the legacy strip-plugin file still emitted byauditPlan(64).Verification
cargo fmt --all --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspaceharness/runtime-auditnpm test*
r3_asset_job_timeout_keeps_first_asset_and_resumes_pending_readfailed once on the first full run and passed alone (3/3) and on the next two full runs. It uses a paused clock and looks timing-sensitive under load.Tested on chondrogen (14 routes, 5 widths: 1440/1100/858/390/360)
Earlier in this PR, before the feedback batch. Plans were regenerated with
devup_screen_plan auditPlanand run with the updated runner.//company/company/vision/company/location/technology/technology/research/technology/osteoarthritis/technology/patents/technology/achievements/products/products/oa-model/news/news/notice/contact* The 5 failures on
/were a real finding: a decorative marquee in a 1.22:1 colour. It was fixed in the app (aria-hidden), not in the runner.Remaining:
/productshas 5no-low-contrast-textresults that are inconclusive, where 2 text samples have backgrounds that can't be judged./news/[id]is not audited because no static params or detail-frame text are available.chondrogen app checks after the changes:
bun run lint:fix,oxlint --deny-warnings,tsc --noEmit,bun run build,bun test(4 pass, 100% coverage) all exit 0.Submitted via Devfive hub. Employee: ; device:
3099154426bffbeef8b62999b80bb038