ATlast — you'll never need to find your favorites on another platform again. Find your favs in the ATmosphere.
atproto
1[ 2 { 3 "hash": "9bdca934948a284e1315961b4430bae0b6617cbe", 4 "short_hash": "9bdca93", 5 "author": "Ariel M. Lighty", 6 "date": "2025-12-24T18:35:00-05:00", 7 "message": "fix login avatar display by fetching from Bluesky API\n\nactor-typeahead component doesn't expose avatar data via events or attributes.\nAdded debounced API fetch (300ms) to searchActorsTypeahead endpoint when\nhandle is entered. Avatar now displays for both typeahead selections and\nmanually entered handles.", 8 "files_changed": 1 9 }, 10 { 11 "hash": "0f47c41f1a383ff99387254e56d31210a133bee7", 12 "short_hash": "0f47c41", 13 "author": "Ariel M. Lighty", 14 "date": "2025-12-24T16:33:31-05:00", 15 "message": "extract login page components for DRY\n\nCreated reusable components:\n- ValuePropCard: icon + title + description card\n- StepCard: numbered step with color variant\n- HeroSection: logo, title, firefly animation\n- ValuePropsSection: 3 value prop cards\n- HowItWorksSection: 4 step cards", 16 "files_changed": 5 17 }, 18 { 19 "hash": "6cd4d622930e2a43531f2df40d930ceb5d2b4dbc", 20 "short_hash": "6cd4d62", 21 "author": "Ariel M. Lighty", 22 "date": "2025-12-24T00:27:50-05:00", 23 "message": "use shared card component for history and results", 24 "files_changed": 4 25 }, 26 { 27 "hash": "cc586d28ea8d4544467392be1083fdec11731814", 28 "short_hash": "cc586d2", 29 "author": "Ariel M. Lighty", 30 "date": "2025-12-23T21:11:19-05:00", 31 "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.", 32 "files_changed": 2 33 }, 34 { 35 "hash": "ebb1e05cac477f02e1901aab6f3a8005016472f9", 36 "short_hash": "ebb1e05", 37 "author": "Ariel M. Lighty", 38 "date": "2025-12-23T21:10:58-05:00", 39 "message": "fix mobile alignment: badges and descriptions align with avatar", 40 "files_changed": 1 41 }, 42 { 43 "hash": "4c3ae0dbca215d10b499fc646ae7f53c43c658ac", 44 "short_hash": "4c3ae0d", 45 "author": "Ariel M. Lighty", 46 "date": "2025-12-23T20:58:15-05:00", 47 "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", 48 "files_changed": 1 49 }, 50 { 51 "hash": "8e9efd2577b82cb61b0162a28b4ab072bbccf00b", 52 "short_hash": "8e9efd2", 53 "author": "Ariel M. Lighty", 54 "date": "2025-12-23T20:57:21-05:00", 55 "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.", 56 "files_changed": 1 57 }, 58 { 59 "hash": "587a9b0314546b91e00c94bf87d28d29f6527456", 60 "short_hash": "587a9b0", 61 "author": "Ariel M. Lighty", 62 "date": "2025-12-23T19:34:34-05:00", 63 "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.", 64 "files_changed": 3 65 }, 66 { 67 "hash": "35061ae467e17724d85493c94827c361dc84e6d1", 68 "short_hash": "35061ae", 69 "author": "Ariel M. Lighty", 70 "date": "2025-12-23T19:12:00-05:00", 71 "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", 72 "files_changed": 2 73 }, 74 { 75 "hash": "6b5cf20f95ea43d18c5d05fa80ff7e94d7aa26d2", 76 "short_hash": "6b5cf20", 77 "author": "Ariel M. Lighty", 78 "date": "2025-12-23T19:05:42-05:00", 79 "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", 80 "files_changed": 6 81 }, 82 { 83 "hash": "43710263eec21891c899f57e4d0434322612d353", 84 "short_hash": "4371026", 85 "author": "Ariel M. Lighty", 86 "date": "2025-12-23T18:11:36-05:00", 87 "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", 88 "files_changed": 3 89 }, 90 { 91 "hash": "65ac856188d644baed837eea7775aed307ca0a56", 92 "short_hash": "65ac856", 93 "author": "Ariel M. Lighty", 94 "date": "2025-12-23T16:07:44-05:00", 95 "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", 96 "files_changed": 1 97 }, 98 { 99 "hash": "093b47d63a6324c2e4bc231d45c5d9d6792383ed", 100 "short_hash": "093b47d", 101 "author": "Ariel M. Lighty", 102 "date": "2025-12-23T15:58:35-05:00", 103 "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", 104 "files_changed": 5 105 } 106]