theoretically

This commit is contained in:
nelle 2024-10-30 19:59:07 -06:00
parent 8e417bcf84
commit 67e58504ad
21 changed files with 6326 additions and 147 deletions

9
frontend/.prettierignore Normal file
View file

@ -0,0 +1,9 @@
# Ignore artifacts:
build
coverage
# Ignore all HTML files:
**/*.astro
**/*.css
**/*.html

18
frontend/.prettierrc.mjs Normal file
View file

@ -0,0 +1,18 @@
/** @type {import("prettier").Config} */
export default {
plugins: ["prettier-plugin-astro"],
overrides: [
{
files: ["*.html"],
options: {
parser: "html",
},
},
{
files: ["*.md"],
options: {
parser: "mdx",
},
},
],
};

View file

@ -1,9 +1,10 @@
{
"recommendations": [
"astro-build.astro-vscode",
"abusaidm.html-snippets",
"ecmel.vscode-html-css",
"mblode.pretty-formatter",
"formulahendry.auto-close-tag"],
"abusaidm.html-snippets",
"ecmel.vscode-html-css",
"mblode.pretty-formatter",
"formulahendry.auto-close-tag"
],
"unwantedRecommendations": []
}

View file

@ -1,7 +1,4 @@
{
"cSpell.words": [
"bsod",
"kanban"
],
"compile-hero.disable-compile-files-on-did-save-code": true
"cSpell.words": ["bsod", "kanban"],
"compile-hero.disable-compile-files-on-did-save-code": true
}

View file

@ -7,7 +7,7 @@ import sitemap from "@astrojs/sitemap";
// https://astro.build/config
export default defineConfig({
site: "https://nelle.observer",
outDir: './build',
integrations: [mdx(), compressor(), sitemap()]
outDir: "./build",
integrations: [mdx(), compressor(), sitemap()],
});
// min and compressor always last!

View file

@ -1,10 +1,10 @@
{
"folders": [
{
"path": "."
}
],
"settings": {
"compile-hero.disable-compile-files-on-did-save-code": true
}
"folders": [
{
"path": ".",
},
],
"settings": {
"compile-hero.disable-compile-files-on-did-save-code": true,
},
}

6161
frontend/pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,55 +1,55 @@
function handleErrors(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response;
if (!response.ok) {
throw Error(response.statusText);
}
return response;
}
function sendMeow(endpoint) {
const request = new XMLHttpRequest();
request.open("POST", endpoint);
request.send("superSecret=null");
console.warn(request.response.text);
const request = new XMLHttpRequest();
request.open("POST", endpoint);
request.send("superSecret=null");
console.warn(request.response.text);
}
async function getMeowTimeout(endpoint) {
const response = await fetch(endpoint)
if (response.status === 423) {
meowButton.disabled=true;
meowButton.innerHTML = "<span>sleeping...</span>";
console.warn("MEOW TIMED OUT")
}
if (response.status === 100) {
meowButton.disabled=false;
meowButton.innerHTML = "<span>meow</span>";
console.warn("MEOW NOT TIMED OUT")
}
const response = await fetch(endpoint);
if (response.status === 423) {
meowButton.disabled = true;
meowButton.innerHTML = "<span>sleeping...</span>";
console.warn("MEOW TIMED OUT");
}
if (response.status === 100) {
meowButton.disabled = false;
meowButton.innerHTML = "<span>meow</span>";
console.warn("MEOW NOT TIMED OUT");
}
}
async function getBeepTimeout(endpoint) {
const response = await fetch(endpoint)
if (response.status === 423) {
beepButton.disabled=true;
beepButton.innerHTML = "<span>sleeping...</span>";
console.warn("BEEP TIMED OUT")
}
if (response.status === 100) {
beepButton.disabled=false;
beepButton.innerHTML = "<span>meow</span>";
console.warn("BEEP NOT TIMED OUT")
}
const response = await fetch(endpoint);
if (response.status === 423) {
beepButton.disabled = true;
beepButton.innerHTML = "<span>sleeping...</span>";
console.warn("BEEP TIMED OUT");
}
if (response.status === 100) {
beepButton.disabled = false;
beepButton.innerHTML = "<span>meow</span>";
console.warn("BEEP NOT TIMED OUT");
}
}
async function getKaomojiTimeout(endpoint) {
const response = await fetch(endpoint)
if (response.status === 423) {
kaomojiButton.disabled=true;
kaomojiButton.innerHTML = "<span>sleeping...</span>";
console.warn("KAOMOJI TIMED OUT")
}
if (response.status === 100) {
kaomojiButton.disabled=false;
kaomojiButton.innerHTML = "<span>meow</span>";
console.warn("KAOMOJI NOT TIMED OUT")
}
const response = await fetch(endpoint);
if (response.status === 423) {
kaomojiButton.disabled = true;
kaomojiButton.innerHTML = "<span>sleeping...</span>";
console.warn("KAOMOJI TIMED OUT");
}
if (response.status === 100) {
kaomojiButton.disabled = false;
kaomojiButton.innerHTML = "<span>meow</span>";
console.warn("KAOMOJI NOT TIMED OUT");
}
}

View file

@ -1,3 +1 @@
function copyLink(link) {
}
function copyLink(link) {}

View file

@ -44,7 +44,7 @@ fetch(url)
// Chrome Redirect
function redirect() {
const chromium = /Chrome|Chromium|OPR|Opera|Edge|UC|QQ/.test(
navigator.userAgent
navigator.userAgent,
);
if (navigator.brave) {
@ -69,44 +69,42 @@ const kaomojiButton = document.getElementById("kaomoji-button");
// on send meow button click
async function meowClick() {
meowButton.disabled=true;
meowButton.disabled = true;
meowButton.innerHTML = "<span>sleeping...</span>";
sendMeow(meowEndpoint);
sendMeow(meowEndpoint);
}
// on send beep button click
async function beepClick() {
beepButton.disabled=true;
beepButton.disabled = true;
beepButton.innerHTML = "<span>sleeping...</span>";
sendMeow(beepEndpoint);
sendMeow(beepEndpoint);
}
// on send kaomoji button click
async function kaomojiClick() {
kaomojiButton.disabled=true;
kaomojiButton.disabled = true;
kaomojiButton.innerHTML = "<span>sleeping...</span>";
sendMeow(kaomojiEndpoint);
}
// Show/Hide Info Boxes
const posterInfoButton = document.getElementById("poster-info-button");
const posterInfo = document.getElementById("poster-info");
let isPosterInfoHidden = true
let isPosterInfoHidden = true;
const ntfyInfoButton = document.getElementById("ntfy-info-button");
const ntfyInfo = document.getElementById("ntfy-info");
let isNtfyInfoHidden = true
let isNtfyInfoHidden = true;
function showPosterInfo() {
if (isPosterInfoHidden) {
posterInfo.style.display = "initial";
posterInfoButton.innerHTML = "[hide more info]"
posterInfoButton.innerHTML = "[hide more info]";
isPosterInfoHidden = false;
}
else {
} else {
posterInfo.style.display = "none";
posterInfoButton.innerHTML = "[show more info]"
posterInfoButton.innerHTML = "[show more info]";
isPosterInfoHidden = true;
}
}
@ -114,29 +112,31 @@ function showPosterInfo() {
function showNtfyInfo() {
if (isNtfyInfoHidden) {
ntfyInfo.style.display = "initial";
ntfyInfoButton.innerHTML = "[hide more info]"
ntfyInfoButton.innerHTML = "[hide more info]";
isNtfyInfoHidden = false;
}
else {
} else {
ntfyInfo.style.display = "none";
ntfyInfoButton.innerHTML = "[show more info]"
ntfyInfoButton.innerHTML = "[show more info]";
isNtfyInfoHidden = true;
}
}
//// color scheme change
const headTag = document.getElementsByTagName('head')[0];
const headTag = document.getElementsByTagName("head")[0];
const styleTag = document.createElement("style");
function checkThemeStorage() {
if (sessionStorage.getItem("themeGreen")) {
setGreen()
setGreen();
}
if (sessionStorage.getItem("themeOrange")) {
setOrange()
setOrange();
}
if (!sessionStorage.getItem("themeOrange") && !sessionStorage.getItem("themeGreen")) {
getTheme()
if (
!sessionStorage.getItem("themeOrange") &&
!sessionStorage.getItem("themeGreen")
) {
getTheme();
}
}
@ -342,10 +342,9 @@ function setOrange() {
function getTheme() {
if (colorBool) {
// if true: green
setGreen()
}
else {
setGreen();
} else {
// if false: orange
setOrange()
setOrange();
}
}

View file

@ -32,11 +32,10 @@ const msgPFX = "message: ";
const attachPFX = "attachment: ";
const clickPFX = "click-action: ";
// Ctrl + Enter to send
document.addEventListener("keydown", (event) => {
if (event.ctrlKey && event.key === "Enter") {
ntfyClick()
ntfyClick();
}
});
@ -193,15 +192,15 @@ function sendAll(endpoint, title, message, attachment, click) {
// send notification
function sendNotification() {
sendAll(
ntfyEndpoint,
ntfyTitle.value,
ntfyMessage.value,
ntfyAttach.value,
ntfyClickAction.value
);
ntfyTitle.value = "";
ntfyMessage.value = "";
ntfyAttach.value = "";
ntfyClickAction.value = "";
sendAll(
ntfyEndpoint,
ntfyTitle.value,
ntfyMessage.value,
ntfyAttach.value,
ntfyClickAction.value,
);
ntfyTitle.value = "";
ntfyMessage.value = "";
ntfyAttach.value = "";
ntfyClickAction.value = "";
}

View file

@ -1,14 +1,12 @@
const clickSound = new Audio(
"/assets/sounds/ui/zapsplat_button_click_2.mp3"
);
const clickSound = new Audio("/assets/sounds/ui/zapsplat_button_click_2.mp3");
const hoverSound = new Audio(
"/assets/sounds/ui/zapsplat_button_click_bright_2.mp3"
"/assets/sounds/ui/zapsplat_button_click_bright_2.mp3",
);
const phonewaveSound = new Audio(
"/assets/sounds/sciadv/phonewave/phonewave.ogg"
"/assets/sounds/sciadv/phonewave/phonewave.ogg",
);
const startLeapSound = new Audio(
"/assets/sounds/sciadv/phonewave/begin-leap.ogg"
"/assets/sounds/sciadv/phonewave/begin-leap.ogg",
);
// Sound effects
@ -28,7 +26,6 @@ const links = document.querySelectorAll("a");
const image = document.querySelectorAll("img");
const phonewave = document.getElementById("phonewave");
// biome-ignore lint/complexity/noForEach: <explanation>
links.forEach((a) => {
a.addEventListener("click", () => {
@ -71,7 +68,6 @@ image.forEach((button) => {
*/
});
phonewave.addEventListener("click", () => {
phonewaveSound.play();
setTimeout(() => {

View file

@ -1,3 +1,3 @@
***Note of the author***
**_Note of the author_**
From "Commander Keen"

View file

@ -1,5 +1,5 @@
// Place any global data in this file.
// You can import this data from anywhere in your site by using the `import` keyword.
export const SITE_TITLE = 'nelle observer';
export const SITE_DESCRIPTION = 'personal site of nelle';
export const SITE_TITLE = "nelle observer";
export const SITE_DESCRIPTION = "personal site of nelle";

View file

@ -1,7 +1,7 @@
---
title: 'cool stuff!'
description: 'cool/interesting things i found on the internet.'
pubDate: 'July 10 2024'
title: "cool stuff!"
description: "cool/interesting things i found on the internet."
pubDate: "July 10 2024"
---
### be sure to check back for more

View file

@ -1,7 +1,7 @@
---
title: 'minecraft 88x31 badges'
description: '88x31 badges for your minecraft projects!'
pubDate: 'June 17 2024'
title: "minecraft 88x31 badges"
description: "88x31 badges for your minecraft projects!"
pubDate: "June 17 2024"
---
## i made (and still am making), a few 88x31 badges for minecraft mods and such, in aseprite heres what i have so far
@ -16,4 +16,4 @@ pubDate: 'June 17 2024'
<img src="/assets/images/badges/mc-badges/made-with-neoforged.png" />
<img src="/assets/images/badges/mc-badges/made-with-quilt.png"/>
<img src="/assets/images/badges/mc-badges/made-with-quilt.png" />

View file

@ -1,7 +1,7 @@
---
title: 'my setup(s)!'
description: 'whats your setup like? i hear nobody asking, im glad you asked!'
pubDate: 'April 17 2024'
title: "my setup(s)!"
description: "whats your setup like? i hear nobody asking, im glad you asked!"
pubDate: "April 17 2024"
---
## my personal machine currently has

View file

@ -1,7 +1,7 @@
---
title: 'a new pc has entered the chat'
description: 'i have received some free computers!'
pubDate: 'June 30 2024'
title: "a new pc has entered the chat"
description: "i have received some free computers!"
pubDate: "June 30 2024"
---
recently i received two free computers, thanks to bryan of [l33t.codes](https://l33t.codes/), one was a thinkcentre, the other an old mediacenter.
@ -32,7 +32,7 @@ this is a configure-to-order model, so ill need to check the parts ive already r
i was really interested by this, I love ThinkPads, So i immediately took up the offer. When i got home i worked on pluggin it in and seeing if it worked, took me a bit to find the VGA cable hiding somewhere in storage but i was able to get it. This machine did not come with a drive, and was unable to post whatsoever.
After a bit of testing (and a long search for DDR3 modules), i can confirm that something *other* than the memory is the issue (it tested fine in a known-good machine), so more testing will need to be done there.
After a bit of testing (and a long search for DDR3 modules), i can confirm that something _other_ than the memory is the issue (it tested fine in a known-good machine), so more testing will need to be done there.
i really want(ed) to shove my current main build inside this thing as it would be really funny, unfortunately, this only has one fan slot, and thats the loud and poor, outtake. definitely not enough for my modern computer, ill figure out what to do with it eventually!

View file

@ -1,5 +1,6 @@
import { defineCollection } from 'astro:content';
import { rssSchema } from '@astrojs/rss';
// @ts-ignore
import { defineCollection } from "astro:content";
import { rssSchema } from "@astrojs/rss";
const blog = defineCollection({
schema: rssSchema,

View file

@ -1,4 +1,4 @@
import type { APIRoute } from 'astro';
import type { APIRoute } from "astro";
const getRobotsTxt = (sitemapURL: URL) => `
@ -101,6 +101,6 @@ Disallow: /
`;
export const GET: APIRoute = ({ site }) => {
const sitemapURL = new URL('sitemap-index.xml', site);
return new Response(getRobotsTxt(sitemapURL));
const sitemapURL = new URL("sitemap-index.xml", site);
return new Response(getRobotsTxt(sitemapURL));
};