···88888989 // Validate successor DID format if provided
9090 if successor != "" {
9191- if !atproto.IsDID(successor) || !strings.HasPrefix(successor, "did:web:") {
9292- setFlash(w, r, "error", "Successor must be a valid did:web: DID (e.g., did:web:hold.example.com)")
9191+ if !atproto.IsDID(successor) || !(strings.HasPrefix(successor, "did:web:") || strings.HasPrefix(successor, "did:plc:")) {
9292+ setFlash(w, r, "error", "Successor must be a valid did:web: or did:plc: DID")
9393 http.Redirect(w, r, "/admin#settings", http.StatusFound)
9494 return
9595 }
···5151 <small class="text-base-content/60">DID of the successor hold. When set, the appview redirects all requests to the successor.</small>
5252 </span>
5353 <input type="text" name="successor" class="input input-bordered w-full font-mono text-sm"
5454- placeholder="did:web:hold.example.com"
5454+ placeholder="did:web:hold.example.com or did:plc:..."
5555 value="{{.Settings.Successor}}">
5656 </label>
5757 </div>