Notices
A notice is a short message from a space to its phones: “Bus is here”, “Dinner’s ready”, “Kitchen closes at 10”. Every phone shows it on its ready screen with a chime; lifting the handset plays its recording, if it has one, over and over; a key clears it. Notices stay inside the space: they are never sent to other households or servers.
Who posts
Section titled “Who posts”- In a home: its guardians.
- In a team or organization: the owner and admins.
Members can’t post. In the companion app a guardian or admin finds Notice to the phones on the Home screen.
A phone posts one when its guardians gave it a chime (Manage phone → Home features →
Chime: the words, e.g. “Dinner’s ready”): MENU 4 on the phone sends it (notice.chime) to every
phone of the space for 15 minutes, at most once a minute. The audit trail names the phone.
What a notice is
Section titled “What a notice is”| Text | One or two lines of at most 16 characters each (what the phones’ screens show). Letters, digits and plain punctuation; shown in capitals. |
| Recording | Optional, up to 30 seconds (8 kHz WAV, recorded in the app like a voicemail greeting). |
| How long | 15 minutes to a day; an hour unless the poster picks another. It can be taken down sooner. |
| Which phones | Every phone of the space (kids’, personal and Lounge phones), or only the ones picked. |
A newer notice replaces an older one on the phones it reaches.
On the phones
Section titled “On the phones”- Ready screen: the notice’s lines, over the time and missed calls, with a short chime (short, short, long on the hardware’s piezo). No chime during quiet hours, during a call or with the handset up; the text still shows.
- Lift the handset: a recorded notice plays in the earpiece, over and over, until the handset goes down or a key clears the notice (that key doesn’t dial). Without a recording, the phone has its dial tone as usual.
- Any key on the ready screen (BACK too) dismisses it on that phone; MENU still opens the menu. A dismissed notice doesn’t come back on that phone, even after it reconnects.
- When the notice expires or is taken down it leaves every phone.
All routes are under /api, with the session’s active space.
| Route | Who | What |
|---|---|---|
GET /notices |
guardians / admins | the space’s notices, newest first (live ones and those that ended in the last week) |
POST /notices {text, minutes?, deviceIds?} |
guardians / admins | posts one (text: a line break between two lines); 201 with the notice |
PUT /notices/:id/audio?durationMs= |
guardians / admins | adds its recording (raw audio/*, 30 s); the phones get the notice again with its audio |
DELETE /notices/:id |
guardians / admins | takes it down |
GET /notices/:id/audio?token= |
phones | the recording, while the notice lasts (the token comes with the notice) |
Posting, recording and taking down are in the space’s audit trail (notice.post, notice.audio,
notice.delete): who, when, how long and to which phones, never the notice’s text or audio. Recordings are deleted when the notice ends;
the notice itself a week later.
Protocol
Section titled “Protocol”Device feature notices (config.server.features).
- Server → phone:
notice {id, lines, from, at, expiresAt, audio?: {token, durationMs}}, sent when the phone connects and whenever what it should show changes (again with the sameidwhen the recording is added: no second chime);notice.cleared {id}when it expires or is taken down. - Phone → server:
notice.dismiss {id}.
See protocol.md for the exact messages.