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]