Compare commits

2 Commits

Author SHA1 Message Date
eggy
4c1c8ae3af chore: upgrade to nuxt 4 2025-10-19 15:33:02 +08:00
eggy
21c717ed79 chore: upgrade to nuxt 4 2025-10-19 15:32:55 +08:00
51 changed files with 3366 additions and 3749 deletions

View File

@@ -1,7 +1,7 @@
@import "base.scss";
@use "base.scss";
.prose article {
@include headings {
@include base.headings {
& > a:hover,
& > a:active {
text-decoration: underline;

View File

Before

Width:  |  Height:  |  Size: 490 B

After

Width:  |  Height:  |  Size: 490 B

View File

Before

Width:  |  Height:  |  Size: 339 B

After

Width:  |  Height:  |  Size: 339 B

View File

Before

Width:  |  Height:  |  Size: 712 B

After

Width:  |  Height:  |  Size: 712 B

View File

@@ -1,20 +1,30 @@
<script setup lang="ts">
import type { GithubPushEvent } from "@/shared/github";
import type { Ref } from "vue";
const FEED_URL = "https://api.github.com/users/potatoeggy/events";
const imgUrl = ref("");
const href = ref("");
onMounted(async () => {
const results = (await useFetch(FEED_URL)).data as Ref<GithubPushEvent[]>;
const latestEvent = results.value.find(
(event) => event.type === "PushEvent"
) as GithubPushEvent;
const latestCommit = latestEvent.payload.commits[0];
imgUrl.value = `https://opengraph.githubassets.com/hash/${latestEvent.repo.name}/commit/${latestCommit.sha}`;
href.value = `https://github.com/${latestEvent.repo.name}/commit/${latestCommit.sha}`;
const { data: results } = await useFetch<GithubPushEvent[]>(FEED_URL, {
onResponse(res) {
res.response.json;
},
});
const latestEvent = results.value?.find(
(event: GithubPushEvent) => event.type === "PushEvent"
);
const latestCommitSha = latestEvent.payload.head;
const imgUrl = computed(() =>
results.value
? `https://opengraph.githubassets.com/hash/${latestEvent.repo.name}/commit/${latestCommitSha}`
: ""
);
const href = computed(() =>
results.value
? `https://github.com/${latestEvent.repo.name}/commit/${latestCommitSha}`
: ""
);
</script>
<template>

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import { getPrettyDate, getUtcDate } from "~~/shared/metadata";
import type { AnyParsedContent } from "~~/shared/types";
import { getPrettyDate, getUtcDate } from "@/shared/metadata";
import type { AnyParsedContent } from "@/shared/types";
const { doc } = defineProps<{ doc: AnyParsedContent }>();

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import ColourPicker from "./ColourPicker.vue";
import { navItems } from "@/data/navItems";
import { navItems } from "~/data/navItems";
</script>
<template>

View File

@@ -13,40 +13,44 @@
</p>
<!-- i could make this a list but god i'm so tired with nuxt -->
<div class="flex justify-around flex-wrap gap-8 items-center">
<ServiceCard name="Gitea" href="https://git.eggworld.me" img="gitea.svg">
<ServiceCard
name="Gitea"
href="https://git.eggipelago.com"
img="gitea.svg"
>
Self-hosted GitHub
</ServiceCard>
<ServiceCard
name="Eifueo"
href="https://eifueo.eggworld.me"
href="https://eifueo.eggipelago.com"
img="eifueo.svg"
>
Note collection
</ServiceCard>
<ServiceCard
name="Primoprod"
href="https://primoprod.eggworld.me"
href="https://primoprod.vercel.app"
img="primogem.webp"
>
Wish simulator
</ServiceCard>
<ServiceCard
name="Calibre"
href="https://calibre.eggworld.me"
href="https://calibre.eggipelago.com"
img="calibre-web.webp"
>
Kobo Cloud
</ServiceCard>
<ServiceCard
name="Jellyfin"
href="https://jellyfin.eggworld.me"
href="https://jellyfin.eggipelago.com"
img="jellyfin.svg"
>
FOSS media server
</ServiceCard>
<ServiceCard
name="Minecraft"
href="minecraft.eggworld.me"
href="minecraft.eggipelago.com"
img="minecraft.svg"
unclickable
broken

13
app/data/siteRevisions.ts Normal file
View File

@@ -0,0 +1,13 @@
interface SiteRevision {
title: string;
url: string;
}
export const revisions: SiteRevision[] = [
{
title: "Nuxt 3 (2022)",
url: "https://eggipelago.com",
},
{ title: "Eleventy (2021)", url: "https://2021.eggipelago.com" },
{ title: "Vanilla (2019-2020)", url: "https://2020.eggipelago.com" },
];

View File

@@ -34,7 +34,7 @@ useHead({ title: "Oeufs?" });
GitHub</a
>
and
<a class="underline" href="https://git.eggworld.me/eggy/public">
<a class="underline" href="https://git.eggipelago.com/eggy/public">
Gitea
</a>
</p>

View File

@@ -78,7 +78,6 @@ export interface GithubCommitEventPayload {
ref: string;
head: string;
before: string;
commits: GithubCommit[];
}
export interface GithubPullRequestEventPayload {

View File

@@ -7,7 +7,7 @@ tags:
- featured
---
Welcome to the very first [Primoprod](https://primoprod.eggworld.me) progress report! In a similar vein to quite a few open source emulation projects (such as those I follow myself using [emufeed](https://github.com/potatoeggy/emufeed/blob/master/sources.py)), I'll be releasing these tidbits in lieu of daily Unstagnation shorts sometimes.
Welcome to the very first [Primoprod](https://primoprod.vercel.app) progress report! In a similar vein to quite a few open source emulation projects (such as those I follow myself using [emufeed](https://github.com/potatoeggy/emufeed/blob/master/sources.py)), I'll be releasing these tidbits in lieu of daily Unstagnation shorts sometimes.
In this hopefully small series of development notes, I'll be laying out my experiences learning web development as an absolute amateur.

View File

@@ -2,11 +2,11 @@
title: "Sunsetting the Eifueo Project"
date: 2023-05-23
tags:
- eifueo
- retrospective
- eifueo
- retrospective
---
For three and a half years, the [Eifueo project](https://eifueo.eggworld.me) has dutifully carried out its task of collecting and organising notes in a way that would be quick and easy to review. Although this worked out wonderfully in high school, the method is both inefficient and insufficient for the pace of higher education.
For three and a half years, the [Eifueo project](https://eifueo.eggipelago.com) has dutifully carried out its task of collecting and organising notes in a way that would be quick and easy to review. Although this worked out wonderfully in high school, the method is both inefficient and insufficient for the pace of higher education.
So how can we make it better?
@@ -14,7 +14,7 @@ So how can we make it better?
We can't.
At their core, engineering courses in university are about problem-solving. Instead of blindly memorising rules to be applied once to get you the answer, you blindly memorise rules to be applied *two or more times* to get you the answer.
At their core, engineering courses in university are about problem-solving. Instead of blindly memorising rules to be applied once to get you the answer, you blindly memorise rules to be applied _two or more times_ to get you the answer.
If we have to do that, it's much easier to write plenty of practice problems instead of rewriting plenty of notes.
@@ -24,9 +24,9 @@ Reformatting notes is not an easy endeavour. We have to re-examine our old notes
## It's booooring
Me? A writer? Imagine.
Me? A writer? Imagine.
This one isn't actually too bad, and doing practice problems instead isn't going to help much, but think of all the other fun things I could be doing instead. I already *have* the notes. If I need them, I'll just look back at them.
This one isn't actually too bad, and doing practice problems instead isn't going to help much, but think of all the other fun things I could be doing instead. I already _have_ the notes. If I need them, I'll just look back at them.
Anyway, by the end of Eifueo's lifespan, most of the content was regurgitated onto the site.
@@ -40,14 +40,12 @@ High school had many courses that were "expression"-focused, and those were the
Unfortunately, the physics courses are antithetical to everything Eifueo stands for. They have a rigid structure that you can't bullshit your way out of but are also flexible enough that you can't simply apply a formula. The best way to get good is simply to do more problems.
You'll have to understand that this greatly saddened me as a person who tries his hardest to do *less* problems. The cost-benefit ratio isn't worth it anymore.
You'll have to understand that this greatly saddened me as a person who tries his hardest to do _less_ problems. The cost-benefit ratio isn't worth it anymore.
## Retrospective
With a heavy heart, I must bid farewell to one of the first services I ever deployed to my server. Eifueo has tried its hardest to help me keep up, but I can only avoid doing practice for so much before it actually bites me in the butt.
o7 It has served me well.
o7 It has served me well.
![At this rate, I'm going to be an expert in perspective art!](assessment-art.webp)

View File

@@ -1,13 +0,0 @@
interface SiteRevision {
title: string;
url: string;
}
export const revisions: SiteRevision[] = [
{
title: "Nuxt 3 (2022)",
url: "https://eggworld.me",
},
{ title: "Eleventy (2021)", url: "https://2021.eggworld.me" },
{ title: "Vanilla (2019-2020)", url: "https://2020.eggworld.me" },
];

View File

@@ -1,8 +1,9 @@
import { defineNuxtConfig } from "nuxt/config";
import svgLoader from "vite-svg-loader";
// https://v3.nuxtjs.org/api/configuration/nuxt.config
export default defineNuxtConfig({
compatibilityDate: "2024-10-16",
compatibilityDate: "2025-10-19",
app: {
head: {
htmlAttrs: {
@@ -23,7 +24,6 @@ export default defineNuxtConfig({
{
defer: true,
src: "/script.js",
hid: "stupidEmergencyScript",
type: "module",
},
],
@@ -45,7 +45,7 @@ export default defineNuxtConfig({
shim: false,
},
site: {
url: process.env.BASE_URL || "https://eggworld.me",
url: process.env.BASE_URL || "https://eggipelago.com",
},
sitemap: {
strictNuxtContentPaths: true,

View File

@@ -1,5 +1,6 @@
{
"private": true,
"type": "module",
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev",
@@ -8,19 +9,19 @@
},
"devDependencies": {
"@nuxt/content": "^2.13.4",
"@nuxtjs/color-mode": "^3.5.1",
"@nuxtjs/sitemap": "^6.1.2",
"@nuxtjs/tailwindcss": "^6.12.1",
"@tailwindcss/typography": "^0.5.15",
"@nuxtjs/color-mode": "^3.5.2",
"@nuxtjs/sitemap": "^7.4.7",
"@nuxtjs/tailwindcss": "^6.14.0",
"@tailwindcss/typography": "^0.5.19",
"@types/node": "^22.7.5",
"dayjs": "^1.11.13",
"nuxt": "3.13.2",
"prettier": "^3.3.3",
"dayjs": "^1.11.18",
"nuxt": "^4.1.3",
"prettier": "^3.6.2",
"reading-time": "^2.0.0-1",
"rehype-katex": "^7.0.1",
"remark-math": "^6.0.0",
"sass": "^1.79.5",
"typescript": "^5.6.3",
"sass": "^1.93.2",
"typescript": "^5.9.3",
"vite-svg-loader": "^5.1.0"
}
}

View File

@@ -1,3 +1,3 @@
Sitemap: https://eggworld.me/sitemap.xml
Sitemap: https://eggipelago.com/sitemap.xml
User-agent: *
Disallow:

View File

@@ -23,13 +23,13 @@ if (darkToggle) {
const FEED_URL = "https://api.github.com/users/potatoeggy/events";
const results = (await (await fetch(FEED_URL)).json());
const latestEvent = results.find((e) => e.type === "PushEvent");
const latestCommit = latestEvent.payload.commits[0];
const latestCommit = latestEvent.payload.head;
const commitImg = document.getElementById("github-commit-img");
const commitAnchor = document.getElementById("github-commit-a");
if (commitImg) {
commitImg.src = `https://opengraph.githubassets.com/hash/${latestEvent.repo.name}/commit/${latestCommit.sha}`;
commitImg.src = `https://opengraph.githubassets.com/hash/${latestEvent.repo.name}/commit/${latestCommitSha}`;
}
if (commitAnchor) {
commitAnchor.href = `https://github.com/${latestEvent.repo.name}/commit/${latestCommit.sha}`;
commitAnchor.href = `https://github.com/${latestEvent.repo.name}/commit/${latestCommitSha}`;
}
export {};

View File

@@ -2,7 +2,7 @@
// of all the nuxt bs while we wait for static generation
// to actually become a thing in nuxt 3
import type { GithubPushEvent } from "../shared/github";
import type { GithubPushEvent } from "../app/shared/github";
const html = document.getElementsByTagName("html")[0];
html.className = localStorage.theme ?? "light";
@@ -36,7 +36,7 @@ const results = (await (await fetch(FEED_URL)).json()) as GithubPushEvent[];
const latestEvent = results.find(
(e) => e.type === "PushEvent"
) as GithubPushEvent;
const latestCommit = latestEvent.payload.commits[0];
const latestCommitSha = latestEvent.payload.head;
const commitImg = document.getElementById(
"github-commit-img"
@@ -46,11 +46,11 @@ const commitAnchor = document.getElementById(
) as HTMLAnchorElement;
if (commitImg) {
commitImg.src = `https://opengraph.githubassets.com/hash/${latestEvent.repo.name}/commit/${latestCommit.sha}`;
commitImg.src = `https://opengraph.githubassets.com/hash/${latestEvent.repo.name}/commit/${latestCommitSha}`;
}
if (commitAnchor) {
commitAnchor.href = `https://github.com/${latestEvent.repo.name}/commit/${latestCommit.sha}`;
commitAnchor.href = `https://github.com/${latestEvent.repo.name}/commit/${latestCommitSha}`;
}
// to make this an esm module for top-level await

View File

@@ -18,6 +18,6 @@
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"alwaysStrict": true
"alwaysStrict": true,
}
}

6965
yarn.lock

File diff suppressed because it is too large Load Diff