diff --git a/changelog/index.html b/changelog/index.html index ac98c99..da78c56 100644 --- a/changelog/index.html +++ b/changelog/index.html @@ -6,7 +6,12 @@ Clove Twilight - Changelog - + + + + + + @@ -24,7 +29,7 @@ - + @@ -33,7 +38,7 @@ - + @@ -48,17 +53,23 @@ - v1.4.0 -

Changelog

@@ -68,7 +79,56 @@
- v1.4.0 + v1.6.1-beta + +
+
    +
  • Added live "Now Playing" widget powered by Discord presence + via Lanyard — shows your Discord status (online · idle · dnd) next to the current Spotify + track, album art, and a live progress bar
  • +
  • Added page-wide accent that follows the music — the album art + is snapped to the nearest Catppuccin accent and applied to your name, the nav, link-card + hovers, and the system badges, fading back to the theme pink when nothing's playing
  • +
  • Changed retired the Last.fm now-playing widget in favour of + the Lanyard one (status + Spotify progress, all client-side — still fine on GitHub Pages)
  • +
+
+ +
+
+ v1.6.0-beta + +
+
    +
  • Added Catppuccin theme switcher — the icon button in the + top-right corner cycles Mocha · Macchiato · Frappé · Latte; choice is remembered between + visits
  • +
  • Added one official-palette CSS file per flavor
  • +
  • Changed merged the oneko cat and its secret modes into a + single cat.js; dropped dead/duplicate code
  • +
  • Changed removed the corner version tag — this changelog is + now reachable only via /changelog directly
  • +
  • Changed doughmination is now the beta playground — features + bake here before graduating to clove.is-a.dev
  • +
  • Changed
  • +
+
+ +
+
+ v1.5.0-rc + +
+
    +
  • Added in badge to the corner to reference the opposing site + (clove|doughmination)
  • +
  • Added Dusty Cat mode
  • +
+
+ +
+
+ v1.4.0-rc
    @@ -83,7 +143,7 @@
    - v1.3.0 + v1.3.0-rc
      @@ -94,7 +154,7 @@
      - v1.2.0 + v1.2.0-rc
        @@ -106,7 +166,7 @@
        - v1.1.0 + v1.1.0-rc
          @@ -117,7 +177,7 @@
          - v1.0.0 + v1.0.0-rc
            @@ -129,7 +189,7 @@
            - v0.1.0 + v0.1.0-rc
              @@ -141,27 +201,28 @@ - + - + + \ No newline at end of file diff --git a/css/style.css b/css/style.css index 1349cc3..043c71a 100644 --- a/css/style.css +++ b/css/style.css @@ -31,42 +31,6 @@ font-style: normal; } -:root { - /* https://catppuccin.com/palette/ */ - /* Catppuccin Mocha */ - /* accents */ - --rosewater: #f5e0dc; - --flamingo: #f2cdcd; - --pink: #f5c2e7; - --mauve: #cba6f7; - --red: #f38ba8; - --maroon: #eba0ac; - --peach: #fab387; - --yellow: #f9e2af; - --green: #a6e3a1; - --teal: #94e2d5; - --sky: #89dceb; - --saphire: #74c7ec; - --blue: #89b4fa; - /* a lovely new blue passport */ - --lavender: #b4befe; - /* Text */ - --text: #cdd6f4; - --subtext-0: #a6adc8; - --subtext-1: #bac2de; - --overlay-0: #6c7086; - --overlay-1: #7f849c; - --overlay-2: #9399b2; - --surface-0: #313244; - --surface-1: #45475a; - --surface-2: #585b70; - /* Backgrounds */ - --base: #1e1e2e; - --mantle: #181825; - --crust: #11111b; - /* Is this the crusty crab? */ -} - * { box-sizing: border-box; } @@ -96,6 +60,14 @@ body { overflow: hidden; } +/* Gradient lives on too, so it propagates to the page canvas. + On mobile (scrolling, URL-bar resize, overscroll) the area outside + the body would otherwise expose the root canvas — white in the light + (latte) theme. Painting keeps every theme's background filled. */ +html { + background: linear-gradient(135deg, var(--base) 0%, var(--mantle) 60%, var(--crust) 100%); +} + body { font-family: 'Comic Code', sans-serif; display: flex; @@ -114,7 +86,7 @@ body::before { content: ""; position: fixed; inset: 0; - background: url(/images/estrogen.svg) center / cover no-repeat; + background: url(/images/theme/estrogen.svg) center / cover no-repeat; filter: invert(86%) sepia(8%) saturate(900%) hue-rotate(190deg) brightness(105%); opacity: 0.05; pointer-events: none; @@ -147,7 +119,8 @@ body::before { margin: 0; font-size: 2rem; font-weight: 700; - color: var(--pink); + color: rgb(var(--accent-rgb)); + transition: color 0.6s ease; } .tagline { @@ -192,28 +165,19 @@ body::before { .link-card:hover { transform: translateY(-3px); background: var(--surface-1); - border-color: var(--pink); - box-shadow: 0 6px 20px rgba(245, 194, 231, 0.22); + border-color: rgb(var(--accent-rgb)); + box-shadow: 0 6px 20px rgba(var(--accent-rgb), 0.22); } .icon { width: 30px; height: 30px; flex-shrink: 0; - filter: invert(86%) sepia(8%) saturate(900%) hue-rotate(190deg) brightness(105%); + filter: brightness(0) invert(1); transition: filter 0.15s ease; } .link-card:hover .icon { - filter: invert(78%) sepia(36%) saturate(640%) hue-rotate(280deg) brightness(105%); -} - -/* git.gay: white by default, true pride colors on hover */ -.icon.raw { - filter: brightness(0) invert(1); -} - -.link-card:hover .icon.raw { filter: none; } @@ -230,7 +194,7 @@ body::before { padding: 0.5rem 0.75rem; border-radius: 10px; background: var(--crust); - border: 1px solid var(--pink); + border: 1px solid rgb(var(--accent-rgb)); box-shadow: 0 6px 18px rgba(17, 17, 27, 0.55); white-space: nowrap; line-height: 1.3; @@ -248,7 +212,7 @@ body::before { left: 50%; transform: translateX(-50%); border: 6px solid transparent; - border-top-color: var(--pink); + border-top-color: rgb(var(--accent-rgb)); } .link-card:hover .link-text, @@ -268,12 +232,11 @@ body::before { color: var(--subtext-0); } -.link-card.arch .link-title { - color: var(--pink); -} - -/* "Now playing" widget, pinned top-left */ +/* "Now playing" widget, pinned top-left. + Discord presence + Spotify via Lanyard. The album-art accent colour is + exposed as --np-accent (r, g, b) and used while .has-accent is set. */ .now-playing { + --np-accent: 245, 194, 231; /* fallback ~ Catppuccin pink */ position: fixed; top: 1rem; left: 1rem; @@ -281,14 +244,15 @@ body::before { display: flex; align-items: center; gap: 0.55rem; - max-width: 240px; + max-width: 260px; padding: 0.4rem 0.7rem 0.4rem 0.4rem; border-radius: 999px; background: var(--surface-0); border: 1px solid var(--surface-1); color: var(--text); text-decoration: none; - transition: transform 0.15s ease, border-color 0.15s ease; + transition: transform 0.15s ease, border-color 0.2s ease, + border-radius 0.25s ease, box-shadow 0.2s ease; } .now-playing[hidden] { @@ -300,12 +264,65 @@ body::before { border-color: var(--pink); } +/* When a track is playing the pill grows a little and squares off slightly to + make room for the progress bar, and picks up a faint album-art glow. */ +.now-playing.is-live { + align-items: stretch; + border-radius: 16px; +} + +.now-playing.is-live.has-accent { + border-color: rgba(var(--np-accent), 0.55); + box-shadow: 0 6px 22px -10px rgba(var(--np-accent), 0.6); +} + +.now-playing.is-live:hover.has-accent { + border-color: rgba(var(--np-accent), 0.85); +} + +/* Discord status dot */ +/* Head row: status dot + status word, always visible (so the Discord status + shows even while a track is playing, like Mufaro's). */ +.np-head { + display: flex; + align-items: center; + gap: 0.35rem; +} + +.np-status { + width: 8px; + height: 8px; + border-radius: 50%; + flex-shrink: 0; + background: var(--overlay-0); +} + +.now-playing[data-status="online"] .np-status { background: var(--green); } +.now-playing[data-status="idle"] .np-status { background: var(--yellow); } +.now-playing[data-status="dnd"] .np-status { background: var(--red); } +.now-playing[data-status="offline"] .np-status { background: var(--overlay-0); } + +.np-status-label { + font-size: 0.6rem; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--subtext-0); + white-space: nowrap; +} + .np-art { width: 34px; height: 34px; border-radius: 50%; object-fit: cover; flex-shrink: 0; + align-self: center; + display: none; +} + +.now-playing.is-live .np-art { + display: block; + border-radius: 8px; } /* Equalizer bars (only animate while live) */ @@ -330,6 +347,10 @@ body::before { animation: np-eq 0.9s ease-in-out infinite; } +.now-playing.has-accent .np-bars i { + background: rgb(var(--np-accent)); +} + .np-bars i:nth-child(2) { animation-delay: 0.15s; } @@ -368,13 +389,26 @@ body::before { line-height: 1.25; } +/* "Now playing" tag — only while a track is live, pushed to the right of the + status word so the head reads: [•] DO NOT DISTURB ......... NOW PLAYING */ .np-label { + display: none; font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--pink); } +.now-playing.is-live .np-label { + display: inline; + margin-left: auto; + padding-left: 0.5rem; +} + +.now-playing.is-live.has-accent .np-label { + color: rgb(var(--np-accent)); +} + .np-track { font-size: 0.8rem; font-weight: 500; @@ -383,6 +417,10 @@ body::before { text-overflow: ellipsis; } +.np-track:empty { + display: none; +} + .np-artist { font-size: 0.72rem; color: var(--subtext-0); @@ -391,6 +429,52 @@ body::before { text-overflow: ellipsis; } +.np-artist:empty { + display: none; +} + +/* Spotify progress bar — only shown while a track has timestamps */ +.np-progress { + display: none; + flex-direction: column; + gap: 3px; + margin-top: 4px; +} + +.now-playing.is-live.has-progress .np-progress { + display: flex; +} + +.np-bar { + height: 3px; + width: 100%; + border-radius: 999px; + background: var(--surface-2); + overflow: hidden; +} + +.np-fill { + display: block; + height: 100%; + width: 0%; + border-radius: 999px; + background: var(--pink); + transition: width 0.3s linear; +} + +.now-playing.has-accent .np-fill { + background: rgb(var(--np-accent)); + box-shadow: 0 0 8px 1px rgba(var(--np-accent), 0.55); +} + +.np-times { + display: flex; + justify-content: space-between; + font-size: 0.58rem; + font-variant-numeric: tabular-nums; + color: var(--subtext-0); +} + /* Page nav, pinned bottom-left, selected item with a pointer triangle */ .nav { position: fixed; @@ -422,14 +506,14 @@ body::before { } .nav-link:hover { - border-color: var(--pink); + border-color: rgb(var(--accent-rgb)); color: var(--text); transform: translateX(2px); } .nav-link.selected { - background: var(--pink); - border-color: var(--pink); + background: rgb(var(--accent-rgb)); + border-color: rgb(var(--accent-rgb)); color: var(--crust); font-weight: 700; margin-left: 14px; @@ -454,7 +538,7 @@ body::before { top: 50%; transform: translateY(-50%); border: 6px solid transparent; - border-left-color: var(--pink); + border-left-color: rgb(var(--accent-rgb)); } /* Cosmetic system badges, pinned bottom-right */ @@ -477,10 +561,16 @@ body::before { padding: 0.3rem 0.6rem; border-radius: 999px; background: var(--surface-0); - border: 1px solid var(--surface-1); + border: 1px solid rgba(var(--accent-rgb), 0.45); color: var(--subtext-1); font-size: 0.75rem; white-space: nowrap; + transition: border-color 0.6s ease, box-shadow 0.6s ease; +} + +.badge:hover { + border-color: rgb(var(--accent-rgb)); + box-shadow: 0 4px 14px -6px rgba(var(--accent-rgb), 0.5); } .badge-icon { @@ -549,17 +639,72 @@ body:has(.tech-stack) .hub { padding-bottom: 4.5rem; } -.tech-badge { - height: 28px; - border-radius: 5px; - transition: transform 0.15s ease, box-shadow 0.15s ease; +/* Simple Icons rendered via CSS mask so colour is theme-driven. + Markup: */ +.tech-icon { + position: relative; + width: 30px; + height: 30px; + display: inline-block; + transition: transform 0.15s ease, filter 0.15s ease; } -.tech-badge:hover { - transform: translateY(-2px) scale(1.04); - box-shadow: 0 4px 12px rgba(245, 194, 231, 0.25); +/* The actual icon shape — masked here so the label (::after) stays visible */ +.tech-icon::before { + content: ""; + position: absolute; + inset: 0; + background-color: currentColor; + -webkit-mask: var(--si) center / contain no-repeat; + mask: var(--si) center / contain no-repeat; } +.tech-icon:hover { + transform: translateY(-2px) scale(1.12); + filter: drop-shadow(0 4px 8px currentColor); +} + +/* Hover label — pulls text from aria-label, tinted to match the icon */ +.tech-icon::after { + content: attr(aria-label); + position: absolute; + bottom: calc(100% + 8px); + left: 50%; + transform: translateX(-50%) translateY(4px); + padding: 0.25rem 0.5rem; + border-radius: 6px; + background: var(--crust); + border: 1px solid currentColor; + color: var(--text); + font-size: 0.72rem; + line-height: 1; + white-space: nowrap; + pointer-events: none; + opacity: 0; + transition: opacity 0.15s ease, transform 0.15s ease; + z-index: 10; +} + +.tech-icon:hover::after { + opacity: 1; + transform: translateX(-50%) translateY(0); +} + +/* Catppuccin accent classes — pull from the active flavour's vars */ +.tech-icon.rosewater { color: var(--rosewater); } +.tech-icon.pink { color: var(--pink); } +.tech-icon.mauve { color: var(--mauve); } +.tech-icon.red { color: var(--red); } +.tech-icon.maroon { color: var(--maroon); } +.tech-icon.peach { color: var(--peach); } +.tech-icon.yellow { color: var(--yellow); } +.tech-icon.green { color: var(--green); } +.tech-icon.teal { color: var(--teal); } +.tech-icon.sky { color: var(--sky); } +.tech-icon.sapphire { color: var(--saphire); } +.tech-icon.blue { color: var(--blue); } +.tech-icon.lavender { color: var(--lavender); } + /* ===== Secret Cat Modes toast ===== */ .cat-toast { position: fixed; @@ -584,28 +729,6 @@ body:has(.tech-stack) .hub { transform: translateX(-50%) translateY(0); } -/* ===== Version tag (top-right) ===== */ -.version-tag { - position: fixed; - top: 1rem; - right: 1rem; - z-index: 6; - padding: 0.25rem 0.6rem; - border-radius: 999px; - background: var(--surface-0); - border: 1px solid var(--surface-1); - color: var(--subtext-0); - font-size: 0.72rem; - text-decoration: none; - cursor: pointer; - transition: color 0.15s ease, border-color 0.15s ease; -} - -.version-tag:hover { - color: var(--pink); - border-color: var(--pink); -} - /* ===== Changelog page ===== */ html:has(.changelog), body:has(.changelog) { @@ -795,11 +918,6 @@ body:has(.changelog) .hub { font-weight: 500; } -.cat-lock { - font-size: 0.62rem; - color: var(--subtext-0); -} - .cat-hint { margin: 0.85rem 0 0; font-size: 0.68rem; @@ -811,4 +929,146 @@ body:has(.changelog) .hub { .cat-grid { grid-template-columns: repeat(2, 1fr); } +} + +/* ============================================================ + Theme switcher — icon button, top-right corner + ============================================================ */ +.beta-bar { + position: fixed; + top: 1rem; + right: 1rem; + z-index: 7; +} + +.beta-btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.35rem; + border-radius: 999px; + background: var(--surface-0); + border: 1px solid var(--surface-1); + cursor: pointer; + transition: border-color 0.15s ease, transform 0.15s ease; +} + +.beta-btn:hover { + border-color: var(--pink); + transform: translateY(2px); +} + +.beta-icon { + width: 22px; + height: 22px; + display: block; +} + +/* ============================================================ + Mobile layout + ============================================================ */ +@media (max-width: 640px) { + + html { + height: auto; + /* Single vertical scroll root on mobile; clip horizontal overflow + so the absolutely-positioned link tooltips can't pan the page. */ + overflow-x: hidden; + overflow-y: auto; + } + + body, + body:has(.tech-stack), + body:has(.changelog) { + flex-direction: column; + justify-content: flex-start; + align-items: center; + gap: 1rem; + height: auto; + min-height: 100dvh; + /* html is the scroll root on mobile; body just clips its own + horizontal overflow (the absolutely-positioned link tooltips). */ + overflow-x: hidden; + overflow-y: visible; + padding: 1.25rem 1rem 2rem; + } + + /* 1 — Top bar: the two single-item widgets, side by side */ + .topbar { + order: 1; + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + justify-content: center; + gap: 0.6rem; + width: 100%; + } + + .topbar .now-playing, + .topbar .beta-bar { + position: static; + inset: auto; + } + + .now-playing { + max-width: 100%; + } + + /* 2 — Main content */ + .hub, + body:has(.tech-stack) .hub, + body:has(.changelog) .hub { + order: 2; + width: 100%; + max-width: 100%; + } + + /* 3 — Page nav as a centered group */ + .nav { + order: 3; + position: static; + inset: auto; + width: 100%; + } + + .nav-links { + flex-direction: row; + flex-wrap: wrap; + justify-content: center; + gap: 0.5rem; + } + + /* The selected-item pointer triangle / offset only makes sense in + the vertical desktop nav — drop it on mobile */ + .nav-link.selected { + margin-left: 0; + } + + .nav-link.selected::before { + display: none; + } + + /* 4 — System badges, centered and wrapping */ + .badges { + order: 4; + position: static; + inset: auto; + width: 100%; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + justify-content: center; + } + + .hub-header { + margin-bottom: 1.5rem; + } + + /* Keep the tech-stack / changelog content from butting up against + the nav below it */ + .tech-stack, + .changelog { + padding-bottom: 0; + } } \ No newline at end of file diff --git a/images/amd.svg b/images/amd.svg deleted file mode 100644 index ef0757c..0000000 --- a/images/amd.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/apple.svg b/images/apple.svg deleted file mode 100644 index 58235c3..0000000 --- a/images/apple.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/images/arch.svg b/images/arch.svg deleted file mode 100644 index c622c5c..0000000 --- a/images/arch.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/avatar.png b/images/avatar.png deleted file mode 100644 index d0c513a..0000000 Binary files a/images/avatar.png and /dev/null differ diff --git a/images/bluesky.svg b/images/bluesky.svg deleted file mode 100644 index a070aea..0000000 --- a/images/bluesky.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/debian.svg b/images/debian.svg deleted file mode 100644 index 55b6dd4..0000000 --- a/images/debian.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/discord.svg b/images/discord.svg deleted file mode 100644 index 9905364..0000000 --- a/images/discord.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/email.svg b/images/email.svg deleted file mode 100644 index 966ef94..0000000 --- a/images/email.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/estrogen.svg b/images/estrogen.svg deleted file mode 100644 index 71c5d51..0000000 --- a/images/estrogen.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/images/favicon.png b/images/favicon.png deleted file mode 100644 index e41bdba..0000000 Binary files a/images/favicon.png and /dev/null differ diff --git a/images/favicon.svg b/images/favicon.svg deleted file mode 100644 index f21a1a9..0000000 --- a/images/favicon.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/images/git-gay.svg b/images/git-gay.svg deleted file mode 100644 index cc12cd9..0000000 --- a/images/git-gay.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/github.svg b/images/github.svg deleted file mode 100644 index 013e025..0000000 --- a/images/github.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/linkedin.svg b/images/linkedin.svg deleted file mode 100644 index 30fc0e3..0000000 --- a/images/linkedin.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/mastodon.svg b/images/mastodon.svg deleted file mode 100644 index a8c2a26..0000000 --- a/images/mastodon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/oneko.gif b/images/oneko.gif deleted file mode 100644 index a009c2c..0000000 Binary files a/images/oneko.gif and /dev/null differ diff --git a/images/reddit.svg b/images/reddit.svg deleted file mode 100644 index 777aead..0000000 --- a/images/reddit.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/images/site.svg b/images/site.svg deleted file mode 100644 index b302063..0000000 --- a/images/site.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/spotify.svg b/images/spotify.svg deleted file mode 100644 index 09d0e9f..0000000 --- a/images/spotify.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/twitch.svg b/images/twitch.svg deleted file mode 100644 index b2c8ff5..0000000 --- a/images/twitch.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/images/twitter.svg b/images/twitter.svg deleted file mode 100644 index 3001352..0000000 --- a/images/twitter.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/images/youtube.svg b/images/youtube.svg deleted file mode 100644 index 3c9c0be..0000000 --- a/images/youtube.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/index.html b/index.html index e121a06..e23e093 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,17 @@ - Clove Twilight - Link Center - + + + + + + @@ -25,7 +29,7 @@ - + @@ -34,7 +38,7 @@ - + @@ -45,26 +49,32 @@
- - v1.4.0 -
- Clove Twilight avatar + Clove Twilight avatar

Clove Twilight

(fae/faer)

Link Center

@@ -72,7 +82,7 @@
- v1.4.0 -
- Clove Twilight avatar + Clove Twilight avatar

Clove Twilight

(fae/faer)

Tech Stack

- JavaScript - Java - HTML5 - Markdown - LaTeX - Windows Terminal - TypeScript - Bash Script - Python - PowerShell - PHP - Cloudflare - Heroku - Linode - Vercel - Bootstrap - EJS - Electron.js - Express.js - FastAPI - Flask - Insomnia - jQuery - JWT - NPM - Next JS - NodeJS - Nodemon - PNPM - React - React Native - React Query - React Hook Form - React Router - TailwindCSS - Three js - Vite - Vue.js - WordPress - Yarn - Nginx - MySQL - SQLite - Postgres - Redis - Adobe Photoshop - Canva - Inkscape - GitHub - GitHub Actions - Git - Gitea - Arduino - Cisco - Docker - ESLint - FFmpeg - Gradle - Grafana - OpenAPI Specification - Raspberry Pi - Postman - Swagger - TOR - AMD - Epic Games + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + - + + \ No newline at end of file diff --git a/template/index.html b/template/index.html index 7456c92..c0ef053 100644 --- a/template/index.html +++ b/template/index.html @@ -6,7 +6,12 @@ Clove Twilight - Template - + + + + + + @@ -43,42 +48,66 @@ + + +
- Clove Twilight avatar + Clove Twilight avatar

Clove Twilight

(fae/faer)

Template

Template

-

This is a simple template for the clove.is-a.dev website, it's to make it easier for myself to create new +

This is a simple template for the clove.is-a.dev website, it's to make it easier for myself to create + new pages.

- + + + + \ No newline at end of file