Skip to content

Add Twelve Tools footer badge#71

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

Add Twelve Tools footer badge#71
andrewzolotukhin merged 2 commits into
mainfrom
feat/twelve-tools-footer-badge

Conversation

@andrewzolotukhin

@andrewzolotukhin andrewzolotukhin commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Original request

Use $pr-workflow, without a blog post, to add a Twelve Tools footer badge linking to https://twelve.tools with the supplied dark and white hosted SVG variants for dark and light themes. After the first CI run exposed an expired date fixture, fix the build as well.

Summary

Adds a Twelve Tools featured badge to the public landing page footer badge group and makes the budget invitation-status test deterministic so CI remains stable after its fixture date passes.

What changed

  • Added a Twelve Tools badge definition in apps/web/components/landing-page.tsx using the supplied hosted SVG URLs and 200×54 dimensions.
  • Added a TwelveToolsBadge footer component that shows the white-background SVG in light mode and the dark-background SVG in dark mode using the existing Tailwind theme pattern.
  • Added the badge after DANG and before OpenHunts in the existing FooterBadges group.
  • Updated apps/web/components/landing-page.test.tsx to verify the link, target, rel attributes, image URLs, dimensions, and light/dark visibility classes.
  • Pinned the invitation-status test clock to July 1, 2026, before its July 14 fixture expiration, using the file's existing fake-timer cleanup.

Reasoning

The badge implementation follows the existing hosted footer badge pattern instead of introducing a new abstraction for a one-off addition. It keeps Twelve Tools' hosted assets and exact supplied dimensions, adds noopener noreferrer for a safe external target="_blank" link, and avoids Next.js remote image configuration for a tiny vendor-provided footer badge.

The test fix controls time explicitly because the assertion depends on whether an invitation is expired. This preserves the intended pending-status scenario and prevents the build from changing behavior as wall-clock time advances.

Blog post

Skipped. The user explicitly requested that no blog post be added for this badge update.

Validation

  • npm test -- apps/api/src/application/budgets.test.ts apps/web/components/landing-page.test.tsx
  • npm run lint
  • npm run typecheck
  • npm test — 94 files and 516 tests passed.
  • GitHub check: Lint and test
  • GitHub check: Deploy PR environment
  • GitHub check: Playwright e2e
  • Preview QA at https://xpenser-pr-071.cleverbrush.com
  • SigNoz traces for xpenser-web-pr-71: recent homepage traces were present with 200 responses and no error traces found.
  • SigNoz logs/metrics checked: no service-specific log rows or http.server.duration.count series were indexed for xpenser-web-pr-71.
  • PR-ready notification sent successfully.

Screenshots / Preview

Preview QA confirmed:

  • The footer accessibility/DOM state includes Featured on Twelve Tools linking to https://twelve.tools/ with target="_blank" and rel="noopener noreferrer".
  • Both hosted SVGs loaded at their natural and declared 200×54 dimensions.
  • Light mode displays badge0-white.svg and hides badge0-dark.svg.
  • Dark mode hides badge0-white.svg and displays badge0-dark.svg.

Screenshots captured during Playwright QA:

  • Light mode: /tmp/twelve-tools-footer-qa/twelve-tools-footer-light.png
  • Dark mode: /tmp/twelve-tools-footer-qa/twelve-tools-footer-dark.png

Checklist

  • I kept the change focused.
  • I updated applicable tests.
  • I checked for secrets, local env files, and generated build output.
  • API changes are not applicable; this PR changes only the landing-page footer and test determinism.

@andrewzolotukhin
andrewzolotukhin temporarily deployed to pr-71 July 15, 2026 06:20 — with GitHub Actions Inactive
@andrewzolotukhin
andrewzolotukhin merged commit 19fd048 into main Jul 15, 2026
4 checks passed
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