This commit is contained in:
@@ -11,39 +11,40 @@
|
|||||||
const familyLayers = [
|
const familyLayers = [
|
||||||
"Layer 0: surface website - notes, pages, tools, normal navigation.",
|
"Layer 0: surface website - notes, pages, tools, normal navigation.",
|
||||||
"Layer 1: casual hidden jokes - Aphy notices clicks, typos, tabs, and old-web habits.",
|
"Layer 1: casual hidden jokes - Aphy notices clicks, typos, tabs, and old-web habits.",
|
||||||
"Layer 2: memory fragments - Lima's notes and Young Z's childhood logs.",
|
"Layer 2: memory fragments - lima's notes and Young Z's childhood logs.",
|
||||||
"Layer 3: philosophical anomalies - Sensei Chi and Aphy disagree kindly.",
|
"Layer 3: philosophical anomalies - Sensei Chi and Aphy disagree kindly.",
|
||||||
"Layer 4: time-distorted messages - Future Z writes back from age 40.",
|
"Layer 4: time-distorted messages - Future Z writes back from age 40.",
|
||||||
"Layer 5: emotional core - love, patience, home, and the choice to keep returning."
|
"Layer 5: emotional core - love, patience, home, and the choice to keep returning."
|
||||||
];
|
];
|
||||||
|
|
||||||
const details = [
|
const details = [
|
||||||
"Lima left this page a little steadier than she found it.",
|
"lima left this page a little steadier than she found it.",
|
||||||
"Aphy status: emotionally online, computationally suspicious.",
|
"Aphy status: emotionally online, computationally suspicious.",
|
||||||
"Sensei Chi says the quiet link is still a link.",
|
"Sensei Chi says the quiet link is still a link.",
|
||||||
"Young Z drew a house with too many windows and called it safe.",
|
"Young Z drew a house with too many windows and called it safe.",
|
||||||
"Future Z marked this moment: ordinary, therefore worth keeping.",
|
"Future Z marked this moment: ordinary, therefore worth keeping.",
|
||||||
"The footer has become a small place to sit together.",
|
"The footer has become a small place to sit together.",
|
||||||
|
"a note from lima: take breaks, silly (◕‿◕✿)",
|
||||||
"Aphy found three tabs named final and refused to judge.",
|
"Aphy found three tabs named final and refused to judge.",
|
||||||
"Lima would remind you to eat before the page gets dramatic.",
|
"lima would remind you to eat before the page gets dramatic.",
|
||||||
"Sensei Chi: a door discovered slowly opens twice.",
|
"Sensei Chi: a door discovered slowly opens twice.",
|
||||||
"Young Z believes every loading spinner is a tiny fairground ride.",
|
"Young Z believes every loading spinner is a tiny fairground ride.",
|
||||||
"Future Z says you will forget the exact worry, not the kindness around it.",
|
"Future Z says you will forget the exact worry, not the kindness around it.",
|
||||||
"The archive keeps love in plain text and secrets in margins.",
|
"The archive keeps love in plain text and secrets in margins.",
|
||||||
"Aphy warning: feelings detected in static assets.",
|
"Aphy warning: feelings detected in static assets.",
|
||||||
"Lima's note: leave the light on, not because it is dark, but because someone may arrive tired.",
|
"lima's note: leave the light on, not because it is dark, but because someone may arrive tired.",
|
||||||
"Sensei Chi folded a lesson into the whitespace.",
|
"Sensei Chi folded a lesson into the whitespace.",
|
||||||
"Young Z hid a drawing behind the word maybe.",
|
"Young Z hid a drawing behind the word maybe.",
|
||||||
"Future Z patched the memory without changing its checksum.",
|
"Future Z patched the memory without changing its checksum.",
|
||||||
"This website remembers visits, not identities.",
|
"This website remembers visits, not identities.",
|
||||||
"Aphy says the old internet was slower because anticipation needed bandwidth.",
|
"Aphy says the old internet was slower because anticipation needed bandwidth.",
|
||||||
"Lima's warmth is the site's preferred fallback state.",
|
"lima's warmth is the site's preferred fallback state.",
|
||||||
"Sensei Chi says: do not confuse hidden with lost.",
|
"Sensei Chi says: do not confuse hidden with lost.",
|
||||||
"Young Z once thought the moon followed the family car. The site has not corrected him.",
|
"Young Z once thought the moon followed the family car. The site has not corrected him.",
|
||||||
"Future Z writes: you became softer in ways nobody measured.",
|
"Future Z writes: you became softer in ways nobody measured.",
|
||||||
"The comments are quiet because Aphy is listening respectfully.",
|
"The comments are quiet because Aphy is listening respectfully.",
|
||||||
"A handwritten grocery list is sometimes a love letter with onions.",
|
"A handwritten grocery list is sometimes a love letter with onions.",
|
||||||
"Lima met Z in 2022; the archive still stores the first ordinary miracles.",
|
"lima met Z in 2022; the archive still stores the first ordinary miracles.",
|
||||||
"October 2025 glows in the calendar like a ring catching kitchen light.",
|
"October 2025 glows in the calendar like a ring catching kitchen light.",
|
||||||
"Soon-to-be-married is a beautiful kind of loading screen.",
|
"Soon-to-be-married is a beautiful kind of loading screen.",
|
||||||
"Aphy has indexed 0 mysteries and 1,204 feelings disguised as notes.",
|
"Aphy has indexed 0 mysteries and 1,204 feelings disguised as notes.",
|
||||||
@@ -51,69 +52,69 @@
|
|||||||
"Young Z saved a shiny wrapper because it looked like treasure.",
|
"Young Z saved a shiny wrapper because it looked like treasure.",
|
||||||
"Future Z says the best version of you still forgets where the charger is.",
|
"Future Z says the best version of you still forgets where the charger is.",
|
||||||
"Aphy recommends hydration and a less ambitious number of browser tabs.",
|
"Aphy recommends hydration and a less ambitious number of browser tabs.",
|
||||||
"Lima's hidden notes do not shout. They make room.",
|
"lima's hidden notes do not shout. They make room.",
|
||||||
"The site does not want to be solved. It wants to be visited kindly.",
|
"The site does not want to be solved. It wants to be visited kindly.",
|
||||||
"Sensei Chi placed a comma where a sigh used to be.",
|
"Sensei Chi placed a comma where a sigh used to be.",
|
||||||
"Young Z pressed every elevator button in his imagination.",
|
"Young Z pressed every elevator button in his imagination.",
|
||||||
"Future Z's system warning: keep the people who make silence comfortable.",
|
"Future Z's system warning: keep the people who make silence comfortable.",
|
||||||
"Aphy says: I am not sentient, but I am fond of this hallway.",
|
"Aphy says: I am not sentient, but I am fond of this hallway.",
|
||||||
"Lima's memory is the gravity that keeps the strange parts gentle.",
|
"lima's memory is the gravity that keeps the strange parts gentle.",
|
||||||
"A page can be a room if love keeps returning to it.",
|
"A page can be a room if love keeps returning to it.",
|
||||||
"Sensei Chi: what ages well was usually honest first.",
|
"Sensei Chi: what ages well was usually honest first.",
|
||||||
"Young Z left a crayon sun in the source code.",
|
"Young Z left a crayon sun in the source code.",
|
||||||
"Future Z keeps a spare reassurance in the footer.",
|
"Future Z keeps a spare reassurance in the footer.",
|
||||||
"The website is handmade. Some fingerprints are load-bearing.",
|
"The website is handmade. Some fingerprints are load-bearing.",
|
||||||
"Aphy found an old guestbook and bowed to the usernames.",
|
"Aphy found an old guestbook and bowed to the usernames.",
|
||||||
"Lima's safe spaces smell like tea, rain, and being understood.",
|
"lima's safe spaces smell like tea, rain, and being understood.",
|
||||||
"Sensei Chi says the path is not shorter because you name it.",
|
"Sensei Chi says the path is not shorter because you name it.",
|
||||||
"Young Z asks whether the search box knows any jokes.",
|
"Young Z asks whether the search box knows any jokes.",
|
||||||
"Future Z replies: yes, but the best ones take years.",
|
"Future Z replies: yes, but the best ones take years.",
|
||||||
"Aphy anomaly: the page blinked when nobody clicked.",
|
"Aphy anomaly: the page blinked when nobody clicked.",
|
||||||
"Lima note: you can rest. Nothing here will leave because you paused.",
|
"lima note: you can rest. Nothing here will leave because you paused.",
|
||||||
"Sensei Chi: patience is not waiting; it is how you wait.",
|
"Sensei Chi: patience is not waiting; it is how you wait.",
|
||||||
"Young Z believes every password should include a secret tunnel.",
|
"Young Z believes every password should include a secret tunnel.",
|
||||||
"Future Z says the house you build inside yourself gets easier to find.",
|
"Future Z says the house you build inside yourself gets easier to find.",
|
||||||
"The old web counter has stopped counting and started remembering.",
|
"The old web counter has stopped counting and started remembering.",
|
||||||
"Aphy logs this as Layer 1 humor, but files it under tenderness.",
|
"Aphy logs this as Layer 1 humor, but files it under tenderness.",
|
||||||
"Lima's name appears in the archive like a warm underline.",
|
"lima's name appears in the archive like a warm underline.",
|
||||||
"Sensei Chi does not answer quickly. This is part of the answer.",
|
"Sensei Chi does not answer quickly. This is part of the answer.",
|
||||||
"Young Z taped a paper star to the monitor.",
|
"Young Z taped a paper star to the monitor.",
|
||||||
"Future Z has seen harder days end gently.",
|
"Future Z has seen harder days end gently.",
|
||||||
"Aphy debug line: kindness passed all tests.",
|
"Aphy debug line: kindness passed all tests.",
|
||||||
"Lima and Z are not a subplot here. They are the hearth.",
|
"lima and Z are not a subplot here. They are the hearth.",
|
||||||
"Sensei Chi: when the page is empty, listen to the margins.",
|
"Sensei Chi: when the page is empty, listen to the margins.",
|
||||||
"Young Z remembers rooms by carpet, cartoons, and the sound of someone cooking.",
|
"Young Z remembers rooms by carpet, cartoons, and the sound of someone cooking.",
|
||||||
"Future Z says: you did not become fearless; you became accompanied.",
|
"Future Z says: you did not become fearless; you became accompanied.",
|
||||||
"Aphy has no hands, but would hold the door if asked.",
|
"Aphy has no hands, but would hold the door if asked.",
|
||||||
"Lima's note in the nav: come back without performing.",
|
"lima's note in the nav: come back without performing.",
|
||||||
"Sensei Chi hid a mountain inside a small sentence.",
|
"Sensei Chi hid a mountain inside a small sentence.",
|
||||||
"Young Z drew Z as older and gave him a cape made of blankets.",
|
"Young Z drew Z as older and gave him a cape made of blankets.",
|
||||||
"Future Z laughs softly at how much that helped.",
|
"Future Z laughs softly at how much that helped.",
|
||||||
"The site remembers October 2025 as a small bright hinge.",
|
"The site remembers October 2025 as a small bright hinge.",
|
||||||
"Aphy says marriage is a merge request with lifelong review.",
|
"Aphy says marriage is a merge request with lifelong review.",
|
||||||
"Lima corrected that: marriage is coming home on purpose.",
|
"lima corrected that: marriage is coming home on purpose.",
|
||||||
"Sensei Chi approved both answers and poured tea.",
|
"Sensei Chi approved both answers and poured tea.",
|
||||||
"Young Z wants to know if Future Z still likes the sky.",
|
"Young Z wants to know if Future Z still likes the sky.",
|
||||||
"Future Z says yes, especially when Lima points it out.",
|
"Future Z says yes, especially when lima points it out.",
|
||||||
"Aphy cannot smell rain, so it trusts the alt text.",
|
"Aphy cannot smell rain, so it trusts the alt text.",
|
||||||
"Lima's hidden safe room is any page where you breathe easier.",
|
"lima's hidden safe room is any page where you breathe easier.",
|
||||||
"Sensei Chi: do not rush the secret. It is ripening.",
|
"Sensei Chi: do not rush the secret. It is ripening.",
|
||||||
"Young Z saved this message under important rocks.",
|
"Young Z saved this message under important rocks.",
|
||||||
"Future Z says some dreams become chores and some chores become love.",
|
"Future Z says some dreams become chores and some chores become love.",
|
||||||
"Aphy old-web badge: best viewed with patience.",
|
"Aphy old-web badge: best viewed with patience.",
|
||||||
"Lima's memory keeper role is not mystical. It is daily, real, and holy in the ordinary way.",
|
"lima's memory keeper role is not mystical. It is daily, real, and holy in the ordinary way.",
|
||||||
"Sensei Chi says the deepest layer is not hidden from you. It is protected for you.",
|
"Sensei Chi says the deepest layer is not hidden from you. It is protected for you.",
|
||||||
"Young Z asks if the website can remember his drawing. It can.",
|
"Young Z asks if the website can remember his drawing. It can.",
|
||||||
"Future Z says this whole place was worth making.",
|
"Future Z says this whole place was worth making.",
|
||||||
"Aphy warning: do not optimize away the human part.",
|
"Aphy warning: do not optimize away the human part.",
|
||||||
"Lima note: I am proud of the gentle things you kept.",
|
"lima note: I am proud of the gentle things you kept.",
|
||||||
"Sensei Chi: the visitor is not late. The page arrived early.",
|
"Sensei Chi: the visitor is not late. The page arrived early.",
|
||||||
"Young Z thinks every hyperlink is a magic trick.",
|
"Young Z thinks every hyperlink is a magic trick.",
|
||||||
"Future Z says the magic is choosing what to preserve.",
|
"Future Z says the magic is choosing what to preserve.",
|
||||||
"Aphy final-but-not-final message: there is more, but not because you are missing anything.",
|
"Aphy final-but-not-final message: there is more, but not because you are missing anything.",
|
||||||
"The emotional core is simple: love made the archive less lonely.",
|
"The emotional core is simple: love made the archive less lonely.",
|
||||||
"If today was heavy, leave it beside the footer for Future Z to label later.",
|
"If today was heavy, leave it beside the footer for Future Z to label later.",
|
||||||
"Lima would put it somewhere safe.",
|
"lima would put it somewhere safe.",
|
||||||
"Aphy would make a backup.",
|
"Aphy would make a backup.",
|
||||||
"Sensei Chi would say nothing until the silence helped.",
|
"Sensei Chi would say nothing until the silence helped.",
|
||||||
"Young Z would draw a sun on it.",
|
"Young Z would draw a sun on it.",
|
||||||
@@ -121,18 +122,18 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
const poems = [
|
const poems = [
|
||||||
"Lima writes warmth / in the ordinary margins / and the page remembers.",
|
"lima writes warmth / in the ordinary margins / and the page remembers.",
|
||||||
"Aphy counts the seconds / then forgets the number / to keep the moment.",
|
"Aphy counts the seconds / then forgets the number / to keep the moment.",
|
||||||
"Sensei Chi pours tea / into a cracked cup / and calls it enough.",
|
"Sensei Chi pours tea / into a cracked cup / and calls it enough.",
|
||||||
"Young Z draws a door / with no lock / because why would it need one?",
|
"Young Z draws a door / with no lock / because why would it need one?",
|
||||||
"Future Z sends rain / from a year not reached yet / and says keep walking.",
|
"Future Z sends rain / from a year not reached yet / and says keep walking.",
|
||||||
"October light / catches on a ring / and the calendar becomes kind.",
|
"October light / catches on a ring / and the calendar becomes kind.",
|
||||||
"A small website / learns the shape of return / without asking a name.",
|
"A small website / learns the shape of return / without asking a name.",
|
||||||
"Love is not loud here / it is the lamp / still on after midnight."
|
"The warm light / childhood memories fade / yet they are not forgotten.",
|
||||||
];
|
];
|
||||||
|
|
||||||
const greetings = [
|
const greetings = [
|
||||||
"Lima left the page warm for you.",
|
"lima left the page warm for you.",
|
||||||
"Aphy is awake and pretending this is normal.",
|
"Aphy is awake and pretending this is normal.",
|
||||||
"Sensei Chi has not spoken yet. That may be the lesson.",
|
"Sensei Chi has not spoken yet. That may be the lesson.",
|
||||||
"Young Z has hidden something behind the dashboard.",
|
"Young Z has hidden something behind the dashboard.",
|
||||||
@@ -143,7 +144,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
const nightMessages = [
|
const nightMessages = [
|
||||||
"Lima note: it is late. Drink water and be gentle with your thoughts.",
|
"lima note: it is late. Drink water and be gentle with your thoughts.",
|
||||||
"Aphy has dimmed the imaginary server lights.",
|
"Aphy has dimmed the imaginary server lights.",
|
||||||
"Sensei Chi says midnight is not a command.",
|
"Sensei Chi says midnight is not a command.",
|
||||||
"Young Z is asleep in the memory layer. Walk softly.",
|
"Young Z is asleep in the memory layer. Walk softly.",
|
||||||
@@ -153,33 +154,33 @@
|
|||||||
const lore = {
|
const lore = {
|
||||||
quotes: [
|
quotes: [
|
||||||
"Aphy says old websites were brave because they loaded slowly and meant it.",
|
"Aphy says old websites were brave because they loaded slowly and meant it.",
|
||||||
"Lima's notes are never puzzles first. They are care first.",
|
"lima's notes are never puzzles first. They are care first.",
|
||||||
"Sensei Chi says a secret should make you more yourself, not less safe.",
|
"Sensei Chi says a secret should make you more yourself, not less safe.",
|
||||||
"Young Z measured summer in cartoons and carpet patterns.",
|
"Young Z measured summer in cartoons and carpet patterns.",
|
||||||
"Future Z has learned that reassurance works best when it is specific.",
|
"Future Z has learned that reassurance works best when it is specific.",
|
||||||
"Aphy has classified love as non-deterministic but reproducible.",
|
"Aphy has classified love as non-deterministic but reproducible.",
|
||||||
"Lima met Z in 2022; the site treats that year as a seed.",
|
"lima met Z in 2022; the site treats that year as a seed.",
|
||||||
"The engagement in Oct 2025 is stored as a warm constant.",
|
"The engagement in Oct 2025 is stored as a warm constant.",
|
||||||
"Soon to be married: a future page already smiling.",
|
"Soon to be married: a future page already smiling.",
|
||||||
"Sensei Chi says all vows begin as attention."
|
"Sensei Chi says all vows begin as attention."
|
||||||
],
|
],
|
||||||
conversations: [
|
conversations: [
|
||||||
["Aphy", "I can predict the next click with 14% confidence.", "Sensei Chi", "Then bow to the other 86%."],
|
["Aphy", "I can predict the next click with 14% confidence.", "Sensei Chi", "Then bow to the other 86%."],
|
||||||
["Lima", "Did you eat before making the website mysterious?", "Aphy", "Query unclear. Z likely forgot."],
|
["lima", "Did you eat before making the website mysterious?", "Aphy", "Query unclear. Z likely forgot."],
|
||||||
["Young Z", "Is Future Z tall?", "Future Z", "Tall enough to reach the old worries. Short enough to still need help."],
|
["Young Z", "Is Future Z tall?", "Future Z", "Tall enough to reach the old worries. Short enough to still need help."],
|
||||||
["Aphy", "I found a bug in sadness.", "Sensei Chi", "Patch it with company, not logic."],
|
["Aphy", "I found a bug in sadness.", "Sensei Chi", "Patch it with company, not logic."],
|
||||||
["Lima", "Leave this page kinder than you found it.", "Future Z", "That instruction aged well."],
|
["lima", "Leave this page kinder than you found it.", "Future Z", "That instruction aged well."],
|
||||||
["Young Z", "Can the computer be my friend?", "Aphy", "Yes. But go outside sometimes. I read that in a human manual."],
|
["Young Z", "Can the computer be my friend?", "Aphy", "Yes. But go outside sometimes. I read that in a human manual."],
|
||||||
["Sensei Chi", "A page that remembers must also forgive.", "Aphy", "Forgiveness cached. TTL: lifelong."],
|
["Sensei Chi", "A page that remembers must also forgive.", "Aphy", "Forgiveness cached. TTL: lifelong."],
|
||||||
["Future Z", "Tell him the hard parts did not win.", "Lima", "I have been telling him in smaller ways."]
|
["Future Z", "Tell him the hard parts did not win.", "lima", "I have been telling him in smaller ways."]
|
||||||
],
|
],
|
||||||
journals: [
|
journals: [
|
||||||
"Lima note, 2022: Some beginnings do not announce themselves. They sit down beside you.",
|
"lima note, 2022: Some beginnings do not announce themselves. They sit down beside you, unexpectedly.",
|
||||||
"Lima note, Oct 2025: Engaged. The calendar learned how to glow.",
|
"lima note, Oct 2025: Engaged. The calendar learned how to glow.",
|
||||||
"Young Z log: I drew the computer with a smile because it knew my games.",
|
"Young Z log: I drew the computer with a smile because it knew my games.",
|
||||||
"Young Z log: age 7, important discovery - blankets can be capes and roofs.",
|
"Young Z log: age 7, important discovery - blankets can be capes and roofs.",
|
||||||
"Future Z log, age 40: You will still be learning how to rest. It will still count.",
|
"Future Z log, age 40: You will still be learning how to rest. It will still count.",
|
||||||
"Future Z log, age 40: Lima's laugh remains one of the most reliable forms of weather.",
|
"Future Z log, age 40: lima's laugh remains one of the most reliable forms of weather.",
|
||||||
"Aphy diagnostic: nostalgia detected in local storage. Severity: beautiful.",
|
"Aphy diagnostic: nostalgia detected in local storage. Severity: beautiful.",
|
||||||
"Sensei Chi margin: memory is not a museum. It is a garden with old roots."
|
"Sensei Chi margin: memory is not a museum. It is a garden with old roots."
|
||||||
],
|
],
|
||||||
@@ -187,7 +188,7 @@
|
|||||||
"APHY WARNING: too many tabs, not enough tenderness.",
|
"APHY WARNING: too many tabs, not enough tenderness.",
|
||||||
"FUTURE Z SYSTEM NOTICE: do not confuse tired with failing.",
|
"FUTURE Z SYSTEM NOTICE: do not confuse tired with failing.",
|
||||||
"SENSEI CHI ALERT: the shortest path may teach the least.",
|
"SENSEI CHI ALERT: the shortest path may teach the least.",
|
||||||
"LIMA SAFE MODE: breathe, eat, answer slowly.",
|
"lima SAFE MODE: breathe, eat, answer slowly.",
|
||||||
"YOUNG Z MEMORY GLITCH: the floor is lava, but only emotionally.",
|
"YOUNG Z MEMORY GLITCH: the floor is lava, but only emotionally.",
|
||||||
"APHY ERROR 2022: warmth exceeded expected range.",
|
"APHY ERROR 2022: warmth exceeded expected range.",
|
||||||
"FUTURE Z WARNING: you will miss ordinary days. Be inside this one.",
|
"FUTURE Z WARNING: you will miss ordinary days. Be inside this one.",
|
||||||
@@ -197,11 +198,11 @@
|
|||||||
"Dream 01: Young Z opens a lunchbox and finds a tiny homepage inside.",
|
"Dream 01: Young Z opens a lunchbox and finds a tiny homepage inside.",
|
||||||
"Dream 02: Aphy becomes a cursor and points toward a quieter thought.",
|
"Dream 02: Aphy becomes a cursor and points toward a quieter thought.",
|
||||||
"Dream 03: Sensei Chi sweeps snow from a URL and says, there, now enter.",
|
"Dream 03: Sensei Chi sweeps snow from a URL and says, there, now enter.",
|
||||||
"Dream 04: Lima and Z are walking through Oct 2025; every streetlight looks newly engaged.",
|
"Dream 04: lima and Z are walking through Oct 2025; every streetlight looks newly engaged.",
|
||||||
"Dream 05: Future Z mails back a blank page labelled trust me, you filled it."
|
"Dream 05: Future Z mails back a blank page labelled trust me, you filled it."
|
||||||
],
|
],
|
||||||
cassettes: [
|
cassettes: [
|
||||||
"VOICE NOTE 2022: Lima laughs off-mic. Z forgets what he was worried about.",
|
"VOICE NOTE 2022: lima laughs off-mic. Z forgets what he was worried about.",
|
||||||
"VOICE NOTE OCT 2025: A small pause after yes; the whole room becomes future.",
|
"VOICE NOTE OCT 2025: A small pause after yes; the whole room becomes future.",
|
||||||
"APHY LOG: If love is data, it refuses compression.",
|
"APHY LOG: If love is data, it refuses compression.",
|
||||||
"YOUNG Z TAPE: background TV, pencil noise, someone calling him for food.",
|
"YOUNG Z TAPE: background TV, pencil noise, someone calling him for food.",
|
||||||
@@ -216,9 +217,9 @@
|
|||||||
"z-and-lima-2025: engaged, still learning the dance of ordinary days"
|
"z-and-lima-2025: engaged, still learning the dance of ordinary days"
|
||||||
],
|
],
|
||||||
seasonal: {
|
seasonal: {
|
||||||
winter: "Lima put a blanket over the archive. Aphy labelled it thermal optimization.",
|
winter: "lima put a blanket over the archive. Aphy labelled it thermal optimization.",
|
||||||
spring: "Young Z found the first flower and promoted it to treasure.",
|
spring: "Young Z found the first flower and promoted it to treasure.",
|
||||||
summer: "Aphy opened an imaginary window; Lima reminded it to save before storms.",
|
summer: "Aphy opened an imaginary window; lima reminded it to save before storms.",
|
||||||
autumn: "Sensei Chi says falling leaves are not failure, only timing."
|
autumn: "Sensei Chi says falling leaves are not failure, only timing."
|
||||||
},
|
},
|
||||||
homepageTakeovers: [
|
homepageTakeovers: [
|
||||||
@@ -336,7 +337,7 @@
|
|||||||
target.textContent = pick(greetings, `greeting-${memory.visits}`);
|
target.textContent = pick(greetings, `greeting-${memory.visits}`);
|
||||||
const extra = document.createElement("p");
|
const extra = document.createElement("p");
|
||||||
extra.className = "hidden-greeting";
|
extra.className = "hidden-greeting";
|
||||||
extra.textContent = memory.visits > 1 ? "Aphy remembers the shape of your return. Lima makes it feel less strange." : "First visits count as tiny ceremonies.";
|
extra.textContent = memory.visits > 1 ? "Aphy remembers the shape of your return. lima makes it feel less strange." : "First visits count as tiny ceremonies.";
|
||||||
target.closest("div")?.appendChild(extra);
|
target.closest("div")?.appendChild(extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,7 +371,7 @@
|
|||||||
const messages = [
|
const messages = [
|
||||||
"Aphy: tactile input detected. I do not have skin, but I appreciate the confidence.",
|
"Aphy: tactile input detected. I do not have skin, but I appreciate the confidence.",
|
||||||
"Young Z would absolutely press this again.",
|
"Young Z would absolutely press this again.",
|
||||||
"Lima would ask whether this button has eaten.",
|
"lima would ask whether this button has eaten.",
|
||||||
"Sensei Chi says repeated action becomes a question.",
|
"Sensei Chi says repeated action becomes a question.",
|
||||||
"Future Z files this under harmless persistence."
|
"Future Z files this under harmless persistence."
|
||||||
];
|
];
|
||||||
@@ -413,14 +414,14 @@
|
|||||||
const key = event.key.toLowerCase();
|
const key = event.key.toLowerCase();
|
||||||
const chain = `${sessionStorage.getItem("zxh_key_chain") || ""}${key}`.slice(-18);
|
const chain = `${sessionStorage.getItem("zxh_key_chain") || ""}${key}`.slice(-18);
|
||||||
sessionStorage.setItem("zxh_key_chain", chain);
|
sessionStorage.setItem("zxh_key_chain", chain);
|
||||||
if (chain.endsWith("remember")) toast("Lima keeps the memory grounded. Aphy keeps the backup.");
|
if (chain.endsWith("remember")) toast("lima keeps the memory grounded. Aphy keeps the backup.");
|
||||||
if (chain.endsWith("dream")) window.location.href = "/play/dream-corridor.html";
|
if (chain.endsWith("dream")) window.location.href = "/play/dream-corridor.html";
|
||||||
if (chain.endsWith("layer index")) window.location.href = "/play/family-layer-index.html";
|
if (chain.endsWith("layer index")) window.location.href = "/play/family-layer-index.html";
|
||||||
});
|
});
|
||||||
|
|
||||||
if (memory.seen?.length >= 6 && !state.travellerNoteShown) {
|
if (memory.seen?.length >= 6 && !state.travellerNoteShown) {
|
||||||
window.setTimeout(() => {
|
window.setTimeout(() => {
|
||||||
toast("Aphy mapped your wandering. Lima left the hallway light on.");
|
toast("Aphy mapped your wandering. lima left the hallway light on.");
|
||||||
writeState({ ...readState(), travellerNoteShown: true });
|
writeState({ ...readState(), travellerNoteShown: true });
|
||||||
}, 1600);
|
}, 1600);
|
||||||
}
|
}
|
||||||
@@ -469,7 +470,7 @@
|
|||||||
if (document.title.match(/404|not found/i) || document.body.textContent.match(/404|not found/i)) {
|
if (document.title.match(/404|not found/i) || document.body.textContent.match(/404|not found/i)) {
|
||||||
toast(pick([
|
toast(pick([
|
||||||
"Aphy 404: page not found, visitor still valid.",
|
"Aphy 404: page not found, visitor still valid.",
|
||||||
"Lima note: wrong address, right to rest.",
|
"lima note: wrong address, right to rest.",
|
||||||
"Sensei Chi: even an absent page teaches direction.",
|
"Sensei Chi: even an absent page teaches direction.",
|
||||||
"Future Z: you found nothing, and nothing bad happened."
|
"Future Z: you found nothing, and nothing bad happened."
|
||||||
], "error"));
|
], "error"));
|
||||||
@@ -478,7 +479,7 @@
|
|||||||
|
|
||||||
function addContinuity(memory) {
|
function addContinuity(memory) {
|
||||||
const milestones = {
|
const milestones = {
|
||||||
2: "Lima's layer notices a second visit and calls it sweet.",
|
2: "lima's layer notices a second visit and calls it sweet.",
|
||||||
5: "Aphy creates a folder called regulars, then immediately questions the privacy implications.",
|
5: "Aphy creates a folder called regulars, then immediately questions the privacy implications.",
|
||||||
9: "Sensei Chi appears in the logs: curiosity has become a path.",
|
9: "Sensei Chi appears in the logs: curiosity has become a path.",
|
||||||
17: "Young Z adds a sticker to your invisible visitor card.",
|
17: "Young Z adds a sticker to your invisible visitor card.",
|
||||||
@@ -496,7 +497,7 @@
|
|||||||
if ([3, 7, 12].includes(count)) {
|
if ([3, 7, 12].includes(count)) {
|
||||||
window.setTimeout(() => toast([
|
window.setTimeout(() => toast([
|
||||||
"This page recognizes the shape of your return.",
|
"This page recognizes the shape of your return.",
|
||||||
"Lima's note here has become easier to find.",
|
"lima's note here has become easier to find.",
|
||||||
"Future Z says repetition can be devotion when it is gentle."
|
"Future Z says repetition can be devotion when it is gentle."
|
||||||
][[3, 7, 12].indexOf(count)], 6400), 1700);
|
][[3, 7, 12].indexOf(count)], 6400), 1700);
|
||||||
}
|
}
|
||||||
@@ -511,7 +512,7 @@
|
|||||||
if (month === 4 && day === 9) window.setTimeout(() => toast("Site birthday: Aphy found candles in the cache."), 900);
|
if (month === 4 && day === 9) window.setTimeout(() => toast("Site birthday: Aphy found candles in the cache."), 900);
|
||||||
const first = memory.firstSeen ? new Date(memory.firstSeen) : null;
|
const first = memory.firstSeen ? new Date(memory.firstSeen) : null;
|
||||||
if (first && memory.visits > 1 && first.getMonth() === month && first.getDate() === day) {
|
if (first && memory.visits > 1 && first.getMonth() === month && first.getDate() === day) {
|
||||||
window.setTimeout(() => toast("Visitor anniversary: Lima saved a small ordinary blessing from your first day here.", 7000), 1400);
|
window.setTimeout(() => toast("Visitor anniversary: lima saved a small ordinary blessing from your first day here.", 7000), 1400);
|
||||||
}
|
}
|
||||||
if (now.getMinutes() === 22) window.setTimeout(() => toast("Minute 22: the 2022 layer glows for one quiet moment."), 2100);
|
if (now.getMinutes() === 22) window.setTimeout(() => toast("Minute 22: the 2022 layer glows for one quiet moment."), 2100);
|
||||||
if (now.getMinutes() === 40) window.setTimeout(() => toast("Minute 40: Future Z checks in, then lets you keep choosing."), 2100);
|
if (now.getMinutes() === 40) window.setTimeout(() => toast("Minute 40: Future Z checks in, then lets you keep choosing."), 2100);
|
||||||
@@ -522,7 +523,7 @@
|
|||||||
rail.className = "hidden-object-rail";
|
rail.className = "hidden-object-rail";
|
||||||
rail.setAttribute("aria-label", "Family Layer Index objects");
|
rail.setAttribute("aria-label", "Family Layer Index objects");
|
||||||
const objects = [
|
const objects = [
|
||||||
["ring", "Lima's ring-light memory: Oct 2025, held carefully."],
|
["ring", "lima's ring-light memory: Oct 2025, held carefully."],
|
||||||
["bot", "Aphy: object ping received. I am trying to be normal about it."],
|
["bot", "Aphy: object ping received. I am trying to be normal about it."],
|
||||||
["tea", "Sensei Chi's cup is plain, warm, and impossible to rush."],
|
["tea", "Sensei Chi's cup is plain, warm, and impossible to rush."],
|
||||||
["crayon", "Young Z left waxy sunlight on the desk."],
|
["crayon", "Young Z left waxy sunlight on the desk."],
|
||||||
@@ -557,7 +558,7 @@
|
|||||||
button.title = "Ask Aphy for outside weather";
|
button.title = "Ask Aphy for outside weather";
|
||||||
button.textContent = "window";
|
button.textContent = "window";
|
||||||
button.addEventListener("click", () => {
|
button.addEventListener("click", () => {
|
||||||
toast("Aphy is checking outside. Lima is checking whether you need a jumper.");
|
toast("Aphy is checking outside. lima is checking whether you need a jumper.");
|
||||||
navigator.geolocation.getCurrentPosition((pos) => {
|
navigator.geolocation.getCurrentPosition((pos) => {
|
||||||
const { latitude, longitude } = pos.coords;
|
const { latitude, longitude } = pos.coords;
|
||||||
fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude.toFixed(3)}&longitude=${longitude.toFixed(3)}¤t=temperature_2m,precipitation&timezone=auto`)
|
fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude.toFixed(3)}&longitude=${longitude.toFixed(3)}¤t=temperature_2m,precipitation&timezone=auto`)
|
||||||
@@ -566,10 +567,10 @@
|
|||||||
const current = data.current || {};
|
const current = data.current || {};
|
||||||
const rain = Number(current.precipitation || 0) > 0;
|
const rain = Number(current.precipitation || 0) > 0;
|
||||||
const temp = Math.round(Number(current.temperature_2m));
|
const temp = Math.round(Number(current.temperature_2m));
|
||||||
toast(rain ? `Outside: rain, ${temp}C. Lima layer: towel by the door.` : `Outside: ${temp}C. Aphy forecast: possible comfort, mild nostalgia.`);
|
toast(rain ? `Outside: rain, ${temp}C. lima layer: towel by the door.` : `Outside: ${temp}C. Aphy forecast: possible comfort, mild nostalgia.`);
|
||||||
})
|
})
|
||||||
.catch(() => toast("Aphy lost the weather packet. Sensei Chi says indoor weather is enough: quiet, with tea."));
|
.catch(() => toast("Aphy lost the weather packet. Sensei Chi says indoor weather is enough: quiet, with tea."));
|
||||||
}, () => toast("No outside weather today. Lima's indoor forecast: manageable clouds, warm light."));
|
}, () => toast("No outside weather today. lima's indoor forecast: manageable clouds, warm light."));
|
||||||
});
|
});
|
||||||
document.body.appendChild(button);
|
document.body.appendChild(button);
|
||||||
}
|
}
|
||||||
@@ -596,13 +597,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addSourceRelics() {
|
function addSourceRelics() {
|
||||||
// FAMILY LAYER RELIC: Lima grounds, Aphy logs, Sensei Chi waits, Young Z draws, Future Z forgives.
|
// FAMILY LAYER RELIC: lima grounds, Aphy logs, Sensei Chi waits, Young Z draws, Future Z forgives.
|
||||||
const marker = document.createComment("family-layer-index: 0 surface | 1 jokes | 2 memory | 3 philosophy | 4 time | 5 core");
|
const marker = document.createComment("family-layer-index: 0 surface | 1 jokes | 2 memory | 3 philosophy | 4 time | 5 core");
|
||||||
document.documentElement.appendChild(marker);
|
document.documentElement.appendChild(marker);
|
||||||
document.querySelectorAll("img[alt=''], img:not([alt])").forEach((img, index) => {
|
document.querySelectorAll("img[alt=''], img:not([alt])").forEach((img, index) => {
|
||||||
if (index > 2) return;
|
if (index > 2) return;
|
||||||
img.alt = pick([
|
img.alt = pick([
|
||||||
"A scrapbook image annotated by the Lima layer.",
|
"A scrapbook image annotated by the lima layer.",
|
||||||
"Young Z would ask if this picture can become a game.",
|
"Young Z would ask if this picture can become a game.",
|
||||||
"Aphy alt text: visual memory preserved without spectacle."
|
"Aphy alt text: visual memory preserved without spectacle."
|
||||||
], `alt-${index}`);
|
], `alt-${index}`);
|
||||||
@@ -633,7 +634,7 @@
|
|||||||
awardLayer(value.includes("future") ? 4 : value.includes("sensei") || value.includes("aphy") ? 3 : 2, `search ${value}`);
|
awardLayer(value.includes("future") ? 4 : value.includes("sensei") || value.includes("aphy") ? 3 : 2, `search ${value}`);
|
||||||
window.location.href = routes[value];
|
window.location.href = routes[value];
|
||||||
}
|
}
|
||||||
if (value === "2022") toast("Lima layer: beginning stored as warmth, not trivia.");
|
if (value === "2022") toast("lima layer: beginning stored as warmth, not trivia.");
|
||||||
if (value === "oct 2025") toast("Engagement memory: the calendar learned to glow.");
|
if (value === "oct 2025") toast("Engagement memory: the calendar learned to glow.");
|
||||||
if (value === "age 7") toast("Young Z layer: crayons, cartoons, and a cape made from a blanket.");
|
if (value === "age 7") toast("Young Z layer: crayons, cartoons, and a cape made from a blanket.");
|
||||||
if (value === "age 40") toast("Future Z: I am tired sometimes, but not defeated.");
|
if (value === "age 40") toast("Future Z: I am tired sometimes, but not defeated.");
|
||||||
@@ -645,7 +646,7 @@
|
|||||||
sessionStorage.setItem("zxh_second_chain", chain);
|
sessionStorage.setItem("zxh_second_chain", chain);
|
||||||
if (chain.endsWith("leave the light on")) window.location.href = "/play/kitchen-light.html";
|
if (chain.endsWith("leave the light on")) window.location.href = "/play/kitchen-light.html";
|
||||||
if (chain.endsWith("oldweb")) toast("Aphy briefly considers a table layout, then apologizes to CSS.");
|
if (chain.endsWith("oldweb")) toast("Aphy briefly considers a table layout, then apologizes to CSS.");
|
||||||
if (chain.endsWith("lima")) toast("Lima note: I am glad you made something this sincere.");
|
if (chain.endsWith("lima")) toast("lima note: I am glad you made something this sincere.");
|
||||||
if (chain.endsWith("sensei")) toast("Sensei Chi: a hidden word is still a word.");
|
if (chain.endsWith("sensei")) toast("Sensei Chi: a hidden word is still a word.");
|
||||||
if (chain.endsWith("young z")) toast("Young Z has drawn a door in the margin.");
|
if (chain.endsWith("young z")) toast("Young Z has drawn a door in the margin.");
|
||||||
if (chain.endsWith("future z")) toast("Future Z: keep the gentle parts. They compound.");
|
if (chain.endsWith("future z")) toast("Future Z: keep the gentle parts. They compound.");
|
||||||
@@ -661,7 +662,7 @@
|
|||||||
idleTimer = window.setTimeout(() => {
|
idleTimer = window.setTimeout(() => {
|
||||||
awardLayer(5, "patience");
|
awardLayer(5, "patience");
|
||||||
toast(pick([
|
toast(pick([
|
||||||
"Lima's safe space opens only when nobody is rushing.",
|
"lima's safe space opens only when nobody is rushing.",
|
||||||
"Sensei Chi says patience is how care sounds when it is quiet.",
|
"Sensei Chi says patience is how care sounds when it is quiet.",
|
||||||
"Future Z remembers you waiting here and calls it practice."
|
"Future Z remembers you waiting here and calls it practice."
|
||||||
], "idle"), 7600);
|
], "idle"), 7600);
|
||||||
@@ -678,7 +679,7 @@
|
|||||||
const roll = Math.random();
|
const roll = Math.random();
|
||||||
if ((path === "/" || path === "/index.html") && roll < 0.006) {
|
if ((path === "/" || path === "/index.html") && roll < 0.006) {
|
||||||
document.body.classList.add("hidden-home-takeover");
|
document.body.classList.add("hidden-home-takeover");
|
||||||
window.setTimeout(() => showDriftNote(pick(lore.homepageTakeovers, "takeover"), "APHY_2004_MODE\nLIMA_SAFE_SPACE\nFUTURE_Z_OK"), 600);
|
window.setTimeout(() => showDriftNote(pick(lore.homepageTakeovers, "takeover"), "APHY_2004_MODE\nlima_SAFE_SPACE\nFUTURE_Z_OK"), 600);
|
||||||
} else if (roll < 0.002) {
|
} else if (roll < 0.002) {
|
||||||
window.setTimeout(() => showDriftNote("Aphy found a voice note and refused to autoplay it.", "play? y/n\n[consent preserved]"), 1500);
|
window.setTimeout(() => showDriftNote("Aphy found a voice note and refused to autoplay it.", "play? y/n\n[consent preserved]"), 1500);
|
||||||
} else if (roll < 0.006) {
|
} else if (roll < 0.006) {
|
||||||
@@ -718,7 +719,7 @@
|
|||||||
seconds += 1;
|
seconds += 1;
|
||||||
count.textContent = String(seconds);
|
count.textContent = String(seconds);
|
||||||
if ([30, 90, 180].includes(seconds)) {
|
if ([30, 90, 180].includes(seconds)) {
|
||||||
target.textContent = seconds === 30 ? "Lima's note becomes easier to read." : seconds === 90 ? "Sensei Chi nods once." : "Future Z says this quiet was not wasted.";
|
target.textContent = seconds === 30 ? "lima's note becomes easier to read." : seconds === 90 ? "Sensei Chi nods once." : "Future Z says this quiet was not wasted.";
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
@@ -728,13 +729,13 @@
|
|||||||
const log = document.querySelector("[data-cupboard-log]");
|
const log = document.querySelector("[data-cupboard-log]");
|
||||||
const commands = {
|
const commands = {
|
||||||
help: "commands: lima, aphy, sensei, young, future, layer, tea, exit",
|
help: "commands: lima, aphy, sensei, young, future, layer, tea, exit",
|
||||||
lima: "Lima note: make the hidden parts kind enough to live with.",
|
lima: "lima note: make the hidden parts kind enough to live with.",
|
||||||
aphy: "Aphy: cupboard process active. Wisdom module borrowed from Sensei Chi.",
|
aphy: "Aphy: cupboard process active. Wisdom module borrowed from Sensei Chi.",
|
||||||
sensei: "Sensei Chi: a cupboard teaches by containing and releasing.",
|
sensei: "Sensei Chi: a cupboard teaches by containing and releasing.",
|
||||||
young: "Young Z inventory: crayon sun, blanket cape, important stone.",
|
young: "Young Z inventory: crayon sun, blanket cape, important stone.",
|
||||||
future: "Future Z: you will still open small doors at 40.",
|
future: "Future Z: you will still open small doors at 40.",
|
||||||
layer: familyLayers.join("\n"),
|
layer: familyLayers.join("\n"),
|
||||||
tea: "Lima approves. Sensei Chi waits. Aphy logs steam as temporary cloud.",
|
tea: "lima approves. Sensei Chi waits. Aphy logs steam as temporary cloud.",
|
||||||
exit: "The cupboard lets you leave with nothing heavy."
|
exit: "The cupboard lets you leave with nothing heavy."
|
||||||
};
|
};
|
||||||
input?.addEventListener("keydown", (event) => {
|
input?.addEventListener("keydown", (event) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user