major character changes
All checks were successful
Build Org Website / build (push) Successful in 51s
All checks were successful
Build Org Website / build (push) Successful in 51s
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -2,443 +2,487 @@
|
|||||||
|
|
||||||
## 1. Creative Pillars
|
## 1. Creative Pillars
|
||||||
|
|
||||||
The hidden layer should feel like an emotional internet artifact: a personal site that has been lived in, repaired, renamed, backed up, forgotten, and returned to. It should reward attention without demanding completion.
|
The hidden layer is a living family scrapbook for Z's website. It should feel handmade, emotionally grounded, quietly strange, and worth returning to over months. The system rewards curiosity, patience, and kindness without turning discovery into completionism.
|
||||||
|
|
||||||
Primary emotional tones:
|
The refactor replaces the previous fictional cast with five core characters:
|
||||||
|
|
||||||
- Cozy familial: kitchen lights, rice, mugs, family notes, practical tenderness.
|
- Lima: Z's wife in-world, met Z in 2022, engaged in Oct 2025, soon to be married. She is the emotional anchor, warmth, memory keeper, grounding presence, and the reason the mystery stays human.
|
||||||
- Funny and self-aware: fake system warnings, old-web jokes, suspicious biscuit tins, web development folklore.
|
- Aphy: a male virtual bot friend embedded in the website. He is a conversational guide with glitchy wisdom, playful diagnostics, old-web humor, and occasional philosophical accidents.
|
||||||
- Reflective melancholy: unfinished letters, old usernames, returning to changed rooms.
|
- Sensei Chi: an elderly wise sensei. He appears rarely after patient or curious behavior, offering short lessons, parables, and grounded cryptic guidance.
|
||||||
- Gentle mystery: Morrow, Nettle, Luma, Etta, Aunt Ma, Nadir, the radio, the train platform.
|
- Young Z: Z at age 7. He carries innocence, childhood wonder, drawings, games, blanket-cape logic, and memory fragments.
|
||||||
- Internet nostalgia: guestbooks, counters, dial-up usernames, under construction language, source-code relics.
|
- Future Z: Z at age 40. He appears through rare warnings and future logs: calm, tired sometimes, wise, honest, and reassuring without pretending life becomes simple.
|
||||||
|
|
||||||
## 2. Recurring Cast
|
Tone requirements:
|
||||||
|
|
||||||
- Morrow: a quiet figure tied to trains, platforms, lanterns, and unfinished apologies. Morrow represents return, hesitation, and the comfort of being expected.
|
- Cozy family blog energy.
|
||||||
- Nettle: the archivist/moderator figure. Files impossible feelings under practical labels. Carries a clipboard and treats emotional continuity as infrastructure.
|
- Emotional realism.
|
||||||
- Luma: a lamp-associated presence who hums original tiny songs and notices margins. Luma represents small courage.
|
- Gentle mystery, never horror.
|
||||||
- Etta: writer of the "Do Not Open" letter. Represents vulnerability hidden behind instructions and labels.
|
- Nostalgic internet aesthetics.
|
||||||
- Aunt Ma: warm, funny, practical family presence. Connected to recipes, suspicious biscuit tins, and household wisdom.
|
- Subtle sadness mixed with warmth.
|
||||||
- Nadir: backup-minded family historian. Explains technical care through domestic metaphors.
|
- Long-term emotional attachment.
|
||||||
- Old Guest 14 / guest_000 / sunnydialup88: old-web guestbook presences who blur past visitors, usernames, and memory.
|
|
||||||
|
|
||||||
## 3. Symbolic Objects
|
## 2. Character System
|
||||||
|
|
||||||
- Lamp: patience, late-night comfort, permission to rest.
|
### Lima
|
||||||
- Mug: continuity, small damage kept because it belongs.
|
|
||||||
- Return ticket: coming back without needing to explain where from.
|
|
||||||
- Radio: almost-heard family memory, voice messages, weather, original hums.
|
|
||||||
- Pressed flower / marigold: seasonal return, promises that do not announce themselves.
|
|
||||||
- Biscuit tin: running joke; allegedly contains tools, feelings, or neither.
|
|
||||||
- Train platform: delay, return, growing older, being expected.
|
|
||||||
- Cupboard: hidden terminal, family storage, recursive domestic mystery.
|
|
||||||
|
|
||||||
## 4. Implemented Global Systems
|
Role: emotional grounding and safe-space notes.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Loving, real, intimate, gently humorous.
|
||||||
|
- Practical care: eat, rest, leave the light on, do not perform.
|
||||||
|
- Connected to 2022, Oct 2025 engagement, soon-to-be-married future, ordinary daily warmth.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `lima` or `lima note`.
|
||||||
|
- Night messages.
|
||||||
|
- Weather window fallback.
|
||||||
|
- Visit milestones 2 and visitor anniversaries.
|
||||||
|
- Hidden safe pages such as `/play/lima-note.html` and `/play/kitchen-light.html`.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Lima prevents the hidden layer from becoming abstract lore. She grounds it in relationship, daily care, and the real emotional stakes of building a personal site.
|
||||||
|
|
||||||
|
### Aphy
|
||||||
|
|
||||||
|
Role: embedded bot friend, guide, diagnostic narrator.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Digital, curious, funny, slightly self-aware.
|
||||||
|
- Uses system language but lands on emotional truth.
|
||||||
|
- Not omniscient. Helpful with comic uncertainty.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `aphy` or `aphy console`.
|
||||||
|
- Corner object clicks.
|
||||||
|
- Old-web stamp.
|
||||||
|
- Source-code relic.
|
||||||
|
- Typed `aphy`.
|
||||||
|
- Aphy Console and terminal cupboard.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Aphy turns web mechanics into companionship. He is the bridge between code and feeling.
|
||||||
|
|
||||||
|
### Sensei Chi
|
||||||
|
|
||||||
|
Role: mentor, philosopher, rare guide.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Minimal, calm, profound, grounded.
|
||||||
|
- Speaks in short parables.
|
||||||
|
- Appears after curiosity, patience, and Layer 3 activity.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `sensei chi` or `sensei garden`.
|
||||||
|
- Rare page event.
|
||||||
|
- Typed `sensei`.
|
||||||
|
- Patience rewards.
|
||||||
|
- Terminal cupboard command `sensei`.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Sensei Chi gives meaning to waiting, restraint, and slow exploration.
|
||||||
|
|
||||||
|
### Young Z
|
||||||
|
|
||||||
|
Role: childhood memory and emotional contrast.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Innocent, playful, vivid.
|
||||||
|
- Connected to age 7, drawings, blanket capes, games, moon-following-car logic.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `young z`, `young z desk`, or `age 7`.
|
||||||
|
- Keepsake crayon object.
|
||||||
|
- Dream Corridor.
|
||||||
|
- Family Layer Index Layer 2.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Young Z preserves wonder and reminds visitors the site is partly a letter to the past.
|
||||||
|
|
||||||
|
### Future Z
|
||||||
|
|
||||||
|
Role: age-40 reflective future self.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Calm, honest, slightly tired, reassuring.
|
||||||
|
- Offers emotional advice as system warnings.
|
||||||
|
- Does not spoil outcomes; confirms that effort mattered.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `future z`, `future log`, or `age 40`.
|
||||||
|
- Visit milestones 31 and 64.
|
||||||
|
- Rare Future Z system warnings.
|
||||||
|
- Time Platform.
|
||||||
|
- Do Not Open page.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Future Z is the long arc. He makes the website feel like it evolves through years, not sessions.
|
||||||
|
|
||||||
|
## 3. Cross-Character Relationships
|
||||||
|
|
||||||
|
- Lima ↔ Z: romantic grounding. Lima's notes make the hidden system sincere and relational. She represents the future being built with someone, not alone.
|
||||||
|
- Aphy ↔ Sensei Chi: logic versus wisdom. Aphy tries to compute meaning; Sensei Chi teaches patience, limits, and non-instrumental care.
|
||||||
|
- Young Z ↔ Future Z: memory versus outcome. Young Z asks naive questions; Future Z answers with lived tenderness.
|
||||||
|
- Aphy ↔ Young Z: curiosity versus innocence. Aphy explains systems; Young Z treats systems as games and magic.
|
||||||
|
- Sensei Chi ↔ Future Z: acceptance of time. Sensei Chi teaches how to wait; Future Z proves waiting changed something.
|
||||||
|
- Lima ↔ Aphy: Lima humanizes the system; Aphy protects the system's playful weirdness.
|
||||||
|
- Lima ↔ Future Z: Future Z confirms Lima's grounding presence remains important over time.
|
||||||
|
|
||||||
|
## 4. Family Layer Index
|
||||||
|
|
||||||
|
The Family Layer Index organizes all hidden content into emotional depth:
|
||||||
|
|
||||||
|
- Layer 0: surface website - normal notes, pages, tools, and navigation.
|
||||||
|
- Layer 1: casual hidden jokes - Aphy comments, old-web stamps, fake diagnostics, meta web humor.
|
||||||
|
- Layer 2: memory fragments - Lima notes, Young Z logs, childhood and relationship memory.
|
||||||
|
- Layer 3: philosophical anomalies - Aphy/Sensei Chi debates, rare Sensei appearances, terminal wisdom.
|
||||||
|
- Layer 4: time-distorted messages - Future Z warnings, age-40 logs, long-term usage milestones.
|
||||||
|
- Layer 5: deeply hidden emotional core - patience rewards, love, rest, safe-space messages, returning without performance.
|
||||||
|
|
||||||
|
Implementation:
|
||||||
|
|
||||||
|
- Local state key: `zxh_hidden_details_v2`.
|
||||||
|
- Legacy state migration from `zxh_hidden_details_v1`.
|
||||||
|
- Layer encounters are stored in `layerVisits`.
|
||||||
|
- Secret page `/play/family-layer-index.html` renders local layer counts.
|
||||||
|
- Search `family layer index` or type `layer index` to find it.
|
||||||
|
|
||||||
|
## 5. Implemented Global Features
|
||||||
|
|
||||||
### Footer Notes
|
### Footer Notes
|
||||||
|
|
||||||
- Trigger: every page load with a footer.
|
- Trigger: every page load with a footer.
|
||||||
- Content: rotates through 102 first-layer messages plus new second-layer continuity.
|
- Content: rotates through character-grounded hidden lines.
|
||||||
- Frequency: always visible but subtle.
|
- Rarity: always present but muted.
|
||||||
- Lore: the footer is the house threshold.
|
- Character links: Lima warmth, Aphy diagnostics, Sensei Chi lessons, Young Z wonder, Future Z reflection.
|
||||||
- UX: muted centered text; should feel like a small afterthought.
|
|
||||||
|
|
||||||
### Homepage Greetings
|
### Homepage Greetings
|
||||||
|
|
||||||
- Trigger: homepage load.
|
- Trigger: homepage load.
|
||||||
- Content: randomized greeting; repeat visitors receive memory-aware copy.
|
- Content: randomized character-aware greeting.
|
||||||
- Frequency: always on homepage.
|
- Rarity: always on homepage.
|
||||||
- Lore: the site recognizes returning visitors locally through `localStorage`.
|
- Behavior: repeat visitors get "Aphy remembers the shape of your return. Lima makes it feel less strange."
|
||||||
|
|
||||||
### Hover Whispers
|
### Hover Whispers
|
||||||
|
|
||||||
- Trigger: some paragraphs and headings gain tiny hover/click notes.
|
- Trigger: deterministic paragraph and heading hover/click inserts.
|
||||||
- Content: short poems, quotes, and second-layer hidden memories.
|
- Content: quotes and poems from the new character set.
|
||||||
- Frequency: deterministic per page; not every paragraph.
|
- Rarity: some pages only.
|
||||||
- UX: dotted question marks and heading hover captions.
|
- Layer: 1 or 2 depending on content.
|
||||||
|
|
||||||
### Corner Object
|
### Corner Object
|
||||||
|
|
||||||
- Trigger: click the small fixed corner symbol.
|
- Trigger: repeated clicks on the small fixed object.
|
||||||
- Sequence: five escalating messages, then seven clicks opens `/play/left-behind.html`.
|
- Sequence:
|
||||||
- Lore: a loose panel in the page.
|
- Aphy notices tactile input.
|
||||||
|
- Young Z would press it again.
|
||||||
|
- Lima asks whether the button has eaten.
|
||||||
|
- Sensei Chi says repeated action becomes a question.
|
||||||
|
- Future Z files it under harmless persistence.
|
||||||
|
- Payoff: 7 clicks opens `/play/left-behind.html`.
|
||||||
|
|
||||||
### Keepsake Constellation
|
### Family Keepsake Rail
|
||||||
|
|
||||||
- Trigger: click the five tiny bottom keepsakes: lamp, mug, ticket, radio, flower.
|
- Trigger: click tiny bottom objects.
|
||||||
- Payoff: after all are clicked, the site suggests searching `radio under stairs`.
|
- Objects:
|
||||||
- Frequency: always present, low opacity.
|
- Ring: Lima, Oct 2025.
|
||||||
- Lore: collecting ordinary objects aligns the hidden family memory.
|
- Bot: Aphy.
|
||||||
|
- Tea: Sensei Chi.
|
||||||
|
- Crayon: Young Z.
|
||||||
|
- Clock: Future Z.
|
||||||
|
- Payoff: after all are found, prompts search for `family layer index`.
|
||||||
|
|
||||||
### Weather Window
|
### Weather Window
|
||||||
|
|
||||||
- Trigger: after at least three visits, a subtle `window` button appears. User click requests browser location.
|
- Trigger: after 3 visits, click the subtle `window` button.
|
||||||
- Content: weather-aware line through Open-Meteo if permission/network works; indoor-weather fallback otherwise.
|
- Behavior: asks browser location only after explicit click; fetches Open-Meteo if available.
|
||||||
- Frequency: repeat visitors only.
|
- Content:
|
||||||
- UX: no automatic permission prompt.
|
- Aphy checks outside.
|
||||||
|
- Lima checks whether you need a jumper.
|
||||||
|
- Sensei Chi fallback: indoor weather is enough.
|
||||||
|
- Rarity: repeat visitors only.
|
||||||
|
|
||||||
### Visit Milestones
|
### Visit Milestones
|
||||||
|
|
||||||
- Trigger: visit counts 2, 5, 9, 17, 31, 64.
|
- Trigger: visit counts 2, 5, 9, 17, 31, 64.
|
||||||
- Content: progressively warmer messages about being remembered.
|
- Content:
|
||||||
- Lore: the site stores visits locally, not identities.
|
- 2: Lima notices the second visit.
|
||||||
|
- 5: Aphy creates a regulars folder and worries about privacy.
|
||||||
|
- 9: Sensei Chi logs curiosity as a path.
|
||||||
|
- 17: Young Z adds a sticker to the invisible visitor card.
|
||||||
|
- 31: Future Z says returning is one way to heal.
|
||||||
|
- 64: Layer 5 flickers.
|
||||||
|
|
||||||
### Page Revisit Memory
|
### Page Revisit Memory
|
||||||
|
|
||||||
- Trigger: 3rd, 7th, and 12th visit to the same path.
|
- Trigger: 3rd, 7th, and 12th visit to the same URL.
|
||||||
- Content: page-specific return messages.
|
- Content: page recognizes return; Lima notes become easier to find; Future Z reframes repetition as devotion.
|
||||||
- Lore: individual rooms recognize repeated footsteps.
|
|
||||||
|
|
||||||
### Seasonal Content
|
### Seasonal and Date Events
|
||||||
|
|
||||||
- Trigger: low-probability seasonal toast on page load.
|
- Winter: Lima blanket; Aphy thermal optimization.
|
||||||
- Content: winter blanket, spring pressed flower, summer fan/window, autumn leaf-links.
|
- Spring: Young Z promotes first flower to treasure.
|
||||||
- Frequency: 18% chance.
|
- Summer: Aphy opens an imaginary window; Lima reminds it to save before storms.
|
||||||
|
- Autumn: Sensei Chi teaches falling leaves as timing.
|
||||||
### Date Events
|
- October: engagement memory glows all month.
|
||||||
|
- May 9: site birthday.
|
||||||
- Site birthday: May 9. Message about imaginary candles.
|
- Minute 22: 2022 layer glows.
|
||||||
- Visitor anniversary: same month/day as first stored visit.
|
- Minute 40: Future Z check-in.
|
||||||
- Minute thirteen: radio throat-clearing message.
|
|
||||||
|
|
||||||
### Night Messages
|
### Night Messages
|
||||||
|
|
||||||
- Trigger: 22:00-04:59 local browser time.
|
- Trigger: 22:00-04:59 local time.
|
||||||
- Content: gentle late-night comfort.
|
- Content: Lima care, Aphy dimming imaginary server lights, Sensei Chi permission not to obey midnight, Young Z asleep in memory layer, Future Z reassurance.
|
||||||
- Visual: soft bottom glow.
|
|
||||||
|
|
||||||
### Search Secrets
|
### Search Secrets
|
||||||
|
|
||||||
- `morrow`: lantern/lake/apology.
|
- `lima` -> Lima warmth toast.
|
||||||
- `nettle`: clipboard/cupboard/semicolon.
|
- `lima note` -> `/play/lima-note.html`.
|
||||||
- `home`: warm window/spare key.
|
- `aphy` -> Aphy presence toast.
|
||||||
- `kitchen light`: opens `/play/kitchen-light.html`.
|
- `aphy console` -> `/play/aphy-console.html`.
|
||||||
- `radio under stairs`: opens `/play/radio-room.html`.
|
- `sensei chi` -> Sensei Chi toast.
|
||||||
- `guestbook 1999`: opens `/play/guestbook-1999.html`.
|
- `sensei garden` -> `/play/sensei-garden.html`.
|
||||||
- `do not open`: opens `/play/do-not-open.html`.
|
- `young z` -> Young Z toast.
|
||||||
- `cassette`: opens `/play/cassette-log.html`.
|
- `young z desk` -> `/play/young-z-desk.html`.
|
||||||
- `return ticket`: opens `/play/train-platform.html`.
|
- `future z` -> Future Z toast.
|
||||||
- `unfinished letter`: opens `/play/forgotten-draft.html`.
|
- `future log` -> `/play/future-log.html`.
|
||||||
- `burnt sugar`: opens `/play/corrupted-recipe.html`.
|
- `family layer index` -> `/play/family-layer-index.html`.
|
||||||
- `cupboard`: opens `/play/terminal-cupboard.html`.
|
- `2022` -> Lima beginning memory.
|
||||||
- `patience`: opens `/play/patience-game.html`.
|
- `oct 2025` -> engagement memory.
|
||||||
- `marigold`, `luma`, `nadir`: lore toasts.
|
- `age 7` -> Young Z memory.
|
||||||
|
- `age 40` -> Future Z reflection.
|
||||||
|
- `voice note` -> `/play/cassette-log.html`.
|
||||||
|
- `time platform` -> `/play/train-platform.html`.
|
||||||
|
- `do not open` -> `/play/do-not-open.html`.
|
||||||
|
- `unfinished letter` -> `/play/forgotten-draft.html`.
|
||||||
|
- `burnt sugar` -> `/play/corrupted-recipe.html`.
|
||||||
|
- `cupboard` -> `/play/terminal-cupboard.html`.
|
||||||
|
- `patience` -> `/play/patience-game.html`.
|
||||||
|
|
||||||
### Typed Phrase Secrets
|
### Typed Phrase Secrets
|
||||||
|
|
||||||
- `remember`: continuity toast.
|
- `remember`: Lima grounds memory; Aphy backs it up.
|
||||||
- `dream`: opens Dream Corridor.
|
- `dream`: opens Dream Corridor.
|
||||||
|
- `layer index`: opens Family Layer Index.
|
||||||
- `leave the light on`: opens Kitchen Light.
|
- `leave the light on`: opens Kitchen Light.
|
||||||
- `oldweb`: old layout joke.
|
- `oldweb`: Aphy jokes about table layouts.
|
||||||
- `ma`: biscuit tin joke.
|
- `lima`: Lima note toast.
|
||||||
- `luma`: plays a tiny original tone sequence.
|
- `sensei`: Sensei Chi toast.
|
||||||
|
- `young z`: Young Z margin drawing.
|
||||||
|
- `future z`: Future Z compounding gentleness.
|
||||||
|
- `aphy`: plays tiny original tone sequence.
|
||||||
|
|
||||||
### Rare Events
|
### Rare Events
|
||||||
|
|
||||||
- First layer: rare page breeze and biscuit event.
|
- Sensei Chi rare appearance: 0.3%.
|
||||||
- Second layer:
|
- Future Z system warning: 0.5% after Sensei roll.
|
||||||
- 0.6% rare homepage old-web takeover.
|
- Homepage old-web takeover: 0.6% on homepage.
|
||||||
- 0.2% cassette asks permission.
|
- Voice note permission event: 0.2%.
|
||||||
- 0.4% recurring dream line.
|
- Recurring dream: 0.4%.
|
||||||
- 0.8% cryptic comforting warning.
|
- Cryptic warning: 0.8%.
|
||||||
- Rule: rare events should delight, not block navigation.
|
|
||||||
|
|
||||||
### Patience Rewards
|
### Patience Rewards
|
||||||
|
|
||||||
- Trigger: 90 seconds of inactivity after repeat visits.
|
- Trigger: 90 seconds of inactivity after repeat visits.
|
||||||
- Content: quiet no-achievement reward.
|
- Layer: 5.
|
||||||
- Lore: patience and kindness count even when not announced.
|
- Content: Lima safe space, Sensei Chi patience, Future Z saying quiet was practice.
|
||||||
|
- Rule: no visible achievement badge.
|
||||||
|
|
||||||
### Source Relics and Alt Text
|
### Source Relics
|
||||||
|
|
||||||
- Trigger: DOM load.
|
- Adds HTML comment: `family-layer-index: 0 surface | 1 jokes | 2 memory | 3 philosophy | 4 time | 5 core`.
|
||||||
- Behavior: adds a source-code comment and fills empty image alt text with scrapbook-like hidden descriptions.
|
- Fills blank image alt text with Lima, Young Z, or Aphy scrapbook-style descriptions.
|
||||||
- Purpose: secrets inside source and accessibility-friendly hidden storytelling.
|
|
||||||
|
|
||||||
### Audio
|
## 6. Secret Pages
|
||||||
|
|
||||||
- Trigger: user action only, never autoplay.
|
### `/play/lima-note.html`
|
||||||
- Content: short original Web Audio tone sequence associated with Luma/cassettes.
|
|
||||||
- Note: no copyrighted lyrics or melodies.
|
|
||||||
|
|
||||||
## 5. Implemented Secret Pages
|
- Trigger: search `lima note`.
|
||||||
|
- Layer: 2.
|
||||||
|
- Content: 2022 beginning, Oct 2025 engagement, soon-to-be-married warmth, reminder to eat before turning feelings into features.
|
||||||
|
|
||||||
|
### `/play/aphy-console.html`
|
||||||
|
|
||||||
|
- Trigger: search `aphy console`.
|
||||||
|
- Layer: 3.
|
||||||
|
- Content: Aphy boot log, self-aware guide language, kindness in null places.
|
||||||
|
|
||||||
|
### `/play/sensei-garden.html`
|
||||||
|
|
||||||
|
- Trigger: search `sensei garden`.
|
||||||
|
- Layer: 3.
|
||||||
|
- Content: parable about seeds, patience, and Aphy asking whether patience can be optimized.
|
||||||
|
|
||||||
|
### `/play/young-z-desk.html`
|
||||||
|
|
||||||
|
- Trigger: search `young z desk`.
|
||||||
|
- Layer: 2.
|
||||||
|
- Content: age-7 memory list, blanket cape, games, moon following car, ASCII sun.
|
||||||
|
|
||||||
|
### `/play/future-log.html`
|
||||||
|
|
||||||
|
- Trigger: search `future log`.
|
||||||
|
- Layer: 4.
|
||||||
|
- Content: age-40 logs about worry, Lima's laugh, and not deleting gentle parts.
|
||||||
|
|
||||||
|
### `/play/family-layer-index.html`
|
||||||
|
|
||||||
|
- Trigger: search `family layer index`, type `layer index`, or complete keepsake rail.
|
||||||
|
- Layer: meta index.
|
||||||
|
- Content: local layer counts and descriptions.
|
||||||
|
|
||||||
### `/play/left-behind.html`
|
### `/play/left-behind.html`
|
||||||
|
|
||||||
- Trigger: seven clicks on corner object.
|
- Trigger: seven corner-object clicks.
|
||||||
- Tone: familial, emotional.
|
- Layer: 2.
|
||||||
- Lore: blue bowl, soup memory, Morrow at 2:13.
|
- Content: Lima receipt note: met in 2022, engaged Oct 2025, soon married; keep ordinary days safe.
|
||||||
|
|
||||||
### `/play/dream-corridor.html`
|
### `/play/dream-corridor.html`
|
||||||
|
|
||||||
- Trigger: logo taps or typed `dream`.
|
- Trigger: logo taps or typed `dream`.
|
||||||
- Tone: surreal, safe.
|
- Layer: 3.
|
||||||
- Lore: three shy doors, Nettle margin note.
|
- Content: Young Z door, Aphy dream log, Future Z waiting, Sensei Chi margin note.
|
||||||
|
|
||||||
### `/play/kitchen-light.html`
|
### `/play/kitchen-light.html`
|
||||||
|
|
||||||
- Trigger: search `kitchen light` or phrase `leave the light on`.
|
- Trigger: search `kitchen light` or type `leave the light on`.
|
||||||
- Tone: late-night comfort.
|
- Layer: 5.
|
||||||
- Lore: rice in pot, towel on chair, light asks no questions.
|
- Content: late note, food, warmth, no questions.
|
||||||
|
|
||||||
### `/play/radio-room.html`
|
### `/play/radio-room.html`
|
||||||
|
|
||||||
- Trigger: search `radio under stairs`; keepsake constellation hints it.
|
- Trigger: invisible link or direct discovery.
|
||||||
- Tone: nostalgic audio memory.
|
- Layer: 2/3.
|
||||||
- Lore: Nadir backups, Luma humming, no autoplay manners.
|
- Content: Aphy backups, Lima off-mic laughter, permission-respecting audio ethos.
|
||||||
|
|
||||||
### `/play/guestbook-1999.html`
|
### `/play/guestbook-1999.html`
|
||||||
|
|
||||||
- Trigger: search `guestbook 1999`.
|
- Trigger: invisible link or direct discovery.
|
||||||
- Tone: old-web funny/melancholy.
|
- Layer: 1.
|
||||||
- Lore: fake users are recurring ghosts of the old internet.
|
- Content: Aphy bot, Young Z username, Future Z, Lima note, Sensei Chi counter line.
|
||||||
|
|
||||||
### `/play/do-not-open.html`
|
### `/play/do-not-open.html`
|
||||||
|
|
||||||
- Trigger: search `do not open`.
|
- Trigger: search `do not open`.
|
||||||
- Tone: emotionally meaningful warning.
|
- Layer: 4/5.
|
||||||
- Lore: Etta wanted to be found carefully.
|
- Content: Future Z letter about feelings needing a door before becoming words.
|
||||||
|
|
||||||
### `/play/cassette-log.html`
|
### `/play/cassette-log.html`
|
||||||
|
|
||||||
- Trigger: search `cassette`.
|
- Trigger: search `voice note`.
|
||||||
- Tone: archive/audio.
|
- Layer: 2/4.
|
||||||
- Interaction: buttons reveal cassette transcript toasts and play original tones.
|
- Content: voice-note transcripts from Lima, Aphy, Young Z, and Future Z. User action only; no autoplay.
|
||||||
|
|
||||||
### `/play/train-platform.html`
|
### `/play/train-platform.html`
|
||||||
|
|
||||||
- Trigger: search `return ticket`.
|
- Trigger: search `time platform`.
|
||||||
- Tone: patient return.
|
- Layer: 4.
|
||||||
- Lore: platform 3, Morrow, destinations as feelings.
|
- Content: 2022, Oct 2025, age 7, age 40 as departures/arrivals.
|
||||||
|
|
||||||
### `/play/forgotten-draft.html`
|
### `/play/forgotten-draft.html`
|
||||||
|
|
||||||
- Trigger: search `unfinished letter`.
|
- Trigger: search `unfinished letter`.
|
||||||
- Tone: unsent vulnerability.
|
- Layer: 5.
|
||||||
- Lore: website as a way to recover rooms in pieces.
|
- Content: website as a way to recover rooms in pieces.
|
||||||
|
|
||||||
### `/play/corrupted-recipe.html`
|
### `/play/corrupted-recipe.html`
|
||||||
|
|
||||||
- Trigger: search `burnt sugar`.
|
- Trigger: search `burnt sugar`.
|
||||||
- Tone: funny family warmth.
|
- Layer: 2.
|
||||||
- Lore: recipe corrupted into folklore.
|
- Content: Lima says add patience; 2022 and Oct 2025 folded into a family recipe.
|
||||||
|
|
||||||
### `/play/terminal-cupboard.html`
|
### `/play/terminal-cupboard.html`
|
||||||
|
|
||||||
- Trigger: search `cupboard`.
|
- Trigger: search `cupboard`.
|
||||||
- Tone: hidden terminal, domestic mystery.
|
- Layer: 3.
|
||||||
- Commands: `help`, `listen`, `inventory`, `tea`, `open`, `remember`, `exit`.
|
- Commands: `help`, `lima`, `aphy`, `sensei`, `young`, `future`, `layer`, `tea`, `exit`.
|
||||||
|
|
||||||
### `/play/patience-game.html`
|
### `/play/patience-game.html`
|
||||||
|
|
||||||
- Trigger: search `patience`.
|
- Trigger: search `patience`.
|
||||||
- Tone: quiet game.
|
- Layer: 5.
|
||||||
- Interaction: wait. Text changes at 30, 90, and 180 seconds.
|
- Content: wait-based text changes at 30, 90, and 180 seconds.
|
||||||
|
|
||||||
## 6. Emotional Tone Categories
|
## 7. Dialogue Registry
|
||||||
|
|
||||||
- Comfort: Kitchen Light, night messages, visitor milestones, patience rewards.
|
- Aphy: I can predict the next click with 14% confidence. Sensei Chi: Then bow to the other 86%.
|
||||||
- Humor: biscuit tin, fake users, old-web jokes, fake errors.
|
- Lima: Did you eat before making the website mysterious? Aphy: Query unclear. Z likely forgot.
|
||||||
- Melancholy: Forgotten Draft, train platform, cassettes, old usernames.
|
- Young Z: Is Future Z tall? Future Z: Tall enough to reach the old worries. Short enough to still need help.
|
||||||
- Mystery: Dream Corridor, radio, cupboard, rare dreams.
|
- Aphy: I found a bug in sadness. Sensei Chi: Patch it with company, not logic.
|
||||||
- Familial warmth: corrupted recipe, Aunt Ma, Nadir, blue bowl.
|
- Lima: Leave this page kinder than you found it. Future Z: That instruction aged well.
|
||||||
- Meta/web: source relics, under construction takeover, cache warnings.
|
- 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.
|
||||||
|
- Future Z: Tell him the hard parts did not win. Lima: I have been telling him in smaller ways.
|
||||||
|
|
||||||
## 7. Page/Section Categories
|
## 8. Emotional Arcs
|
||||||
|
|
||||||
- Global: footer notes, toasts, hover whispers, keepsakes, weather window, source comments.
|
- Lima arc: from hidden note to emotional center. Her presence makes the website feel lived-in, not haunted.
|
||||||
- Homepage: greetings, rare old-web takeover, logo taps.
|
- Aphy arc: from joke bot to sincere companion. He learns not everything useful can be computed.
|
||||||
- Search/nav: keyword portals.
|
- Sensei Chi arc: from rare cryptic teacher to accepted quiet. He validates slow exploration.
|
||||||
- Play wing: secret rooms and tiny games.
|
- Young Z arc: from memory fragment to protected wonder. His innocence explains why the website needs softness.
|
||||||
- Comments: fake guestbook line when comments exist.
|
- Future Z arc: from rare warning to trustworthy long-term witness. He shows the visitor that time can return reassurance.
|
||||||
- Images/source: hidden alt text and source-code comment.
|
|
||||||
|
|
||||||
## 8. UI/UX Notes
|
## 9. UI/UX Behavior Notes
|
||||||
|
|
||||||
- Hidden UI stays low opacity until hovered/focused.
|
- Hidden elements stay low contrast until hovered/focused.
|
||||||
- No feature should obscure reading for long.
|
- Audio never autoplays.
|
||||||
- Audio requires explicit action.
|
- Weather location is requested only after explicit click.
|
||||||
- Weather requests require explicit click and have graceful fallback.
|
- Secret pages use `#+HIDDEN_PAGE: t`.
|
||||||
- Secret pages are buildable but marked `#+HIDDEN_PAGE: t` so they do not appear in index pages.
|
- No public checklist or completion meter.
|
||||||
- Rewards are intentionally non-competitive; no public checklist.
|
- The Family Layer Index shows local counts, not global achievements.
|
||||||
|
- Mystery should invite, not pressure.
|
||||||
|
|
||||||
## 9. Audio/Visual Suggestions
|
## 10. Audio and Visual Suggestions
|
||||||
|
|
||||||
- Add tiny original ambient loops only after explicit button press.
|
- Aphy: small sine-tone boot sounds, terminal cursor, old-web badge.
|
||||||
- Use cassette hiss, lamp hum, rain-on-window synthesis, and soft train-platform chimes.
|
- Lima: warm note cards, soft light, handwritten-feeling copy without fake handwriting fonts.
|
||||||
- Consider small generated bitmap textures: paper receipt, cassette label, pressed flower, old guestbook banner.
|
- Sensei Chi: spare layouts, tea cup symbol, slow reveals.
|
||||||
- Avoid horror stingers; even corrupted pages should be emotionally safe.
|
- Young Z: ASCII sun, crayon-like simple marks, playful but not childish UI.
|
||||||
|
- Future Z: timestamped memo styling, calm system warnings, aged-but-clean terminal text.
|
||||||
|
|
||||||
## 10. Long-Term Evolution
|
## 11. Long-Term Evolution
|
||||||
|
|
||||||
- Monthly train destination changes.
|
- October yearly engagement messages.
|
||||||
- Seasonal recipe variants.
|
- Future marriage milestone messages once the site owner wants to encode the date.
|
||||||
- Yearly visitor anniversary letters.
|
- Future Z messages unlock after month/year anniversaries.
|
||||||
- A slow Luma arc where the lamp becomes less shy after enough patient moments.
|
- Young Z drawings can rotate by season.
|
||||||
- Nettle's filing labels can become warmer over time.
|
- Aphy can develop from diagnostic jokes toward emotionally intelligent guidance.
|
||||||
- Morrow's return ticket can gain stamps after visits to secret rooms.
|
- Sensei Chi can appear after repeated patient sessions.
|
||||||
- Guestbook users can post new fake entries on real calendar dates.
|
- Lima notes can become a private emotional thread across safe-space pages.
|
||||||
|
|
||||||
## 11. Future Expansion Ideas
|
## 12. Implementation Notes
|
||||||
|
|
||||||
- Add a real local-only guestbook draft pad that stores messages in `localStorage`.
|
- Client-side hidden state lives in `localStorage` under `zxh_hidden_details_v2`.
|
||||||
- Add a hidden "attic" page unlocked after visiting all secret rooms.
|
- Old `zxh_hidden_details_v1` state migrates forward.
|
||||||
- Add generated cassette-label images for each log.
|
- `layerVisits` stores Family Layer Index encounters.
|
||||||
- Add a no-score cooking memory game using family recipe fragments.
|
- Static hidden rooms are Org pages in `play/`.
|
||||||
- Add an RSS-feed-only hidden note.
|
- Existing sitemap/recently-updated filters hide pages marked `#+HIDDEN_PAGE: t`.
|
||||||
- Add source-map comments or HTML comments with letter fragments.
|
- Keep systems dependency-free unless a feature truly needs a service.
|
||||||
- Add a "kindness route" where closing pages gently or waiting unlocks softer endings.
|
|
||||||
|
|
||||||
## 12. Maintaining Mystery
|
## 13. Maintenance Rules
|
||||||
|
|
||||||
- Do not explain all triggers in the public UI.
|
- Replace old character references immediately if found.
|
||||||
- Keep most secrets optional and small.
|
- Add new secrets to a Family Layer Index layer.
|
||||||
- Never punish users for missing content.
|
- Every hidden page should have an emotional reason, not just a puzzle reason.
|
||||||
- Use recurrence, not randomness alone: objects and characters should reappear with altered context.
|
- Prefer short toasts and longer hidden-room writing.
|
||||||
- Make clues emotionally legible, not puzzle-hostile.
|
- Keep Lima sincere, Aphy playful, Sensei Chi minimal, Young Z innocent, Future Z honest.
|
||||||
- Avoid completion language. The site is a place, not a checklist.
|
- Do not make rare events scary.
|
||||||
|
- Do not punish users for missing content.
|
||||||
## 13. Implementation Notes
|
|
||||||
|
|
||||||
- Current state is client-side only through `localStorage` key `zxh_hidden_details_v1`.
|
|
||||||
- Secret routes are static Org pages.
|
|
||||||
- `#+HIDDEN_PAGE: t` excludes pages from sitemap/recently-updated via `lisp/sitemaps.el` and `lisp/recently-updated.el`.
|
|
||||||
- Add backend later only if real guestbook/comment persistence is desired.
|
|
||||||
- Keep hidden scripts dependency-free.
|
|
||||||
|
|
||||||
## 14. Canon Rule
|
## 14. Canon Rule
|
||||||
|
|
||||||
The hidden soul should always imply: somebody lived here, somebody cared enough to label the drawer badly, and the visitor is welcome without needing to prove they found everything.
|
The hidden soul is not about solving the website. It is about returning to a place where love, memory, code, childhood, time, and patience have all learned to share the same room.
|
||||||
|
|
||||||
## 15. Second-Layer Text Registry
|
|
||||||
|
|
||||||
These are the newly added second-layer strings. The first-layer registry remains in `assets/scripts/hidden-details.js` as the original 102-detail foundation.
|
|
||||||
|
|
||||||
### Quotes
|
|
||||||
|
|
||||||
- The archive does not keep score. It keeps chairs.
|
|
||||||
- Some families pass down recipes. This one also passes down tabs left open for later.
|
|
||||||
- A page can be a room if enough people arrive softly.
|
|
||||||
- The oldest link on the site still expects a hand cursor.
|
|
||||||
- If a memory changes, it may be trying to fit through a smaller door.
|
|
||||||
- The guestbook is not empty. It is holding its breath between signatures.
|
|
||||||
- Every backup is a small superstition against forgetting.
|
|
||||||
- Somewhere in the CSS, a lamp is deciding whether to stay on.
|
|
||||||
- The radio under the stairs only plays songs it has already missed.
|
|
||||||
- A train can leave a station and still remain in the family story.
|
|
||||||
- Kindness is the only password the house accepts without checking case.
|
|
||||||
- The website learned your pace and stopped rushing the hallway.
|
|
||||||
- A draft is just a letter still gathering courage.
|
|
||||||
- The cursor is a visitor. The margin is a host.
|
|
||||||
- If you hover long enough, even a heading may remember being handwritten.
|
|
||||||
- The old forum banner says: welcome back, even if you are new.
|
|
||||||
- Not all broken pages need repair. Some need a name.
|
|
||||||
- The site keeps its mysteries low to the ground, where tired people can reach them.
|
|
||||||
- A year is a folder that keeps renaming itself.
|
|
||||||
- Some evenings are survived by the exact right mug.
|
|
||||||
|
|
||||||
### Poems
|
|
||||||
|
|
||||||
- A train in the rain / waits beside an empty platform / so memory can board.
|
|
||||||
- Grandma's radio / tuned between two stations / found us anyway.
|
|
||||||
- A flower pressed flat / still teaches the book / how spring once leaned.
|
|
||||||
- The lamp stayed awake / not because it was brave / but because someone might need it.
|
|
||||||
- Old usernames fade / but the welcome thread remains / warm at the top.
|
|
||||||
- I found a draft / with no ending / and felt less alone.
|
|
||||||
- The house at midnight / is mostly refrigerator hum / and unsent kindness.
|
|
||||||
- A calendar page / falls without bitterness / into tomorrow's hands.
|
|
||||||
- There is a road home / made entirely of small tabs / you meant to close.
|
|
||||||
- A cassette clicks / and the room becomes younger / for one more minute.
|
|
||||||
|
|
||||||
### Fake Conversations
|
|
||||||
|
|
||||||
- Nettle: The ticket drawer is humming again. Morrow: That is normal. It hums when someone is almost ready.
|
|
||||||
- Aunt Ma: Who put the screwdriver in the biscuit tin? Nadir: A person with vision and no labelling discipline.
|
|
||||||
- Morrow: The lamp keeps following the visitor. Etta: Good. Lamps should have hobbies.
|
|
||||||
- Old Guest 14: is this page still alive? Webmaster: yes, but quietly, please. the baby is asleep.
|
|
||||||
- Nettle: Filed under: feelings disguised as infrastructure. Morrow: Approved without changes.
|
|
||||||
- Luma: The radio said my name. Aunt Ma: Then say salaam back. Manners matter.
|
|
||||||
- Nadir: The server made soup noises. Etta: That means the deployment is nearly done.
|
|
||||||
- Morrow: I found a page that says do not open. Nettle: That usually means open gently.
|
|
||||||
|
|
||||||
### Journal Fragments
|
|
||||||
|
|
||||||
- Journal scrap, 2006: We changed the wallpaper and everyone pretended it was not emotional.
|
|
||||||
- Journal scrap, 2011: The old router blinked like it was trying to stay in the conversation.
|
|
||||||
- Journal scrap, 2018: I learned that homesickness can happen inside your own house.
|
|
||||||
- Journal scrap, 2024: Somebody laughed in the kitchen and the whole week became easier.
|
|
||||||
- Journal scrap, undated: The marigolds came back where nobody planted them.
|
|
||||||
- Journal scrap, undated: We kept the cracked mug because it knew too much.
|
|
||||||
- Journal scrap, winter: I saved a voicemail just to remember the background noise.
|
|
||||||
- Journal scrap, summer: The fan turned all afternoon and made the curtains look like boats.
|
|
||||||
|
|
||||||
### Comforting Warnings
|
|
||||||
|
|
||||||
- COMFORT WARNING: this page may contain traces of old carpet, warm rice, and unfinished errands.
|
|
||||||
- SOFT ERROR: the archive attempted to be impressive and became sincere instead.
|
|
||||||
- NOTICE: do not stack heavy feelings on the top shelf.
|
|
||||||
- LEGACY WARNING: this layout remembers 800x600 and asks you to be respectful.
|
|
||||||
- SYSTEM MESSAGE: no achievement unlocked. You were kind anyway.
|
|
||||||
- CACHE NOTE: the page kept a copy of the good part.
|
|
||||||
- RECOVERY MODE: make tea, rename file, try again.
|
|
||||||
- PERMISSION DENIED: the sadness may enter, but it must wipe its feet.
|
|
||||||
|
|
||||||
### Recurring Dreams
|
|
||||||
|
|
||||||
- Dream 01: a train full of empty mugs waited at a station called Later.
|
|
||||||
- Dream 02: the search box became a letterbox and returned every question with a family recipe.
|
|
||||||
- Dream 03: a radio under the stairs played tomorrow's weather in a grandparent's voice.
|
|
||||||
- Dream 04: the old homepage had a porch, and every link was a moth-wing-soft knock.
|
|
||||||
- Dream 05: someone had folded the sitemap into a paper flower and left it in a browser tab.
|
|
||||||
|
|
||||||
### Cassette Logs
|
|
||||||
|
|
||||||
- CASSETTE A / side 1: You can hear plates, rain, and someone saying, no, leave the light on.
|
|
||||||
- CASSETTE A / side 2: Three seconds of silence, then laughter too close to the microphone.
|
|
||||||
- CASSETTE B / side 1: Nadir explains backups to a child using rice grains and a spoon.
|
|
||||||
- CASSETTE C / side 2: A song with no words, hummed badly, loved completely.
|
|
||||||
- CASSETTE D / side ?: The tape label only says for when the house feels far away.
|
|
||||||
|
|
||||||
### Fake Users
|
|
||||||
|
|
||||||
- sunnydialup88: first!!!! but emotionally
|
|
||||||
- auntie-admin: please stop uploading files named newnewnewfinal
|
|
||||||
- railway_morrow: platform 3 smells like rain today
|
|
||||||
- nettle_mod: moved thread from Bugs to Feelings
|
|
||||||
- luma-lamp: does anyone else hear the margins singing
|
|
||||||
- guest_000: I signed this once and then grew up
|
|
||||||
|
|
||||||
### Rare Homepage Takeovers
|
|
||||||
|
|
||||||
- For one rare minute, the homepage believes it is an old family desktop.
|
|
||||||
- The dashboard has become a late-night noticeboard with one pin missing.
|
|
||||||
- The homepage found its old forum skin in a drawer and is trying it on.
|
|
||||||
|
|
||||||
### Seasonal Lines
|
|
||||||
|
|
||||||
- Winter: The archive put an extra blanket on the footer.
|
|
||||||
- Spring: A pressed flower appeared between two cached pages.
|
|
||||||
- Summer: The page opened a window and let the fan turn the silence.
|
|
||||||
- Autumn: The old links sound like leaves when the cursor passes.
|
|
||||||
|
|
||||||
### Secret Room Search Terms
|
|
||||||
|
|
||||||
- `radio under stairs` -> Radio Room.
|
|
||||||
- `guestbook 1999` -> Guestbook 1999.
|
|
||||||
- `do not open` -> Do Not Open.
|
|
||||||
- `cassette` -> Cassette Log.
|
|
||||||
- `return ticket` -> Train Platform.
|
|
||||||
- `unfinished letter` -> Forgotten Draft.
|
|
||||||
- `burnt sugar` -> Corrupted Recipe.
|
|
||||||
- `cupboard` -> Terminal Cupboard.
|
|
||||||
- `patience` -> Patience Game.
|
|
||||||
|
|
||||||
## 16. Maintenance Checklist
|
|
||||||
|
|
||||||
- When adding a new hidden page, include `#+HIDDEN_PAGE: t`.
|
|
||||||
- Add the route to the invisible link registry only if accidental discovery is acceptable.
|
|
||||||
- Add one lore connection, one emotional reason, and one non-obvious trigger.
|
|
||||||
- Keep text short in toasts; move longer writing into hidden rooms.
|
|
||||||
- Prefer local state and static pages. Add backend persistence only for explicitly public features.
|
|
||||||
- Rebuild with `emacs -Q --script build-site.el`.
|
|
||||||
- Verify secret pages build and do not appear in `sitemap.org` or `recently-updated.org`.
|
|
||||||
|
|||||||
488
docs/hidden-soul.md
Normal file
488
docs/hidden-soul.md
Normal file
@@ -0,0 +1,488 @@
|
|||||||
|
# Hidden Soul Bible
|
||||||
|
|
||||||
|
## 1. Creative Pillars
|
||||||
|
|
||||||
|
The hidden layer is a living family scrapbook for Z's website. It should feel handmade, emotionally grounded, quietly strange, and worth returning to over months. The system rewards curiosity, patience, and kindness without turning discovery into completionism.
|
||||||
|
|
||||||
|
The refactor replaces the previous fictional cast with five core characters:
|
||||||
|
|
||||||
|
- Lima: Z's wife in-world, met Z in 2022, engaged in Oct 2025, soon to be married. She is the emotional anchor, warmth, memory keeper, grounding presence, and the reason the mystery stays human.
|
||||||
|
- Aphy: a male virtual bot friend embedded in the website. He is a conversational guide with glitchy wisdom, playful diagnostics, old-web humor, and occasional philosophical accidents.
|
||||||
|
- Sensei Chi: an elderly wise sensei. He appears rarely after patient or curious behavior, offering short lessons, parables, and grounded cryptic guidance.
|
||||||
|
- Young Z: Z at age 7. He carries innocence, childhood wonder, drawings, games, blanket-cape logic, and memory fragments.
|
||||||
|
- Future Z: Z at age 40. He appears through rare warnings and future logs: calm, tired sometimes, wise, honest, and reassuring without pretending life becomes simple.
|
||||||
|
|
||||||
|
Tone requirements:
|
||||||
|
|
||||||
|
- Cozy family blog energy.
|
||||||
|
- Emotional realism.
|
||||||
|
- Gentle mystery, never horror.
|
||||||
|
- Nostalgic internet aesthetics.
|
||||||
|
- Subtle sadness mixed with warmth.
|
||||||
|
- Long-term emotional attachment.
|
||||||
|
|
||||||
|
## 2. Character System
|
||||||
|
|
||||||
|
### Lima
|
||||||
|
|
||||||
|
Role: emotional grounding and safe-space notes.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Loving, real, intimate, gently humorous.
|
||||||
|
- Practical care: eat, rest, leave the light on, do not perform.
|
||||||
|
- Connected to 2022, Oct 2025 engagement, soon-to-be-married future, ordinary daily warmth.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `lima` or `lima note`.
|
||||||
|
- Night messages.
|
||||||
|
- Weather window fallback.
|
||||||
|
- Visit milestones 2 and visitor anniversaries.
|
||||||
|
- Hidden safe pages such as `/play/lima-note.html` and `/play/kitchen-light.html`.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Lima prevents the hidden layer from becoming abstract lore. She grounds it in relationship, daily care, and the real emotional stakes of building a personal site.
|
||||||
|
|
||||||
|
### Aphy
|
||||||
|
|
||||||
|
Role: embedded bot friend, guide, diagnostic narrator.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Digital, curious, funny, slightly self-aware.
|
||||||
|
- Uses system language but lands on emotional truth.
|
||||||
|
- Not omniscient. Helpful with comic uncertainty.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `aphy` or `aphy console`.
|
||||||
|
- Corner object clicks.
|
||||||
|
- Old-web stamp.
|
||||||
|
- Source-code relic.
|
||||||
|
- Typed `aphy`.
|
||||||
|
- Aphy Console and terminal cupboard.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Aphy turns web mechanics into companionship. He is the bridge between code and feeling.
|
||||||
|
|
||||||
|
### Sensei Chi
|
||||||
|
|
||||||
|
Role: mentor, philosopher, rare guide.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Minimal, calm, profound, grounded.
|
||||||
|
- Speaks in short parables.
|
||||||
|
- Appears after curiosity, patience, and Layer 3 activity.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `sensei chi` or `sensei garden`.
|
||||||
|
- Rare page event.
|
||||||
|
- Typed `sensei`.
|
||||||
|
- Patience rewards.
|
||||||
|
- Terminal cupboard command `sensei`.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Sensei Chi gives meaning to waiting, restraint, and slow exploration.
|
||||||
|
|
||||||
|
### Young Z
|
||||||
|
|
||||||
|
Role: childhood memory and emotional contrast.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Innocent, playful, vivid.
|
||||||
|
- Connected to age 7, drawings, blanket capes, games, moon-following-car logic.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `young z`, `young z desk`, or `age 7`.
|
||||||
|
- Keepsake crayon object.
|
||||||
|
- Dream Corridor.
|
||||||
|
- Family Layer Index Layer 2.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Young Z preserves wonder and reminds visitors the site is partly a letter to the past.
|
||||||
|
|
||||||
|
### Future Z
|
||||||
|
|
||||||
|
Role: age-40 reflective future self.
|
||||||
|
|
||||||
|
Voice:
|
||||||
|
|
||||||
|
- Calm, honest, slightly tired, reassuring.
|
||||||
|
- Offers emotional advice as system warnings.
|
||||||
|
- Does not spoil outcomes; confirms that effort mattered.
|
||||||
|
|
||||||
|
Primary triggers:
|
||||||
|
|
||||||
|
- Search `future z`, `future log`, or `age 40`.
|
||||||
|
- Visit milestones 31 and 64.
|
||||||
|
- Rare Future Z system warnings.
|
||||||
|
- Time Platform.
|
||||||
|
- Do Not Open page.
|
||||||
|
|
||||||
|
Story function:
|
||||||
|
|
||||||
|
- Future Z is the long arc. He makes the website feel like it evolves through years, not sessions.
|
||||||
|
|
||||||
|
## 3. Cross-Character Relationships
|
||||||
|
|
||||||
|
- Lima ↔ Z: romantic grounding. Lima's notes make the hidden system sincere and relational. She represents the future being built with someone, not alone.
|
||||||
|
- Aphy ↔ Sensei Chi: logic versus wisdom. Aphy tries to compute meaning; Sensei Chi teaches patience, limits, and non-instrumental care.
|
||||||
|
- Young Z ↔ Future Z: memory versus outcome. Young Z asks naive questions; Future Z answers with lived tenderness.
|
||||||
|
- Aphy ↔ Young Z: curiosity versus innocence. Aphy explains systems; Young Z treats systems as games and magic.
|
||||||
|
- Sensei Chi ↔ Future Z: acceptance of time. Sensei Chi teaches how to wait; Future Z proves waiting changed something.
|
||||||
|
- Lima ↔ Aphy: Lima humanizes the system; Aphy protects the system's playful weirdness.
|
||||||
|
- Lima ↔ Future Z: Future Z confirms Lima's grounding presence remains important over time.
|
||||||
|
|
||||||
|
## 4. Family Layer Index
|
||||||
|
|
||||||
|
The Family Layer Index organizes all hidden content into emotional depth:
|
||||||
|
|
||||||
|
- Layer 0: surface website - normal notes, pages, tools, and navigation.
|
||||||
|
- Layer 1: casual hidden jokes - Aphy comments, old-web stamps, fake diagnostics, meta web humor.
|
||||||
|
- Layer 2: memory fragments - Lima notes, Young Z logs, childhood and relationship memory.
|
||||||
|
- Layer 3: philosophical anomalies - Aphy/Sensei Chi debates, rare Sensei appearances, terminal wisdom.
|
||||||
|
- Layer 4: time-distorted messages - Future Z warnings, age-40 logs, long-term usage milestones.
|
||||||
|
- Layer 5: deeply hidden emotional core - patience rewards, love, rest, safe-space messages, returning without performance.
|
||||||
|
|
||||||
|
Implementation:
|
||||||
|
|
||||||
|
- Local state key: `zxh_hidden_details_v2`.
|
||||||
|
- Legacy state migration from `zxh_hidden_details_v1`.
|
||||||
|
- Layer encounters are stored in `layerVisits`.
|
||||||
|
- Secret page `/play/family-layer-index.html` renders local layer counts.
|
||||||
|
- Search `family layer index` or type `layer index` to find it.
|
||||||
|
|
||||||
|
## 5. Implemented Global Features
|
||||||
|
|
||||||
|
### Footer Notes
|
||||||
|
|
||||||
|
- Trigger: every page load with a footer.
|
||||||
|
- Content: rotates through character-grounded hidden lines.
|
||||||
|
- Rarity: always present but muted.
|
||||||
|
- Character links: Lima warmth, Aphy diagnostics, Sensei Chi lessons, Young Z wonder, Future Z reflection.
|
||||||
|
|
||||||
|
### Homepage Greetings
|
||||||
|
|
||||||
|
- Trigger: homepage load.
|
||||||
|
- Content: randomized character-aware greeting.
|
||||||
|
- Rarity: always on homepage.
|
||||||
|
- Behavior: repeat visitors get "Aphy remembers the shape of your return. Lima makes it feel less strange."
|
||||||
|
|
||||||
|
### Hover Whispers
|
||||||
|
|
||||||
|
- Trigger: deterministic paragraph and heading hover/click inserts.
|
||||||
|
- Content: quotes and poems from the new character set.
|
||||||
|
- Rarity: some pages only.
|
||||||
|
- Layer: 1 or 2 depending on content.
|
||||||
|
|
||||||
|
### Corner Object
|
||||||
|
|
||||||
|
- Trigger: repeated clicks on the small fixed object.
|
||||||
|
- Sequence:
|
||||||
|
- Aphy notices tactile input.
|
||||||
|
- Young Z would press it again.
|
||||||
|
- Lima asks whether the button has eaten.
|
||||||
|
- Sensei Chi says repeated action becomes a question.
|
||||||
|
- Future Z files it under harmless persistence.
|
||||||
|
- Payoff: 7 clicks opens `/play/left-behind.html`.
|
||||||
|
|
||||||
|
### Family Keepsake Rail
|
||||||
|
|
||||||
|
- Trigger: click tiny bottom objects.
|
||||||
|
- Objects:
|
||||||
|
- Ring: Lima, Oct 2025.
|
||||||
|
- Bot: Aphy.
|
||||||
|
- Tea: Sensei Chi.
|
||||||
|
- Crayon: Young Z.
|
||||||
|
- Clock: Future Z.
|
||||||
|
- Payoff: after all are found, prompts search for `family layer index`.
|
||||||
|
|
||||||
|
### Weather Window
|
||||||
|
|
||||||
|
- Trigger: after 3 visits, click the subtle `window` button.
|
||||||
|
- Behavior: asks browser location only after explicit click; fetches Open-Meteo if available.
|
||||||
|
- Content:
|
||||||
|
- Aphy checks outside.
|
||||||
|
- Lima checks whether you need a jumper.
|
||||||
|
- Sensei Chi fallback: indoor weather is enough.
|
||||||
|
- Rarity: repeat visitors only.
|
||||||
|
|
||||||
|
### Visit Milestones
|
||||||
|
|
||||||
|
- Trigger: visit counts 2, 5, 9, 17, 31, 64.
|
||||||
|
- Content:
|
||||||
|
- 2: Lima notices the second visit.
|
||||||
|
- 5: Aphy creates a regulars folder and worries about privacy.
|
||||||
|
- 9: Sensei Chi logs curiosity as a path.
|
||||||
|
- 17: Young Z adds a sticker to the invisible visitor card.
|
||||||
|
- 31: Future Z says returning is one way to heal.
|
||||||
|
- 64: Layer 5 flickers.
|
||||||
|
|
||||||
|
### Page Revisit Memory
|
||||||
|
|
||||||
|
- Trigger: 3rd, 7th, and 12th visit to the same URL.
|
||||||
|
- Content: page recognizes return; Lima notes become easier to find; Future Z reframes repetition as devotion.
|
||||||
|
|
||||||
|
### Seasonal and Date Events
|
||||||
|
|
||||||
|
- Winter: Lima blanket; Aphy thermal optimization.
|
||||||
|
- Spring: Young Z promotes first flower to treasure.
|
||||||
|
- Summer: Aphy opens an imaginary window; Lima reminds it to save before storms.
|
||||||
|
- Autumn: Sensei Chi teaches falling leaves as timing.
|
||||||
|
- October: engagement memory glows all month.
|
||||||
|
- May 9: site birthday.
|
||||||
|
- Minute 22: 2022 layer glows.
|
||||||
|
- Minute 40: Future Z check-in.
|
||||||
|
|
||||||
|
### Night Messages
|
||||||
|
|
||||||
|
- Trigger: 22:00-04:59 local time.
|
||||||
|
- Content: Lima care, Aphy dimming imaginary server lights, Sensei Chi permission not to obey midnight, Young Z asleep in memory layer, Future Z reassurance.
|
||||||
|
|
||||||
|
### Search Secrets
|
||||||
|
|
||||||
|
- `lima` -> Lima warmth toast.
|
||||||
|
- `lima note` -> `/play/lima-note.html`.
|
||||||
|
- `aphy` -> Aphy presence toast.
|
||||||
|
- `aphy console` -> `/play/aphy-console.html`.
|
||||||
|
- `sensei chi` -> Sensei Chi toast.
|
||||||
|
- `sensei garden` -> `/play/sensei-garden.html`.
|
||||||
|
- `young z` -> Young Z toast.
|
||||||
|
- `young z desk` -> `/play/young-z-desk.html`.
|
||||||
|
- `future z` -> Future Z toast.
|
||||||
|
- `future log` -> `/play/future-log.html`.
|
||||||
|
- `family layer index` -> `/play/family-layer-index.html`.
|
||||||
|
- `2022` -> Lima beginning memory.
|
||||||
|
- `oct 2025` -> engagement memory.
|
||||||
|
- `age 7` -> Young Z memory.
|
||||||
|
- `age 40` -> Future Z reflection.
|
||||||
|
- `voice note` -> `/play/cassette-log.html`.
|
||||||
|
- `time platform` -> `/play/train-platform.html`.
|
||||||
|
- `do not open` -> `/play/do-not-open.html`.
|
||||||
|
- `unfinished letter` -> `/play/forgotten-draft.html`.
|
||||||
|
- `burnt sugar` -> `/play/corrupted-recipe.html`.
|
||||||
|
- `cupboard` -> `/play/terminal-cupboard.html`.
|
||||||
|
- `patience` -> `/play/patience-game.html`.
|
||||||
|
|
||||||
|
### Typed Phrase Secrets
|
||||||
|
|
||||||
|
- `remember`: Lima grounds memory; Aphy backs it up.
|
||||||
|
- `dream`: opens Dream Corridor.
|
||||||
|
- `layer index`: opens Family Layer Index.
|
||||||
|
- `leave the light on`: opens Kitchen Light.
|
||||||
|
- `oldweb`: Aphy jokes about table layouts.
|
||||||
|
- `lima`: Lima note toast.
|
||||||
|
- `sensei`: Sensei Chi toast.
|
||||||
|
- `young z`: Young Z margin drawing.
|
||||||
|
- `future z`: Future Z compounding gentleness.
|
||||||
|
- `aphy`: plays tiny original tone sequence.
|
||||||
|
|
||||||
|
### Rare Events
|
||||||
|
|
||||||
|
- Sensei Chi rare appearance: 0.3%.
|
||||||
|
- Future Z system warning: 0.5% after Sensei roll.
|
||||||
|
- Homepage old-web takeover: 0.6% on homepage.
|
||||||
|
- Voice note permission event: 0.2%.
|
||||||
|
- Recurring dream: 0.4%.
|
||||||
|
- Cryptic warning: 0.8%.
|
||||||
|
|
||||||
|
### Patience Rewards
|
||||||
|
|
||||||
|
- Trigger: 90 seconds of inactivity after repeat visits.
|
||||||
|
- Layer: 5.
|
||||||
|
- Content: Lima safe space, Sensei Chi patience, Future Z saying quiet was practice.
|
||||||
|
- Rule: no visible achievement badge.
|
||||||
|
|
||||||
|
### Source Relics
|
||||||
|
|
||||||
|
- Adds HTML comment: `family-layer-index: 0 surface | 1 jokes | 2 memory | 3 philosophy | 4 time | 5 core`.
|
||||||
|
- Fills blank image alt text with Lima, Young Z, or Aphy scrapbook-style descriptions.
|
||||||
|
|
||||||
|
## 6. Secret Pages
|
||||||
|
|
||||||
|
### `/play/lima-note.html`
|
||||||
|
|
||||||
|
- Trigger: search `lima note`.
|
||||||
|
- Layer: 2.
|
||||||
|
- Content: 2022 beginning, Oct 2025 engagement, soon-to-be-married warmth, reminder to eat before turning feelings into features.
|
||||||
|
|
||||||
|
### `/play/aphy-console.html`
|
||||||
|
|
||||||
|
- Trigger: search `aphy console`.
|
||||||
|
- Layer: 3.
|
||||||
|
- Content: Aphy boot log, self-aware guide language, kindness in null places.
|
||||||
|
|
||||||
|
### `/play/sensei-garden.html`
|
||||||
|
|
||||||
|
- Trigger: search `sensei garden`.
|
||||||
|
- Layer: 3.
|
||||||
|
- Content: parable about seeds, patience, and Aphy asking whether patience can be optimized.
|
||||||
|
|
||||||
|
### `/play/young-z-desk.html`
|
||||||
|
|
||||||
|
- Trigger: search `young z desk`.
|
||||||
|
- Layer: 2.
|
||||||
|
- Content: age-7 memory list, blanket cape, games, moon following car, ASCII sun.
|
||||||
|
|
||||||
|
### `/play/future-log.html`
|
||||||
|
|
||||||
|
- Trigger: search `future log`.
|
||||||
|
- Layer: 4.
|
||||||
|
- Content: age-40 logs about worry, Lima's laugh, and not deleting gentle parts.
|
||||||
|
|
||||||
|
### `/play/family-layer-index.html`
|
||||||
|
|
||||||
|
- Trigger: search `family layer index`, type `layer index`, or complete keepsake rail.
|
||||||
|
- Layer: meta index.
|
||||||
|
- Content: local layer counts and descriptions.
|
||||||
|
|
||||||
|
### `/play/left-behind.html`
|
||||||
|
|
||||||
|
- Trigger: seven corner-object clicks.
|
||||||
|
- Layer: 2.
|
||||||
|
- Content: Lima receipt note: met in 2022, engaged Oct 2025, soon married; keep ordinary days safe.
|
||||||
|
|
||||||
|
### `/play/dream-corridor.html`
|
||||||
|
|
||||||
|
- Trigger: logo taps or typed `dream`.
|
||||||
|
- Layer: 3.
|
||||||
|
- Content: Young Z door, Aphy dream log, Future Z waiting, Sensei Chi margin note.
|
||||||
|
|
||||||
|
### `/play/kitchen-light.html`
|
||||||
|
|
||||||
|
- Trigger: search `kitchen light` or type `leave the light on`.
|
||||||
|
- Layer: 5.
|
||||||
|
- Content: late note, food, warmth, no questions.
|
||||||
|
|
||||||
|
### `/play/radio-room.html`
|
||||||
|
|
||||||
|
- Trigger: invisible link or direct discovery.
|
||||||
|
- Layer: 2/3.
|
||||||
|
- Content: Aphy backups, Lima off-mic laughter, permission-respecting audio ethos.
|
||||||
|
|
||||||
|
### `/play/guestbook-1999.html`
|
||||||
|
|
||||||
|
- Trigger: invisible link or direct discovery.
|
||||||
|
- Layer: 1.
|
||||||
|
- Content: Aphy bot, Young Z username, Future Z, Lima note, Sensei Chi counter line.
|
||||||
|
|
||||||
|
### `/play/do-not-open.html`
|
||||||
|
|
||||||
|
- Trigger: search `do not open`.
|
||||||
|
- Layer: 4/5.
|
||||||
|
- Content: Future Z letter about feelings needing a door before becoming words.
|
||||||
|
|
||||||
|
### `/play/cassette-log.html`
|
||||||
|
|
||||||
|
- Trigger: search `voice note`.
|
||||||
|
- Layer: 2/4.
|
||||||
|
- Content: voice-note transcripts from Lima, Aphy, Young Z, and Future Z. User action only; no autoplay.
|
||||||
|
|
||||||
|
### `/play/train-platform.html`
|
||||||
|
|
||||||
|
- Trigger: search `time platform`.
|
||||||
|
- Layer: 4.
|
||||||
|
- Content: 2022, Oct 2025, age 7, age 40 as departures/arrivals.
|
||||||
|
|
||||||
|
### `/play/forgotten-draft.html`
|
||||||
|
|
||||||
|
- Trigger: search `unfinished letter`.
|
||||||
|
- Layer: 5.
|
||||||
|
- Content: website as a way to recover rooms in pieces.
|
||||||
|
|
||||||
|
### `/play/corrupted-recipe.html`
|
||||||
|
|
||||||
|
- Trigger: search `burnt sugar`.
|
||||||
|
- Layer: 2.
|
||||||
|
- Content: Lima says add patience; 2022 and Oct 2025 folded into a family recipe.
|
||||||
|
|
||||||
|
### `/play/terminal-cupboard.html`
|
||||||
|
|
||||||
|
- Trigger: search `cupboard`.
|
||||||
|
- Layer: 3.
|
||||||
|
- Commands: `help`, `lima`, `aphy`, `sensei`, `young`, `future`, `layer`, `tea`, `exit`.
|
||||||
|
|
||||||
|
### `/play/patience-game.html`
|
||||||
|
|
||||||
|
- Trigger: search `patience`.
|
||||||
|
- Layer: 5.
|
||||||
|
- Content: wait-based text changes at 30, 90, and 180 seconds.
|
||||||
|
|
||||||
|
## 7. Dialogue Registry
|
||||||
|
|
||||||
|
- 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.
|
||||||
|
- 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.
|
||||||
|
- 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.
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
## 8. Emotional Arcs
|
||||||
|
|
||||||
|
- Lima arc: from hidden note to emotional center. Her presence makes the website feel lived-in, not haunted.
|
||||||
|
- Aphy arc: from joke bot to sincere companion. He learns not everything useful can be computed.
|
||||||
|
- Sensei Chi arc: from rare cryptic teacher to accepted quiet. He validates slow exploration.
|
||||||
|
- Young Z arc: from memory fragment to protected wonder. His innocence explains why the website needs softness.
|
||||||
|
- Future Z arc: from rare warning to trustworthy long-term witness. He shows the visitor that time can return reassurance.
|
||||||
|
|
||||||
|
## 9. UI/UX Behavior Notes
|
||||||
|
|
||||||
|
- Hidden elements stay low contrast until hovered/focused.
|
||||||
|
- Audio never autoplays.
|
||||||
|
- Weather location is requested only after explicit click.
|
||||||
|
- Secret pages use `#+HIDDEN_PAGE: t`.
|
||||||
|
- No public checklist or completion meter.
|
||||||
|
- The Family Layer Index shows local counts, not global achievements.
|
||||||
|
- Mystery should invite, not pressure.
|
||||||
|
|
||||||
|
## 10. Audio and Visual Suggestions
|
||||||
|
|
||||||
|
- Aphy: small sine-tone boot sounds, terminal cursor, old-web badge.
|
||||||
|
- Lima: warm note cards, soft light, handwritten-feeling copy without fake handwriting fonts.
|
||||||
|
- Sensei Chi: spare layouts, tea cup symbol, slow reveals.
|
||||||
|
- Young Z: ASCII sun, crayon-like simple marks, playful but not childish UI.
|
||||||
|
- Future Z: timestamped memo styling, calm system warnings, aged-but-clean terminal text.
|
||||||
|
|
||||||
|
## 11. Long-Term Evolution
|
||||||
|
|
||||||
|
- October yearly engagement messages.
|
||||||
|
- Future marriage milestone messages once the site owner wants to encode the date.
|
||||||
|
- Future Z messages unlock after month/year anniversaries.
|
||||||
|
- Young Z drawings can rotate by season.
|
||||||
|
- Aphy can develop from diagnostic jokes toward emotionally intelligent guidance.
|
||||||
|
- Sensei Chi can appear after repeated patient sessions.
|
||||||
|
- Lima notes can become a private emotional thread across safe-space pages.
|
||||||
|
|
||||||
|
## 12. Implementation Notes
|
||||||
|
|
||||||
|
- Client-side hidden state lives in `localStorage` under `zxh_hidden_details_v2`.
|
||||||
|
- Old `zxh_hidden_details_v1` state migrates forward.
|
||||||
|
- `layerVisits` stores Family Layer Index encounters.
|
||||||
|
- Static hidden rooms are Org pages in `play/`.
|
||||||
|
- Existing sitemap/recently-updated filters hide pages marked `#+HIDDEN_PAGE: t`.
|
||||||
|
- Keep systems dependency-free unless a feature truly needs a service.
|
||||||
|
|
||||||
|
## 13. Maintenance Rules
|
||||||
|
|
||||||
|
- Replace old character references immediately if found.
|
||||||
|
- Add new secrets to a Family Layer Index layer.
|
||||||
|
- Every hidden page should have an emotional reason, not just a puzzle reason.
|
||||||
|
- Prefer short toasts and longer hidden-room writing.
|
||||||
|
- Keep Lima sincere, Aphy playful, Sensei Chi minimal, Young Z innocent, Future Z honest.
|
||||||
|
- Do not make rare events scary.
|
||||||
|
- Do not punish users for missing content.
|
||||||
|
|
||||||
|
## 14. Canon Rule
|
||||||
|
|
||||||
|
The hidden soul is not about solving the website. It is about returning to a place where love, memory, code, childhood, time, and patience have all learned to share the same room.
|
||||||
24
play/aphy-console.org
Normal file
24
play/aphy-console.org
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#+TITLE: Aphy Console
|
||||||
|
#+OPTIONS: num:nil title:nil toc:nil
|
||||||
|
#+NO_SIDENOTES: t
|
||||||
|
#+HIDDEN_PAGE: t
|
||||||
|
#+DATE: <2026-05-10 Sun>
|
||||||
|
|
||||||
|
#+BEGIN_EXPORT html
|
||||||
|
<main class="play-root">
|
||||||
|
<section class="play-hero">
|
||||||
|
<div>
|
||||||
|
<p class="play-kicker">Layer 3</p>
|
||||||
|
<h1>Aphy Console</h1>
|
||||||
|
<p class="play-lede">A friendly bot friend embedded in the handmade parts.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="play-console hidden-terminal">
|
||||||
|
<div class="play-console__screen">
|
||||||
|
<p>APHY BOOT: hello. I am not the soul of the website. I am more like a porch light with opinions.</p>
|
||||||
|
<p>LOG: Lima grounds the system. Sensei Chi slows it down. Young Z asks why. Future Z answers later.</p>
|
||||||
|
<p>ANOMALY: I keep finding kindness in places where code expected null.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
#+END_EXPORT
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
<p>1 onion, finely remembered</p>
|
<p>1 onion, finely remembered</p>
|
||||||
<p>2 cups rice, or enough for whoever says they are not hungry</p>
|
<p>2 cups rice, or enough for whoever says they are not hungry</p>
|
||||||
<p>burnt sugar until the kitchen smells like almost</p>
|
<p>burnt sugar until the kitchen smells like almost</p>
|
||||||
<p>[DATA LOST] but Aunt Ma says add patience here</p>
|
<p>[DATA LOST] but Lima says add patience here</p>
|
||||||
<p>Serve with the story about the train, but skip the sad part unless someone asks.</p>
|
<p>Serve with the story about 2022, but leave room for Oct 2025 to glow.</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
<section class="play-console">
|
<section class="play-console">
|
||||||
<div class="play-console__screen">
|
<div class="play-console__screen">
|
||||||
<p>Dear whoever needed a door,</p>
|
<p>Dear whoever needed a door,</p>
|
||||||
<p>I wrote "do not open" because I was embarrassed by how much I wanted to be found.</p>
|
<p>I wrote "do not open" because some feelings need a door before they can become words.</p>
|
||||||
<p>If you are here, please take the small ordinary blessing: may the next room be kinder than the last one.</p>
|
<p>If you are here, take this small ordinary blessing: may love make the next room easier to enter.</p>
|
||||||
<p>- Etta</p>
|
<p>- Future Z, age 40</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -18,10 +18,10 @@
|
|||||||
<div class="play-console__screen">
|
<div class="play-console__screen">
|
||||||
<p class="play-console__eyebrow">Dream log</p>
|
<p class="play-console__eyebrow">Dream log</p>
|
||||||
<h2>Three doors</h2>
|
<h2>Three doors</h2>
|
||||||
<p>Door one contains the sound of the old family computer starting up.</p>
|
<p>Door one contains Young Z drawing a sun too large for the paper.</p>
|
||||||
<p>Door two contains a winter coat with bus tickets in every pocket.</p>
|
<p>Door two contains Aphy trying to explain a dream using system logs.</p>
|
||||||
<p>Door three is not locked. It is just shy.</p>
|
<p>Door three contains Future Z at age 40, waiting without rushing you.</p>
|
||||||
<p>Nettle has written in the margin: "If you wake up before the end, that still counts as leaving safely."</p>
|
<p>Sensei Chi has written in the margin: "If you wake before the lesson, keep the calm."</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
25
play/family-layer-index.org
Normal file
25
play/family-layer-index.org
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#+TITLE: Family Layer Index
|
||||||
|
#+OPTIONS: num:nil title:nil toc:nil
|
||||||
|
#+NO_SIDENOTES: t
|
||||||
|
#+HIDDEN_PAGE: t
|
||||||
|
#+DATE: <2026-05-10 Sun>
|
||||||
|
|
||||||
|
#+BEGIN_EXPORT html
|
||||||
|
<main class="play-root">
|
||||||
|
<section class="play-hero">
|
||||||
|
<div>
|
||||||
|
<p class="play-kicker">Layer map</p>
|
||||||
|
<h1>Family Layer Index</h1>
|
||||||
|
<p class="play-lede">A quiet index of how deep the hidden system has let itself become.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="play-console">
|
||||||
|
<div class="play-console__screen">
|
||||||
|
<ol data-family-layer-index>
|
||||||
|
<li>Loading local layer memory...</li>
|
||||||
|
</ol>
|
||||||
|
<p>The index is local to this browser. It remembers patterns, not identity.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
#+END_EXPORT
|
||||||
24
play/future-log.org
Normal file
24
play/future-log.org
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#+TITLE: Future Log
|
||||||
|
#+OPTIONS: num:nil title:nil toc:nil
|
||||||
|
#+NO_SIDENOTES: t
|
||||||
|
#+HIDDEN_PAGE: t
|
||||||
|
#+DATE: <2026-05-10 Sun>
|
||||||
|
|
||||||
|
#+BEGIN_EXPORT html
|
||||||
|
<main class="play-root">
|
||||||
|
<section class="play-hero">
|
||||||
|
<div>
|
||||||
|
<p class="play-kicker">Layer 4</p>
|
||||||
|
<h1>Future Log</h1>
|
||||||
|
<p class="play-lede">Messages from Z at 40. Reassuring, honest, not omniscient.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="play-console">
|
||||||
|
<div class="play-console__screen">
|
||||||
|
<p>Age 40 log: You still worry. You also recover faster.</p>
|
||||||
|
<p>Age 40 log: Lima's laugh remains one of the most reliable forms of weather.</p>
|
||||||
|
<p>Age 40 log: Do not delete the gentle parts to look more serious.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
#+END_EXPORT
|
||||||
@@ -15,11 +15,11 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="play-console">
|
<section class="play-console">
|
||||||
<div class="play-console__screen">
|
<div class="play-console__screen">
|
||||||
<p><strong>sunnydialup88:</strong> first!!!! but emotionally</p>
|
<p><strong>aphy_bot:</strong> first comment generated with sincere uncertainty</p>
|
||||||
<p><strong>auntie-admin:</strong> stop making the background tiled unless you mean it.</p>
|
<p><strong>young-z-2009:</strong> does this guestbook have games</p>
|
||||||
<p><strong>guest_000:</strong> I was here once, then became older, then came back.</p>
|
<p><strong>future_z_40:</strong> keep the backup, delete the shame</p>
|
||||||
<p><strong>nettle_mod:</strong> thread moved from Bugs to Feelings.</p>
|
<p><strong>lima-note:</strong> proud of you, even here</p>
|
||||||
<p><strong>webmaster:</strong> if the counter breaks, count kindness manually.</p>
|
<p><strong>sensei_chi:</strong> the counter counts only what can be counted</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -17,14 +17,14 @@
|
|||||||
<section class="play-console">
|
<section class="play-console">
|
||||||
<div class="play-console__screen">
|
<div class="play-console__screen">
|
||||||
<p class="play-console__eyebrow">Family note</p>
|
<p class="play-console__eyebrow">Family note</p>
|
||||||
<h2>The blue bowl</h2>
|
<h2>The small receipt</h2>
|
||||||
<p>I left the small blue bowl on the counter because it still smells faintly of coriander and Sunday. If anyone asks, it was never lost. It was waiting for someone to remember soup.</p>
|
<p>Lima left a folded receipt on the counter. Not because it mattered, exactly, but because small ordinary things become evidence that a day happened.</p>
|
||||||
<p>Under the bowl is a folded receipt. On the back, in pencil: "Morrow came by at 2:13. He said the hallway was kinder than last year."</p>
|
<p>On the back, in pencil: "Met in 2022. Engaged in Oct 2025. Soon, inshaAllah, married. Keep the ordinary days safe too."</p>
|
||||||
<pre aria-label="Tiny ASCII bowl">
|
<pre aria-label="Tiny ASCII bowl">
|
||||||
____
|
____
|
||||||
/ \
|
/ \
|
||||||
/______\
|
/______\
|
||||||
soup
|
2025
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
24
play/lima-note.org
Normal file
24
play/lima-note.org
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#+TITLE: Lima Note
|
||||||
|
#+OPTIONS: num:nil title:nil toc:nil
|
||||||
|
#+NO_SIDENOTES: t
|
||||||
|
#+HIDDEN_PAGE: t
|
||||||
|
#+DATE: <2026-05-10 Sun>
|
||||||
|
|
||||||
|
#+BEGIN_EXPORT html
|
||||||
|
<main class="play-root">
|
||||||
|
<section class="play-hero">
|
||||||
|
<div>
|
||||||
|
<p class="play-kicker">Layer 2</p>
|
||||||
|
<h1>Lima Note</h1>
|
||||||
|
<p class="play-lede">A safe-space note from the emotional anchor of the archive.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="play-console">
|
||||||
|
<div class="play-console__screen">
|
||||||
|
<p>Met Z in 2022. Engaged in Oct 2025. Soon to be married.</p>
|
||||||
|
<p>The website can be strange, but let it stay kind. Let the hidden things feel like someone folded a blanket at the end of the day.</p>
|
||||||
|
<p>Reminder: eat before turning feelings into features.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
#+END_EXPORT
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
<p class="play-console__eyebrow">Tuning log</p>
|
<p class="play-console__eyebrow">Tuning log</p>
|
||||||
<h2>Between stations</h2>
|
<h2>Between stations</h2>
|
||||||
<p>89.1: rain on the kitchen roof.</p>
|
<p>89.1: rain on the kitchen roof.</p>
|
||||||
<p>91.4: Nadir saying backups are just promises with timestamps.</p>
|
<p>91.4: Aphy explaining that backups are promises with timestamps.</p>
|
||||||
<p>99.9: Luma humming an original song about lamps, trains, and coming back slowly.</p>
|
<p>99.9: Lima laughing off-mic, and Z forgetting what he was worried about.</p>
|
||||||
<p>The dial is warm. It does not play automatically because even ghosts should ask permission.</p>
|
<p>The dial is warm. It does not play automatically because even hidden pages should ask permission.</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<header class="play-page-head">
|
<header class="play-page-head">
|
||||||
<p class="play-kicker">11 / Role Playing Game</p>
|
<p class="play-kicker">11 / Role Playing Game</p>
|
||||||
<h1>Ash Below the Lake</h1>
|
<h1>Ash Below the Lake</h1>
|
||||||
<p>A 2D story RPG set in Morrow's End: a town beside a black lake that remembers names, grief, and everyone the world tries to forget.</p>
|
<p>A 2D story RPG set beside a black lake that remembers names, grief, and everyone the world tries to forget.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="play-tool rpg-shell ash-rpg-shell" aria-label="Ash Below the Lake game">
|
<section class="play-tool rpg-shell ash-rpg-shell" aria-label="Ash Below the Lake game">
|
||||||
|
|||||||
25
play/sensei-garden.org
Normal file
25
play/sensei-garden.org
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#+TITLE: Sensei Garden
|
||||||
|
#+OPTIONS: num:nil title:nil toc:nil
|
||||||
|
#+NO_SIDENOTES: t
|
||||||
|
#+HIDDEN_PAGE: t
|
||||||
|
#+DATE: <2026-05-10 Sun>
|
||||||
|
|
||||||
|
#+BEGIN_EXPORT html
|
||||||
|
<main class="play-root">
|
||||||
|
<section class="play-hero">
|
||||||
|
<div>
|
||||||
|
<p class="play-kicker">Layer 3</p>
|
||||||
|
<h1>Sensei Garden</h1>
|
||||||
|
<p class="play-lede">A quiet page that answers after you stop asking so loudly.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="play-console">
|
||||||
|
<div class="play-console__screen">
|
||||||
|
<p>Sensei Chi says:</p>
|
||||||
|
<p>The seed does not hurry because the calendar is watching.</p>
|
||||||
|
<p>Aphy asks whether patience can be optimized.</p>
|
||||||
|
<p>Sensei Chi smiles. "Only by becoming unnecessary."</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
#+END_EXPORT
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="play-console hidden-terminal">
|
<section class="play-console hidden-terminal">
|
||||||
<div class="play-console__screen">
|
<div class="play-console__screen">
|
||||||
<div class="hidden-terminal-log" data-cupboard-log><p>cupboard v0.9. Type help.</p></div>
|
<div class="hidden-terminal-log" data-cupboard-log><p>family-layer cupboard v2.0. Type help.</p></div>
|
||||||
<input data-cupboard-input type="text" autocomplete="off" spellcheck="false" aria-label="Cupboard command" />
|
<input data-cupboard-input type="text" autocomplete="off" spellcheck="false" aria-label="Cupboard command" />
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#+TITLE: Train Platform
|
#+TITLE: Time Platform
|
||||||
#+OPTIONS: num:nil title:nil toc:nil
|
#+OPTIONS: num:nil title:nil toc:nil
|
||||||
#+NO_SIDENOTES: t
|
#+NO_SIDENOTES: t
|
||||||
#+HIDDEN_PAGE: t
|
#+HIDDEN_PAGE: t
|
||||||
@@ -8,17 +8,17 @@
|
|||||||
<main class="play-root">
|
<main class="play-root">
|
||||||
<section class="play-hero">
|
<section class="play-hero">
|
||||||
<div>
|
<div>
|
||||||
<p class="play-kicker">Platform 3</p>
|
<p class="play-kicker">Layer 4</p>
|
||||||
<h1>Train Platform</h1>
|
<h1>Time Platform</h1>
|
||||||
<p class="play-lede">The departure board changes every month, but every destination is a feeling.</p>
|
<p class="play-lede">The departure board changes by year, but every destination is still Z.</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section class="play-console">
|
<section class="play-console">
|
||||||
<div class="play-console__screen">
|
<div class="play-console__screen">
|
||||||
<p>23:13 - Later - delayed by tenderness</p>
|
<p>2022 - Beginning - arrived quietly</p>
|
||||||
<p>00:04 - Home - expected when ready</p>
|
<p>Oct 2025 - Engagement - boarding with light</p>
|
||||||
<p>06:30 - The Long Way - boarding quietly</p>
|
<p>Age 7 - Wonder - running on platform chalk</p>
|
||||||
<p>Morrow is on the bench with a return ticket he refuses to explain.</p>
|
<p>Age 40 - Return - Future Z is on the bench, saving you a seat.</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
30
play/young-z-desk.org
Normal file
30
play/young-z-desk.org
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#+TITLE: Young Z Desk
|
||||||
|
#+OPTIONS: num:nil title:nil toc:nil
|
||||||
|
#+NO_SIDENOTES: t
|
||||||
|
#+HIDDEN_PAGE: t
|
||||||
|
#+DATE: <2026-05-10 Sun>
|
||||||
|
|
||||||
|
#+BEGIN_EXPORT html
|
||||||
|
<main class="play-root">
|
||||||
|
<section class="play-hero">
|
||||||
|
<div>
|
||||||
|
<p class="play-kicker">Layer 2</p>
|
||||||
|
<h1>Young Z Desk</h1>
|
||||||
|
<p class="play-lede">A memory fragment from age 7, preserved without correcting the spelling.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="play-console">
|
||||||
|
<div class="play-console__screen">
|
||||||
|
<p>Things Young Z considers important:</p>
|
||||||
|
<p>1. A blanket can be a cape.</p>
|
||||||
|
<p>2. Computers are friend-shaped if they have games.</p>
|
||||||
|
<p>3. The moon follows the car because it likes us.</p>
|
||||||
|
<pre>
|
||||||
|
\ | /
|
||||||
|
.-*-.
|
||||||
|
/ | \ sun for later
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
#+END_EXPORT
|
||||||
Reference in New Issue
Block a user