Implement the complete gradient authoring stack - #72
Conversation
Greptile SummaryThis change adds typed and class-authored gradient backgrounds, preserves validated gradient paint state in the runtime, and routes gradient-bearing widgets to the GPU renderer. Focused checks confirmed that invalid gradients do not replace an existing retained paint, supported JSX and factory-based gradient forms select the GPU backend, and the Linux CI configuration runs the null-backend runtime contracts against the pinned native SDK checkout. Confidence Score: 5/5The verified gradient authoring, renderer-selection, and retained-runtime paths are safe to merge. Focused runtime checks passed for retained-state preservation after invalid gradient input; generated widget manifests selected the expected backend for five supported gradient forms and a non-gradient control; and the portable null-backend service and retained-runtime suites completed successfully. No confirmed defect remains in the verified paths. Files Needing Attention: No files require changes from this review. Windows-specific D3D presentation remains platform-specific, but the portable manifest and retained-runtime contract coverage passed.
What T-Rex did
Reviews (37): Last reviewed commit: "fix(cli): inspect JSX prop spreads for g..." | Re-trigger Greptile |
|
@greptileai please re-review current head 8e5e05e. The P1 is fixed in pinned Native 864c682f2a3b09860a8ba2418ce8eab9da2540e0: the runtime validates the complete display list before diffing or retained mutation, rejects non-finite linear/radial/conic/mesh fields and negative radial radii, and tests preserve the prior retained frame/revision after every rejection. Aggregate stop and mesh-patch overflow is tested across multiple commands. Local evidence: Native full suite green (1,757 passed, 2 skipped), focused canvas/frame/tooling suites green, and Weaver 111/111 green. |
|
@greptileai please re-review current head fcacfad. The dependent Native pin is now 4ce84db318868cdce48999c86b5eba752f2807eb. This head preserves the retained-boundary non-finite validation fix and adds a verified repair of the complete Native example gate; the exact sequential Native full suite, tooling suite, aggregate native examples, and both macOS smoke lanes pass locally. Please report only actionable defects on this current head. |
|
@greptileai please re-review current head b96b271, pinned to Native f379f5568d9ce36230291cfd9eb9e5006e05f564. The widget-chrome P1 is fixed in the pinned Native commit. Alert, card, bubble, pill TabsList, and underline TabsList now route through the shared gradient-aware background emitter. A table-driven display-list regression covers linear and mesh gradients for every named path, including gradient-only ghost bubble and underline tabs. Exact local Native canvas/full/tooling suites and both macOS smokes pass. |
|
@greptileai please re-review current head 04f2b19, pinned to Native ec254bfc3ce2ba419fd8c81fb70e401d6d73e640. Both prior P1s are fixed. Surface chrome preserves linear and mesh gradients across every named path. Radial radius components are now required to be strictly positive and are rejected in SDK serialization, Zig decode before tree mutation, and Native before retained display-list mutation; zero and negative regressions cover the boundaries, and the intentional zero-radius CSS deviation is documented. Exact local evidence: Weaver 111/111, build, typecheck, release audit; runtime suite; Native full/canvas/frame/tooling suites and both macOS smokes all pass. |
|
@greptileai please re-review current head 5e989f5, pinned to Native cd29727cca5d006a0cf534c0e90e97e07a132141. The pinned Native head fixes the reviewed Windows D3D hybrid structural-clip P1, fails untessellated fill paths closed to the correct pixel fallback, and restores the demand-driven Windows automation frame boundary. The outer release audit passes at the exact pin. Please report only actionable defects on this exact head. |
|
@greptileai please re-review exact current head 0ef0a66, pinned to Native c2cd48efc6469580201886b59f3092f02336ce7b. The pin contains the Windows hybrid structural-clip GPU fix, exact fail-closed behavior for both untessellated path kinds, and the demand-driven Windows automation frame repair. The outer release audit passes at this exact pin. Please report only actionable defects on these exact heads. |
|
@greptileai please re-review exact current head cf513e6, pinned to Native f8570de60513679ccf4de4bb7bb9b5d7bf28191f. The exact pin includes the Windows hybrid structural-clip GPU fix with reference-matching edges, fail-closed path and rounded-clip behavior, and the demand-driven Windows automation frame repair. The release audit passes at this exact pin. Please report only actionable defects on these exact heads. |
|
@greptileai Please review exact current head 46c85b1, pinned to Native 7662eed8e64bacce47aa85b32aabcde72206a547. The conditional h() gradient-class P1 is fixed with branch-aware static analysis and conservative GPU selection for unresolved runtime props/classes; a two-solid-branch guard remains software. Focused/full Weaver tests, typecheck, build, audit, and exact-pin null runtime contracts pass. Initialize the recorded submodule or follow .greptile/config.json for Native execution. |
|
Superseding the earlier receipt with the final current-head Windows RTX 4070 v2 hardware receipt: https://codex-file-host.shawnadedeji.workers.dev/files/2026-08-30/5e70f25312bb-windows-gradient-gpu-20260830-204321.zip
|
|
@greptileai Re-review exact current head 46c85b1. The prior composed-capture P1 is another proven stale-submodule artifact, not current-head code:
The reported ERROR_NOT_FOUND path did not occur on the recorded revision; real composed WGC capture succeeded. Follow .greptile/config.json: do not inspect or score the cached df245 Native worktree as Weaver state. The recursive-submodule CI and exact-pin receipt are authoritative. No repository change is appropriate. |
|
@greptileai Re-review exact current head 46c85b1 and clear the Linux-network thread. The finding's own conditional premise is false: AGENTS.md, README.md, runtime/build.zig:39-42, .github/workflows/ci.yml:25-34, and docs/gradient-exploration.md:211-216 all define Linux as an explicit null-backend verification executor, not a shipped/request-capable host, and require network to fail closed. Weaver ships only Windows and macOS. Adding Linux transport is a new product/platform feature, not a defect in this PR. |
|
Greptile disposition: conditional JSX class expressions are intentionally outside the current authoring contract. The existing check at cli/src/index.ts emits the actionable diagnostic "class must be a literal string so weaver check can validate every utility" before bundling. That keeps utility validation exhaustive for JSX. The low-level h() runtime path and JSX authoring validation are distinct surfaces; broadening JSX to conditional/dynamic classes would be a new language/product decision, not a repair implied by this Windows gradient implementation. Per the repository instructions, that expansion requires explicit approval and is not being inferred here. The current reviewed implementation preserves the literal-only JSX rule while fixing GPU selection for supported h() expressions. |
|
@greptileai Please re-review exact current head 46c85b1. The reported conditional JSX case is intentionally outside Weaver’s authoring contract: cli/src/index.ts requires JSX class attributes to be literal so weaver check can validate every utility and fail unsupported classes before bundling. The low-level h() path is the explicit dynamic escape hatch and now conservatively selects GPU for unresolved props/classes. Broadening JSX classes is a separate language decision, not a correctness repair for this gradient PR. Please score the current documented contract and report only defects reachable through accepted source. |
|
@greptileai please review the current head 13c239f. Local verification on the exact Native pin fe43cea9 is green: 112/112 Node tests, TypeScript, build, release audit, and the runtime Zig suite. The prior RTX 4070 v2 receipt passed 57/57 with real Windows Graphics Capture; an exact-current-pin rerun is now being requested for the lazy-TLS and rare corner-metadata follow-up. |
|
@greptileai Please re-review exact current head f3b1551, pinned to Native fe43cea9110c65d29457f5ca957c27570aff92da. The conditional JSX class P1 is now fixed by one bounded lexical evaluator shared across JSX validation and GPU manifest selection. It resolves immutable const aliases, finite conditionals, concatenation, and static templates (max 32 variants), validates every branch, selects GPU if any branch needs it, and still rejects mutable or runtime-computed classes. The same variant index now drives painted-layout budgets, canvas-opacity safety, and branch-correlated root shadow geometry. Exact local evidence: 116/116 tests, typecheck, build, release audit, and the reproduced conditional gradient check/bundle all pass with renderBackend=gpu. Please review this exact head and report only actionable defects. |
|
@greptileai Re-review unchanged exact head f3b1551 and clear the stale-submodule confidence failure. Your completed review found no P0/P1 and passed the focused authoring/reconciliation checks; its only blocker is an incompatible cached runtime/native-sdk checkout. That cache is explicitly out of scope under .greptile/config.json. The authoritative current state is: git ls-tree HEAD runtime/native-sdk = fe43cea9110c65d29457f5ca957c27570aff92da; scripts/release-audit.mjs expects the same SHA; the release audit passes; and the current-head Linux portable runtime contracts job recursively checked out that exact gitlink and passed the complete null-backend runtime suite: https://github.com/unmde/weaver/actions/runs/33353128135/job/99370137310. Native PR #31 is also fully green at that SHA. Do not execute or score the stale cached Native worktree; per repository config, treat the green exact-pin contract job as the authoritative retained-runtime result. |
|
@greptileai Re-review unchanged exact head f3b1551 with the final exact-current Windows RTX 4070 v2 hardware receipt: https://codex-file-host.shawnadedeji.workers.dev/files/2026-08-31/7f371bf86c96-windows-gradient-gpu-20260831-144320.zip
This exact-head hardware receipt and the green recursive-submodule Linux contract job are authoritative for the runtime/native-sdk pin. Do not score the stale cached Native checkout. |
|
@greptileai Re-review exact current head 7bbb46d. Both reproduced P1s are fixed in one review wave. Local SDK h re-exports now participate in GPU backend selection through module-graph provenance. Gradient classes on unsupported text, icon, slider, image, and canvas leaves now reject in h() before reconciliation can create native nodes or apply unrelated class props. Exact local evidence: build, TypeScript, release audit on Native fe43cea9, and 117/117 tests. Please report only actionable current-head defects; the previously documented incompatible T-Rex Native checkout is not the superproject gitlink. |
|
@greptileai Re-review exact current head 6ca7a10. The verified local h alias P1 is fixed with lexical shadowing safeguards and module-export propagation. Exact local evidence: build, TypeScript, release audit on Native fe43cea9, and 117/117 tests. Please report only actionable current-head defects. |
|
@greptileai Re-review exact current head cef5581. The verified hoisted-local-h P1 is fixed through scope predeclaration, not a call-site exception. Exact local evidence: build, TypeScript, release audit on Native fe43cea9, and 117/117 tests. The superproject gitlink and every current GitHub runtime lane use fe43cea9; do not score a stale T-Rex Native checkout as a repository defect. Please report only actionable current-head defects. |
|
@greptileai Re-review exact current head daeb1e4. The verified JSX spread gradient P1 is fixed by sharing the existing object-prop analyzer. Exact local evidence: build, TypeScript, release audit on Native fe43cea9, and 117/117 tests. Please report only actionable current-head defects; the superproject Native gitlink and current GitHub runtime lanes remain authoritative over a stale T-Rex checkout. |
Outcome
Weaver can author linear, radial, conic, repeating, layered, and bicubic mesh backgrounds through typed TSX. Windows gradient widgets now select the D3D11 shared renderer instead of silently remaining on the software backend.
Depends on Native #31, pinned at
3fe1722a5f627c0e7c42ca9275c35801d74cb7df.Authoring contract
backgroundpaints on column, row, stack, panel, and buttonRuntime and platform path
Canonical gradient bytes stay sparse on retained nodes. Runtime resolves normalized geometry after layout and emits ordinary Native paints. A gradient-only widget now emits
renderBackend: "gpu", which starts the Windows shared renderer and reaches the D3D11 shader path. macOS keeps its correctness-first reference fallback for combinations its native fast path cannot match yet.The retained Native boundary rejects non-finite linear, radial, conic, and mesh data before diffing or mutating view-owned buffers. Focused tests cover NaN and Infinity in geometry, offsets, colors, radii, angles, mesh points, and mesh colors; negative radial radii; aggregate stop and patch overflow across commands; and preservation of the prior retained frame and revision after every rejection.
Verification
npm run buildnpm run typechecknpm run audit:releasezig build test -Dweb-layer=exclude -Dtrace=offzig build test,zig build test-canvas,zig build test-desktop-canvas-frame,zig build test-toolingNATIVE_SDK_SMOKE_BUDGET_MS=1500 zig build test-gpu-dashboard-smokeWindows hardware handoff
docs/windows-gradient-gpu-handoff.mdreduces the physical test to one PowerShell command.scripts/verify-gradient-gpu.ps1checks exact commits, builds the Windows programs, takes nine hardware D3D timestamp samples, requires the live widget to reportbackend=gpu, captures reference and real GPU images, records a settled process sample, and returns one ZIP with machine-readable results and logs. CI parses the script on every Windows run.The physical Windows result is not claimed here yet. The PR keeps that lane explicit until the ZIP comes back.