Explore: featured 1132 Fixer card + Make It GIF logo - #180
Conversation
Featured 1132 Fixer card (data-driven `featured` variant on the existing EXPLORE_VIEW `fixer` entry — no brittle name check): 64px gear icon, 20px title, "Fix Zoom Error 1132" descriptor, Windows/macOS/Browser chips, one-line description, 1132-fixer.xyz + Open Source badge + Independent project, and a "Visit 1132 Fixer" CTA that reuses the existing fixed-key open-explore-destination IPC (→ https://1132-fixer.xyz/). Right-side promo artwork (assets/explore/1132-featured.png, cropped from the supplied 1132.png) is decorative (aria-hidden), left-gradient-faded so it never competes with the card text; clipped to the card radius; hidden at narrow widths. The full Zoom disclaimer is NOT duplicated — the Explore footer already carries it. Make It GIF card now uses its dedicated logo (assets/explore/makeitgif.png, 96×96 RGBA matching the other Explore icons) instead of the generic globe fallback; destination URL, layout, and behavior unchanged. Security invariant preserved and its guard strengthened: data-explore is only ever set from a fixed catalog key (d.key) in both the compact rows and the featured CTA; the main process re-validates every key against EXPLORE_DESTINATIONS. Rendered + full npm test PASS.
…atalog id Carried over from #180, which this PR otherwise supersedes. The click wiring resolves whatever is in data-explore, so checking that the SELECTOR looks right proves nothing on its own - an unchecked interpolation behind a checked selector is a guard that reads well and catches nothing. This asserts the property that matters: data-explore is set from a fixed catalog id in both the secondary cards and the hero button, and from nothing else. The main process re-validates the key regardless. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Superseded by #186, which implements the governing spec in #185. Closing — but recording exactly what was carried over and what was replaced, so nothing here is lost silently. Carried overThe strengthened const exploreInterpolations = [...rendererSrc.matchAll(/data-explore="\$\{([^}]*)\}"/g)].map(m => m[1].trim());
check(exploreInterpolations.every(expr => expr === 'escapeHtml(d.id)'), ...)Your reasoning was right and worth keeping: the click wiring resolves whatever is in Superseded, and whyIssue #185 fixes the hero's exact content and layout after this PR was opened: Against that spec:
There is also a hard constraint this PR could not have known about: the panel must fit 828×630 with all eight destinations visible and no scrolling (#185 P0 correction). A hero with chips and side artwork does not fit that budget — #186's hero is a compact centered horizontal group specifically to make the three destination rows fit. Nothing else in this branch is unique to it. Closing in favour of #186. |
Two Explore-modal changes.
Featured 1132 Fixer card — the compact 1132 row becomes a rich featured card (data-driven
featuredvariant): 64px gear, title,Fix Zoom Error 1132descriptor, Windows/macOS/Browser chips, one-line description,1132-fixer.xyz+ Open Source badge + Independent project, and a Visit 1132 Fixer ↗ CTA reusing the existing fixed-keyopen-explore-destinationIPC (→ https://1132-fixer.xyz/). Right-side promo artwork (cropped/optimized from the supplied1132.png) is decorative, left-faded, radius-clipped, and hidden at narrow widths. Footer disclaimer untouched; Botify cards stay compact.Make It GIF logo — dedicated
assets/explore/makeitgif.png(96×96, matching the other Explore icons) replaces the generic globe fallback; URL/layout/behavior unchanged.Security:
data-exploreonly ever set from a fixed catalog key; main-process re-validates. Guard strengthened accordingly. Rendered via Playwright at 1000×760 (no console errors) + fullnpm testPASS.