Repository navigation
chore: lint clean (0 errors) + make CI lint blocking - #175
Merged
Merged
Conversation
…local migration script Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…caped entity Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/data stays a plain <a> (targeted disable): it is a redirect to an external Google Sheet and needs a full-page navigation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace mount-time effect+setState hydration of browser state with hydration-safe useSyncExternalStore hooks (server snapshot = previous SSR default, client value applied right after hydration): - useLocalStorageState (new): view mode persistence (useViewMode) - useMediaQuery (new): CommentSection mobile detection - useIsClient (new): OnboardingWizard portal gate - useNow (new): FriendMarker staleness (no Date.now() in render) - admin page: sessionStorage session restore; loading flags derived Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…etState - Compute derived values in render (itinerary conference default, theme, friend status, OG image cache hit, check-in toast visibility, loading flags) - Use the 'adjust state when a prop changes' pattern for resets keyed on props/user (TableView date label, admin Theme/AdInventory tabs, SubmitEventModal conference, comments/POIs/RSVP resets) - ItineraryPanel: fixes a bug where picking a conference tab was immediately reset to the main view's active conference by the sync effect - AddressAutocomplete: drop unused isLoaded state Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…bles - GalleryView: precompute group start indices instead of mutating a render var - POISearchBar: declare handleClose before the Escape effect and depend on it - useDragReorder: update latest-callback ref in an effect, not during render - useABTest: useCallback on primitive ids (compiler can preserve memoization) - useFriendRequests: clear on sign-out during render; add missing searchResults dep to sendRequest (stale closure meant the optimistic outgoing request was skipped) - Targeted set-state-in-effect disables (with reasons) for auth-driven deferred actions and async false positives Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…values - ShareCardModal handleDownload: missing cardTitle dep made the downloaded filename use a stale (initial) title after the user edited it - ShareCardModal reset-on-close: missing displayName/conferenceName deps left the default card title pointing at the previous conference - EventCard impression observers: include compact Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Also drops a stale eslint-disable directive in EventApp. Left as-is: the legacy description-mining fallback in sponsor-extraction.ts (explicitly kept) and ListView's useVirtualizer incompatible-library notice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
# Conflicts: # src/app/admin/page.tsx
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Gets
npm run lintto 0 errors (was 50 errors / 63 warnings → now 0 errors / 3 warnings) and makes lint blocking in CI.Commits are grouped by category so you can review them one at a time:
@next/next/no-img-elementoff, with a comment explaining why: flyers and avatars are hot-linked from arbitrary hosts. Also ignored the gitignoredscripts/migrate-itinerary-ids.ts.no-explicit-any(typed the RPC/event rows inapi/ads/report),prefer-const, an empty interface, and an unescaped'.<a href="/">//apilinks now use<Link>.useLocalStorageState, used for view-mode persistenceuseMediaQueryuseIsClientuseNowcontinue-on-errorfrom the Lint step.Real bugs fixed along the way
cardTitledep). The default title also kept the previous conference name (missingdisplayName/conferenceNamedeps).searchResultsclosure meant the optimistic outgoing request was skipped.Targeted eslint-disables (all have a
-- reason)src/app/page.tsx:no-html-link-for-pageson/data./dataredirects to an external Google Sheet, so it needs a full-page navigation.src/lib/sponsor-extraction.ts:no-explicit-anyon the untyped Luma API JSON. This disable already existed but was on the wrong line; it has been moved.src/hooks/useItinerary.ts:set-state-in-effect. The load is tied to the auth and Supabase sync state machine, so refactoring it is high-risk.src/hooks/useAuthGatedActions.ts:set-state-in-effect. Finishes a pending star once auth completes.src/app/itinerary/s/[code]/page.tsx:set-state-in-effect. Finishes a pending copy once sign-in completes.src/hooks/useFriendCode.tsandsrc/hooks/useFriendRequests.ts:set-state-in-effect. These are false positives: the functions are async and only call setState after an await.Warnings left as-is
ListViewuseVirtualizerincompatible-library notice.sponsor-extraction.ts, which is explicitly kept.Verification
npm run lint: 0 errorsnpx tsc --noEmit: passesnpm test: 279 passednpx next build: passesnext devfor/,/kbw2026(switched list/table/gallery/map views, then reloaded to check the saved view),/itineraryand/admin. Console errors matched the origin/master baseline exactly; both runs show the same two pre-existing errors:colgroupwhitespace hydration warningManual QA suggestions
🤖 Generated with Claude Code