feat(oxibadge): add month-confirmation flow and fetch records/employees
Check, format and test / build (push) Successful in 10m0s

Adds the screen after onboarding: pick a month/year (ConfirmMonth), show
loading screens while the device is queried, then download that month's
records and resolve each distinct employee's name, printing both to
stdout (debug pretty-print) before landing on the placeholder "done"
screen.

- r701: RecordIterator's boxed stream is now Send, required for it to
  cross into a Tauri command's future.
- oxibadge: load_records/load_employees commands, sharing the existing
  3-retry connect_with_retries helper. load_records uses skip_while/
  take_while on the device's newest-first stream to grab only the
  target month without walking its whole history, then a single
  collect + in-place Vec::reverse() back to chronological order.
- Shared LoadingScreen/Intro components extracted so future screens
  reuse the same look without duplicating markup/CSS.

Assisted-by: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 12:47:36 +02:00
parent 99772b9e4a
commit 28186c7745
14 changed files with 621 additions and 41 deletions
+19
View File
@@ -19,6 +19,25 @@
"unknown": "Connection error"
}
},
"confirm_month": {
"title": "Confirm the month",
"subtitle": "You're about to confirm this month's clock-ins. Tap the month or year to change them.",
"change_month_aria": "Month: {month}, change",
"change_year_aria": "Year: {year}, change",
"close_aria": "Close selection",
"choose_month_aria": "Choose the month",
"choose_year_aria": "Choose the year",
"month_option_aria": "{month} {year}",
"button": "Go to clock-ins"
},
"loading_records": {
"title": "Downloading clock-ins...",
"description": "Reading <strong>{period}</strong>'s clock-ins from the time clock. This can take a few seconds."
},
"loading_employees": {
"title": "Fetching employees...",
"description": "Reading the employee names registered on the time clock. Just a moment."
},
"done": {
"message": "Nothing to do here."
}