Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments

sign in fixes and remove margin pds from sign up modal temporarily

+16 -24
+1 -1
backend/internal/oauth/handler.go
··· 467 } 468 }() 469 470 - http.Redirect(w, r, "/?logged_in=true", http.StatusFound) 471 } 472 473 func (h *Handler) cleanupOrphanedReplies(did, accessToken, dpopKeyPEM, pds string) {
··· 467 } 468 }() 469 470 + http.Redirect(w, r, "/home?logged_in=true", http.StatusFound) 471 } 472 473 func (h *Handler) cleanupOrphanedReplies(did, accessToken, dpopKeyPEM, pds string) {
+13 -23
web/src/components/SignUpModal.jsx
··· 2 import { X, ChevronRight, Loader2, AlertCircle } from "lucide-react"; 3 import { BlackskyIcon, NorthskyIcon, BlueskyIcon, TopphieIcon } from "./Icons"; 4 import { startSignup } from "../api/client"; 5 - import logo from "../assets/logo.svg"; 6 7 const RECOMMENDED_PROVIDER = { 8 - id: "margin", 9 - name: "Margin", 10 - service: "https://pds.margin.at", 11 - Icon: null, 12 - description: "Hosted by Margin, the easiest way to get started", 13 - isMargin: true, 14 }; 15 16 const OTHER_PROVIDERS = [ 17 - { 18 - id: "bluesky", 19 - name: "Bluesky", 20 - service: "https://bsky.social", 21 - Icon: BlueskyIcon, 22 - description: "The main network", 23 - }, 24 { 25 id: "blacksky", 26 name: "Blacksky", ··· 137 <h2>Custom Provider</h2> 138 <form onSubmit={handleCustomSubmit}> 139 <div className="form-group"> 140 - <label>PDS address (e.g. pds.example.com)</label> 141 <input 142 type="text" 143 value={customService} 144 onChange={(e) => setCustomService(e.target.value)} 145 placeholder="pds.example.com" ··· 157 <div className="modal-actions"> 158 <button 159 type="button" 160 - className="btn-secondary" 161 onClick={() => { 162 setShowCustomInput(false); 163 setError(null); ··· 167 </button> 168 <button 169 type="submit" 170 - className="btn-primary" 171 disabled={!customService.trim()} 172 > 173 Continue ··· 179 <div className="signup-step"> 180 <h2>Create your account</h2> 181 <p className="signup-subtitle"> 182 - Margin uses the AT Protocol — the same decentralized network that 183 powers Bluesky. Your account will be hosted on a server of your 184 choice. 185 </p> ··· 198 onClick={() => handleProviderSelect(RECOMMENDED_PROVIDER)} 199 > 200 <div className="provider-icon"> 201 - <img 202 - src={logo} 203 - alt="Margin" 204 - style={{ width: 24, height: 24 }} 205 - /> 206 </div> 207 <div className="provider-info"> 208 <h3>{RECOMMENDED_PROVIDER.name}</h3>
··· 2 import { X, ChevronRight, Loader2, AlertCircle } from "lucide-react"; 3 import { BlackskyIcon, NorthskyIcon, BlueskyIcon, TopphieIcon } from "./Icons"; 4 import { startSignup } from "../api/client"; 5 6 const RECOMMENDED_PROVIDER = { 7 + id: "bluesky", 8 + name: "Bluesky", 9 + service: "https://bsky.social", 10 + Icon: BlueskyIcon, 11 + description: "The most popular option, recommended for most people", 12 }; 13 14 const OTHER_PROVIDERS = [ 15 { 16 id: "blacksky", 17 name: "Blacksky", ··· 128 <h2>Custom Provider</h2> 129 <form onSubmit={handleCustomSubmit}> 130 <div className="form-group"> 131 + <label className="form-label"> 132 + PDS address (e.g. pds.example.com) 133 + </label> 134 <input 135 type="text" 136 + className="form-input" 137 value={customService} 138 onChange={(e) => setCustomService(e.target.value)} 139 placeholder="pds.example.com" ··· 151 <div className="modal-actions"> 152 <button 153 type="button" 154 + className="btn btn-secondary" 155 onClick={() => { 156 setShowCustomInput(false); 157 setError(null); ··· 161 </button> 162 <button 163 type="submit" 164 + className="btn btn-primary" 165 disabled={!customService.trim()} 166 > 167 Continue ··· 173 <div className="signup-step"> 174 <h2>Create your account</h2> 175 <p className="signup-subtitle"> 176 + Margin uses the AT Protocol, the same decentralized network that 177 powers Bluesky. Your account will be hosted on a server of your 178 choice. 179 </p> ··· 192 onClick={() => handleProviderSelect(RECOMMENDED_PROVIDER)} 193 > 194 <div className="provider-icon"> 195 + <RECOMMENDED_PROVIDER.Icon size={24} /> 196 </div> 197 <div className="provider-info"> 198 <h3>{RECOMMENDED_PROVIDER.name}</h3>
+2
web/src/css/login.css
··· 6 min-height: 80vh; 7 padding: 40px 20px; 8 width: 100%; 9 } 10 11 .login-header-group {
··· 6 min-height: 80vh; 7 padding: 40px 20px; 8 width: 100%; 9 + max-width: 440px; 10 + margin: 0 auto; 11 } 12 13 .login-header-group {