commits
Removed backward compatibility for deprecated 'followed' field:
- Removed from AtprotoMatch type
- Updated 6 files to use only followStatus Record
- Replaced simple boolean check with multi-lexicon support
- Database schema preserved (no migration needed)
Removed backward-compatible useSettings hook:
- Updated App.tsx to use zustand store directly
- Smaller bundle size (284.11 KB vs 284.27 KB)
Updated CLAUDE.md with git commit message format guidelines.
Removed empty 'nul' file created accidentally.
Optimization #12:
- created rateLimit.middleware with in-memory rate limiting
- batch-search-actors: 5 requests/min (conservative)
- batch-follow-users: 8 requests/hr (conservative)
- calculated based on AT Protocol limits with 50% buffer
- DRY implementation with applyRateLimit helper function
- prevents users from exhausting AT Protocol API limits
- leaves buffer for likes, replies, posts
Note: In-memory (resets on cold starts). Upgrade to Upstash Redis for production-grade shared state.
Optimization #11:
- added float-1, float-2, float-3 animation variants to tailwind.config.js
- replaced inline animation and animationDelay styles with Tailwind classes
- use modulo pattern to cycle through 3 animation variants
- maintains visual variety without Math.random() for animation timing
- consistent with Tailwind conventions, easier to maintain
Optimization #10:
- created useSettingsStore with zustand persist middleware
- removed SettingsContext.tsx (88 lines) and provider wrapper
- added SSR-safe storage with cross-tab synchronization
- automatic JSON serialization, no manual parse/stringify
- maintained backward-compatible API (useSettings hook)
- bundle size: +2.3KB for zustand library
Optimization #9:
- created atproto.types.ts with proper AT Protocol interfaces
- replaced 7 any types in batch-search-actors.ts
- added ATProtoActor, ATProtoProfile, RankedActor, EnrichedActor types
- improves type safety, compile-time error catching, IDE support
Optimization #8:
- removed 3 duplicate type definitions (atprotoSession, SourceUser, SearchResult)
- import AtprotoSession and SearchResult from central types
- prevents type drift, establishes single source of truth
Optimizations #6 & #7:
- #6: verified early exit optimization already implemented in FollowService
- #7: created validation.utils.ts with Zod schemas for array validation
- replaced 3 duplicate validation blocks with reusable Zod schemas
- updated batch-follow-users, check-follow-status, batch-search-actors
Removed backward compatibility for deprecated 'followed' field:
- Removed from AtprotoMatch type
- Updated 6 files to use only followStatus Record
- Replaced simple boolean check with multi-lexicon support
- Database schema preserved (no migration needed)
Removed backward-compatible useSettings hook:
- Updated App.tsx to use zustand store directly
- Smaller bundle size (284.11 KB vs 284.27 KB)
Updated CLAUDE.md with git commit message format guidelines.
Removed empty 'nul' file created accidentally.
Optimization #12:
- created rateLimit.middleware with in-memory rate limiting
- batch-search-actors: 5 requests/min (conservative)
- batch-follow-users: 8 requests/hr (conservative)
- calculated based on AT Protocol limits with 50% buffer
- DRY implementation with applyRateLimit helper function
- prevents users from exhausting AT Protocol API limits
- leaves buffer for likes, replies, posts
Note: In-memory (resets on cold starts). Upgrade to Upstash Redis for production-grade shared state.
Optimization #11:
- added float-1, float-2, float-3 animation variants to tailwind.config.js
- replaced inline animation and animationDelay styles with Tailwind classes
- use modulo pattern to cycle through 3 animation variants
- maintains visual variety without Math.random() for animation timing
- consistent with Tailwind conventions, easier to maintain
Optimization #10:
- created useSettingsStore with zustand persist middleware
- removed SettingsContext.tsx (88 lines) and provider wrapper
- added SSR-safe storage with cross-tab synchronization
- automatic JSON serialization, no manual parse/stringify
- maintained backward-compatible API (useSettings hook)
- bundle size: +2.3KB for zustand library
Optimizations #6 & #7:
- #6: verified early exit optimization already implemented in FollowService
- #7: created validation.utils.ts with Zod schemas for array validation
- replaced 3 duplicate validation blocks with reusable Zod schemas
- updated batch-follow-users, check-follow-status, batch-search-actors