Dashboard Studio 2.2.0: guest invites, personal looks, more themes, Haven widgets and tiles

- Vacuum card: the robot drawn beside its dock by state, last clean, maintenance
- Formula One card: the official F1 look with a user-supplied logo
- Nine more themes; per-person theme, text size and language on Admin, People
- Guest invites: an expiring link and QR code for one dashboard, served on a
  LAN-only guest port, with the Home Assistant connection filtered both ways
- Haven 2.2: home screen widgets, three quick settings tiles, several homes,
  and self-updates from the Haven that Dashboard Studio serves

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-27 00:31:50 +01:00
parent f4c98e27af
commit a5823b4726
26 changed files with 1514 additions and 164 deletions
+64
View File
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/w_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/w_bg"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="10dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/w_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="Haven"
android:textColor="#f4eee4"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:id="@+id/w_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="Choose what it controls"
android:textColor="#a9b8c2"
android:textSize="13sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/w_steps"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/w_minus"
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@drawable/w_step"
android:gravity="center"
android:text="−"
android:contentDescription="Lower"
android:textColor="#f4eee4"
android:textSize="20sp" />
<TextView
android:id="@+id/w_plus"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="6dp"
android:background="@drawable/w_step"
android:gravity="center"
android:text="+"
android:contentDescription="Higher"
android:textColor="#f4eee4"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>