An event companion and onboarding experience for the ATmosphere (alpha) atmo.quest
6

Configure Feed

Select the types of activity you want to include in your feed.

Finish about the atmosphere page

authored by

Brittany Ellich and committed by
Tangled
(May 24, 2026, 4:12 AM UTC) 55ebb7d0 d75249e4

+11 -6
+8 -6
features/about/pages/about_templ.go
··· 5 5 6 6 //lint:file-ignore SA4006 This context is only used if a nested component is present. 7 7 8 - import "github.com/a-h/templ" 9 - import templruntime "github.com/a-h/templ/runtime" 8 + import ( 9 + "atmoquest/features/common/layouts" 10 10 11 - import "atmoquest/features/common/layouts" 11 + "github.com/a-h/templ" 12 + templruntime "github.com/a-h/templ/runtime" 13 + ) 12 14 13 15 // AboutATProto is a short explainer page linked from the guest landing and 14 16 // settings. Intentionally tiny — its job is to give a curious visitor enough ··· 47 49 }() 48 50 } 49 51 ctx = templ.InitializeContext(ctx) 50 - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"window\"><div class=\"window-bar\"><div class=\"dot dot-r\"></div><div class=\"dot dot-y\"></div><div class=\"dot dot-g\"></div><div class=\"window-title\">about atproto</div></div><div class=\"window-body\"><div class=\"prompt-line\"><span class=\"user\">you</span><span class=\"at\">") 52 + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"window\"><div class=\"window-bar\"><div class=\"dot dot-r\"></div><div class=\"dot dot-y\"></div><div class=\"dot dot-g\"></div><div class=\"window-title\">about the Atmosphere</div></div><div class=\"window-body\"><div class=\"prompt-line\"><span class=\"user\">you</span><span class=\"at\">") 51 53 if templ_7745c5c3_Err != nil { 52 54 return templ_7745c5c3_Err 53 55 } ··· 60 62 if templ_7745c5c3_Err != nil { 61 63 return templ_7745c5c3_Err 62 64 } 63 - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</span><span class=\"path\">atmo.quest</span><span class=\"sep\">:~$</span> <span class=\"cmd\">cat /etc/atproto/about.md</span></div><div class=\"hero-block\"><span class=\"hero-tag\">protocol · open · yours</span><h1>your <span class=\"quest\">data</span></h1><p class=\"lede\">ATProto is an <span class=\"kw\">open social protocol</span>. Instead of accounts living inside one company's database, your records live in <span class=\"kw2\">your repo</span> — a personal data store you can take with you.</p></div><p class=\"output\">atmo.quest writes connection, check-in, and badge records to your PDS. If atmo.quest disappears tomorrow, those records still exist in your repo and can be read by any other ATProto-aware app.</p><div class=\"ctas\"><a href=\"/\" class=\"btn btn-ghost\">← back</a> <a href=\"https://atproto.com\" target=\"_blank\" rel=\"noreferrer\" class=\"btn btn-ghost\">read the protocol docs ↗</a> ") 65 + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</span><span class=\"path\">atmo.quest</span><span class=\"sep\">:~$</span> <span class=\"cmd\">cat /about-atmosphere.md</span></div><div class=\"hero-block\"><span class=\"hero-tag\">atprotocol · open social</span><h1>about the <span class=\"quest\">Atmosphere</span></h1><p class=\"lede\">The Atmosphere, also called ATProtocol, is an <span class=\"kw\">open social protocol</span>. Instead of accounts living inside one company's database, your data lives in <span class=\"kw2\">your repo</span> — a personal data store you can take with you.</p></div><p class=\"output\">atmo.quest writes connection, check-in, and badge records to your repo. If atmo.quest disappears tomorrow, those records still exist in your repo and can be read by any other Atmosphere app. If atmo.quest starts doing something that you don't like, you can take your data and your connections anywhere else you'd like.</p><p>You don't have to start over on a new social media app every few years now. <span class=\"kw\">Let's make social media social again.</span></p><div class=\"ctas\"><a href=\"/\" class=\"btn btn-ghost\">← back</a> <a href=\"https://atproto.com\" target=\"_blank\" rel=\"noreferrer\" class=\"btn btn-ghost\">read the protocol docs ↗</a> ") 64 66 if templ_7745c5c3_Err != nil { 65 67 return templ_7745c5c3_Err 66 68 } ··· 76 78 } 77 79 return nil 78 80 }) 79 - templ_7745c5c3_Err = layouts.Base("What's ATProto?", "ATProto is an open social protocol — your records live in your repo, not ours.").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) 81 + templ_7745c5c3_Err = layouts.Base("What's the Atmosphere?", "The Atmosphere, also called ATProtocol, is an open social protocol. Your records, connections, and data are owned by you, and you decide what happens with them.").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) 80 82 if templ_7745c5c3_Err != nil { 81 83 return templ_7745c5c3_Err 82 84 }
+3
web/resources/static/css/terminal.css
··· 161 161 .lede .kw { color: var(--green); } 162 162 .lede .kw2 { color: var(--peach); } 163 163 164 + .kw { color: var(--green); } 165 + 164 166 /* CTA row */ 165 167 .ctas { 166 168 display: flex; 167 169 gap: 12px; 168 170 flex-wrap: wrap; 169 171 margin-bottom: 8px; 172 + margin-top: 16px; 170 173 } 171 174 .btn { 172 175 font-family: inherit;