User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
Admin
Wyvern-shaped software developer and hobby vector artist. Also sometimes a fluffy werewolf alien creature (Areon).

Creator of the neofoxes, neocats and other emojis.
wvrnBox
Website
https://volpeon.ink/
Speaking German, English
Age 30s
Pronouns he / him
Backup Account @volpeon@goto.wyvern.rip
Bonus Content @areon@icy.wyvern.rip
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@errant areonNAngel
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
If you noticed two uses of jsx(), good job! This is completely correct because template() re-introduces JSX into the pipeline which needs to be turned into HTML again. It was actually way more confusing to allow JSX as input to templates, feeds and sitemaps because then there wasn't a guarantee you'd get the final URLs.
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
The configuration is wild, but that's what you get for maximum flexibility
const pipeline = Pipeline.create()
	.use(fscache())
	.use(query())
	.use(modules<Page<".html", string> | Page<".tsx", JSX.Children> | Page<".strapi", Node[]>>())
	.use(
		sass({
			loadPaths: [
				"submodules",
				"submodules/iro-design/src",
				"submodules/iro-sass/src",
				"submodules/include-media/dist",
			],
		}),
	)
	.use(mdx())
	.use(markdown())
	.use(strapi())
	.use(jsx())
	.use(timestamps())
	.use(urls({ base: "https://volpeon.ink/" }))
	.use(feeds())
	.use(sitemap())
	.use(assets())
	.use(hash())
	.redirect("pages root", (page) => page.url.replace(/^\/pages\//, "/"))
	.redirect("scripts+styles assets", (page) =>
		page.url.replace(/^\/(scripts|styles)\//, "/assets/"),
	)
	.use(templates())
	.use(jsx())
	.use(icons())
	.use(
		images({
			allowedOrigins: ["strapi.volpeon.ink"],
			defaults: { formats: ["avif", "webp", "png"], densities: [1, 2] },
		}),
	)
	.use(transformImages());

const site = new Site(pipeline, {});
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
There are 2 hashes in the image URLs in the last screenshot because one of it is already included by Strapi in the filename. areonNMlem
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
I finally got asset caching to work in a way that the hashed URLs are available to templates
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@nikitonsky It's even worse, the SVG exists purely to handle the text selection, and what's displayed on top of it is a dynamically generated raster graphic put into an img tag. That's also why there's the weird copy-paste discrepancy, because both don't line up. This is amazing, it's like they had a challenge to implement this in the most complicated and unreliable way possible. neofox_googly_shocked
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@catraxx neocat_pat_floof
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@catraxx areonVThink
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@catraxx but work areonVFlat
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@catraxx eepy as heck areonVFlat
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
areonVFlat
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
Ah, wait, I also miss the preview images, so this doesn't include the downscaled versions as well. OTOH, this time I also emit PNG files and the Lume version doesn't. Hmm
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
Pretty good!
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
Let's see how long it takes to convert all images. Lume takes about 5 minutes, but to be fair, I still haven't included emojis yet so the build is bound to be faster anyway
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
I was worried if I got the import resolution stuff right drgn__w_
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
I copied my whole SASS folder over to the Corvos code base, and it compiled just fine areonNCute
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@catraxx Ah, so it's the logical equivalent to vw/vh (like inline-size <-> width)
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
progress(100vi, var(--min-size-viewport), var(--max-size-viewport));
The fuck is vi now? Why do they keep adding units? neofox_googly_shocked
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
My SSG now has a proper server with live reloading, and a name: Corvos. I'm now trying to port my website to it
User avatar
Volpeon minwlf @volpeon@icy.wyvern.rip
4mo
@Tvorsk neofox_googly_woozy