Skip to content

Display Modes

Three "what's on the screen right now" modes beyond the default dashboard:

  • Screensaver: idle photo slideshow with widget overlays.
  • Away Mode: privacy screen showing only photos + clock, parent PIN to exit.
  • Babysitter Mode: caregiver overlay with house info, contacts, child notes.

All three are layered on top of the dashboard. The dashboard is always running behind the scenes; these modes just cover it with a different presentation.


Screensaver

Activates after a configurable idle period. Shows a rotating photo slideshow with a configurable set of overlay widgets: clock, weather, calendar, etc.

Each dashboard has its own screensaver

Screensaver layouts are dashboard-scoped. Your kitchen dashboard (/d/kitchen) can have a screensaver showing big clock + weather + a slow photo cycle, while your bedroom dashboard (/d/bedroom) has a smaller clock + tomorrow's calendar.

Edit the screensaver layout in dashboard edit mode by clicking the Screensaver button to switch from editing the dashboard to editing the screensaver overlay.

Widget transitions

By default the screensaver shows every widget in its layout, all the time. It can instead show a subset and rotate which ones, so the board changes slowly. That is easier on a panel — nothing sits in the same place indefinitely — and it gives the screensaver something to do besides change photographs.

Four ways a widget can come and go, under Widget transition effect:

  • Fade — opacity, eased at both ends. Arriving and leaving are deliberately not mirror images: a widget appears at once and settles, and holds a moment before it goes.
  • Smoke — the widget itself dissolves. A turbulence mask thins its own pixels out in patches with soft edges. Nothing is drawn over the top of it.
  • Fill and drain — a waterline crosses the widget, with a surface that keeps moving and bubbles rising through it. One widget drains as another fills, and the two are exact mirrors: the water leaving one is the water arriving in the other. Only ever one pair at a time, and the pair is chosen from opposite sides of the board so it reads as a transfer rather than as one column doing something.
  • Fireworks — the widget comes apart into its own pixels. It is sampled pixel by pixel and each sample becomes a fragment carrying that pixel's colour, so at the instant of the burst the field is the widget. It winds up first: the card sets down its background, the widget swells and draws back in, and then it goes. Fragments accelerate as they scatter and cool towards ember.

Fireworks is the only one that costs anything material. It is turned down to a plain fade automatically on hardware that reports itself as low-end, and whenever the display asks for reduced motion.

Drift

Independently of transitions, the widgets that are showing can move very slowly: Breathe, Ripple or Figure eight. This is for the panel's sake. Rotating which widgets are shown helps with burn-in; moving the ones that are helps more, because it shifts the boundaries rather than what is inside them.

Periods run from twenty seconds to a minute and a half, each widget is out of step with the others, and the amplitudes are whole pixels — sub-pixel movement leaves the same physical pixels lit and does nothing. Breathe and Figure eight are meant to be imperceptible. Ripple is meant to be just noticeable.

Configuration

Screensaver settings live under Settings → Appearance → Screensaver, and can also be reached from the screensaver itself — see below.

  • Start after: how long idle before activating. 30 seconds / 1 minute / 2 minutes / 10 minutes / 1 hour / Never (default 2 minutes).
  • Change photo every: how fast photos cycle (5 seconds up to 1 hour, or Never for a static image).
  • Widget transition effect and Change every: which effect, and the minimum gap between changes. It is a minimum: a rotation never begins before the last one has finished, so a long effect paces itself.
  • Transition length: Brisk, Normal, Slow or Very slow, scaling every effect together.
  • Show at least / at most: bounds on how many widgets are on screen. About two thirds of the layout by default, within those bounds.
  • Hide widget outlines: drops the perimeter of each widget. Rules inside a widget are untouched.
  • Carbonation, Surface wobble, Keep text clear of the waterline: fill and drain only. The last of these decides whether the surface passes over the top line of a widget's text or over empty space above it — the water covering content is the effect working as intended for some people and a fault for others, so it is a switch rather than a decision.
  • Drift: Still, Breathe, Ripple or Figure eight.
  • Show a settings shortcut on the screensaver: off by default.

Changing it from the screensaver

Judging a transition means watching it, and every adjustment otherwise meant leaving the screensaver, finding the settings page, changing one value and waiting for the screensaver to come back.

With the shortcut enabled, a Prism mark appears in the top-left of the screensaver — invisible until you hover it, then fading in over two seconds. It opens the same settings in place. On a touchscreen the corner is live whether or not anything is drawn there.

All of these are per display, stored on the screen they are set on. Two screens in a house can run different effects.

The screensaver layout — which widgets, and where — is edited in dashboard edit mode, and the editor links to these settings, since arranging a screensaver and deciding how it moves are two halves of the same job. - Sign out after: how long the display can sit untouched before it stops being signed in as whoever last used it (5 minutes up to 4 hours, or Never; default 30 minutes). Per device, like the other timers here.

Signing out does not blank anything. getDisplayAuth keeps serving the dashboard from the configured display user, so the calendar, tasks and messages stay readable to anyone who walks up. What comes back is the PIN prompt on anything that changes something.

Worth knowing why this exists: a parent session lasts 7 days and its window is refreshed on every request, and the dashboard polls constantly — so without this, one sign-in leaves the display authenticated as that person until the 30-day absolute cap, and whoever walks up next inherits it.

It is deliberately not tied to the screensaver. That timer is cosmetic and often set to two minutes; being asked for a PIN that often teaches people to resent it.

Which photos appear is configured under Settings → Photos:

  • Source filter: which photo source(s) to draw from.
  • Orientation filter: landscape / portrait / square, applied per display context (gallery / wallpaper / screensaver).
  • Pinned photo: override the slideshow with a single static photo (for the surfaces you want stable).

Activation behavior

  • Mouse / touch / keyboard activity resets the idle timer.
  • Tab visibility doesn't matter. Even an idle but visible tab triggers the screensaver. (This is the kiosk use case: nobody's interacting with the wall display, so show the slideshow.)
  • The screensaver is suppressed when:
  • The Edit dashboard mode is active.
  • A modal is open.
  • The PWA detects mobile mode (auto-disabled: phones don't need screensavers).

Exiting

  • Tap anywhere, press a key, or move the mouse. The screensaver fades back to the dashboard.
  • No PIN required (anyone can dismiss).

Away Mode

A privacy overlay for when nobody's home (or when you don't want a casual passerby to see the dashboard's content). Shows only a photo slideshow + a compact header bar with clock and weather.

Why this exists

Imagine your dashboard is mounted in a kitchen visible from the front door. A delivery person, neighbor, or visiting house sitter glances through the window. The dashboard shows your family's calendar, today's chores, what tasks are due. Too much information for a stranger to see.

Away mode strips that down to: clock, weather, photo. Nothing else.

Activation

Two ways:

  1. Manual: tap the palm-tree icon in the dashboard header. Asks "really activate Away mode?" → yes → mode engages.
  2. Auto: configurable in Settings → Appearance → Timers & Auto-Activation → Away Mode Auto-Activation:
  3. Never (manual only): never auto-activate.
  4. 4 hours of no interaction → activate.
  5. 8 hours of no interaction → activate.
  6. 12 hours of no interaction → activate.
  7. 1 day of no interaction → activate.
  8. 2 days of no interaction → activate.
  9. 3 days of no interaction → activate.
  10. 1 week of no interaction → activate.

The auto-activation timer resets on any user interaction (touch, click, keyboard).

The Away Mode display

  • Top header bar:
  • Clock (left).
  • Weather (right). Current temp + conditions.
  • Both compact, single-line.
  • Below: full-screen photo slideshow.
  • Pulled from the photos source you've configured for screensaver (same filter).
  • Cycles at the same interval.

No calendar, no chores, no tasks, no messages, no widgets. Just the time, weather, and a slideshow.

Exiting

Tap anywhere. A PIN keypad appears. Enter a parent PIN to exit. Children can't exit Away mode, by design, since the use case is keeping the family's info private during periods when adults aren't around to authorize seeing it.

If you forget the PIN: reset it offline with the bundled recovery script from inside the app container: docker compose exec app node scripts/reset-pin.js --list to see member names, then docker compose exec app node scripts/reset-pin.js "Name" 1234 to set a new PIN for that member. It hashes the PIN exactly like the app and touches only that member's row.

Use cases

  • Kitchen with view of the street: auto-activate after 8 hours so the dashboard goes private overnight.
  • Vacation home: manual-activate when leaving so the cleaner / property manager doesn't see your full schedule.
  • Extended trips: auto-activate at 1 week so even house-sitters don't see returning family's schedule.
  • Always-on screens used part-time: auto-activate at 4 hours so the screen doesn't sit on the dashboard view during work hours when nobody's checking.

Babysitter Mode

A caregiver overlay with essential household details. Activates manually (or via a public URL) when a babysitter, family friend, or other temporary caregiver is at the house.

What's on it

Configurable in Settings → Babysitter Info. Sections include:

  • Emergency contacts: phone numbers for parents, grandparents, doctor, school, poison control, emergency services. Tap to call (if the device supports it).
  • House info: WiFi name + password (with QR code for one-tap connection), door codes, security system codes, garage code, address, nearest cross street.
  • Per-child info: allergies, medications + dosing schedule, bedtime, dietary restrictions, special notes ("Sophie won't sleep without her bunny").
  • House rules: guidelines for the caregiver. Screen time policy, snack policy, what to do if [scenario], whatever you want them to know.
  • Pet info (if you set it up): feeding schedule, where pet food lives, vet contact.

Sensitive sections

Mark any section as sensitive in Settings → Babysitter Info. Sensitive sections appear in the overlay but require a tap-to-reveal with a parent PIN. Useful for:

  • Door codes you don't want visible at a glance if non-family briefly passes through.
  • WiFi password if you're casual about who sees the babysitter mode.
  • Per-child medical info if you only want the caregiver to see it when they specifically need it.

Sensitive sections show a placeholder ("Tap to reveal: parent PIN required") until unlocked. Once unlocked, they stay visible for that session.

Activation

Two ways:

  1. Tap the babysitter icon in the dashboard header.
  2. Share the public URL /babysitter: works without login. You can send this URL to a sitter ahead of time so they have the info on their phone too.

The /babysitter public URL

Anyone with the URL can access the babysitter view. Use cases:

  • Email the URL to the sitter the day before so they can have it on their phone.
  • Pin it on the fridge as a QR code.
  • Share with a one-time caregiver who isn't going to use the wall display.

The public URL respects the sensitive-section gating: sensitive sections still require PIN unlock when viewed via the public URL.

Leaving a note for the family

While Babysitter Mode is on, the Babysitter Mode screen has a Leave a note for the family box. The screen covers every page while the mode is on, so a sitter who opens /babysitter on their phone gets the box too. The sitter types a note (up to 500 characters) and, if they like, their name, and taps Send. The note goes on the Messages board marked as from the babysitter, for example "Everyone ate dinner. One of the kids bumped an elbow, Band-Aid on."

  • Notes are accepted only while a parent has Babysitter Mode on. When it is turned off, the screen and the box go away and the server refuses new notes.
  • No login or PIN is needed, so anyone who can open /babysitter during that time can post. Up to 10 notes an hour are accepted for the whole household.
  • The sitter cannot read the Messages board. Only a parent can edit or delete a sitter's note.
  • With the authentication wall on, the note box only works on a trusted device, like the rest of /babysitter.

Exiting

Tap anywhere → PIN keypad → enter parent PIN → returns to the dashboard.

(The public URL /babysitter doesn't have an exit per se. It's just a webpage. Close the tab.)

Use cases

  • First-time sitter: they arrive, you tap babysitter mode, walk through the screen with them, leave. The wall display now shows the info they need without needing your phone for any of it.
  • Grandparents visiting: same idea, even if they're family. House codes, WiFi password, your phone numbers all visible.
  • Pet sitter: extends the babysitter sections to include pet-specific info.
  • Long-term caregivers: set sensitive sections so the day-to-day visible info is the basics; PIN-protect medications + bedrooms + specific medical notes.

Layered behavior

These modes are layered, not exclusive. The dashboard always exists underneath; the active mode overlays on top.

  • Screensaver overlay → photo slideshow + widgets.
  • Away mode overlay → photo slideshow + clock + weather (no widgets).
  • Babysitter mode overlay → babysitter info screen (full-screen, no slideshow).

Switching between modes is done via the header icons (when not in away/babysitter, those require PIN to exit first).


Performance considerations

Each overlay is lazy-loaded: the screensaver, away mode, and babysitter mode components only load when activated, not on every dashboard render. The transitive import chain that pulled them into the root layout was broken in v1.0.4 specifically to keep the dashboard's first paint fast.

In Performance Mode:

  • Screensaver still works, but photo rotation pauses (single static image instead of cycling).
  • Away mode runs normally, minimal overhead.
  • Babysitter mode runs normally, static content.

Privacy summary

Mode Shows Reachable without login?
Dashboard Everything (calendars, tasks, etc.) Yes, but read-only
Screensaver Photos + configured widgets Same as dashboard
Away Mode Photos + clock + weather only After timeout / manual activation
Babysitter Mode House info + contacts + child notes, sitter can leave a note Yes, via /babysitter URL

If you're worried about what a casual passerby can see: Away mode is the answer. Set the auto-activation to a duration that matches your usage patterns.

If you're worried about what a babysitter or short-term guest needs to know: Babysitter mode is the answer.


Troubleshooting

Screensaver doesn't activate

  • Check Settings → Appearance → Timers & Auto-Activation → Screensaver Timeout. Is it set to "Never"?
  • Is the dashboard in edit mode? Edit mode suppresses the screensaver.
  • Is a modal open? Modals suppress the screensaver.
  • On mobile PWA installs, the screensaver is intentionally auto-disabled. This is by design.

Away mode won't exit

You need the parent PIN. If you've forgotten it, reset it offline with the bundled script from inside the app container: docker compose exec app node scripts/reset-pin.js --list to see member names, then docker compose exec app node scripts/reset-pin.js "Name" 1234 to set a new PIN for that member.

Babysitter info shows blank

You haven't configured anything in Settings → Babysitter Info. Add at least one section so the page has content.

Sensitive section won't unlock with the right PIN

Check that the PIN belongs to a parent role. Child PINs can't unlock sensitive sections.

Public /babysitter URL not loading

Make sure you've configured at least one section in Settings → Babysitter Info. An empty babysitter view has nothing to render. Also confirm the device can reach the Prism host on your network.

Photo slideshow stutters during screensaver

Performance Mode might be active: slideshows pause in performance mode (single image instead of rotation). Disable Performance Mode if you want the cycle behavior on a low-spec device, but watch CPU.

Wrong photo source on the screensaver

The screensaver photo filters (sources, per-context orientation, pinned photo) live in Settings → Photos under the screensaver display context. Adjust them there.

Babysitter QR code for WiFi doesn't work

The QR uses the standard WIFI: URI format. Some older Android devices don't support QR Wi-Fi join; on those, the sitter has to type the password manually. Confirm the password works typed in directly before blaming the QR code.

Clock in away mode showing wrong time

Browser TZ issue. Check the system TZ on the device running the dashboard. Prism uses the browser's local TZ for the away-mode clock.