Files
veenm 3d958d0411 Dashboard Studio 2.0.0: Admin, Builder and Dashboard screens, roles, Haven
- Home Assistant administrators are admins: Dashboard, Builder and Admin screens
- Everyone else only sees the dashboards an admin chose, always in kiosk mode;
  the server enforces it (saving, people, devices, history are admin-only, and
  the websocket only allows reading states and controlling devices)
- Admin screen: dashboards, people and what each sees (with preview), devices,
  messages to the screens, the Haven app, activity, about
- Haven: new Android app (haven/) that only shows dashboards; replaces the
  Dashboard Studio Android app and signs in through Home Assistant's page
- Screens pick up dashboard and access changes within a minute
- Version history records who made each change; panel visible to all users

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 23:20:55 +01:00

16 lines
1.1 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#245268"/><stop offset="1" stop-color="#0d1d29"/></linearGradient>
<linearGradient id="door" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#ffe2a0"/><stop offset="1" stop-color="#f4a531"/></linearGradient>
<clipPath id="house"><path d="M136 240 L256 140 L376 240 V388 a22 22 0 0 1 -22 22 H158 a22 22 0 0 1 -22 -22 Z"/></clipPath>
<filter id="blur" x="-50%" y="-50%" width="200%" height="200%"><feGaussianBlur stdDeviation="16"/></filter>
</defs>
<rect width="512" height="512" rx="112" fill="url(#bg)"/>
<g id="art">
<path d="M136 240 L256 140 L376 240 V388 a22 22 0 0 1 -22 22 H158 a22 22 0 0 1 -22 -22 Z" fill="#f4eee4"/>
<path d="M100 262 L256 130 L412 262" fill="none" stroke="#f4eee4" stroke-width="30" stroke-linecap="round" stroke-linejoin="round"/>
<g clip-path="url(#house)"><ellipse cx="256" cy="352" rx="62" ry="76" fill="#ffb547" opacity=".55" filter="url(#blur)"/></g>
<path d="M214 410 V322 a42 42 0 0 1 84 0 V410 Z" fill="url(#door)"/>
</g>
</svg>