+2
-2
dist/index.html
+2
-2
dist/index.html
···
26
26
content="black-translucent"
27
27
/>
28
28
<title>ATLast: Find Your People in the ATmosphere</title>
29
-
<script type="module" crossorigin src="/assets/index-CdDButDP.js"></script>
30
-
<link rel="stylesheet" crossorigin href="/assets/index-F6FWqyRt.css">
29
+
<script type="module" crossorigin src="/assets/index-B6s4IGol.js"></script>
30
+
<link rel="stylesheet" crossorigin href="/assets/index-Bs5F61QC.css">
31
31
</head>
32
32
<body>
33
33
<div id="root"></div>
+16
docs/git-history.json
+16
docs/git-history.json
···
1
1
[
2
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
+
{
3
19
"hash": "6cd4d622930e2a43531f2df40d930ceb5d2b4dbc",
4
20
"short_hash": "6cd4d62",
5
21
"author": "Ariel M. Lighty",
+209
docs/graph-data.json
+209
docs/graph-data.json
···
1814
1814
"created_at": "2025-12-24T01:07:44.847703900-05:00",
1815
1815
"updated_at": "2025-12-24T16:16:11.630543-05:00",
1816
1816
"metadata_json": "{\"branch\":\"master\",\"commit\":\"6cd4d62\",\"confidence\":95}"
1817
+
},
1818
+
{
1819
+
"id": 166,
1820
+
"change_id": "19750fc5-2408-41a7-bc14-453458d4c32f",
1821
+
"node_type": "goal",
1822
+
"title": "Refactor Login page: DRY principles, add @ symbol/avatar, ATmosphere explanations, rotating placeholders",
1823
+
"description": null,
1824
+
"status": "completed",
1825
+
"created_at": "2025-12-24T17:31:12.960079400-05:00",
1826
+
"updated_at": "2025-12-24T18:22:36.883909400-05:00",
1827
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":95,\"prompt\":\"Update the login page to use DRY principles. Is it reasonable for the file to be 389 lines? If not, address that following Typescript+React+Tailwind best practices. Add a visual @ symbol in front of the username in the input field. Replace it with the user profile pic when a handle is selected from the typeahead. Suggest text and UI ways to add information on what \\\"ATmosphere\\\" to a lay audience. Suggest ways we might modify the \\\"username.bsky.social\\\" to be platform-agnostic, e.g., rotating the provider platform btwn options like \\\".blacksky.app\\\", \\\"tngl.sh\\\", \\\".com\\\" - but this shouldn't feel cluttering or overwhelming to users. Stage and commit as you go, separate concerns.\"}"
1828
+
},
1829
+
{
1830
+
"id": 167,
1831
+
"change_id": "9f3909fd-b51d-4a00-8425-e03426bc230f",
1832
+
"node_type": "outcome",
1833
+
"title": "Login page refactored: 389→258 lines (33% reduction), 5 new components, @ symbol with avatar replacement, rotating placeholders, ATmosphere tooltips",
1834
+
"description": null,
1835
+
"status": "completed",
1836
+
"created_at": "2025-12-24T17:31:24.903737600-05:00",
1837
+
"updated_at": "2025-12-24T18:22:39.123902500-05:00",
1838
+
"metadata_json": "{\"branch\":\"master\",\"commit\":\"HEAD~5\",\"confidence\":95}"
1839
+
},
1840
+
{
1841
+
"id": 168,
1842
+
"change_id": "3caaaa83-caa9-4695-b043-37e5367ffb4a",
1843
+
"node_type": "goal",
1844
+
"title": "Fix avatar not displaying when handle selected/entered in login",
1845
+
"description": null,
1846
+
"status": "completed",
1847
+
"created_at": "2025-12-24T18:22:48.900518500-05:00",
1848
+
"updated_at": "2025-12-24T18:35:14.800218900-05:00",
1849
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":90}"
1850
+
},
1851
+
{
1852
+
"id": 169,
1853
+
"change_id": "5c0cdde6-1079-4390-aab2-7e8ef8bd94b7",
1854
+
"node_type": "action",
1855
+
"title": "Reading HandleInput component to understand avatar display logic",
1856
+
"description": null,
1857
+
"status": "pending",
1858
+
"created_at": "2025-12-24T18:23:05.987261100-05:00",
1859
+
"updated_at": "2025-12-24T18:23:05.987261100-05:00",
1860
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":90}"
1861
+
},
1862
+
{
1863
+
"id": 170,
1864
+
"change_id": "9269b746-5275-484c-9314-b436847bf835",
1865
+
"node_type": "observation",
1866
+
"title": "actor-typeahead stores avatar in private #actors array but doesn't expose it via events or attributes. When user selects a suggestion, it only sets input.value - no avatar data accessible. Need alternative approach to get avatar.",
1867
+
"description": null,
1868
+
"status": "pending",
1869
+
"created_at": "2025-12-24T18:24:33.075823300-05:00",
1870
+
"updated_at": "2025-12-24T18:24:33.075823300-05:00",
1871
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":95}"
1872
+
},
1873
+
{
1874
+
"id": 171,
1875
+
"change_id": "182aab31-aa57-42bb-8d63-cf15a7e80105",
1876
+
"node_type": "decision",
1877
+
"title": "Choose approach for avatar display: 1) Fetch avatar via Bluesky API when handle entered, 2) Fork actor-typeahead to emit events, 3) Use MutationObserver to watch dropdown DOM",
1878
+
"description": null,
1879
+
"status": "pending",
1880
+
"created_at": "2025-12-24T18:24:37.875781600-05:00",
1881
+
"updated_at": "2025-12-24T18:24:37.875781600-05:00",
1882
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":85}"
1883
+
},
1884
+
{
1885
+
"id": 172,
1886
+
"change_id": "a0764baa-c522-495b-ae4c-a51b22b786bc",
1887
+
"node_type": "outcome",
1888
+
"title": "Chose approach 1: Fetch avatar via Bluesky API. Reasons: Works for both typeahead + manual entry, no need to fork component, simple implementation, validates handle exists.",
1889
+
"description": null,
1890
+
"status": "pending",
1891
+
"created_at": "2025-12-24T18:24:51.231785800-05:00",
1892
+
"updated_at": "2025-12-24T18:24:51.231785800-05:00",
1893
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":90}"
1894
+
},
1895
+
{
1896
+
"id": 173,
1897
+
"change_id": "328ea1bd-379a-4133-8dc8-300b03943ec8",
1898
+
"node_type": "action",
1899
+
"title": "Implementing avatar fetch from Bluesky API on handle input change",
1900
+
"description": null,
1901
+
"status": "pending",
1902
+
"created_at": "2025-12-24T18:24:56.020367200-05:00",
1903
+
"updated_at": "2025-12-24T18:24:56.020367200-05:00",
1904
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":85}"
1905
+
},
1906
+
{
1907
+
"id": 174,
1908
+
"change_id": "d9a4f78c-d1e0-4fa6-bd0b-296eba8064e5",
1909
+
"node_type": "outcome",
1910
+
"title": "Successfully implemented avatar fetch from Bluesky API. Added debounced fetch (300ms) that calls searchActorsTypeahead API when handle entered. Works for both typeahead selections and manual entry. Avatar displays when valid handle found. Build passes.",
1911
+
"description": null,
1912
+
"status": "pending",
1913
+
"created_at": "2025-12-24T18:27:32.316881600-05:00",
1914
+
"updated_at": "2025-12-24T18:27:32.316881600-05:00",
1915
+
"metadata_json": "{\"branch\":\"master\",\"confidence\":95}"
1916
+
},
1917
+
{
1918
+
"id": 175,
1919
+
"change_id": "dde6eb8d-4d35-414e-9d2e-8a577c4338df",
1920
+
"node_type": "action",
1921
+
"title": "Committed avatar fix to git",
1922
+
"description": null,
1923
+
"status": "pending",
1924
+
"created_at": "2025-12-24T18:35:10.368162900-05:00",
1925
+
"updated_at": "2025-12-24T18:35:10.368162900-05:00",
1926
+
"metadata_json": "{\"branch\":\"master\",\"commit\":\"9bdca93\",\"confidence\":100}"
1817
1927
}
1818
1928
],
1819
1929
"edges": [
···
3598
3708
"weight": 1.0,
3599
3709
"rationale": "Commit action",
3600
3710
"created_at": "2025-12-24T01:07:46.216122700-05:00"
3711
+
},
3712
+
{
3713
+
"id": 163,
3714
+
"from_node_id": 166,
3715
+
"to_node_id": 167,
3716
+
"from_change_id": "19750fc5-2408-41a7-bc14-453458d4c32f",
3717
+
"to_change_id": "9f3909fd-b51d-4a00-8425-e03426bc230f",
3718
+
"edge_type": "leads_to",
3719
+
"weight": 1.0,
3720
+
"rationale": "Refactoring complete",
3721
+
"created_at": "2025-12-24T17:31:25.070485100-05:00"
3722
+
},
3723
+
{
3724
+
"id": 164,
3725
+
"from_node_id": 166,
3726
+
"to_node_id": 168,
3727
+
"from_change_id": "19750fc5-2408-41a7-bc14-453458d4c32f",
3728
+
"to_change_id": "3caaaa83-caa9-4695-b043-37e5367ffb4a",
3729
+
"edge_type": "leads_to",
3730
+
"weight": 1.0,
3731
+
"rationale": "Follow-up bug discovered during testing",
3732
+
"created_at": "2025-12-24T18:22:51.047366300-05:00"
3733
+
},
3734
+
{
3735
+
"id": 165,
3736
+
"from_node_id": 168,
3737
+
"to_node_id": 169,
3738
+
"from_change_id": "3caaaa83-caa9-4695-b043-37e5367ffb4a",
3739
+
"to_change_id": "5c0cdde6-1079-4390-aab2-7e8ef8bd94b7",
3740
+
"edge_type": "leads_to",
3741
+
"weight": 1.0,
3742
+
"rationale": "Investigation action",
3743
+
"created_at": "2025-12-24T18:23:19.896584600-05:00"
3744
+
},
3745
+
{
3746
+
"id": 166,
3747
+
"from_node_id": 169,
3748
+
"to_node_id": 170,
3749
+
"from_change_id": "5c0cdde6-1079-4390-aab2-7e8ef8bd94b7",
3750
+
"to_change_id": "9269b746-5275-484c-9314-b436847bf835",
3751
+
"edge_type": "leads_to",
3752
+
"weight": 1.0,
3753
+
"rationale": "Finding from code analysis",
3754
+
"created_at": "2025-12-24T18:24:35.392542800-05:00"
3755
+
},
3756
+
{
3757
+
"id": 167,
3758
+
"from_node_id": 170,
3759
+
"to_node_id": 171,
3760
+
"from_change_id": "9269b746-5275-484c-9314-b436847bf835",
3761
+
"to_change_id": "182aab31-aa57-42bb-8d63-cf15a7e80105",
3762
+
"edge_type": "leads_to",
3763
+
"weight": 1.0,
3764
+
"rationale": "Decision based on finding",
3765
+
"created_at": "2025-12-24T18:24:40.260592400-05:00"
3766
+
},
3767
+
{
3768
+
"id": 168,
3769
+
"from_node_id": 171,
3770
+
"to_node_id": 172,
3771
+
"from_change_id": "182aab31-aa57-42bb-8d63-cf15a7e80105",
3772
+
"to_change_id": "a0764baa-c522-495b-ae4c-a51b22b786bc",
3773
+
"edge_type": "leads_to",
3774
+
"weight": 1.0,
3775
+
"rationale": "Decision made",
3776
+
"created_at": "2025-12-24T18:24:53.563493800-05:00"
3777
+
},
3778
+
{
3779
+
"id": 169,
3780
+
"from_node_id": 172,
3781
+
"to_node_id": 173,
3782
+
"from_change_id": "a0764baa-c522-495b-ae4c-a51b22b786bc",
3783
+
"to_change_id": "328ea1bd-379a-4133-8dc8-300b03943ec8",
3784
+
"edge_type": "leads_to",
3785
+
"weight": 1.0,
3786
+
"rationale": "Implementation based on decision",
3787
+
"created_at": "2025-12-24T18:24:58.977763900-05:00"
3788
+
},
3789
+
{
3790
+
"id": 170,
3791
+
"from_node_id": 173,
3792
+
"to_node_id": 174,
3793
+
"from_change_id": "328ea1bd-379a-4133-8dc8-300b03943ec8",
3794
+
"to_change_id": "d9a4f78c-d1e0-4fa6-bd0b-296eba8064e5",
3795
+
"edge_type": "leads_to",
3796
+
"weight": 1.0,
3797
+
"rationale": "Implementation complete",
3798
+
"created_at": "2025-12-24T18:27:34.433837500-05:00"
3799
+
},
3800
+
{
3801
+
"id": 171,
3802
+
"from_node_id": 174,
3803
+
"to_node_id": 175,
3804
+
"from_change_id": "d9a4f78c-d1e0-4fa6-bd0b-296eba8064e5",
3805
+
"to_change_id": "dde6eb8d-4d35-414e-9d2e-8a577c4338df",
3806
+
"edge_type": "leads_to",
3807
+
"weight": 1.0,
3808
+
"rationale": "Committed to repository",
3809
+
"created_at": "2025-12-24T18:35:12.609336500-05:00"
3601
3810
}
3602
3811
]
3603
3812
}