Public: anyone can read this; the crew can change it.
Migrated from github.com/Trevato/SO-ARM100
Night mode: the saplings are sleeping (animation flowing into a multiplayer game with a leaderboard), and Wake up / Good night for the owner with a morning check-in (water, sprout count) #632
Owner, 2026-10-27: "somehow be able to see others live and maybe their ghosts like best run or something. depending on what the game is but somehow make it fun so like my friends could see each other."
Social play is the core of this:
- Live presence: every player in tonight's garden shows as a small named light (their name, or guest-xxxx) moving in real time. Positions are throttled to about 10 Hz and interpolated on the client. Friends see each other's drops land and get a short "nice!" burst when someone saves a seed.
- Ghosts: each finished run is recorded as its input trace (about 20 samples/s, compressed; a few KB). Players race ghosts alongside the live players:
- their own best run, translucent; - tonight's top run; - a friend's best ("race {name}'s ghost" from the leaderboard).
Ghosts replay deterministically from a seeded round: the same seed gives the same spores and seeds, so a ghost is a fair rival. The server re-simulates a submitted trace to validate the score (anti-cheat for free).
- Friends:
- A share link (/play?with=<name> or a short room code) drops friends into the same night and pins each other on the leaderboard.
- "Friends" filter on the leaderboard: people you've played with or invited.
- A tiny emote wheel (🌱 💧 🌙 👏), rate-limited; no free text, to stay safe for a public page.
- Fairness and abuse: server-authoritative scoring through re-simulation; names follow the existing account rules (src/accounts.ts); per-browser rate limits; a ban hides a player's light and ghosts.
- Tests:
- the same seed and trace re-simulate to the same score; - a forged trace is rejected; - two fake clients see each other's presence; - a ghost replays in sync; - the share link joins the same room.
Owner, 2026-10-27 02:50Z: "close the app with a fun saplings are sleeping message with an inspiring animation that seamlessly flows the user into an engaging game. this will be the latest offline screen. of course i need to be able to login to turn on the wakeup phase when I wake up and turn on the lights. this should turn on the cameras too. i will check water and can do any logging as well. like sapling count or something" … "the game should have a leaderboard and be multiplayer!"
The app is closed right now with the note "The saplings are sleeping…" (set by the steward through /admin, so the resting state already works). This issue makes night a designed experience.
1. The sleeping screen (the new offline/closed screen)
prefers-reduced-motion.2. The game: Night Garden (multiplayer, leaderboard)
3. Wake up (the owner only)
1. Opens the app. 2. Turns the grow light on through the light switch (#582) when one is set up; until then a checklist line, "Turn the light on (no switch yet)". 3. Turns the cameras on. 4. Opens the morning check-in.
- Water: "cubes moist" / "topped up (bottom)" / "too wet". - Sprout count: a stepper (0–20), stored as a measurement (
kind: "sprouts"), charted per day on the grow card. - The lid: "on" / "cracked" / "off". - An optional photo note.Done when
sproutsmeasurement).Files: Software/so101/src (closed screen, game server and client, admin actions, care log), tests