Files
sim/apps/sim/lib/github
Waleed 32b6a425fd improvement(landing): SSR-friendly URL-state filters + cleanup pass + polish (#5298)
* chore(landing): cleanup pass — size-* shorthand, drop redundant refs/memos, changelog useInfiniteQuery

- emcn: collapse 29 square h-N w-N pairs to size-* across models/integrations/blog/faq/landing-preview
- landing-preview: remove redundant animationKeyRef (functional setState) + dead isDesktopRef
- model-directory: hoist static provider options to a module const
- auth-modal: drop useMemo over the cheap getBrandConfig() call
- changelog: replace useState+fetch pagination with a co-located useInfiniteQuery hook (first page stays SSR-seeded via initialData)

* feat(landing): URL-state filters via nuqs (SSR-friendly) + stars fallback bump

- integrations grid, models directory: search + category/provider filters now
  live in the URL (nuqs useQueryStates), server-parsed via createSearchParamsCache
  so filtered views render server-side (crawlable, shareable) — mirrors the blog
  index SSR pattern. Search URL writes debounced; in-memory filtering stays instant.
- pricing: billing-period toggle moves to ?billing=annual (shareable, no flash).
- co-located search-params.ts per page as the single source of truth (server + client).
- stars: bump fallback floor 28800 -> 28900 to track the current count.

* fix(landing): use the light sim mark (not green) in the integration CTA

Replace brandbook/logo/small.png — referenced only by the 'Start automating
{service} today' CTA on integration pages — with the black-on-light sim mark so
the tile reads as a neutral brand mark beside the partner icon instead of a green
block.

* fix(landing): calmer release-timeline dot hover

Drop the scale-150 + brightness-75 hover (a 50% size jump plus a muddy darken)
for an understated opacity-fill (0.85 -> 1) with a slight scale-110, matching the
comparison chart's opacity-driven hover language.

* fix(landing): keep changelog load-more when initial page is empty; drop inline comments

- changelog: getNextPageParam no longer treats an empty server-seeded page 1 as
  end-of-feed, so a failed/empty initial GitHub fetch still surfaces 'Show more'
  (addresses Cursor Bugbot).
- replace the inline comments added in this branch with TSDoc on the search-param
  caches (documents the dynamic-render → SSR-filtered behavior), per the
  codebase's TSDoc-only convention.

* revert(landing): keep the original changelog timeline (drop useInfiniteQuery)

The React Query conversion of an SSR-seeded, cross-origin, infrequently-changing
paginated list introduced caching edge cases (empty-seed load-more, singleton
cache serving stale page 1 on client-side nav) without real benefit. Restore the
original useState(initialEntries)+fetch timeline, which is simpler, correct, and
already review-clean from #5181.
2026-06-30 15:14:36 -07:00
..