diff --git a/88x31/index.html b/88x31/index.html index 4087e41..f4ae45d 100644 --- a/88x31/index.html +++ b/88x31/index.html @@ -10,34 +10,34 @@ - - - - + + + + - + - + - + - - - - - - - + + + + + + + - - - - + + + + @@ -62,26 +62,44 @@
diff --git a/assets/88x31/bluepantsu.gif b/assets/88x31/bluepantsu.gif new file mode 100644 index 0000000..141103b Binary files /dev/null and b/assets/88x31/bluepantsu.gif differ diff --git a/assets/88x31/dark-mode.gif b/assets/88x31/dark-mode.gif new file mode 100644 index 0000000..3171661 Binary files /dev/null and b/assets/88x31/dark-mode.gif differ diff --git a/assets/88x31/htmldream.gif b/assets/88x31/htmldream.gif new file mode 100644 index 0000000..28fd2c2 Binary files /dev/null and b/assets/88x31/htmldream.gif differ diff --git a/assets/88x31/macbutton.gif b/assets/88x31/macbutton.gif new file mode 100644 index 0000000..4292104 Binary files /dev/null and b/assets/88x31/macbutton.gif differ diff --git a/assets/88x31/no.gif b/assets/88x31/no.gif new file mode 100644 index 0000000..188b46c Binary files /dev/null and b/assets/88x31/no.gif differ diff --git a/assets/88x31/pokemon.gif b/assets/88x31/pokemon.gif new file mode 100644 index 0000000..996001c Binary files /dev/null and b/assets/88x31/pokemon.gif differ diff --git a/assets/88x31/queerpride.gif b/assets/88x31/queerpride.gif new file mode 100644 index 0000000..6749c9d Binary files /dev/null and b/assets/88x31/queerpride.gif differ diff --git a/assets/88x31/valid-css.gif b/assets/88x31/valid-css.gif new file mode 100644 index 0000000..020c75a Binary files /dev/null and b/assets/88x31/valid-css.gif differ diff --git a/assets/88x31/valid-html5.gif b/assets/88x31/valid-html5.gif new file mode 100644 index 0000000..5cf8da1 Binary files /dev/null and b/assets/88x31/valid-html5.gif differ diff --git a/assets/88x31/vscbutton.gif b/assets/88x31/vscbutton.gif new file mode 100644 index 0000000..8a4cad2 Binary files /dev/null and b/assets/88x31/vscbutton.gif differ diff --git a/assets/88x31/winrar4.gif b/assets/88x31/winrar4.gif new file mode 100644 index 0000000..bb5761d Binary files /dev/null and b/assets/88x31/winrar4.gif differ diff --git a/cool-people/index.html b/cool-people/index.html index 92be40e..a713ad9 100644 --- a/cool-people/index.html +++ b/cool-people/index.html @@ -10,34 +10,34 @@ - - - - + + + + - + - + - + - - - - - - - + + + + + + + - - - - + + + + diff --git a/css/main.css b/css/main.css index 5014259..36f0a86 100644 --- a/css/main.css +++ b/css/main.css @@ -1530,6 +1530,9 @@ details.waka-section[open]>summary.section-title::after { line-height: 1.5; color: var(--text); overflow: hidden; + /* lets .t-banner size itself off the terminal's width (cqw), not the + viewport, so the ascii always fits regardless of the loaded font */ + container-type: inline-size; } body:has(.terminal) .hub { @@ -1589,10 +1592,12 @@ body:has(.terminal) .hub .terminal { .t-banner { margin: 0 0 0.5rem; color: rgb(var(--accent-rgb)); - font-size: clamp(0.4rem, 1.45vw, 0.78rem); + /* scale to the terminal's width (1cqw = 1% of it) so the 42-char banner + always fits; capped so it never gets oversized on a wide terminal */ + font-size: min(0.78rem, 1.9cqw); line-height: 1.04; white-space: pre; - overflow-x: auto; + overflow: hidden; text-shadow: 0 0 14px rgba(var(--accent-rgb), 0.35); } @@ -3499,6 +3504,11 @@ body:has(.presence-stage) { padding: 0.9rem 1.4rem; align-items: flex-end; } +/* when a custom status sits in the identity column, top-align so the avatar + stays anchored to the name instead of being dragged down by the bubble */ +.presence-stage .presence-card.has-custom .pc-head { + align-items: flex-start; +} .presence-stage .presence-card.has-banner .pc-head, .presence-stage .presence-card.has-banner-color .pc-head { /* only the avatar pokes into the banner; the name/identity block clears it */ @@ -3625,9 +3635,21 @@ body:has(.presence-stage) { #lc-embed p { color: var(--subtext-0) !important; } #lc-embed p span { color: rgb(var(--accent-rgb)) !important; } -/* tuck out of the way on small screens so it doesn't cover content */ +/* On mobile the body is a single flex column and every other floating + widget (nav, badges, presence card) is reflowed into it. The keyring, + left fixed, floated over the nav pills when scrolled to the bottom — so + here we drop it into the column too, last and centered. */ @media (max-width: 640px) { - #lc-embed { left: 0.5rem !important; bottom: 0.5rem !important; } + #lc-embed { + position: static !important; + inset: auto !important; + order: 6 !important; + width: 100% !important; + margin: 0 !important; + z-index: auto !important; + display: flex !important; + justify-content: center !important; + } #lc-embed > section > div { min-width: 0 !important; } } diff --git a/dev-info/index.html b/dev-info/index.html index ea011ac..aac6035 100644 --- a/dev-info/index.html +++ b/dev-info/index.html @@ -10,34 +10,34 @@ - - - - + + + + - + - + - + - - - - - - - + + + + + + + - - - - + + + + diff --git a/discord-bots/index.html b/discord-bots/index.html index 32056aa..256ce4f 100644 --- a/discord-bots/index.html +++ b/discord-bots/index.html @@ -10,34 +10,34 @@ - - - - + + + + - + - + - + - - - - - - - + + + + + + + - - - - + + + + @@ -69,7 +69,7 @@
- + Ghostwire Closed Source @@ -77,7 +77,7 @@ - + GayBot Open Source @@ -85,7 +85,7 @@ - + BanSync Open Source @@ -101,7 +101,7 @@
- + Shortcuts Bot Open Source @@ -109,7 +109,7 @@ - + Zahra Open Source @@ -117,7 +117,7 @@ - + OnlyMeows Open Source @@ -125,7 +125,7 @@ - + Mod Update Checker Open Source @@ -133,7 +133,7 @@ - + Uzi Doorman Open Source @@ -141,7 +141,7 @@ - + Doughmination Robot Open Source @@ -149,7 +149,7 @@ - + Cuddle Blahaj Medication Open Source @@ -165,7 +165,7 @@
- + Widget-v2 Script Open Source diff --git a/discord/index.html b/discord/index.html index 5681005..476d7ad 100644 --- a/discord/index.html +++ b/discord/index.html @@ -10,34 +10,34 @@ - - - - + + + + - + - + - + - - - - - - - + + + + + + + - - - - + + + + diff --git a/index.html b/index.html index 0a63463..c2ca31d 100644 --- a/index.html +++ b/index.html @@ -10,34 +10,34 @@ - - - - + + + + - + - + - + - - - - - - - + + + + + + + - - - - + + + + @@ -63,7 +63,7 @@
-
+
diff --git a/js/now-playing.js b/js/now-playing.js index bf8ca66..d4aee4e 100644 --- a/js/now-playing.js +++ b/js/now-playing.js @@ -77,6 +77,7 @@ const metaEl = card.querySelector(".pc-meta"); const badgesEl = card.querySelector(".pc-badges"); const sections = card.querySelector(".pc-sections"); + const idEl = card.querySelector(".pc-id"); const starBtn = card.querySelector(".pc-star"); const wishlistEl = card.querySelector(".pc-wishlist"); const bannerEl = card.querySelector(".pc-banner"); @@ -114,6 +115,7 @@ } let latest = null; + let customNode = null; let ticker = null; let ws = null; let heartbeat = null; @@ -558,8 +560,16 @@ sections.innerHTML = ""; + // The custom status renders in the identity column, directly under the + // name, so its thought-bubble tail rises to the username (Discord-style) + // — rather than down in the activity list. + if (customNode) { customNode.remove(); customNode = null; } const custom = acts.find((a) => a.type === 4); - if (custom && (custom.state || (custom.emoji && custom.emoji.id))) sections.appendChild(customRow(custom)); + if (custom && (custom.state || (custom.emoji && custom.emoji.id))) { + customNode = customRow(custom); + idEl.appendChild(customNode); + } + card.classList.toggle("has-custom", !!customNode); if (d.listening_to_spotify && d.spotify) { sections.appendChild(spotifyRow(d.spotify)); diff --git a/js/terminal.js b/js/terminal.js index 4908497..7c4e17a 100644 --- a/js/terminal.js +++ b/js/terminal.js @@ -22,8 +22,7 @@ reddit: { label: "Reddit", sub: "u/XerinDotZero", url: "https://www.reddit.com/user/XerinDotZero/" }, youtube: { label: "YouTube", sub: "@CloveTwiGaming", url: "https://www.youtube.com/@CloveTwiGaming", aliases: ["yt"] }, mastodon: { label: "Mastodon", sub: "@doughmination@mastodon.social", url: "https://mastodon.social/@doughmination" }, - email: { label: "Email", sub: "admin@doughmination.win", url: "mailto:admin@doughmination.win", aliases: ["mail"] }, - portfolio: { label: "Portfolio", sub: "doughmination.co.uk", url: "https://doughmination.co.uk/", aliases: ["website", "site"] } + email: { label: "Email", sub: "admin@doughmination.win", url: "mailto:admin@doughmination.win", aliases: ["mail"] } }; const ALIASES = {}; Object.keys(SOCIALS).forEach((k) => { @@ -33,8 +32,7 @@ const SOCIAL_ICON = { github: "github", gitgay: "git-gay", twitter: "twitter", bluesky: "bluesky", linkedin: "linkedin", spotify: "spotify", discord: "discord", twitch: "twitch", - reddit: "reddit", youtube: "youtube", mastodon: "mastodon", email: "email", - company: "site", portfolio: "site" + reddit: "reddit", youtube: "youtube", mastodon: "mastodon", email: "email" }; function iconImg(key) { return ''; diff --git a/music/index.html b/music/index.html index 62cacfc..ab11115 100644 --- a/music/index.html +++ b/music/index.html @@ -10,20 +10,20 @@ - - - - - + + + + + - - - - - - - + + + + + + +