- Landing wordmark now hrefs "./" instead of "deviant_website.html" so clicking
the logo shows a clean deviant.x/ URL in the address bar.
- Same-file mindmap nav updated to use "./" + anchors instead of the .html filename.
- brand/index.html footer "← the landing page" link switched from a repo-relative
../Parameters/webfiles/deviant_website.html to "../" (works from the deployed
/brand/ path).
- On the deployed backends (SM + Sia), the standalone deviant_website.html file
was replaced with a meta-refresh + JS redirect stub so any old external link
still resolves but bounces to ./ — snapshot 0245's PNG banners and any Twitter
posts that cited the .html path continue to work.
- twitter-header-1500x500.svg: copy shifted from x=330 to x=360 and tagline
lifted (y=340/378 vs 360/400) so X/Twitter desktop's ~200px avatar overlay
in the lower-left corner no longer covers "A response to a default trajectory"
or the second-line body copy. Added a comment in the SVG documenting the
avatar-safe zone.
- twitter-header-deviation-1500x500.svg: new banner variant using the site's
hero deviation chart (path geometry copied verbatim from deviant_website.html
line 679-684, scaled 1.85× and placed on the right half). Same avatar-safe
copy on the left. Replaces the orbital ring with the "diverging paths"
motif that carries the project's thesis.
- brand/index.html + scripts/render-brand-pngs.mjs: gallery card for the new
variant, PNG regen list updated. Both banners PNG-rendered via Puppeteer
and pushed to SilentMode + Sia.
Three refinements:
1. **PNG pipeline switched to headless Chrome via Puppeteer.** resvg-js ignored
remote CSS @import, so exports rendered in Georgia fallback. New script
scripts/render-brand-pngs.mjs launches Chromium, sets viewport to target
pixels, waits on document.fonts.ready, screenshots. Fonts now match the
site exactly (Fraunces + DM Sans + JetBrains Mono). All 14 exports
regenerated — sizes roughly double (glyph anti-aliasing takes more pixels)
but they're accurate now.
2. **Gallery PNG links now save-to-disk, not open-in-new-tab.** Every
<a href="source/exports/*.png"> in brand/index.html got a `download`
attribute — browsers now trigger Save As dialog instead of navigating.
3. **/brand no-trailing-slash now redirects.** The Sia s3d gateway returned
the raw NoSuchKey XML error when a client asked for bare deviant.x/brand.
Uploaded a bare-key HTML redirect at bns/deviant.x/brand (no slash) that
meta-refreshes + JS-redirects to ./brand/. Both routes now behave sanely.
brand/source/README.md updated to name Puppeteer as the preferred pipeline
and demote rsvg-convert / Inkscape / ImageMagick to fallback (no-text assets).
Two things:
1. PNG exports (brand/source/exports/, 14 files) generated via @resvg/resvg-js so
the assets are usable where SVG isn't accepted:
- avatar-400.png / avatar-1024.png — profile pics (Twitter/GitHub/Discord/LinkedIn all require raster)
- og-1200x630.png, twitter-card-1200x675.png, twitter-header-1500x500.png,
facebook-cover-820x312.png, linkedin-banner-1584x396.png, instagram-1080.png
- icon-512.png, favicon-64.png, favicon-32.png, wordmark-1440.png,
mark-512.png, mark-onlight-512.png
Deployed to both SilentMode (/opt/silent-mode/site/deviant/brand/source/exports/)
and Sia (bns/deviant.x/brand/source/exports/) so both routes serve them.
Caveat: resvg-js doesn't fetch remote fonts, so text on exports uses Georgia
fallback rather than Fraunces. Fine for social cards; if pixel-perfect Fraunces
matters, export via a headless-Chrome pipeline.
2. brand/index.html: added <base href="./"> to fix relative-path resolution under
the BNS gateway (navigate.st/bns/) which was stripping the deepest URL segment
from document.baseURI and making every img 404. Added an acid-yellow banner at
the top of the gallery explaining SVG isn't accepted for social avatars, plus
PNG download links next to each SVG file path.
Gallery live at:
https://navigate.st/deviant/brand/ (SilentMode direct — primary intent)
https://navigate.st/bns/deviant.x/brand/ (BNS gateway — currently picks s3)
Fonts: every text-carrying brand SVG (wordmark, OG, twitter-card, twitter-header,
FB cover, LinkedIn banner, IG square) now @imports Fraunces + DM Sans + JetBrains
Mono from Google Fonts inside a <style> block — so browsers render the website's
own faces. Fallback stack (Georgia / system sans) still applies in renderers that
ignore remote CSS (rsvg-convert). README documents the trade-off.
New social sizes:
- twitter-card-1200x675.svg — Twitter's current summary_large_image spec (was 1200×600, wrong)
- twitter-header-1500x500.svg — profile banner with lower-left profile-photo safe zone
- facebook-cover-820x312.svg — Facebook page cover
- linkedin-banner-1584x396.svg — LinkedIn company banner with profile-photo safe zone
- instagram-square-1080x1080.svg — IG feed / Threads / Discord
(retired the wrong 1200×600 Twitter card)
Deploy script fixes (scripts/deploy-deviant-navigate-st.sh):
- Portable DNS check — getent → dig/nslookup fallback so it runs on Git Bash / macOS
- Phase 1 awk: match the testchipnet :80 block SPECIFICALLY (was matching :80 and :443,
causing two duplicate deviant.navigate.st :80 blocks and no :443)
- Phase 3 skip check: verify a :443 block actually exists (was counting occurrences of
the server_name line, which the Phase 1 bug already inflated)
Live prod was patched manually before this commit; the script is now safe for greenfield.