Skip to content

feat: add Acid Tools footer badge#78

Merged
andrewzolotukhin merged 2 commits into
mainfrom
feat/acid-tools-footer-badge
Jul 23, 2026
Merged

feat: add Acid Tools footer badge#78
andrewzolotukhin merged 2 commits into
mainfrom
feat/acid-tools-footer-badge

Conversation

@andrewzolotukhin

@andrewzolotukhin andrewzolotukhin commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Original request

Add an Acid Tools badge to the public footer using the supplied light and dark hosted badge images and link, following the PR workflow without creating a blog post.

Summary

Adds an accessible, theme-aware Acid Tools directory badge to the public xpenser footer and verifies the integration at component and browser-test levels.

What changed

  • Added an AcidToolsBadge to the public footer badge collection.
  • Uses https://acidtools.com/assets/images/badge.png in light mode and https://acidtools.com/assets/images/badge-dark.png in dark mode.
  • Preserves the supplied Acid Tools alt text, 54px height, lazy loading, target URL, and new-tab behavior while adding the repository-standard focus styling and safe link relation.
  • Added component assertions for link attributes, both hosted image variants, height, lazy loading, and theme classes.
  • Added Playwright coverage for light/dark visibility and the supplied badge contract.
  • After the first CI run exposed that the off-screen lazy image has a zero-width box before loading, updated the e2e flow to scroll the badge into view before asserting visibility. Production markup was unchanged.

Reasoning

The implementation follows the existing hosted footer-badge pattern so the new badge participates in the same responsive wrapping, focus treatment, and dark-mode switching. The supplied markup does not define a width, so the implementation intentionally leaves width intrinsic rather than inventing a dimension. The e2e flow triggers lazy loading as a user would before checking the rendered theme variant.

Blog post

Skipped by explicit user request. This badge-only addition is too small to justify a standalone release post.

Screenshots / preview evidence

Preview: https://xpenser-pr-078.cleverbrush.com

Manual QA exercised the footer at 390 × 844 and 1440 × 900 in light and dark themes, with light/dark mobile and desktop screenshots captured during the session. Verified:

  • The light and dark Acid Tools assets both return HTTP 200 and render at their natural 175 × 54 dimensions.
  • Only the correct theme variant is displayed.
  • The exact destination, target="_blank", rel="noopener noreferrer", alt text, height, and lazy-loading attributes are present.
  • The badge container and page have no horizontal overflow at either viewport.
  • Keyboard focus shows the repository-standard two-pixel focus ring.
  • No browser errors or console output occurred during the badge QA flow.
  • External destination navigation was not exercised because the browser safety layer blocked sending the preview referrer off-site; the DOM href was verified exactly.

The passing Playwright e2e job provides stable CI evidence for the updated public homepage flow.

Validation

  • npm test -- apps/web/components/landing-page.test.tsx
  • npm run lint
  • npm run typecheck
  • npm test (95 files, 520 tests)
  • PLAYWRIGHT_BASE_URL=https://xpenser-pr-078.cleverbrush.com npm run test:e2e -- tests/e2e/public-auth.spec.ts (6 tests)
  • Lint and test
  • Deploy PR environment
  • Playwright e2e
  • Preview QA in light and dark modes at mobile and desktop sizes
  • SigNoz traces, logs, and metrics explicitly checked; recorded as an infrastructure telemetry skip because xpenser-web-pr-78 never appeared as a trace or log resource and the queried metric series were empty
  • PR-ready notification attempted; skipped because the configured default notifier at 127.0.0.1:8787 was unavailable

Telemetry

For the post-QA xpenser-web-pr-78 window:

  • Trace queries returned no rows, including the explicit error-trace query.
  • ERROR/FATAL log queries returned no rows.
  • http.server.duration.count and nodejs.eventloop.utilization returned no matching metric series.
  • SigNoz resource-value discovery lists xpenser preview services through xpenser-web-pr-77 but does not contain PR 78 for traces or logs, even after an ingestion wait and recheck.
  • The successful deployment confirms the PR OTLP endpoint and repository-standard service-name configuration were supplied, and the preview remained healthy under manual and CI traffic. Because this footer-only diff does not touch telemetry configuration, missing PR 78 ingestion is documented as an infrastructure skip rather than a badge blocker.

Screenshots / Preview

See the preview evidence above and the passing Playwright job for stable browser-test evidence.

Checklist

  • I kept the change focused.
  • I updated docs or tests where needed (tests updated; blog intentionally skipped as noted above).
  • I checked for secrets, local env files, and generated build output.
  • API changes keep contracts, endpoint metadata, and handlers aligned (not applicable; no API changes).

@andrewzolotukhin
andrewzolotukhin temporarily deployed to pr-78 July 23, 2026 07:58 — with GitHub Actions Inactive
@andrewzolotukhin
andrewzolotukhin temporarily deployed to pr-78 July 23, 2026 08:12 — with GitHub Actions Inactive
@andrewzolotukhin
andrewzolotukhin merged commit 052034a into main Jul 23, 2026
4 checks passed
@andrewzolotukhin
andrewzolotukhin deleted the feat/acid-tools-footer-badge branch July 23, 2026 08:44
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