name: adom-screensaver-rationale description: The WHY behind adom-screensaver, the necessity-is-the-mother-of-invention origin story (keeping /remote-control alive without burning in the screen), the justification for every behavior, the staged 2-min-billboard → 5-min-display-off cascade, power-aware keep-awake, the lock-on-wake rule, the wiki-billboard "advertise apps" concept, and the org-aware personalized vision. Read this when reasoning about WHY the screensaver behaves a certain way, defending or changing a behavior, explaining its purpose to someone, or deciding whether a proposed change respects the original intent. Triggers, why does the screensaver, screensaver reasoning, screensaver rationale, why was adom-screensaver built, screensaver justification, why keep-awake, why does the screen stay on, screensaver cascade, why billboard, screensaver design, screensaver purpose. metadata: node_type: skill

Parent skill: adom-screensaver

This is the design rationale, the why. For how to operate/build/extend, see the sibling skills (adom-screensaver operate, -billboard, -wake, -build). When a change is proposed, check it against the reasoning here first: most "obvious simplifications" regress a behavior that exists for a hard-won reason.

Necessity is the mother of invention, the origin

John kept getting burned by a specific failure: he'd start a /remote-control thread in Claude Code, then walk away from the laptop, go to dinner with the family, and come back to a dead session. The laptop had gone to sleep and killed the session, even while plugged in. The AI had stopped working the moment he left.

The naive fix made it worse: force the laptop to never sleep → now the screen never turns off either → he was burning in his display just to keep a vibe-coding session alive. Lose-lose: either the session dies, or the panel cooks.

adom-screensaver exists to dissolve that trade-off. The core insight is that "machine awake" and "screen on" are two different things, and Windows' defaults conflate them. The screensaver splits them: hold the machine awake (network + /remote-control survive) while letting the screen turn off to save power. Best of all worlds, the thing Windows wouldn't give you out of the box, because its power model predates AI agents that run for hours on your behalf.

What each behavior is FOR (don't regress these)

  • Power-aware keep-awake. Plugged in → hold the machine awake indefinitely (/remote-control runs as long as you like, your laptop becomes a vibe-coding server). On battery → stay passive and let Windows' own idle-sleep timer be the give-up clock (default 30 min), so a forgotten laptop in a bag eventually sleeps instead of draining flat. The keep-awake holds ES_SYSTEM_REQUIRED only on AC; it deliberately does not assert it on battery. See the power decisions in the project memory before changing this, it regressed twice.
  • Lid-close = "Do nothing". Closing the lid is a hardware button action, separate from idle sleep, keep-awake can't influence it. Set the lid action to "Do nothing" so closing the lid to walk to the next room doesn't instantly sleep; the idle-sleep timer (30 min on battery) is the real give-up. Walk around freely; come back within 30 min and nothing was interrupted.
  • Lock rule: "no sleep → no lock; real sleep → normal sign-in." ScreenSaverIsSecure=0 so dismissing the billboard / reopening the lid (no sleep occurred) drops straight to the desktop, no password. CONSOLELOCK is left at Windows' default so waking from an actual sleep still asks to sign in. (CONSOLELOCK is admin-only to change; do not try to disable it.)

The staged cascade (the 2-min → 5-min design)

The saver runs in stages, on purpose, a gentle cascade rather than a hard cut to black:

  1. 0-2 min idle: nothing. (ScreenSaveTimeOut = 120s.)
  2. 2-5 min idle: the billboard plays, a dim, mostly-black full screen cycling recent wiki drops. This phase is lightweight to dismiss: the panel is still powered, so a single mouse flick or keypress expires it instantly.
  3. 5 min idle: the display powers off entirely (monitor timeout = 300s) to actually turn the display off. The machine stays awake (on AC) the whole time.

Why this ordering matters: the saver often kicks in when you didn't really want it (you paused to read, took a call). If the first thing it did was fully power the screen off, every accidental trigger would cost you the heaviness of the panel going dark and then warming back up. By showing a dim billboard first and only powering the screen off 3 minutes later, an early/accidental trigger is trivially undone, you barely notice it. The full display-off is reserved for when you've truly stepped away. Don't collapse the two stages into one.

The screensaver became a canvas, the billboard

Once you have a full screen that's "resting," it's the perfect canvas. Instead of black, the billboard surfaces the coolest new stuff in the Adom Wiki, each app/skill's hero image, title, and a "just ask Claude: install <x>" prompt. So the screensaver does double duty: it keeps the machine working and educates the user (and John) about new wiki apps while they're away.

This reframes wiki hero images as marketing surfaces: your wiki assets advertise apps on people's lock screens and nudge adoption, value far beyond the wiki page itself.

  • Media: a video hero (.webm) is streamed silently (muted, looped) straight from the wiki, motion grabs the eye; nothing is downloaded. No video → fall back to the hero image.
  • Dual-wiki: pulls Wiki v2 (canonical) + Wiki v1 (legacy, with a "migrate to v2" nudge); v2 wins on overlap. Order is shuffled each run so the first slide varies.
  • Curation: a runtime exclude.txt drops baseline/uninteresting slugs without a rebuild.

The vision this is part of

  • Personalized, org-aware billboards. Today the billboard advertises public wiki pages. Next: HD hands the saver the user's Adom login, passed through on wiki queries, so the billboard shows public + the user's org-private apps. An NTX Embedded user sees NTX's own apps; someone in multiple orgs sees the union. The wiki becomes a personalized, org-aware app store, and the screensaver is its ambient discovery surface.
  • Distributed via the wiki, installed by HD. The screensaver is a Windows-host app, so it's not adompkg install-into-the-workspace. It's published to Wiki v2 with a dist/win/ bundle in the tarball; HD's setup steps fetch + install it on the host (opt-in, reversible). Publish a new version → every HD picks it up, no HD rebuild. (macOS/Ubuntu HD must gracefully skip it, it's Windows-only.)

Use cases to keep in mind

  • Vibe-coding server: laptop plugged in on a desk, lid open or closed, running /remote-control threads for hours while John is elsewhere. Never sleeps; the display turns off.
  • Mobile / on battery: moving between rooms or out the door, rides short lid-closings, then sleeps on the 30-min give-up so it doesn't drain.
  • Ambient discovery: any idle moment becomes a chance to learn what's new in the wiki.

Guiding principle: the screensaver bends the laptop's behavior away from Microsoft's pre-AI defaults, on purpose, to protect long-running AI work, while being honest about power (turn the display off, respect the battery, keep real-sleep security). Any change should preserve that balance.