https://badmanners.xyz
@@ -98,11 +95,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); aria-label="Main gallery" data-age-restricted > -Gallery on https://gallery.badmanners.xyz
@@ -114,11 +107,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Pronouns (he/they)" > -@BadManners on pronouns.cc
@@ -134,11 +123,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); data-clipboard="me@badmanners.xyz" data-noun="E-mail address" > -me@badmanners.xyz
@@ -150,11 +135,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Bluesky" > -@badmanners.xyz on Bluesky
@@ -166,11 +147,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Codeberg" > -BadManners on Codeberg
@@ -182,11 +159,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Cohost" > -BadManners on Cohost
@@ -199,11 +172,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); data-noun="Discord username" aria-disabled="true" > -badmanners on Discord
@@ -215,11 +184,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Eka's Portal" > -BadManners on Eka's Portal
@@ -231,11 +196,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Fur Affinity" > -BadManners on Fur Affinity
@@ -247,11 +208,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="GitGud" > -BadMannersXYZ on GitGud
@@ -263,11 +220,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="GitHub" > -BadMannersXYZ on GitHub
@@ -279,11 +232,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="GitLab" > -Bad_Manners on GitLab
@@ -297,11 +246,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); data-clipboard="badmanners.vore@gmail.com" data-noun="Gmail address" > -badmanners.vore@gmail.com
@@ -314,11 +259,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); data-clipboard={gpgKey} data-noun="GPG key" > -GPG public key
@@ -330,11 +271,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Inkbunny" > -BadManners on Inkbunny
@@ -346,11 +283,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Itaku" > -badmanners on Itaku
@@ -362,11 +295,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Itch.io" > -Bad Manners on Itch.io
@@ -378,11 +307,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Keybase" > -badmanners on Keybase
@@ -394,11 +319,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Keyoxide" > -aspe:keyoxide.org:UWYBVFCBFXTVUF2U6FS6AYJHLU on Keyoxide
@@ -412,11 +333,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Ko-fi" > -badmanners on Ko-fi
@@ -428,11 +345,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Mastodon" > -@BadManners@meow.social on Mastodon
@@ -444,11 +357,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Neocities" > -badmanners.neocities.org on Neocities
@@ -460,11 +369,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Picarto" > -BadManners on Picarto
@@ -476,14 +381,22 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Reddit" > -/u/BadManners_ on Reddit
+Bad Manners on Resetera
+ +badmanners.10 on Signal
Bad Manners on SoFurry
@@ -525,11 +430,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); data-clipboard={sshKey} data-noun="SSH key" > -SSH public key
@@ -541,11 +442,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Steam" > -badmanners_ on Steam
@@ -557,11 +454,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="SubscribeStar" > -Bad Manners on SubscribeStar
@@ -573,11 +466,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Telegram" > -@bad_manners on Telegram
@@ -589,11 +478,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Tumblr" > -badmannersxyz on Tumblr
@@ -605,11 +490,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Twitch" > -bad__manners on Twitch
@@ -621,11 +502,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="Weasyl" > -BadManners on Weasyl
@@ -637,11 +514,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="X" > -@BadManners__ on X
@@ -653,11 +526,7 @@ const sshKey = await readFile("./public/ssh.pub", { encoding: "utf-8" }); rel="me" aria-label="YouTube" > -@BadMannersXYZ on YouTube
diff --git a/src/pages/robots.txt.ts b/src/pages/robots.txt.ts new file mode 100644 index 0000000..0fad9e7 --- /dev/null +++ b/src/pages/robots.txt.ts @@ -0,0 +1,10 @@ +import type { APIRoute } from "astro"; +import { AI_BOTS } from "../data/ai_bots"; + +export const GET: APIRoute = async () => { + const robots = [AI_BOTS.map((bot) => `User-agent: ${bot}`), "Disallow: /", "", "User-agent: *", "Disallow: .htaccess"] + .flat() + .join("\n"); + + return new Response(robots, { headers: { "Content-Type": "text/plain; charset=utf-8" } }); +}; diff --git a/src/styles/base.css b/src/styles/base.css index cbaeb16..615191f 100644 --- a/src/styles/base.css +++ b/src/styles/base.css @@ -27,4 +27,8 @@ .button-close { @apply rounded-full p-[6px] text-stone-800 hover:bg-stone-300 hover:text-stone-800 focus:bg-stone-300 focus:text-stone-800 sm:p-2 dark:text-zinc-300 dark:hover:bg-zinc-500 dark:hover:text-zinc-800 dark:focus:bg-zinc-500 dark:focus:text-zinc-800; } + + .contact-icon { + @apply inline transition-transform group-hover:scale-150 group-focus:scale-150 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-focus:scale-100; + } }