Compare commits

...

10 commits

Author SHA1 Message Date
noe
543b20a0f2 pronouns: new colors 2024-05-31 00:34:17 -04:00
noe
473cacc482 add Δ-44203 <333 2024-05-15 17:29:25 -04:00
noe
14303fce80 add pixeldesu <33 2024-05-15 10:31:49 -04:00
noe
0da32349e1 update noe intro 2024-05-15 10:14:18 -04:00
noe
790e1d862a new index, add links to system, and add starshines! 2024-05-15 00:41:01 -04:00
noe
d2bef790a6 fix hide link 2024-05-14 02:38:42 -04:00
noe
e0732619c4 update system, swap to bunny fonts 2024-05-14 02:27:09 -04:00
noe
f7d1aaa61a eriofdksl 2024-05-06 23:19:12 -04:00
noe
63092c66d8 what the FUCK is happening 2024-05-06 21:36:23 -04:00
noe
ea2c22bb98 base32? wtf? its 36 2024-05-03 18:28:50 -04:00
18 changed files with 981 additions and 360 deletions

View file

@ -1,9 +1,8 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>noe pfp generator</title> <title>noe pfp generator</title>
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.bunny.net" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link <link
href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible&display=swap" href="https://fonts.bunny.net/css?family=atkinson-hyperlegible:400,400i,700,700i"
rel="stylesheet" rel="stylesheet"
/> />
<script <script

View file

@ -1,15 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>base32 color</title> <title>base32 color</title>
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.bunny.net" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link <link
href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible&display=swap" href="https://fonts.bunny.net/css?family=atkinson-hyperlegible:400,400i,700,700i"
rel="stylesheet" rel="stylesheet"
/> />
<script
src="https://cdnjs.cloudflare.com/ajax/libs/gl-matrix/3.4.2/gl-matrix-min.js"
referrerpolicy="no-referrer"
></script>
<style> <style>
:root { :root {
font-family: "Atkinson Hyperlegible", sans-serif; font-family: "Atkinson Hyperlegible", sans-serif;
@ -52,7 +47,7 @@
<p>warning: math</p> <p>warning: math</p>
<p> <p>
a 9-character single-case string could be interpreted as 3 triplets of a 9-character single-case string could be interpreted as 3 triplets of
base32. this allows for a 0-46655 range per channel! base36. this allows for a 0-46655 range per channel!
</p> </p>
<ol> <ol>
<li>our example "girltwink" turns into (gir, ltw, ink)</li> <li>our example "girltwink" turns into (gir, ltw, ink)</li>

BIN
88x31/44203.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
88x31/pixeldesu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
88x31/starshines.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

64
controls/index.html Normal file
View file

@ -0,0 +1,64 @@
<!DOCTYPE html>
<title>noe control panel</title>
<link rel="preconnect" href="https://fonts.bunny.net" />
<link
href="https://fonts.bunny.net/css?family=atkinson-hyperlegible:400,400i,700,700i"
rel="stylesheet"
/>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/gl-matrix/3.4.2/gl-matrix-min.js"
referrerpolicy="no-referrer"
></script>
<style>
:root {
font-family: "Atkinson Hyperlegible", sans-serif;
background-color: black;
color: #efefef;
}
section {
padding: 2em;
}
.hidden {
user-select: none;
pointer-events: none;
opacity: 0.2;
}
</style>
<div id="preconnect">
<form>
<label for="publickey">Public Key</label>
<input id="publickey" />
<input type="submit" value="Connect" />
<button>Generate</button>
</form>
</div>
<div class="hidden" id="controls"></div>
<script defer async>
const setPkForm = (pk) => (document.querySelector("#publickey").value = pk);
const boot = () => {
const existingKey = localStorage.getItem("keypair");
if (existingKey) {
const { publicKey, privateKey } = JSON.parse(existingKey);
setPkForm(publicKey);
}
};
const generateKeys = async () => {
await crypto.subtle.generateKey(
{
name: "ECDH",
namedCurve: "P-384",
},
false,
["encrypt", "decrypt"]
);
};
setTimeout(boot, 0);
</script>

View file

@ -0,0 +1,334 @@
<!DOCTYPE html>
<link rel="preconnect" href="https://fonts.bunny.net" />
<link
href="https://fonts.bunny.net/css?family=atkinson-hyperlegible:400,400i,700,700i"
rel="stylesheet"
/>
<style>
:root {
font-family: "Atkinson Hyperlegible", sans-serif;
background-color: black;
color: #efefef;
}
section {
padding: 2em;
}
#dot,
#safetyDot {
width: 7px;
height: 7px;
background-color: red;
display: inline-block;
}
</style>
<main>
<section>
<div>
<label for="safety">SAFETY LOCK</label>
<input type="checkbox" name="safety" id="safety" value="true" />
</div>
<div>
<label for="arm">ARM DOLL CONTROL</label>
<input type="checkbox" name="arm" id="arm" />
</div>
<div>
<label for="intensity">Intensity</label><br />
<input id="intensity" type="range" min="1" max="5" value="3" />
<button id="pair">Pair</button>
</div>
<div>
<label for="targets">Targets</label><br />
<textarea id="targets" width="50">
DollTR
DollNC
DollVS
WitchOfTheHighlands
41666
xenogender</textarea
>
</div>
<div>
<label for="targets">Attackers</label><br />
<textarea id="attackers">
Lyyti
LyytiTR
LyytiNC</textarea
>
</div>
<div>
<input type="submit" id="connect" value="Connect" />
</div>
<div>
<div id="dot"></div>
<span id="dotText">Not Armed</span>
</div>
<div>
<div id="safetyDot"></div>
<span id="safetyDotText">Safety ON (commands will not be sent)</span>
</div>
</section>
<section>
<h2>log</h2>
<pre id="log"></pre>
</section>
</main>
<script defer async>
window.__ARMED__ = false;
window.__SAFETY__ = true;
window.__CONNECTED__ = false;
const COLLAR_BT_NAME = "PetSafe Smart Dog Trainer";
const COLLAR_COMMAND_SERVICE = "0bd51666-e7cb-469b-8e4d-2742f1ba77cc";
const COLLAR_COMMAND_CHARACTERISTIC = "e7add780-b042-4876-aae1-112855353cc1";
const COLLAR_AUTH_CHARACTERISTIC = "0e7ad781-b043-4877-aae2-112855353cc2";
const COLLAR_TONE_COMMAND = [0x55, 0x36, 0x31, 0x31, 0x31, 0x30];
const COLLAR_VIBRATE_COMMAND = [0x55, 0x36, 0x31, 0x33, 0x33, 0x30];
// Last byte is command strength (0-15) + 0x48. We set it to 0 here.
const COLLAR_STATIC_COMMAND = [0x55, 0x36, 0x31, 0x32, 0x33, 0x30];
// Last four bytes are the ASCII values of the PIN digits
const COLLAR_AUTH_COMMAND = [0x55, 0x37, 0x37, 0x30, 0x30, 0x30, 0x30];
class PetsafeSmartDogTrainingCollar {
constructor() {
this.device = null;
this.service = null;
this.tx = null;
}
async connect() {
console.log("Starting connect");
if (!navigator.bluetooth) {
addLogMessage("No WebBluetooth support; bailing.");
throw new Error("No WebBluetooth; bailing.");
}
this.device = await navigator.bluetooth.requestDevice({
filters: [
{
name: COLLAR_BT_NAME,
},
],
optionalServices: [COLLAR_COMMAND_SERVICE],
});
let server = await this.device.gatt.connect();
this.service = await server.getPrimaryService(COLLAR_COMMAND_SERVICE);
this.tx = await this.service.getCharacteristic(
COLLAR_COMMAND_CHARACTERISTIC
);
this.auth = await this.service.getCharacteristic(
COLLAR_AUTH_CHARACTERISTIC
);
console.log("Connected");
}
async disconnect() {
await this.device.gatt.disconnect();
}
async authorize(d1, d2, d3, d4) {
console.log("Authenticating with ", d1, d2, d3, d4);
let r = new Uint8Array(COLLAR_AUTH_COMMAND);
r[3] += d1;
r[4] += d2;
r[5] += d3;
r[6] += d4;
console.log(r);
this.auth.writeValue(r);
}
async runTone() {
console.log("Running tone");
addLogMessage("[TONE]");
this.tx.writeValue(new Uint8Array(COLLAR_TONE_COMMAND));
}
async runVibrate() {
console.log("Running vibration");
addLogMessage("[VIBRATE]");
this.tx.writeValue(new Uint8Array(COLLAR_VIBRATE_COMMAND));
}
async runStatic(power) {
if (window.__SAFETY__) {
addLogMessage("SAFETY ON; runStatic REJECTED");
return;
}
console.log("Running static");
addLogMessage("[SHOCK] Power = " + power);
if (power < 0 || power > 15) {
throw Error("power not in range 0-15");
}
let r = new Uint8Array(COLLAR_STATIC_COMMAND);
r[5] += power;
console.log(r);
this.tx.writeValue(r);
}
}
const collar = new PetsafeSmartDogTrainingCollar();
const addLogMessage = (message) => {
const logEl = document.querySelector("#log");
logEl.innerHTML = `${new Date().toISOString()} :: ${message}\n${
logEl.innerHTML
}`;
};
const setStatus = (color, text) => {
document.querySelector("#dot").style.backgroundColor = color;
document.querySelector("#dotText").innerHTML = text;
};
const setSafety = (color, text) => {
document.querySelector("#safetyDot").style.backgroundColor = color;
document.querySelector("#safetyDotText").innerHTML = text;
};
const connectCollar = async (pin) => {
addLogMessage("Connecting to collar...");
await collar.connect();
addLogMessage("Collar connected; running vibration test.");
await collar.runVibrate();
};
const fire = () => {
if (window.__SAFETY__ || !window.__ARMED__) {
addLogMessage("SAFETY ON or NOT ARMED -- FIRE REJECTED.");
return;
}
const intensity = Number(document.querySelector("#intensity").value);
collar.runStatic(intensity || 0);
};
const resolveCharacters = async (list) => {
const url = `https://census.daybreakgames.com/s:saegd/get/ps2/character_name?name.first_lower=${list
.map((a) => a.toLowerCase())
.join(",")}&c:limit=${list.length}`;
const req = await fetch(url);
const data = await req.json();
return data.character_name_list.map((a) => a.character_id);
};
const connectToESS = (targets, attackers) => {
addLogMessage("Connecting to WSS...");
const ws = new WebSocket(
"wss://push.nanite-systems.net/streaming?environment=ps2&service-id=s:saegd"
);
ws.onopen = () => {
setTimeout(() => {
ws.send(
JSON.stringify({
service: "event",
action: "subscribe",
characters: targets,
eventNames: ["Death"],
worlds: ["all"],
logicalAndCharactersWithWorlds: true,
})
);
addLogMessage(`CONNECTED. Listening to ${targets}`);
setStatus("green", "CONNECTED");
addLogMessage(`will match on ${attackers}`);
}, 500);
};
ws.onerror = ws.onclose = (a) => {
console.log("ess fail", a);
addLogMessage("ESS failed to connect. Reload.");
};
ws.onmessage = (message) => {
const { payload } = JSON.parse(message.data);
if (payload.event_name === "Death") {
console.log("Death event", { payload });
if (attackers.includes(payload.attacker_character_id)) {
addLogMessage(
`<b>[TRIGGERED]</b> Death from ${payload.attacker_character_id} to ${payload.character_id}`
);
if (window.__SAFETY__ || !window.__ARMED__) {
addLogMessage("SAFETY ON or NOT ARMED -- NO FIRE");
return;
}
fire();
} else {
addLogMessage(
`Death event skipped, from ${payload.attacker_character_id} to ${payload.character_id}`
);
}
}
};
};
document.querySelector("#arm").addEventListener("change", (event) => {
window.__ARMED__ = event.target.checked;
if (event.target.checked) {
addLogMessage("ARMED");
setStatus("yellow", "ARMED");
} else {
addLogMessage("Disarmed.");
setStatus("red", "Not Armed");
}
});
document.querySelector("#safety").addEventListener("change", (event) => {
window.__SAFETY__ = event.target.checked;
if (event.target.checked) {
addLogMessage("Safety is on; shock commands will NOT be sent.");
setSafety("red", "Safety ON (commands will not be sent)");
} else {
addLogMessage("Safety is off. Good luck, dolly.");
setSafety("green", "Safety OFF");
}
});
document
.querySelector("#connect")
.addEventListener("click", async (event) => {
if (window.__CONNECTED__) {
addLogMessage("Connection rejected; already connected.");
return;
}
if (!window.__ARMED__) {
addLogMessage("Connection rejected; arm the doll.");
return;
}
const targets = document.querySelector("#targets").value.split("\n");
const attackers = document.querySelector("#attackers").value.split("\n");
window.__CONNECTED__ = true;
setStatus("blue", "CONNECTING...");
addLogMessage("Fetching character IDs...");
const [targetIDs, attackerIDs] = await Promise.all([
resolveCharacters(targets),
resolveCharacters(attackers),
]);
connectToESS(targetIDs, attackerIDs);
});
document.querySelector("#pair").addEventListener("click", () => {
// const pin = document.querySelector("#pin").value;
connectCollar();
});
document.querySelector("#safety").checked = true;
document.querySelector("#arm").checked = false;
addLogMessage("Safety is on; shock commands will NOT be sent.");
addLogMessage("Ready");
</script>

View file

@ -1,85 +1,104 @@
<!DOCTYPE html> <!DOCTYPE html>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>noe</title> <title>noe.sh</title>
<link rel="preconnect" href="https://fonts.bunny.net" />
<link
href="https://fonts.bunny.net/css?family=atkinson-hyperlegible:400,400i,700,700i"
rel="stylesheet"
/>
<style> <style>
:root { :root {
--l0: #1b1f21; --top: #d9073b;
--l1: #441452; --mid-top: #40b39a;
--l2: #752565; --mid: #658e85;
--l3: #ce2a66; --mid-half: rgba(101, 142, 133, 0.5);
--l4: #ce9bb7; --bottom: #0c100f;
--l5: #fdf4f4; --floor: #040504;
background-color: var(--bottom);
color: var(--mid);
line-height: 1.6;
font-family: "Atkinson Hyperlegible", sans-serif;
} }
body { body {
overflow-x: hidden; margin: 0;
background-color: var(--l0); padding: 0;
color: var(--l5);
} }
a { main {
color: var(--l4); max-width: 960px;
margin: 2em;
border: 2px solid var(--floor);
padding: 0.2em;
line-height: 1.4;
} }
.container { .mono {
border: 3px solid var(--l3);
border-radius: 15px;
overflow: hidden;
}
header {
background-color: var(--l3);
color: var(--l0);
display: flex;
align-items: center;
h1 {
margin: 0;
padding: 1rem;
font-size: 3em;
text-shadow: -2px 1px 0 var(--l1), 2px 1px 3px var(--l4);
.meka {
color: var(--l2);
}
}
}
.monospace {
font-family: monospace; font-family: monospace;
} }
.circlething { * {
width: 3em; box-sizing: border-box;
height: 3em; }
background-color: red;
border-radius: 100%; .red {
background: radial-gradient( color: var(--top);
circle, }
var(--l3) 20%,
var(--l1) 30%, a {
var(--l2) 50%, color: var(--mid-top);
var(--l0) 80%, }
var(--l0) 100%
); h1,
border: 3px solid var(--l0); p {
box-shadow: 0 0 2px 5px var(--l2); margin: 0;
margin-left: 1em; padding: 0;
line-height: 1;
} }
section { section {
border: 0px solid var(--l2); border: 1px solid var(--mid-half);
border-top-width: 3px; padding: 1.5em;
border-left-width: 3px; margin-top: 0.3em;
box-shadow: 3px 3px 3px var(--l1); }
margin: 1em;
border-radius: 10px;
padding: 1em;
h2 { section p {
margin: 0; line-height: 1.5;
padding: 0.3em 0;
}
.caution-bar {
margin: 2em 0;
background-color: black;
color: white;
display: flex;
justify-content: space-evenly;
padding: 0.5em;
font-size: 1.4em;
/* font-weight: bold; */
text-shadow: 1px 1px 0px var(--top), -1px -1px 1px var(--mid-top);
flex: 1 4 100%;
position: relative;
&::after {
content: "";
position: absolute;
top: 0;
right: 0;
width: 50%;
height: 100px;
background-color: blue;
mix-blend-mode: color-burn;
}
&::before {
content: "";
position: absolute;
top: 0;
right: -50px;
width: 100px;
height: 160px;
background-color: green;
mix-blend-mode: exclusion;
} }
} }
@ -93,176 +112,181 @@
margin: 0.7em 2em 1em 2em; margin: 0.7em 2em 1em 2em;
} }
} }
header {
padding: 2em;
}
.nav a {
color: var(--mid);
text-decoration: none;
transition: all 0.1s ease-in-out;
&.red {
color: var(--top);
}
&:hover {
color: var(--c);
}
}
</style> </style>
<body> <main>
<div class="container"> <header>
<header> <h1 class="red">noe</h1>
<div class="circlething"></div> <div class="mono nav">
<h1><span class="meka">meka</span><span class="noe">noe</span></h1> <a href="https://noe.sh" class="red" style="--c: var(--mid-top)">41666</a
<p aria-hidden="true" class="monospace"> ><a href="https://doll.repair" style="--c: #b89524" class="member">HIDE</a
_[#41666H;&amp;: <span class="under">n,s,h</span>]$ ~> ><a href="#" style="--c: #064555" class="member">SAYAKA</a
</p> ><a href="#" style="--c: #08b69f" class="member">41666</a
<p aria-hidden="true" class="monospace"> ><a href="#" style="--c: #ff00bf" class="member">41666</a>
<span id="js-timething"> </div>
// multishot; unknown target; tracking... *** ||--->> waiting... <div class="caution-bar" aria-hidden="true">
||-->> <b style="margin-right: 1em">⚠️⚠️⚠️⚠️⚠️ CAUTION:</b>
</span> ▖▘▌▘▘▌▌▌▖▘PQJ#KFEK($())AQ! ▖▘▌▘▘▌▌▌▖▘
</p> <b style="margin-left: 1em">⚠️⚠️⚠️⚠️⚠️ CAUTION:</b>
</header> ▖▘▌▘▘▌▌▌▖▘PQJ#KFEK($())AQ! ▖▘▌▘▘▌▌▌▖▘
<main> <b style="margin-left: 1em">⚠️⚠️⚠️⚠️⚠️ CAUTION:</b>
<section> <div class="mono new">
<h2>about</h2> detected void leak detectedvoid leak detectedvoid leak detectedvoid leak
<p> detectedvoid leak detected
this one is noe </div>
<a href="/pronouns/">(it/its, 3rd person preferred, alt: she/her)</a> </div>
</p> </header>
<p> <section>
derelict combat doll; hacker; cyberpunk; nd; <p>
<a href="/system.html">&amp;</a>; queer; empty spaces;; this one is unit <span class="red">41666</span>, known as
</p> <span class="red">noe</span> to humans.
<p> <a href="/pronouns/">(it/its, 3rd person preferred)</a>
nixos, devops/sre/sysadmin, rev-eng, electronics, personal evs, </p>
writing, cats, plants <p>
</p> derelict combat doll; hacker; cyberpunk; void priestess;
</section> <a href="/system.html">plural</a> (1 of 5); poly; queer; glitchy;;
</p>
<section> <p>
<h2>where to find</h2> likes nixos, devops/sre/sysadmin, rev-eng, electronics, personal evs,
<ul> writing, cats, plants
<li> </p>
<b>federal space</b> - </section>
<a href="https://sapphic.engineer/noe" rel="me" <section>
><!--email off-->@noe@sapphic.engineer<!--/email off--></a <h2>where to find</h2>
> <ul>
|| <li>
<a href="https://porcelain.doll.repair/noe" rel="me" <b>federal space</b> -
><!--email off-->@noe@porcelain.doll.repair<!--/email off--></a <a href="https://sapphic.engineer/noe" rel="me"
> ><!--email off-->@noe@sapphic.engineer<!--/email off--></a
|| >
<a href="https://void.rehab/noe" rel="me" ||
><!--email off-->@noe@void.rehab<!--/email off--></a <a href="https://porcelain.doll.repair/noe" rel="me"
> ><!--email off-->@noe@porcelain.doll.repair<!--/email off--></a
</li> >
<li> ||
<b>cold storage</b> - <a href="https://void.rehab/noe" rel="me"
<a href="https://codeberg.org/noe" rel="me" ><!--email off-->@noe@void.rehab<!--/email off--></a
><!--email off-->@noe@codeberg.org<!--/email off--></a >
> </li>
</li> <li>
<li> <b>cold storage</b> -
<b>legacy code</b> - <a href="https://codeberg.org/noe" rel="me"
<a href="https://github.com/mekanoe" rel="me" ><!--email off-->@noe@codeberg.org<!--/email off--></a
><!--email off-->@mekanoe@github.com<!--/email off--></a >
> </li>
</li> <li>
<li> <b>legacy code</b> -
<b>the matrix</b> - <a href="https://github.com/mekanoe" rel="me"
<a href="https://matrix.to/#/@noe:void.rehab" rel="me" ><!--email off-->@mekanoe@github.com<!--/email off--></a
><!--email off-->@noe:void.rehab<!--/email off--></a >
> </li>
</li> <li>
</ul> <b>the matrix</b> -
<h3>art webbed sites</h3> <a href="https://matrix.to/#/@noe:void.rehab" rel="me"
<ul> ><!--email off-->@noe:void.rehab<!--/email off--></a
<li> >
<a href="https://art.mekanoe.com">art.mekanoe.com</a> (requires </li>
javascript) </ul>
</li> <h3>art webbed sites</h3>
<li> <ul>
<a href="https://doll.repair">doll.repair</a> (warning: empty <li><a href="https://3d.noe.sh">3d.noe.sh</a> (requires javascript)</li>
spaces; trauma-driven art therapy) <li>
</li> <a href="https://doll.repair">doll.repair</a> (warning: empty spaces;
</ul> trauma-driven art therapy, wip)
</section> </li>
</ul>
<section> </section>
<h2>reading</h2> <section>
<p> <h2>other creatures</h2>
this one writes for many reasons; please heed the content warnings <p></p>
where they exist. your mental health is important. <div class="friends">
</p> <!-- Others -->
<h3>technical</h3> <div>
<ul> <a href="https://stardust.elysium.gay" target="_blank"
<li><i>(standby)</i></li> ><img src="/88x31/stardust.png" width="88" height="31" alt="Stardust"
</ul> /></a>
<h3>fictional</h3> <a href="https://sneexy.pages.gay" target="_blank"
<ul> ><img src="/88x31/sneexy.gif" alt="Sneexy" width="88" height="31"
<li> /></a>
<a href="https://sapphic.engineer/notice/AdTGYQsbo8EkYbZMDA" <a href="https://rest.1a-insec.net/" target="_blank"
>story story unit#001</a ><img src="/88x31/1a.png" alt="1A" width="88" height="31"
> /></a>
- she fixes you <a href="https://zvava.org/" target="_blank"
</li> ><img src="/88x31/zvava.png" alt="zvava" width="88" height="31"
</ul> /></a>
</section> <a href="https://starshines.gay/" target="_blank"
</main> ><img
<footer> src="/88x31/starshines.png"
<section> alt="starshines"
<h2>other creatures</h2> width="88"
<p></p> height="31"
<div class="friends"> /></a>
<!-- Others --> <a href="https://pixelde.su/" target="_blank"
<div> ><img
<a href="https://stardust.elysium.gay" target="_blank" src="/88x31/pixeldesu.png"
><img alt="pixeldesu"
src="/88x31/stardust.png" width="88"
width="88" height="31" /></a
height="31" ><a href="https://query.44203.online/" target="_blank"
alt="Stardust" ><img src="/88x31/44203.png" alt="Δ-44203" width="88" height="31"
/></a> /></a>
<a href="https://sneexy.pages.gay" target="_blank" </div>
><img src="/88x31/sneexy.gif" alt="Sneexy" width="88" height="31" <!-- self row (hi, please feel free to use these <3) -->
/></a> <div class="divider"></div>
<a href="https://rest.1a-insec.net/" target="_blank" <div>
><img src="/88x31/1a.png" alt="1A" width="88" height="31" <a href="https://noe.sh" target="_blank"
/></a> ><img src="/yay/88x31.png" width="88" height="31" alt="noe"
<a href="https://zvava.org/" target="_blank" /></a>
><img src="/88x31/zvava.png" alt="zvava" width="88" height="31" <a href="https://noe.sh/pronouns/" target="_blank"
/></a> ><img src="/yay/88x31-vp.png" width="88" height="31" alt="it/its"
</div> /></a>
<!-- self row (hi, please feel free to use these <3) --> <img
<div class="divider"></div> src="/yay/88x31-nap.png"
<div> width="88"
<a href="https://noe.sh" target="_blank" height="31"
><img src="/yay/88x31.png" width="88" height="31" alt="noe" alt="not a person"
/></a> />
<a href="https://noe.sh/pronouns/" target="_blank" <a href="https://sapphic.engineer" target="_blank"
><img src="/yay/88x31-vp.png" width="88" height="31" alt="it/its" ><img
/></a> src="/yay/88x31-se.png"
<img width="88"
src="/yay/88x31-nap.png" height="31"
width="88" alt="sapphic.engineer"
height="31" /></a>
alt="not a person" </div>
/> </div>
<a href="https://sapphic.engineer" target="_blank" </section>
><img <section>
src="/yay/88x31-se.png" <h2>live creature reactions</h2>
width="88" <ul>
height="31" <!--email off-->
alt="sapphic.engineer" <li>"it keeps biting me" - @mia@void.rehab</li>
/></a> <li>
</div> "..designated SCP-41666 by the Fedi Council" -
</div> @quasar@social.translunar.academy
</section> </li>
<section> <li>"insane lesbian" - @sneexy@lea.pet</li>
<h2>live creature reactions</h2> <li>"This is very cool" - @gotrans@heckin.how</li>
<ul> <li>"oh god what have you done" - @Nyaomi@eepy.moe</li>
<!--email off--> <li>"why have you done this" - @yassie_j@0w0.is</li>
<li>"it keeps biting me" - @mia@void.rehab</li> <li>"you're insane that's amazing" - @vee@kvinneby.vendicated.dev</li>
<li> <li>"oh my god it happened again" - @ezri@crimew.gay</li>
"..designated SCP-41666 by the Fedi Council" - <!--/email off-->
@quasar@social.translunar.academy </ul>
</li> </section>
<li>"insane lesbian" - @sneexy@lea.pet</li> </main>
<li>"This is very cool" - @gotrans@heckin.how</li>
<li>"oh god what have you done" - @Nyaomi@eepy.moe</li>
<li>"why have you done this" - @yassie_j@0w0.is</li>
<li>"you're insane that's amazing" - @vee@kvinneby.vendicated.dev</li>
<li>"oh my god it happened again" - @ezri@crimew.gay</li>
<!--/email off-->
</ul>
</section>
</footer>
</div>
</body>

View file

@ -1,15 +1,22 @@
<!DOCTYPE html> <!DOCTYPE html>
<meta charset="utf-8" /> <meta charset="utf-8" />
<link rel="preconnect" href="https://fonts.bunny.net" />
<link
href="https://fonts.bunny.net/css?family=atkinson-hyperlegible:400,400i,700,700i"
rel="stylesheet"
/>
<title>how to: noe's pronouns</title> <title>how to: noe's pronouns</title>
<style> <style>
:root { :root {
--l0: #1b1f21; font-family: "Atkinson Hyperlegible", sans-serif;
--l1: #441452; --l0: #040504;
--l2: #752565; --l1: #0c100f;
--l3: #ce2a66; --l2: #182421;
--l4: #ce9bb7; --l3: #d9073b;
--l5: #fdf4f4; --l4: rgba(101, 142, 133, 0.5);
--gr: #25dcc5; --l5: #80aca2;
--gr: #40b39a;
--gd: #b89524;
} }
body { body {
@ -25,11 +32,11 @@
} }
.one { .one {
color: var(--l4); color: var(--gd);
} }
._3pp { ._3pp {
color: var(--gr); color: #db43b5;
} }
h2 { h2 {
@ -53,13 +60,13 @@
main { main {
max-width: 960px; max-width: 960px;
margin: 2em; margin: 2em;
border: 1px solid #988; border: 1px solid var(--l4);
padding: 1.5em; padding: 1.5em;
line-height: 1.4; line-height: 1.4;
} }
hr { hr {
border-color: #555; border-color: var(--l4);
margin: 2em 40%; margin: 2em 40%;
} }
</style> </style>
@ -98,11 +105,14 @@
With love, of course!~ The following sections "expand" into examples of use. With love, of course!~ The following sections "expand" into examples of use.
These examples assume the reader uses first person pronouns to self-refer. These examples assume the reader uses first person pronouns to self-refer.
</p> </p>
<p>tl;dr: avoid using "you"</p>
<p>Please use:</p> <p>Please use:</p>
<ul> <ul>
<li> <li>
<details> <details>
<summary><span class="_3pp">it/its</span></summary> <summary>
<span class="_3pp">it/its</span>
</summary>
<p class="head"> <p class="head">
Imagine that noe is a helpful robot. It just helped a creature do Imagine that noe is a helpful robot. It just helped a creature do
something. It was very useful! something. It was very useful!

View file

@ -1,121 +1,315 @@
<!DOCTYPE html> <!DOCTYPE html>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>The Lightrunner System</title> <title>The Lightrunner System</title>
<link rel="preconnect" href="https://fonts.bunny.net" />
<link
href="https://fonts.bunny.net/css?family=atkinson-hyperlegible:400,400i,700,700i"
rel="stylesheet"
/>
<style> <style>
:root { :root {
--l0: #1b1f21; --top: #d9073b;
--l1: #441452; --mid-top: #40b39a;
--l2: #752565; --mid: #658e85;
--l3: #ce2a66; --mid-half: rgba(101, 142, 133, 0.5);
--l4: #ce9bb7; --bottom: #0c100f;
--l5: #fdf4f4; --floor: #040504;
--gr: #25dcc5; background-color: var(--bottom);
color: var(--mid);
line-height: 1.6;
font-family: "Atkinson Hyperlegible", sans-serif;
} }
body { * {
background-color: var(--l0); box-sizing: border-box;
color: var(--l5);
margin: 0;
padding: 0;
} }
.name { section {
font-weight: bold; margin-top: 2em;
color: var(--l3);
} }
.one { .red {
color: var(--l4); color: var(--top);
} }
._3pp { .member {
color: var(--gr); margin-bottom: 0.5em;
table {
min-width: 500px;
width: 40vw;
border: 1px solid var(--floor);
}
td {
border: 1px solid var(--mid-half);
text-align: center;
padding: 0.6em;
}
.name {
text-align: left;
font-weight: bold;
span {
color: var(--member-color);
}
i {
font-family: sans-serif;
margin-left: 1em;
}
}
.avatar {
width: 150px;
height: 150px;
background-image: var(--image-url);
background-size: cover;
background-repeat: no-repeat;
border: 0 solid var(--member-color);
border-bottom-width: 3px;
border-right-width: 3px;
}
.desc {
word-wrap: break-word;
text-align: left;
}
} }
h2 { a {
margin-top: 3em; color: var(--mid-top);
}
p.head {
background-color: var(--l1);
border: 1px solid var(--l2);
display: inline-block;
padding: 1em;
}
main {
max-width: 960px;
margin: 2em;
border: 1px solid #988;
padding: 1.5em;
line-height: 1.4;
}
hr {
border-color: #555;
margin: 2em 40%;
}
.color-dot {
display: inline-block;
width: 1.2em;
height: 1.2em;
background-color: var(--dot);
border-radius: 100%;
border: 3px solid var(--l4);
position: relative;
top: 0.4em;
} }
</style> </style>
<main> <main>
<h1>the lightrunner system //</h1> <h1>lightrunner system (<span class="red">光Rsys</span>)</h1>
<hr /> <p>known system properties of doll 41666</p>
<h2>
<div class="color-dot" style="--dot: var(--l5)"></div> <section>
noe (the doll) (it/its, 3rd person) <h2>system member processes</h2>
</h2> <div
<p> class="member"
<a href="https://sapphic.engineer/noe" rel="me">@noe@sapphic.engineer</a style="--member-color: var(--top); --image-url: url('/yay/noe.png')"
><br />
</p>
<p>
noe is the primary fronter. a known doll numbered <code>41666</code>,
registered to hideri. it may have been specced into combat but prefers less
physical identity or existence. noe builds all the cool tech stuff.
</p>
<hr />
<h2>
<div class="color-dot" style="--dot: var(--l3)"></div>
hideri (the witch) (she/her, it/its)
</h2>
<p>
<a href="https://porcelain.doll.repair/@hid" rel="me"
>@hid@porcelain.doll.repair</a
> >
</p> <table>
<p> <tr>
hideri is the oldest system member. a witch, hypnotist, and Doll User. she <td rowspan="3" class="avatar"></td>
built noe from the ashes of the lightrunner's path. likes to use noe to <td class="name"><span>noe</span> <i>/noʊiː/</i></td>
create tools to better control mechanisms, or just for fun. <td>41666-𝛼</td>
</p> </tr>
<hr /> <tr>
<h2> <td colspan="2">
<div class="color-dot" style="--dot: var(--gr)"></div> Combat Doll [<a href="https://pluralpedia.org/w/Primary_Fronter"
sayaka (the librarian) (she/her) >Primary Fronter</a
</h2> >] [<a href="https://pluralpedia.org/w/Technician">Technician</a>]
<p> </td>
sayaka is sayaka. a quiet girl that helps us store vast knowledge and </tr>
intuition where it is otherwise missing. failed engineering school for <tr>
fighting a student that brought a flashlight to lecture. maybe a moth. <td colspan="2">it/its, that one, dolly (avoid "you")</td>
</p> </tr>
<hr /> <tr>
<h2> <td colspan="3" class="desc">
<div class="color-dot" style="--dot: #9bf3ff"></div> <p>
ethyl (slime) (it/its, slime) this one is 41666, or noe! it is a doll, a silly robot girl who
</h2> lives to serve its witch!! may preach about the void. may eat you.
<p>what? is slime. very empty, yet completely full.</p> </p>
<hr /> <p>
<hr /> noe is extremely technical, both in computing and in decoding its
<hr /> system dynamics,,, but what's the difference :3
<p>rest in the light, ayanami & kata. both found Stillness.</p> </p>
<p>⚠️ noe is a high-class threat to humans. ⚠️</p>
<p>
<a href="https://noe.sh" rel="me">https://noe.sh</a><br />
<a href="https://sapphic.engineer/noe" rel="me"
><!--email off-->@noe@sapphic.engineer<!--/email off--></a
>
</p>
</td>
</tr>
</table>
</div>
<div
class="member"
style="--member-color: #b89524; --image-url: url('/yay/hide.jpg')"
>
<table>
<tr>
<td rowspan="3" class="avatar"></td>
<td colspan="2" class="name"><span>hide</span></td>
</tr>
<tr>
<td colspan="2">
Combat Witch [<a href="https://pluralpedia.org/w/Protector"
>Protector</a
>]
</td>
</tr>
<tr>
<td colspan="2">she/her, it/its</td>
</tr>
<tr>
<td colspan="3" class="desc">
<p>
I'm the oldest running member of the system, I help keep things in
check, and ensure all dolls are well tended to! I'm strongly
interested in psychological horror as a genre, as well as sharing
our mindspaces with any willing to listen~
</p>
<p>
<a href="https://doll.repair" rel="me">https://doll.repair</a
><br />
<a href="https://porcelain.doll.repair/hid" rel="me"
><!--email off-->@hid@porcelain.doll.repair<!--/email off--></a
>
</p>
</td>
</tr>
</table>
</div>
<div
class="member"
style="--member-color: rgb(6, 69, 85); --image-url: url('/yay/saya.jpg')"
>
<table>
<tr>
<td rowspan="3" class="avatar"></td>
<td colspan="2" class="name"><span>sayaka</span></td>
</tr>
<tr>
<td colspan="2">
Catmoth [<a href="https://pluralpedia.org/w/Librarian">Librarian</a
>] [<a href="https://pluralpedia.org/w/Overrider">Overrider</a>]
</td>
</tr>
<tr>
<td colspan="2">she/her</td>
</tr>
<tr>
<td colspan="3" class="desc">
<p>
Hi... I'm saya, a very soft kittygirl moththing. Requires pats at
all times!!! I'm addicted to anything mechanical and technical,
and loves getting our hands dirty.
</p>
<p>I'm pretty quiet, please be patient with me!</p>
</td>
</tr>
</table>
</div>
<div
class="member"
style="--member-color: #08b69f; --image-url: url('/yay/ethyl.png')"
>
<table>
<tr>
<td rowspan="3" class="avatar"></td>
<td colspan="1" class="name"><span>ethyl</span> <i>/eθəl/</i></td>
<td>41666-𝜔</td>
</tr>
<tr>
<td colspan="3">
Slime [<a href="https://pluralpedia.org/w/Chaosnaut">Chaosnaut</a>]
</td>
</tr>
<tr>
<td colspan="3">it/its (avoid "you")</td>
</tr>
<tr>
<td colspan="3" class="desc">
<p>slime. poisonous. will fight a black hole. and win.</p>
<p>
<a href="https://porcelain.doll.repair/ethyl" rel="me"
><!--email off-->@ethyl@porcelain.doll.repair<!--/email off--></a
>
</p>
</td>
</tr>
</table>
</div>
<div
class="member"
style="--member-color: #ff00bf; --image-url: url('/yay/aki.jpg')"
>
<table>
<tr>
<td rowspan="3" class="avatar"></td>
<td colspan="1" class="name"><span>aki</span></td>
<td>41666-𝛾</td>
</tr>
<tr>
<td colspan="3">Combat Doll</td>
</tr>
<tr>
<td colspan="3">it/its, that one, dolly (avoid "you")</td>
</tr>
<tr>
<td colspan="3" class="desc">
<p>
this one is 41666-𝛾 or aki. it is not sure who it is yet. noe's
voidspace is aki's nullspace. it's different. maybe.
</p>
</td>
</tr>
</table>
</div>
</section>
<section>
<h3>retired system member processes</h3>
<div
class="member"
style="--member-color: #303946; --image-url: url('/yay/ayanami.jpg')"
>
<table>
<tr>
<td rowspan="3" class="avatar"></td>
<td colspan="2" class="name"><span>ayanami</span></td>
</tr>
<tr>
<td colspan="3">Mech Pilot</td>
</tr>
<tr>
<td colspan="3">she/her</td>
</tr>
<tr>
<td colspan="3" class="desc">
<p>
<i
>a mech pilot, shattered by a cocktail of drugs and self-hatred.
she fell out of her seat, sliced in two.</i
>
</p>
</td>
</tr>
</table>
</div>
<div
class="member"
style="--member-color: #a84e78; --image-url: url('/yay/kata.png')"
>
<table>
<tr>
<td rowspan="3" class="avatar"></td>
<td colspan="2" class="name"><span>kata</span></td>
</tr>
<tr>
<td colspan="3">
? [<a href="https://pluralpedia.org/w/Trauma_holder"
>Trauma Holder</a
>] [<a href="https://pluralpedia.org/w/Original">Original</a>]
</td>
</tr>
<tr>
<td colspan="3">she/her</td>
</tr>
<tr>
<td colspan="3" class="desc">
<p>
<i
>no matter what we write here, this girl deserves more than she
recieved. she rests well with the void.</i
>
</p>
</td>
</tr>
</table>
</div>
</section>
</main> </main>

1
t.html Normal file
View file

@ -0,0 +1 @@
<a href="/if-it-dies-in-game-it-dies-in-real-life/">iidigidirl</a>

BIN
yay/aki.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
yay/ayanami.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
yay/ethyl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
yay/hide.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
yay/kata.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 KiB

BIN
yay/noe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
yay/saya.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB