major character changes
All checks were successful
Build Org Website / build (push) Successful in 51s

This commit is contained in:
2026-05-10 00:25:36 +01:00
parent 3531636805
commit c67501e446
18 changed files with 1404 additions and 678 deletions

View File

@@ -2,443 +2,487 @@
## 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.
- Funny and self-aware: fake system warnings, old-web jokes, suspicious biscuit tins, web development folklore.
- Reflective melancholy: unfinished letters, old usernames, returning to changed rooms.
- Gentle mystery: Morrow, Nettle, Luma, Etta, Aunt Ma, Nadir, the radio, the train platform.
- Internet nostalgia: guestbooks, counters, dial-up usernames, under construction language, source-code relics.
- 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.
## 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.
- Nettle: the archivist/moderator figure. Files impossible feelings under practical labels. Carries a clipboard and treats emotional continuity as infrastructure.
- Luma: a lamp-associated presence who hums original tiny songs and notices margins. Luma represents small courage.
- Etta: writer of the "Do Not Open" letter. Represents vulnerability hidden behind instructions and labels.
- Aunt Ma: warm, funny, practical family presence. Connected to recipes, suspicious biscuit tins, and household wisdom.
- Nadir: backup-minded family historian. Explains technical care through domestic metaphors.
- Old Guest 14 / guest_000 / sunnydialup88: old-web guestbook presences who blur past visitors, usernames, and memory.
- Cozy family blog energy.
- Emotional realism.
- Gentle mystery, never horror.
- Nostalgic internet aesthetics.
- Subtle sadness mixed with warmth.
- Long-term emotional attachment.
## 3. Symbolic Objects
## 2. Character System
- Lamp: patience, late-night comfort, permission to rest.
- 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.
### Lima
## 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
- Trigger: every page load with a footer.
- Content: rotates through 102 first-layer messages plus new second-layer continuity.
- Frequency: always visible but subtle.
- Lore: the footer is the house threshold.
- UX: muted centered text; should feel like a small afterthought.
- 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 greeting; repeat visitors receive memory-aware copy.
- Frequency: always on homepage.
- Lore: the site recognizes returning visitors locally through `localStorage`.
- 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: some paragraphs and headings gain tiny hover/click notes.
- Content: short poems, quotes, and second-layer hidden memories.
- Frequency: deterministic per page; not every paragraph.
- UX: dotted question marks and heading hover captions.
- 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: click the small fixed corner symbol.
- Sequence: five escalating messages, then seven clicks opens `/play/left-behind.html`.
- Lore: a loose panel in the page.
- 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`.
### Keepsake Constellation
### Family Keepsake Rail
- Trigger: click the five tiny bottom keepsakes: lamp, mug, ticket, radio, flower.
- Payoff: after all are clicked, the site suggests searching `radio under stairs`.
- Frequency: always present, low opacity.
- Lore: collecting ordinary objects aligns the hidden family memory.
- 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 at least three visits, a subtle `window` button appears. User click requests browser location.
- Content: weather-aware line through Open-Meteo if permission/network works; indoor-weather fallback otherwise.
- Frequency: repeat visitors only.
- UX: no automatic permission prompt.
- 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: progressively warmer messages about being remembered.
- Lore: the site stores visits locally, not identities.
- 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 path.
- Content: page-specific return messages.
- Lore: individual rooms recognize repeated footsteps.
- 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 Content
### Seasonal and Date Events
- Trigger: low-probability seasonal toast on page load.
- Content: winter blanket, spring pressed flower, summer fan/window, autumn leaf-links.
- Frequency: 18% chance.
### Date Events
- Site birthday: May 9. Message about imaginary candles.
- Visitor anniversary: same month/day as first stored visit.
- Minute thirteen: radio throat-clearing message.
- 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 browser time.
- Content: gentle late-night comfort.
- Visual: soft bottom glow.
- 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
- `morrow`: lantern/lake/apology.
- `nettle`: clipboard/cupboard/semicolon.
- `home`: warm window/spare key.
- `kitchen light`: opens `/play/kitchen-light.html`.
- `radio under stairs`: opens `/play/radio-room.html`.
- `guestbook 1999`: opens `/play/guestbook-1999.html`.
- `do not open`: opens `/play/do-not-open.html`.
- `cassette`: opens `/play/cassette-log.html`.
- `return ticket`: opens `/play/train-platform.html`.
- `unfinished letter`: opens `/play/forgotten-draft.html`.
- `burnt sugar`: opens `/play/corrupted-recipe.html`.
- `cupboard`: opens `/play/terminal-cupboard.html`.
- `patience`: opens `/play/patience-game.html`.
- `marigold`, `luma`, `nadir`: lore toasts.
- `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`: continuity toast.
- `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`: old layout joke.
- `ma`: biscuit tin joke.
- `luma`: plays a tiny original tone sequence.
- `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
- First layer: rare page breeze and biscuit event.
- Second layer:
- 0.6% rare homepage old-web takeover.
- 0.2% cassette asks permission.
- 0.4% recurring dream line.
- 0.8% cryptic comforting warning.
- Rule: rare events should delight, not block navigation.
- 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.
- Content: quiet no-achievement reward.
- Lore: patience and kindness count even when not announced.
- Layer: 5.
- 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.
- Behavior: adds a source-code comment and fills empty image alt text with scrapbook-like hidden descriptions.
- Purpose: secrets inside source and accessibility-friendly hidden storytelling.
- 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.
### Audio
## 6. Secret Pages
- Trigger: user action only, never autoplay.
- Content: short original Web Audio tone sequence associated with Luma/cassettes.
- Note: no copyrighted lyrics or melodies.
### `/play/lima-note.html`
## 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`
- Trigger: seven clicks on corner object.
- Tone: familial, emotional.
- Lore: blue bowl, soup memory, Morrow at 2:13.
- 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`.
- Tone: surreal, safe.
- Lore: three shy doors, Nettle margin note.
- 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 phrase `leave the light on`.
- Tone: late-night comfort.
- Lore: rice in pot, towel on chair, light asks no questions.
- Trigger: search `kitchen light` or type `leave the light on`.
- Layer: 5.
- Content: late note, food, warmth, no questions.
### `/play/radio-room.html`
- Trigger: search `radio under stairs`; keepsake constellation hints it.
- Tone: nostalgic audio memory.
- Lore: Nadir backups, Luma humming, no autoplay manners.
- 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: search `guestbook 1999`.
- Tone: old-web funny/melancholy.
- Lore: fake users are recurring ghosts of the old internet.
- 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`.
- Tone: emotionally meaningful warning.
- Lore: Etta wanted to be found carefully.
- Layer: 4/5.
- Content: Future Z letter about feelings needing a door before becoming words.
### `/play/cassette-log.html`
- Trigger: search `cassette`.
- Tone: archive/audio.
- Interaction: buttons reveal cassette transcript toasts and play original tones.
- 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 `return ticket`.
- Tone: patient return.
- Lore: platform 3, Morrow, destinations as feelings.
- 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`.
- Tone: unsent vulnerability.
- Lore: website as a way to recover rooms in pieces.
- Layer: 5.
- Content: website as a way to recover rooms in pieces.
### `/play/corrupted-recipe.html`
- Trigger: search `burnt sugar`.
- Tone: funny family warmth.
- Lore: recipe corrupted into folklore.
- Layer: 2.
- Content: Lima says add patience; 2022 and Oct 2025 folded into a family recipe.
### `/play/terminal-cupboard.html`
- Trigger: search `cupboard`.
- Tone: hidden terminal, domestic mystery.
- Commands: `help`, `listen`, `inventory`, `tea`, `open`, `remember`, `exit`.
- Layer: 3.
- Commands: `help`, `lima`, `aphy`, `sensei`, `young`, `future`, `layer`, `tea`, `exit`.
### `/play/patience-game.html`
- Trigger: search `patience`.
- Tone: quiet game.
- Interaction: wait. Text changes at 30, 90, and 180 seconds.
- Layer: 5.
- 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.
- Humor: biscuit tin, fake users, old-web jokes, fake errors.
- Melancholy: Forgotten Draft, train platform, cassettes, old usernames.
- Mystery: Dream Corridor, radio, cupboard, rare dreams.
- Familial warmth: corrupted recipe, Aunt Ma, Nadir, blue bowl.
- Meta/web: source relics, under construction takeover, cache warnings.
- 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.
## 7. Page/Section Categories
## 8. Emotional Arcs
- Global: footer notes, toasts, hover whispers, keepsakes, weather window, source comments.
- Homepage: greetings, rare old-web takeover, logo taps.
- Search/nav: keyword portals.
- Play wing: secret rooms and tiny games.
- Comments: fake guestbook line when comments exist.
- Images/source: hidden alt text and source-code comment.
- 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.
## 8. UI/UX Notes
## 9. UI/UX Behavior Notes
- Hidden UI stays low opacity until hovered/focused.
- No feature should obscure reading for long.
- Audio requires explicit action.
- Weather requests require explicit click and have graceful fallback.
- Secret pages are buildable but marked `#+HIDDEN_PAGE: t` so they do not appear in index pages.
- Rewards are intentionally non-competitive; no public checklist.
- 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.
## 9. Audio/Visual Suggestions
## 10. Audio and Visual Suggestions
- Add tiny original ambient loops only after explicit button press.
- Use cassette hiss, lamp hum, rain-on-window synthesis, and soft train-platform chimes.
- Consider small generated bitmap textures: paper receipt, cassette label, pressed flower, old guestbook banner.
- Avoid horror stingers; even corrupted pages should be emotionally safe.
- 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.
## 10. Long-Term Evolution
## 11. Long-Term Evolution
- Monthly train destination changes.
- Seasonal recipe variants.
- Yearly visitor anniversary letters.
- A slow Luma arc where the lamp becomes less shy after enough patient moments.
- Nettle's filing labels can become warmer over time.
- Morrow's return ticket can gain stamps after visits to secret rooms.
- Guestbook users can post new fake entries on real calendar dates.
- 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.
## 11. Future Expansion Ideas
## 12. Implementation Notes
- Add a real local-only guestbook draft pad that stores messages in `localStorage`.
- Add a hidden "attic" page unlocked after visiting all secret rooms.
- Add generated cassette-label images for each log.
- Add a no-score cooking memory game using family recipe fragments.
- Add an RSS-feed-only hidden note.
- Add source-map comments or HTML comments with letter fragments.
- Add a "kindness route" where closing pages gently or waiting unlocks softer endings.
- 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.
## 12. Maintaining Mystery
## 13. Maintenance Rules
- Do not explain all triggers in the public UI.
- Keep most secrets optional and small.
- Never punish users for missing content.
- Use recurrence, not randomness alone: objects and characters should reappear with altered context.
- Make clues emotionally legible, not puzzle-hostile.
- Avoid completion language. The site is a place, not a checklist.
## 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.
- 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 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.
## 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`.
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.

488
docs/hidden-soul.md Normal file
View 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.