feat(widget): widget redesign and new Today/Up next/Lists/Week widgets (#33)

Reworks the home-screen widgets on top of #32.

- Tasks widget: agenda-style rows, a row-colour setting, an "All caught up" empty state
- Drops "At a glance" (it duplicated the Tasks widget) for four new widgets: Today (progress ring + today's tasks), Up next (the nearest due task, optionally from one list), Lists (adaptive shortcut grid), Week (day strip with counts)
- Ticking a task in any widget shows a done frame before the row goes away
- Shared Glance primitives live in floret-kit (`feat/glance-module`): progress ring, tiles, check button, header action pill, expressive shapes, done state

Today and Up next don't offer the transparent background, since their content isn't in containers and is unreadable on the wallpaper. No issue behind this one; it came out of reviewing the widgets on-device.

Co-authored-by: Jean-Luc Makiola <business@jeanlucmakiola.de>
Reviewed-on: https://codeberg.org/jlmakiola/agendula/pulls/33
This commit is contained in:
Jean-Luc Makiola
2026-10-05 18:49:08 +02:00
committed by makiolaj
co-authored by makiolaj
parent 9630bd104d
commit 9a87837917
43 changed files with 2615 additions and 581 deletions
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Static mock shown in the widget picker (android:previewLayout); the live
widget is rendered by Glance. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@drawable/preview_widget_bg"
android:padding="6dp"
tools:ignore="HardcodedText">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="2dp"
android:background="@color/widget_preview_primary_container"
android:gravity="center"
android:text="M\n17\n2"
android:textColor="@color/widget_preview_on_primary_container"
android:textSize="11sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="2dp"
android:background="@color/widget_preview_surface"
android:gravity="center"
android:text="T\n18\n1"
android:textColor="@color/widget_preview_variant"
android:textSize="11sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="2dp"
android:background="@color/widget_preview_surface"
android:gravity="center"
android:text="W\n19\n·"
android:textColor="@color/widget_preview_variant"
android:textSize="11sp" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="2dp"
android:background="@color/widget_preview_surface"
android:gravity="center"
android:text="T\n20\n3"
android:textColor="@color/widget_preview_variant"
android:textSize="11sp" />
</LinearLayout>