19 KiB
19 KiB
Hidden Soul Bible
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.
Primary emotional tones:
- 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 Safiya, Nadir, the radio, the train platform.
- Internet nostalgia: guestbooks, counters, dial-up usernames, under construction language, source-code relics.
2. Recurring Cast
- 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 Safiya: 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.
3. Symbolic Objects
- 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.
4. Implemented Global Systems
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.
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.
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.
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.
Keepsake Constellation
- 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.
Weather Window
- Trigger: after at least three visits, a subtle
windowbutton 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.
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.
Page Revisit Memory
- Trigger: 3rd, 7th, and 12th visit to the same path.
- Content: page-specific return messages.
- Lore: individual rooms recognize repeated footsteps.
Seasonal Content
- 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.
Night Messages
- Trigger: 22:00-04:59 local browser time.
- Content: gentle late-night comfort.
- Visual: soft bottom glow.
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.
Typed Phrase Secrets
remember: continuity toast.dream: opens Dream Corridor.leave the light on: opens Kitchen Light.oldweb: old layout joke.safiya: biscuit tin joke.luma: plays a 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.
Patience Rewards
- Trigger: 90 seconds of inactivity after repeat visits.
- Content: quiet no-achievement reward.
- Lore: patience and kindness count even when not announced.
Source Relics and Alt Text
- 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.
Audio
- Trigger: user action only, never autoplay.
- Content: short original Web Audio tone sequence associated with Luma/cassettes.
- Note: no copyrighted lyrics or melodies.
5. Implemented Secret Pages
/play/left-behind.html
- Trigger: seven clicks on corner object.
- Tone: familial, emotional.
- Lore: blue bowl, soup memory, Morrow at 2:13.
/play/dream-corridor.html
- Trigger: logo taps or typed
dream. - Tone: surreal, safe.
- Lore: three shy doors, Nettle margin note.
/play/kitchen-light.html
- Trigger: search
kitchen lightor phraseleave the light on. - Tone: late-night comfort.
- Lore: rice in pot, towel on chair, light asks 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.
/play/guestbook-1999.html
- Trigger: search
guestbook 1999. - Tone: old-web funny/melancholy.
- Lore: fake users are recurring ghosts of the old internet.
/play/do-not-open.html
- Trigger: search
do not open. - Tone: emotionally meaningful warning.
- Lore: Etta wanted to be found carefully.
/play/cassette-log.html
- Trigger: search
cassette. - Tone: archive/audio.
- Interaction: buttons reveal cassette transcript toasts and play original tones.
/play/train-platform.html
- Trigger: search
return ticket. - Tone: patient return.
- Lore: platform 3, Morrow, destinations as feelings.
/play/forgotten-draft.html
- Trigger: search
unfinished letter. - Tone: unsent vulnerability.
- Lore: 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.
/play/terminal-cupboard.html
- Trigger: search
cupboard. - Tone: hidden terminal, domestic mystery.
- Commands:
help,listen,inventory,tea,open,remember,exit.
/play/patience-game.html
- Trigger: search
patience. - Tone: quiet game.
- Interaction: wait. Text changes at 30, 90, and 180 seconds.
6. Emotional Tone Categories
- 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 Safiya, Nadir, blue bowl.
- Meta/web: source relics, under construction takeover, cache warnings.
7. Page/Section Categories
- 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.
8. UI/UX 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: tso they do not appear in index pages. - Rewards are intentionally non-competitive; no public checklist.
9. Audio/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.
10. 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.
11. Future Expansion Ideas
- 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.
12. Maintaining Mystery
- 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
localStoragekeyzxh_hidden_details_v1. - Secret routes are static Org pages.
#+HIDDEN_PAGE: texcludes pages from sitemap/recently-updated vialisp/sitemaps.elandlisp/recently-updated.el.- Add backend later only if real guestbook/comment persistence is desired.
- Keep hidden scripts dependency-free.
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 Safiya: 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 Safiya: 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.orgorrecently-updated.org.