···6363 if did is None:
6464 return render_template("error.html", message="did not found"), 404
6565 elif is_valid_did(atid):
6666+ handle = None
6667 did = atid
6768 else:
6869 return render_template("error.html", message="invalid did or handle"), 400
···8586 return redirect(request.path)
86878788 athref = f"at://{did}/at.ligo.actor.links/self"
8888- return render_template("profile.html", profile=profile, links=links, athref=athref)
8989+ canonical = f"https://ligo.at/{f'@{handle}' if handle else did}"
9090+ return render_template(
9191+ "profile.html",
9292+ profile=profile,
9393+ links=links,
9494+ canonical=canonical,
9595+ athref=athref,
9696+ )
899790989199@app.get("/login")
+4-1
src/templates/login.html
···2424 </label>
2525 <span class="faded caption">
2626 Use your AT Protocol handle to log in.
2727- If you're unsure you can <a href="{{ url_for('oauth.oauth_start', authserver='https://bsky.social') }}">log in with Bluesky</a>.
2727+ If you're unsure you can
2828+ <a href="{{ url_for('oauth.oauth_start', authserver='https://bsky.social') }}" rel="nofollow">
2929+ log in with Bluesky
3030+ </a>.
2831 </span>
2932 <input type="submit" value="continue" />
3033 </form>