Family devices: shared-screen family board with a who-is-this profile picker
build-container / build (push) Successful in 4m30s

- Admin can make a screen a family device; it opens on a family board
- Name tiles with KID labels; kids tap, others enter a PIN (lockout after 5 wrong tries)
- Name label with Switch user, auto-return to the board after 5 idle minutes
- Short 30-minute sessions on family devices
- Settings section for PIN and turning a device on or off
- Test, README and roadmap updated

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 5.5 committed 2026-10-26 12:58:23 -04:00
1 parent 058f410a58
commit eef1adaa73
21 files changed
+300 -14

No files matched your search

+3 -1
View File
@@ -147,4 +147,6 @@ async function handle(req, res) {
/** Recipes in Mealie that match the words (none when Mealie is not set up or does not answer). */
async function search(q) { if (!enabled()) return []; try { const j = await mealie(`/api/recipes?page=1&perPage=6&orderBy=name&orderDirection=asc&search=${encodeURIComponent(q)}`, { timeout: 6000 }); return (j.items || []).map(card); } catch { return []; } }
module.exports = { handle, enabled, minutes, full, ingredientText, search };
/** The open items on the shopping list, for the family board ([] when Mealie is not set up or does not answer). */
async function shoppingOpen() { if (!enabled()) return []; try { return (await readList()).items.filter(i => !i.checked).slice(0, 12).map(i => ({ id: i.id, text: i.text })); } catch { return []; } }
module.exports = { shoppingOpen, handle, enabled, minutes, full, ingredientText, search };