ATlast — you'll never need to find your favorites on another platform again. Find your favs in the ATmosphere.
atproto
1[ 2 { 3 "hash": "6cd4d622930e2a43531f2df40d930ceb5d2b4dbc", 4 "short_hash": "6cd4d62", 5 "author": "Ariel M. Lighty", 6 "date": "2025-12-24T00:27:50-05:00", 7 "message": "use shared card component for history and results", 8 "files_changed": 4 9 }, 10 { 11 "hash": "cc586d28ea8d4544467392be1083fdec11731814", 12 "short_hash": "cc586d2", 13 "author": "Ariel M. Lighty", 14 "date": "2025-12-23T21:11:19-05:00", 15 "message": "replace excessive toasts with aria-live announcer\n\nRemove redundant success/info toasts (logout, upload loaded, no results).\nKeep only error toasts for critical feedback.\nAdd AriaLiveAnnouncer component for screen reader accessibility.", 16 "files_changed": 2 17 }, 18 { 19 "hash": "ebb1e05cac477f02e1901aab6f3a8005016472f9", 20 "short_hash": "ebb1e05", 21 "author": "Ariel M. Lighty", 22 "date": "2025-12-23T21:10:58-05:00", 23 "message": "fix mobile alignment: badges and descriptions align with avatar", 24 "files_changed": 1 25 }, 26 { 27 "hash": "4c3ae0dbca215d10b499fc646ae7f53c43c658ac", 28 "short_hash": "4c3ae0d", 29 "author": "Ariel M. Lighty", 30 "date": "2025-12-23T20:58:15-05:00", 31 "message": "fix login typeahead autofill and auto-strip @ symbol\n\nTypeahead fix:\n- Add event listeners for input/change/blur to sync actor-typeahead selections with form state\n- Ensures Enter/Tab selections from typeahead dropdown properly update form\n- Allows Enter key to submit form after selection\n\n@ stripping:\n- Automatically remove leading @ from handle input\n- Show helpful inline message when @ is stripped\n- Inform users the @ symbol isn't needed", 32 "files_changed": 1 33 }, 34 { 35 "hash": "8e9efd2577b82cb61b0162a28b4ab072bbccf00b", 36 "short_hash": "8e9efd2", 37 "author": "Ariel M. Lighty", 38 "date": "2025-12-23T20:57:21-05:00", 39 "message": "update CLAUDE.md with separate commit guidance\n\nAdd critical note that each commit should address ONE specific fix or feature.\nMultiple unrelated changes should be committed separately for clearer history.", 40 "files_changed": 1 41 }, 42 { 43 "hash": "587a9b0314546b91e00c94bf87d28d29f6527456", 44 "short_hash": "587a9b0", 45 "author": "Ariel M. Lighty", 46 "date": "2025-12-23T19:34:34-05:00", 47 "message": "add rate limiting to batch endpoints\n\nOptimization #12:\n- created rateLimit.middleware with in-memory rate limiting\n- batch-search-actors: 5 requests/min (conservative)\n- batch-follow-users: 8 requests/hr (conservative)\n- calculated based on AT Protocol limits with 50% buffer\n- DRY implementation with applyRateLimit helper function\n- prevents users from exhausting AT Protocol API limits\n- leaves buffer for likes, replies, posts\n\nNote: In-memory (resets on cold starts). Upgrade to Upstash Redis for production-grade shared state.", 48 "files_changed": 3 49 }, 50 { 51 "hash": "35061ae467e17724d85493c94827c361dc84e6d1", 52 "short_hash": "35061ae", 53 "author": "Ariel M. Lighty", 54 "date": "2025-12-23T19:12:00-05:00", 55 "message": "move inline animations to Tailwind config\n\nOptimization #11:\n- added float-1, float-2, float-3 animation variants to tailwind.config.js\n- replaced inline animation and animationDelay styles with Tailwind classes\n- use modulo pattern to cycle through 3 animation variants\n- maintains visual variety without Math.random() for animation timing\n- consistent with Tailwind conventions, easier to maintain", 56 "files_changed": 2 57 }, 58 { 59 "hash": "6b5cf20f95ea43d18c5d05fa80ff7e94d7aa26d2", 60 "short_hash": "6b5cf20", 61 "author": "Ariel M. Lighty", 62 "date": "2025-12-23T19:05:42-05:00", 63 "message": "replace localStorage context with zustand persist store\n\nOptimization #10:\n- created useSettingsStore with zustand persist middleware\n- removed SettingsContext.tsx (88 lines) and provider wrapper\n- added SSR-safe storage with cross-tab synchronization\n- automatic JSON serialization, no manual parse/stringify\n- maintained backward-compatible API (useSettings hook)\n- bundle size: +2.3KB for zustand library", 64 "files_changed": 6 65 }, 66 { 67 "hash": "43710263eec21891c899f57e4d0434322612d353", 68 "short_hash": "4371026", 69 "author": "Ariel M. Lighty", 70 "date": "2025-12-23T18:11:36-05:00", 71 "message": "replace any types with AT Protocol interfaces\n\nOptimization #9:\n- created atproto.types.ts with proper AT Protocol interfaces\n- replaced 7 any types in batch-search-actors.ts\n- added ATProtoActor, ATProtoProfile, RankedActor, EnrichedActor types\n- improves type safety, compile-time error catching, IDE support", 72 "files_changed": 3 73 }, 74 { 75 "hash": "65ac856188d644baed837eea7775aed307ca0a56", 76 "short_hash": "65ac856", 77 "author": "Ariel M. Lighty", 78 "date": "2025-12-23T16:07:44-05:00", 79 "message": "remove duplicate type definitions from Results.tsx\n\nOptimization #8:\n- removed 3 duplicate type definitions (atprotoSession, SourceUser, SearchResult)\n- import AtprotoSession and SearchResult from central types\n- prevents type drift, establishes single source of truth", 80 "files_changed": 1 81 }, 82 { 83 "hash": "093b47d63a6324c2e4bc231d45c5d9d6792383ed", 84 "short_hash": "093b47d", 85 "author": "Ariel M. Lighty", 86 "date": "2025-12-23T15:58:35-05:00", 87 "message": "replace duplicate validation with Zod schemas\n\nOptimizations #6 & #7:\n- #6: verified early exit optimization already implemented in FollowService\n- #7: created validation.utils.ts with Zod schemas for array validation\n- replaced 3 duplicate validation blocks with reusable Zod schemas\n- updated batch-follow-users, check-follow-status, batch-search-actors", 88 "files_changed": 5 89 } 90]