Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@
*.woff binary
*.woff2 binary
*.cur binary

# Vendored libraries (excluded from GitHub language stats)
assets/clippyjs/** linguist-vendored
assets/fonts/** linguist-vendored
45 changes: 45 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Validate site

on:
push:
branches: [main]
pull_request:

jobs:
html-validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Check internal links and asset references
run: |
python3 - <<'PY'
import re, sys, pathlib

root = pathlib.Path('.')
html_files = list(root.glob('*.html')) + list(root.glob('*/*.html'))
failures = []

for f in html_files:
text = f.read_text(encoding='utf-8')
for url in re.findall(r'(?:src|href)="([^"]+)"', text):
if url.startswith(('http://', 'https://', 'mailto:', '#', '//')):
continue
path = url.split('?')[0].split('#')[0]
if not path:
continue
target = (root / path.lstrip('/'))
if not target.exists():
failures.append(f'{f}: missing local resource {url}')

if failures:
print('\n'.join(failures))
sys.exit(1)
print('All local resource references OK.')
PY

- name: HTML validation (W3C Nu checker)
uses: cygnetdigital/vnu_jar_validation@v1.1.2
with:
additionalFlags: '--exit-zero-always --verbose'
pathsArgument: './index.html ./about/index.html ./support/index.html ./404.html'
26 changes: 23 additions & 3 deletions about/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,18 @@
<meta name="theme-color" content="#b05284">
<link rel="canonical" href="https://polygonprincess.com/about/">

<!-- Performance: early connections & critical font preload -->
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<link rel="preload" href="/assets/fonts/w95fa.woff2" as="font" type="font/woff2" crossorigin>

<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/assets/icons/computer-3.png" type="image/png">
<link rel="apple-touch-icon" href="/assets/apple-touch-icon.png">

<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US">
<meta property="og:site_name" content="Polygon Princess">
<meta property="og:title" content="Polygon Princess | About Me">
<meta property="og:description" content="Meet Polygon Princess: a Twitch content creator, music producer, and PC builder. Read about her content creation journey, music, and community work.">
Expand All @@ -28,6 +34,8 @@

<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@polygonprincess">
<meta name="twitter:creator" content="@polygonprincess">
<meta name="twitter:title" content="Polygon Princess | About Me">
<meta name="twitter:description" content="Meet Polygon Princess: a Twitch content creator, music producer, and PC builder. Read about her content creation journey, music, and community work.">
<meta name="twitter:image" content="https://polygonprincess.com/assets/preview.png">
Expand All @@ -36,9 +44,21 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/assets/win95.css">
<link rel="stylesheet" type="text/css" href="/assets/clippyjs/build/clippy.css">

<!-- Structured data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "Polygon Princess | About Me",
"url": "https://polygonprincess.com/about/",
"description": "Meet Polygon Princess: a Twitch content creator, music producer, and PC builder.",
"publisher": { "@id": "https://polygonprincess.com/#person" }
}
</script>
</head>

<body class="windows-scrollbar windows-95-font" data-clippy-speech="Here you can learn all about this narcissist.">
<body class="windows-scrollbar windows-95-font" data-clippy-speech="Here you can learn all about me. Spoilers: I'm great.">
<a class="visually-hidden-focusable" href="#main">Skip to content</a>

<!-- Navbar -->
Expand Down Expand Up @@ -75,7 +95,8 @@
<!-- Header -->
<header class="page-header text-shadow px-3 py-3 pt-md-5 pb-md-4">
<h1 class="mb-0">
<img class="page-logo" src="/assets/about_me.gif" width="615" height="150" alt="About Me">
<span class="visually-hidden">About Me</span>
<img class="page-logo" src="/assets/about_me.gif" width="615" height="150" alt="" role="presentation">
</h1>
</header>

Expand Down Expand Up @@ -149,7 +170,6 @@ <h2 class="h4 my-0 fw-normal" id="music-heading"><img alt="" src="/assets/icons/
</footer>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<script src="/assets/clippyjs/build/clippy.js"></script>
<script src="/assets/site.js"></script>
</body>
Expand Down
Binary file modified assets/content_images/content_creation.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions assets/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
return;
}

// Skip on small screens: saves bandwidth and avoids covering content.
if (window.matchMedia && window.matchMedia('(max-width: 575.98px)').matches) {
return;
}

// Absolute path so Clippy also works from /about/ and /support/.
clippy.BASE_PATH = '/assets/clippyjs/agents/';

Expand Down
21 changes: 21 additions & 0 deletions assets/win95.css
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,27 @@ TABLES
.social-icon{
margin: 14px;
}
/* Center the social icons within the "Find me on the Internet" card body
across all responsive layouts. The row is a flex container whose columns
are content-width at every breakpoint, so shrinking the card body to fit
its content and centering it with auto side margins keeps the icon group
visually centered in the card. */
section[aria-labelledby="social-heading"] > .card-body{
width: fit-content;
margin-left: auto;
margin-right: auto;
}
.navbar-brand img[src*="computer-3.png"]{
/* The icon's artwork reaches the very edge of the 32x32 PNG, so pin it
at its exact intrinsic size (no scaling) to avoid clipping and reserve
a stable box in the flex row, and drop pe-4's right padding in favor of
the logo's own ps-4 spacing. */
width: 32px;
height: 32px;
max-width: none;
flex-shrink: 0;
padding-right: 0 !important;
}
.gray-scale{
filter: grayscale(100%);
}
Expand Down
47 changes: 44 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,20 @@
<meta name="theme-color" content="#b05284">
<link rel="canonical" href="https://polygonprincess.com/">

<!-- Performance: early connections & critical font preload -->
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<link rel="preconnect" href="https://player.twitch.tv" crossorigin>
<link rel="preconnect" href="https://w.soundcloud.com" crossorigin>
<link rel="preload" href="/assets/fonts/w95fa.woff2" as="font" type="font/woff2" crossorigin>

<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/assets/icons/computer-3.png" type="image/png">
<link rel="apple-touch-icon" href="/assets/apple-touch-icon.png">

<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US">
<meta property="og:site_name" content="Polygon Princess">
<meta property="og:title" content="Polygon Princess | Home">
<meta property="og:description" content="The official home of Polygon Princess, a Twitch streamer, music producer, and content creator. Watch live, listen to music, and find every social link.">
Expand All @@ -28,6 +36,8 @@

<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@polygonprincess">
<meta name="twitter:creator" content="@polygonprincess">
<meta name="twitter:title" content="Polygon Princess | Home">
<meta name="twitter:description" content="The official home of Polygon Princess, a Twitch streamer, music producer, and content creator. Watch live, listen to music, and find every social link.">
<meta name="twitter:image" content="https://polygonprincess.com/assets/preview.png">
Expand All @@ -36,9 +46,40 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/assets/win95.css">
<link rel="stylesheet" type="text/css" href="/assets/clippyjs/build/clippy.css">

<!-- Structured data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Polygon Princess",
"url": "https://polygonprincess.com/",
"publisher": { "@id": "https://polygonprincess.com/#person" }
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://polygonprincess.com/#person",
"name": "Polygon Princess",
"url": "https://polygonprincess.com/",
"image": "https://polygonprincess.com/assets/preview.png",
"jobTitle": ["Twitch Streamer", "Music Producer", "Content Creator"],
"sameAs": [
"https://twitch.tv/polygonprincess",
"https://bsky.app/profile/polygonprincess.com",
"https://www.instagram.com/polygonprincess/",
"https://soundcloud.com/polygonprincess",
"https://open.spotify.com/artist/6GBMVc7Umrcim7gNwVt1Yd",
"https://music.apple.com/us/artist/polygon-princess/1762694858",
"https://ko-fi.com/polygonprincess"
]
}
</script>
</head>

<body class="windows-scrollbar windows-95-font" data-clippy-speech="If you click on me I do goofy shit.">
<body class="windows-scrollbar windows-95-font" data-clippy-speech="If you click on me, I do goofy stuff!">
<a class="visually-hidden-focusable" href="#main">Skip to content</a>

<!-- Navbar -->
Expand Down Expand Up @@ -75,7 +116,8 @@
<!-- Header -->
<header class="page-header text-shadow px-3 py-3 pt-md-5 pb-md-4">
<h1 class="mb-0">
<img class="page-logo" data-clippy-hover src="/assets/polygon_princess_logo.gif" width="1167" height="150" alt="Polygon Princess">
<span class="visually-hidden">Polygon Princess</span>
<img class="page-logo" data-clippy-hover src="/assets/polygon_princess_logo.gif" width="1167" height="150" alt="" role="presentation">
</h1>
</header>

Expand Down Expand Up @@ -140,7 +182,6 @@ <h2 class="h4 my-0 fw-normal" id="soundcloud-heading"><img alt="" src="/assets/i
</footer>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<script src="/assets/clippyjs/build/clippy.js"></script>
<script src="/assets/site.js"></script>
</body>
Expand Down
6 changes: 3 additions & 3 deletions sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://polygonprincess.com/</loc>
<lastmod>2026-10-30</lastmod>
<lastmod>2026-11-10</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://polygonprincess.com/about/</loc>
<lastmod>2026-10-30</lastmod>
<lastmod>2026-11-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://polygonprincess.com/support/</loc>
<lastmod>2026-10-30</lastmod>
<lastmod>2026-11-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
Expand Down
26 changes: 23 additions & 3 deletions support/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,18 @@
<meta name="theme-color" content="#b05284">
<link rel="canonical" href="https://polygonprincess.com/support/">

<!-- Performance: early connections & critical font preload -->
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<link rel="preload" href="/assets/fonts/w95fa.woff2" as="font" type="font/woff2" crossorigin>

<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/assets/icons/computer-3.png" type="image/png">
<link rel="apple-touch-icon" href="/assets/apple-touch-icon.png">

<!-- Open Graph -->
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US">
<meta property="og:site_name" content="Polygon Princess">
<meta property="og:title" content="Polygon Princess | Support Me">
<meta property="og:description" content="Support Polygon Princess through Twitch or Ko-fi subscriptions, Venmo tips, or the Throne wishlist. Your support funds new content and music.">
Expand All @@ -28,6 +34,8 @@

<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@polygonprincess">
<meta name="twitter:creator" content="@polygonprincess">
<meta name="twitter:title" content="Polygon Princess | Support Me">
<meta name="twitter:description" content="Support Polygon Princess through Twitch or Ko-fi subscriptions, Venmo tips, or the Throne wishlist. Your support funds new content and music.">
<meta name="twitter:image" content="https://polygonprincess.com/assets/preview.png">
Expand All @@ -36,9 +44,21 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/assets/win95.css">
<link rel="stylesheet" type="text/css" href="/assets/clippyjs/build/clippy.css">

<!-- Structured data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "Polygon Princess | Support",
"url": "https://polygonprincess.com/support/",
"description": "Support Polygon Princess through Twitch or Ko-fi subscriptions, Venmo tips, or the Throne wishlist.",
"publisher": { "@id": "https://polygonprincess.com/#person" }
}
</script>
</head>

<body class="windows-scrollbar windows-95-font" data-clippy-speech="Give this broke bitch some money if you can.">
<body class="windows-scrollbar windows-95-font" data-clippy-speech="If you're feeling generous, tips keep the pixels flowing!">
<a class="visually-hidden-focusable" href="#main">Skip to content</a>

<!-- Navbar -->
Expand Down Expand Up @@ -75,7 +95,8 @@
<!-- Header -->
<header class="page-header text-shadow px-3 py-3 pt-md-5 pb-md-4">
<h1 class="mb-0">
<img class="page-logo" src="/assets/support_me.gif" width="664" height="150" alt="Support Me">
<span class="visually-hidden">Support Me</span>
<img class="page-logo" src="/assets/support_me.gif" width="664" height="150" alt="" role="presentation">
</h1>
</header>

Expand Down Expand Up @@ -169,7 +190,6 @@ <h2 class="h4 my-0 fw-normal" id="throne-heading"><img alt="" src="/assets/socia
</footer>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<script src="/assets/clippyjs/build/clippy.js"></script>
<script src="/assets/site.js"></script>
</body>
Expand Down
Loading