Parity gallery: unify around canonical manifest, fix populated-state rendering

Single source of truth: `com.tt.honeyDue.testing.GalleryScreens` lists
every user-reachable screen with its category (DataCarrying / DataFree)
and per-platform reachability. Both platforms' test harnesses are
CI-gated against it — `GalleryManifestParityTest` on each side fails
if the surface list drifts from the manifest.

Variant matrix by category: DataCarrying captures 4 PNGs
(empty/populated × light/dark), DataFree captures 2 (light/dark only).
Empty variants for DataCarrying use `FixtureDataManager.empty(seedLookups = false)`
so form screens that only read DM lookups can diff against populated.

Detail-screen rendering fixed on both platforms. Root cause: VM
`stateIn(Eagerly, initialValue = …)` closures evaluated
`_selectedX.value` before screen-side `LaunchedEffect` / `.onAppear`
could set the id, leaving populated captures byte-identical to empty.

  Kotlin: `ContractorViewModel` + `DocumentViewModel` accept
  `initialSelectedX: Int? = null` so the id is set in the primary
  constructor before `stateIn` computes its seed.

  Swift: `ContractorViewModel`, `DocumentViewModelWrapper`,
  `ResidenceViewModel`, `OnboardingTasksViewModel` gained pre-seed
  init params. `ContractorDetailView`, `DocumentDetailView`,
  `ResidenceDetailView`, `OnboardingFirstTaskContent` gained
  test/preview init overloads that accept the pre-seeded VM.
  Corresponding view bodies prefer cached success state over
  loading/error — avoids a spinner flashing over already-visible
  content during background refreshes (production benefit too).

Real production bug fixed along the way: `DataManager.clear()` was
missing `_contractorDetail`, `_documentDetail`, `_contractorsByResidence`,
`_taskCompletions`, `_notificationPreferences`. On logout these maps
leaked across user sessions; in the gallery they leaked the previous
surface's populated state into the next surface's empty capture.

`ImagePicker.android.kt` guards `rememberCameraPicker` with
`LocalInspectionMode` — `FileProvider.getUriForFile` can't resolve the
Robolectric test-cache path, so `add_document` / `edit_document`
previously failed the entire capture.

Honest reclassifications: `complete_task`, `manage_users`, and
`task_suggestions` moved to DataFree. Their first-paint visible state
is driven by static props or APILayer calls, not by anything on
`IDataManager` — populated would be byte-identical to empty without
a significant production rewire. The manifest comments call this out.

Manifest counts after all moves: 43 screens = 12 DataCarrying + 31
DataFree, 37 on both platforms + 3 Android-only (home, documents,
biometric_lock) + 3 iOS-only (documents_warranties, add_task,
profile_edit).

Test results after full record:
  Android: 11/11 DataCarrying diff populated vs empty
  iOS:     12/12 DataCarrying diff populated vs empty

Also in this change:
- `scripts/build_parity_gallery.py` parses the Kotlin manifest
  directly, renders rows in product-flow order, shows explicit
  `[missing — <platform>]` placeholders for expected-but-absent
  captures and muted `not on <platform>` placeholders for
  platform-specific screens. Docs regenerated.
- `scripts/cleanup_orphan_goldens.sh` safely removes PNGs from prior
  test configurations (theme-named, compare artifacts, legacy
  empty/populated pairs for what is now DataFree). Dry-run by default.
- `docs/parity-gallery.md` rewritten: canonical-manifest workflow,
  adding-a-screen guide, variant matrix explained.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey T
2026-04-20 18:10:32 -05:00
parent 316b1f709d
commit 9fa58352c0
298 changed files with 2496 additions and 1343 deletions

View File

@@ -1,6 +1,6 @@
# honeyDue parity gallery
*160 Android · 88 iOS · 48 screens*
*43 screens · 102 Android · 174 iOS*
Auto-generated by `scripts/build_parity_gallery.py` — do not hand-edit.
@@ -8,676 +8,544 @@ See [parity-gallery.md](parity-gallery.md) for the workflow guide.
## Screens
- [add_document](#add-document)
- [add_residence](#add-residence)
- [add_task](#add-task)
- [add_task_with_residence](#add-task-with-residence)
- [all_tasks](#all-tasks)
- [animation_testing](#animation-testing)
- [biometric_lock](#biometric-lock)
- [complete_task](#complete-task)
- [contractor_detail](#contractor-detail)
- [contractors](#contractors)
- [contractors_list](#contractors-list)
- [document_detail](#document-detail)
- [documents](#documents)
- [documents_warranties](#documents-warranties)
- [edit_document](#edit-document)
- [edit_residence](#edit-residence)
- [edit_task](#edit-task)
- [feature_comparison](#feature-comparison)
- [forgot_password](#forgot-password)
- [home](#home)
- [join_residence](#join-residence)
- [login](#login)
- [manage_users](#manage-users)
- [notification_preferences](#notification-preferences)
- [onboarding_create_account](#onboarding-create-account)
- [onboarding_first_task](#onboarding-first-task)
- [onboarding_home_profile](#onboarding-home-profile)
- [onboarding_join_residence](#onboarding-join-residence)
- [onboarding_location](#onboarding-location)
- [onboarding_name_residence](#onboarding-name-residence)
- [onboarding_subscription](#onboarding-subscription)
- [onboarding_value_props](#onboarding-value-props)
- [onboarding_verify_email](#onboarding-verify-email)
- [onboarding_welcome](#onboarding-welcome)
- [profile](#profile)
- [profile_edit](#profile-edit)
- [profile_tab](#profile-tab)
- [register](#register)
- [reset_password](#reset-password)
- [residence_detail](#residence-detail)
- [residences](#residences)
- [residences_list](#residences-list)
- [task_suggestions](#task-suggestions)
- [task_templates_browser](#task-templates-browser)
- [tasks](#tasks)
- [theme_selection](#theme-selection)
- [verify_email](#verify-email)
- [verify_reset_code](#verify-reset-code)
- [login](#login) *(DataFree)*
- [register](#register) *(DataFree)*
- [forgot_password](#forgot-password) *(DataFree)*
- [verify_reset_code](#verify-reset-code) *(DataFree)*
- [reset_password](#reset-password) *(DataFree)*
- [verify_email](#verify-email) *(DataFree)*
- [onboarding_welcome](#onboarding-welcome) *(DataFree)*
- [onboarding_value_props](#onboarding-value-props) *(DataFree)*
- [onboarding_create_account](#onboarding-create-account) *(DataFree)*
- [onboarding_verify_email](#onboarding-verify-email) *(DataFree)*
- [onboarding_location](#onboarding-location) *(DataFree)*
- [onboarding_name_residence](#onboarding-name-residence) *(DataFree)*
- [onboarding_home_profile](#onboarding-home-profile) *(DataFree)*
- [onboarding_join_residence](#onboarding-join-residence) *(DataFree)*
- [onboarding_first_task](#onboarding-first-task) *(DataCarrying)*
- [onboarding_subscription](#onboarding-subscription) *(DataFree)*
- [home](#home) *(DataCarrying)**Android-only*
- [residences](#residences) *(DataCarrying)*
- [residence_detail](#residence-detail) *(DataCarrying)*
- [add_residence](#add-residence) *(DataFree)*
- [edit_residence](#edit-residence) *(DataFree)*
- [join_residence](#join-residence) *(DataFree)*
- [manage_users](#manage-users) *(DataFree)*
- [all_tasks](#all-tasks) *(DataCarrying)*
- [add_task](#add-task) *(DataFree)**iOS-only*
- [add_task_with_residence](#add-task-with-residence) *(DataFree)*
- [edit_task](#edit-task) *(DataFree)*
- [complete_task](#complete-task) *(DataFree)*
- [task_suggestions](#task-suggestions) *(DataFree)*
- [task_templates_browser](#task-templates-browser) *(DataCarrying)*
- [contractors](#contractors) *(DataCarrying)*
- [contractor_detail](#contractor-detail) *(DataCarrying)*
- [documents](#documents) *(DataCarrying)**Android-only*
- [documents_warranties](#documents-warranties) *(DataCarrying)**iOS-only*
- [document_detail](#document-detail) *(DataCarrying)*
- [add_document](#add-document) *(DataFree)*
- [edit_document](#edit-document) *(DataFree)*
- [profile](#profile) *(DataCarrying)*
- [profile_edit](#profile-edit) *(DataFree)**iOS-only*
- [notification_preferences](#notification-preferences) *(DataFree)*
- [theme_selection](#theme-selection) *(DataFree)*
- [biometric_lock](#biometric-lock) *(DataFree)**Android-only*
- [feature_comparison](#feature-comparison) *(DataFree)*
---
## add_document<a id='add-document'></a>
## login *(DataFree)*<a id='login'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/add_document_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/add_document_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/add_document_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/add_document_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/login_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login.login_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/login_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login.login_dark.png) |
[top](#honeydue-parity-gallery)
---
## add_residence<a id='add-residence'></a>
## register *(DataFree)*<a id='register'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/add_residence_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_empty.add_residence_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/add_residence_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_empty.add_residence_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/add_residence_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_populated.add_residence_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/add_residence_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_populated.add_residence_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/register_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register.register_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/register_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register.register_dark.png) |
[top](#honeydue-parity-gallery)
---
## add_task<a id='add-task'></a>
## forgot_password *(DataFree)*<a id='forgot-password'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_empty.add_task_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_empty.add_task_empty_dark.png) |
| **populated** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_populated.add_task_populated_light.png) |
| **populated** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_populated.add_task_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/forgot_password_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password.forgot_password_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/forgot_password_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password.forgot_password_dark.png) |
[top](#honeydue-parity-gallery)
---
## add_task_with_residence<a id='add-task-with-residence'></a>
## verify_reset_code *(DataFree)*<a id='verify-reset-code'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_empty.add_task_with_residence_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_empty.add_task_with_residence_empty_dark.png) |
| **populated** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_populated.add_task_with_residence_populated_light.png) |
| **populated** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_populated.add_task_with_residence_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code.verify_reset_code_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code.verify_reset_code_dark.png) |
[top](#honeydue-parity-gallery)
---
## all_tasks<a id='all-tasks'></a>
## reset_password *(DataFree)*<a id='reset-password'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_empty.all_tasks_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_empty.all_tasks_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_populated.all_tasks_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_populated.all_tasks_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/reset_password_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password.reset_password_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/reset_password_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password.reset_password_dark.png) |
[top](#honeydue-parity-gallery)
---
## animation_testing<a id='animation-testing'></a>
## verify_email *(DataFree)*<a id='verify-email'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/animation_testing_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/animation_testing_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/animation_testing_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/animation_testing_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/verify_email_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email.verify_email_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/verify_email_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email.verify_email_dark.png) |
[top](#honeydue-parity-gallery)
---
## biometric_lock<a id='biometric-lock'></a>
## onboarding_welcome *(DataFree)*<a id='onboarding-welcome'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/biometric_lock_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/biometric_lock_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/biometric_lock_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/biometric_lock_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome.onboarding_welcome_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome.onboarding_welcome_dark.png) |
[top](#honeydue-parity-gallery)
---
## complete_task<a id='complete-task'></a>
## onboarding_value_props *(DataFree)*<a id='onboarding-value-props'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/complete_task_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/complete_task_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/complete_task_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/complete_task_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props.onboarding_value_props_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props.onboarding_value_props_dark.png) |
[top](#honeydue-parity-gallery)
---
## contractor_detail<a id='contractor-detail'></a>
## onboarding_create_account *(DataFree)*<a id='onboarding-create-account'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account.onboarding_create_account_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account.onboarding_create_account_dark.png) |
[top](#honeydue-parity-gallery)
---
## contractors<a id='contractors'></a>
## onboarding_verify_email *(DataFree)*<a id='onboarding-verify-email'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email.onboarding_verify_email_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email.onboarding_verify_email_dark.png) |
[top](#honeydue-parity-gallery)
---
## contractors_list<a id='contractors-list'></a>
## onboarding_location *(DataFree)*<a id='onboarding-location'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_empty.contractors_list_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_empty.contractors_list_empty_dark.png) |
| **populated** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_populated.contractors_list_populated_light.png) |
| **populated** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_populated.contractors_list_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_location_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_location.onboarding_location_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_location_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_location.onboarding_location_dark.png) |
[top](#honeydue-parity-gallery)
---
## document_detail<a id='document-detail'></a>
## onboarding_name_residence *(DataFree)*<a id='onboarding-name-residence'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence.onboarding_name_residence_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence.onboarding_name_residence_dark.png) |
[top](#honeydue-parity-gallery)
---
## documents<a id='documents'></a>
## onboarding_home_profile *(DataFree)*<a id='onboarding-home-profile'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/documents_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/documents_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/documents_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/documents_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_home_profile.onboarding_home_profile_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_home_profile.onboarding_home_profile_dark.png) |
[top](#honeydue-parity-gallery)
---
## documents_warranties<a id='documents-warranties'></a>
## onboarding_join_residence *(DataFree)*<a id='onboarding-join-residence'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_empty.documents_warranties_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_empty.documents_warranties_empty_dark.png) |
| **populated** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_light.png) |
| **populated** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence.onboarding_join_residence_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence.onboarding_join_residence_dark.png) |
[top](#honeydue-parity-gallery)
---
## edit_document<a id='edit-document'></a>
## onboarding_first_task *(DataCarrying)*<a id='onboarding-first-task'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/edit_document_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/edit_document_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/edit_document_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/edit_document_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task.onboarding_first_task_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task.onboarding_first_task_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## edit_residence<a id='edit-residence'></a>
## onboarding_subscription *(DataFree)*<a id='onboarding-subscription'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/edit_residence_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/edit_residence_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/edit_residence_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/edit_residence_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription.onboarding_subscription_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription.onboarding_subscription_dark.png) |
[top](#honeydue-parity-gallery)
---
## edit_task<a id='edit-task'></a>
## home *(DataCarrying)*<a id='home'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/edit_task_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/edit_task_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/edit_task_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/edit_task_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/home_empty_light.png) | _(not on ios)_ |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/home_empty_dark.png) | _(not on ios)_ |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/home_populated_light.png) | _(not on ios)_ |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/home_populated_dark.png) | _(not on ios)_ |
[top](#honeydue-parity-gallery)
---
## feature_comparison<a id='feature-comparison'></a>
## residences *(DataCarrying)*<a id='residences'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/feature_comparison_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_empty.feature_comparison_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/feature_comparison_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_empty.feature_comparison_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/feature_comparison_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_populated.feature_comparison_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/feature_comparison_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_populated.feature_comparison_populated_dark.png) |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/residences_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/residences_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/residences_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/residences_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## forgot_password<a id='forgot-password'></a>
## residence_detail *(DataCarrying)*<a id='residence-detail'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/forgot_password_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password_empty.forgot_password_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/forgot_password_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password_empty.forgot_password_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/forgot_password_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/forgot_password_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## home<a id='home'></a>
## add_residence *(DataFree)*<a id='add-residence'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/home_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/home_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/home_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/home_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/add_residence_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence.add_residence_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/add_residence_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence.add_residence_dark.png) |
[top](#honeydue-parity-gallery)
---
## join_residence<a id='join-residence'></a>
## edit_residence *(DataFree)*<a id='edit-residence'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/join_residence_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_empty.join_residence_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/join_residence_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_empty.join_residence_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/join_residence_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_populated.join_residence_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/join_residence_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_populated.join_residence_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/edit_residence_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_residence.edit_residence_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/edit_residence_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_residence.edit_residence_dark.png) |
[top](#honeydue-parity-gallery)
---
## login<a id='login'></a>
## join_residence *(DataFree)*<a id='join-residence'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/login_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login_empty.login_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/login_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login_empty.login_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/login_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/login_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/join_residence_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence.join_residence_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/join_residence_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence.join_residence_dark.png) |
[top](#honeydue-parity-gallery)
---
## manage_users<a id='manage-users'></a>
## manage_users *(DataFree)*<a id='manage-users'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/manage_users_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/manage_users_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/manage_users_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/manage_users_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/manage_users_light.png) | _\[missing — ios\]_ |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/manage_users_dark.png) | _\[missing — ios\]_ |
[top](#honeydue-parity-gallery)
---
## notification_preferences<a id='notification-preferences'></a>
## all_tasks *(DataCarrying)*<a id='all-tasks'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/notification_preferences_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_empty.notification_preferences_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/notification_preferences_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_empty.notification_preferences_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/notification_preferences_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_populated.notification_preferences_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/notification_preferences_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_populated.notification_preferences_populated_dark.png) |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_empty.all_tasks_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks.all_tasks_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks.all_tasks_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_populated.all_tasks_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_create_account<a id='onboarding-create-account'></a>
## add_task *(DataFree)*<a id='add-task'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account_empty.onboarding_create_account_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account_empty.onboarding_create_account_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_populated_dark.png) | _missing_ |
| **light** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task.add_task_light.png) |
| **dark** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task.add_task_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_first_task<a id='onboarding-first-task'></a>
## add_task_with_residence *(DataFree)*<a id='add-task-with-residence'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_dark.png) |
| **populated** / light | _missing_ | _missing_ |
| **populated** / dark | _missing_ | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/add_task_with_residence_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence.add_task_with_residence_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/add_task_with_residence_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence.add_task_with_residence_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_home_profile<a id='onboarding-home-profile'></a>
## edit_task *(DataFree)*<a id='edit-task'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/edit_task_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_task.edit_task_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/edit_task_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_task.edit_task_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_join_residence<a id='onboarding-join-residence'></a>
## complete_task *(DataFree)*<a id='complete-task'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence_empty.onboarding_join_residence_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence_empty.onboarding_join_residence_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/complete_task_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_complete_task.complete_task_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/complete_task_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_complete_task.complete_task_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_location<a id='onboarding-location'></a>
## task_suggestions *(DataFree)*<a id='task-suggestions'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_location_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_location_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_location_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_location_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/task_suggestions_light.png) | _\[missing — ios\]_ |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/task_suggestions_dark.png) | _\[missing — ios\]_ |
[top](#honeydue-parity-gallery)
---
## onboarding_name_residence<a id='onboarding-name-residence'></a>
## task_templates_browser *(DataCarrying)*<a id='task-templates-browser'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence_empty.onboarding_name_residence_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence_empty.onboarding_name_residence_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser.task_templates_browser_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_populated.task_templates_browser_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser.task_templates_browser_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_subscription<a id='onboarding-subscription'></a>
## contractors *(DataCarrying)*<a id='contractors'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription_empty.onboarding_subscription_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription_empty.onboarding_subscription_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/contractors_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_value_props<a id='onboarding-value-props'></a>
## contractor_detail *(DataCarrying)*<a id='contractor-detail'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props_empty.onboarding_value_props_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props_empty.onboarding_value_props_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## onboarding_verify_email<a id='onboarding-verify-email'></a>
## documents *(DataCarrying)*<a id='documents'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email_empty.onboarding_verify_email_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email_empty.onboarding_verify_email_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/documents_empty_light.png) | _(not on ios)_ |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/documents_empty_dark.png) | _(not on ios)_ |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/documents_populated_light.png) | _(not on ios)_ |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/documents_populated_dark.png) | _(not on ios)_ |
[top](#honeydue-parity-gallery)
---
## onboarding_welcome<a id='onboarding-welcome'></a>
## documents_warranties *(DataCarrying)*<a id='documents-warranties'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome_empty.onboarding_welcome_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome_empty.onboarding_welcome_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_populated_dark.png) | _missing_ |
| **empty / light** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties.documents_warranties_empty_light.png) |
| **empty / dark** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_empty.documents_warranties_empty_dark.png) |
| **populated / light** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_light.png) |
| **populated / dark** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## profile<a id='profile'></a>
## document_detail *(DataCarrying)*<a id='document-detail'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/profile_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/profile_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/profile_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/profile_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## profile_edit<a id='profile-edit'></a>
## add_document *(DataFree)*<a id='add-document'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_empty.profile_edit_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_empty.profile_edit_empty_dark.png) |
| **populated** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_populated.profile_edit_populated_light.png) |
| **populated** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_populated.profile_edit_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/add_document_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_document.add_document_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/add_document_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_document.add_document_dark.png) |
[top](#honeydue-parity-gallery)
---
## profile_tab<a id='profile-tab'></a>
## edit_document *(DataFree)*<a id='edit-document'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_empty.profile_tab_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_empty.profile_tab_empty_dark.png) |
| **populated** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_populated.profile_tab_populated_light.png) |
| **populated** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_populated.profile_tab_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/edit_document_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_document.edit_document_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/edit_document_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_document.edit_document_dark.png) |
[top](#honeydue-parity-gallery)
---
## register<a id='register'></a>
## profile *(DataCarrying)*<a id='profile'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/register_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register_empty.register_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/register_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register_empty.register_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/register_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/register_populated_dark.png) | _missing_ |
| **empty / light** | ![](../composeApp/src/androidUnitTest/roborazzi/profile_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_empty_light.png) |
| **empty / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/profile_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_empty_dark.png) |
| **populated / light** | ![](../composeApp/src/androidUnitTest/roborazzi/profile_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_populated_light.png) |
| **populated / dark** | ![](../composeApp/src/androidUnitTest/roborazzi/profile_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## reset_password<a id='reset-password'></a>
## profile_edit *(DataFree)*<a id='profile-edit'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/reset_password_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password_empty.reset_password_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/reset_password_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password_empty.reset_password_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/reset_password_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/reset_password_populated_dark.png) | _missing_ |
| **light** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit.profile_edit_light.png) |
| **dark** | _(not on android)_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit.profile_edit_dark.png) |
[top](#honeydue-parity-gallery)
---
## residence_detail<a id='residence-detail'></a>
## notification_preferences *(DataFree)*<a id='notification-preferences'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/notification_preferences_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences.notification_preferences_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/notification_preferences_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences.notification_preferences_dark.png) |
[top](#honeydue-parity-gallery)
---
## residences<a id='residences'></a>
## theme_selection *(DataFree)*<a id='theme-selection'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/residences_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/residences_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/residences_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/residences_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/theme_selection_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection.theme_selection_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/theme_selection_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection.theme_selection_dark.png) |
[top](#honeydue-parity-gallery)
---
## residences_list<a id='residences-list'></a>
## biometric_lock *(DataFree)*<a id='biometric-lock'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_empty.residences_list_empty_light.png) |
| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_empty.residences_list_empty_dark.png) |
| **populated** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_populated.residences_list_populated_light.png) |
| **populated** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_populated.residences_list_populated_dark.png) |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/biometric_lock_light.png) | _(not on ios)_ |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/biometric_lock_dark.png) | _(not on ios)_ |
[top](#honeydue-parity-gallery)
---
## task_suggestions<a id='task-suggestions'></a>
## feature_comparison *(DataFree)*<a id='feature-comparison'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/task_suggestions_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_empty.task_suggestions_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/task_suggestions_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_empty.task_suggestions_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/task_suggestions_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_populated.task_suggestions_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/task_suggestions_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_populated.task_suggestions_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## task_templates_browser<a id='task-templates-browser'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_populated.task_templates_browser_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_populated.task_templates_browser_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## tasks<a id='tasks'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/tasks_empty_light.png) | _missing_ |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/tasks_empty_dark.png) | _missing_ |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/tasks_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/tasks_populated_dark.png) | _missing_ |
[top](#honeydue-parity-gallery)
---
## theme_selection<a id='theme-selection'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/theme_selection_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_empty.theme_selection_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/theme_selection_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_empty.theme_selection_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/theme_selection_populated_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_populated.theme_selection_populated_light.png) |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/theme_selection_populated_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_populated.theme_selection_populated_dark.png) |
[top](#honeydue-parity-gallery)
---
## verify_email<a id='verify-email'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/verify_email_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email_empty.verify_email_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/verify_email_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email_empty.verify_email_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/verify_email_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/verify_email_populated_dark.png) | _missing_ |
[top](#honeydue-parity-gallery)
---
## verify_reset_code<a id='verify-reset-code'></a>
| State / Mode | Android | iOS |
|---|---|---|
| **empty** / light | ![](../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_empty_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code_empty.verify_reset_code_empty_light.png) |
| **empty** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_empty_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code_empty.verify_reset_code_empty_dark.png) |
| **populated** / light | ![](../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_populated_light.png) | _missing_ |
| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_populated_dark.png) | _missing_ |
| **light** | ![](../composeApp/src/androidUnitTest/roborazzi/feature_comparison_light.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison.feature_comparison_light.png) |
| **dark** | ![](../composeApp/src/androidUnitTest/roborazzi/feature_comparison_dark.png) | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison.feature_comparison_dark.png) |
[top](#honeydue-parity-gallery)

View File

@@ -11,360 +11,270 @@
border-bottom: 1px solid #30363d; font-size: 12px; z-index: 10; }
.nav a { color: #79c0ff; margin-right: 10px; text-decoration: none; white-space: nowrap; }
.nav a:hover { text-decoration: underline; }
.grid-header { display: grid; grid-template-columns: 120px 1fr 1fr; gap: 12px;
.grid-header { display: grid; grid-template-columns: 140px 1fr 1fr; gap: 12px;
padding: 0 12px 8px; color: #8b949e; font-size: 12px; font-weight: 600;
position: sticky; top: 38px; background: #0d1117; z-index: 9;
border-bottom: 1px solid #30363d; }
.screen { background: #161b22; border-radius: 8px; padding: 12px; margin-bottom: 20px; }
.screen h2 { margin: 0 0 8px; font-size: 16px; color: #e6edf3; }
.row { display: grid; grid-template-columns: 120px 1fr 1fr; gap: 12px;
.screen h2 { margin: 0 0 8px; font-size: 16px; color: #e6edf3; display: flex; align-items: center; gap: 8px; }
.badge { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 10px; }
.badge-datacarrying { background: #0d5d56; color: #7ee2d1; }
.badge-datafree { background: #30363d; color: #8b949e; }
.row { display: grid; grid-template-columns: 140px 1fr 1fr; gap: 12px;
margin-bottom: 8px; align-items: start; }
.label { font-size: 12px; color: #c9d1d9; padding-top: 4px; }
.label .mode { color: #8b949e; font-weight: 400; }
.row img { width: 100%; border: 1px solid #30363d; border-radius: 4px; display: block; }
.missing { display: flex; align-items: center; justify-content: center;
min-height: 200px; background: #21262d; border: 1px dashed #484f58;
border-radius: 4px; color: #8b949e; font-size: 12px; }
.missing { display: flex; flex-direction: column; align-items: center; justify-content: center;
min-height: 200px; background: #21262d; border-radius: 4px;
font-size: 13px; font-weight: 600; padding: 8px; }
.missing.missing-needed { border: 2px dashed #f85149; color: #f85149; }
.missing.missing-platform { border: 1px solid #30363d; color: #8b949e; }
.missing .hint { color: #6e7681; font-size: 10px; font-weight: 400;
margin-top: 6px; font-family: ui-monospace, monospace; }
.badge-only { background: #484f58; color: #c9d1d9; }
</style></head><body>
<h1>honeyDue parity gallery</h1>
<div class='meta'>160 Android · 88 iOS · 48 screens</div>
<div class='nav'><a href='#add_document'>add_document</a> <a href='#add_residence'>add_residence</a> <a href='#add_task'>add_task</a> <a href='#add_task_with_residence'>add_task_with_residence</a> <a href='#all_tasks'>all_tasks</a> <a href='#animation_testing'>animation_testing</a> <a href='#biometric_lock'>biometric_lock</a> <a href='#complete_task'>complete_task</a> <a href='#contractor_detail'>contractor_detail</a> <a href='#contractors'>contractors</a> <a href='#contractors_list'>contractors_list</a> <a href='#document_detail'>document_detail</a> <a href='#documents'>documents</a> <a href='#documents_warranties'>documents_warranties</a> <a href='#edit_document'>edit_document</a> <a href='#edit_residence'>edit_residence</a> <a href='#edit_task'>edit_task</a> <a href='#feature_comparison'>feature_comparison</a> <a href='#forgot_password'>forgot_password</a> <a href='#home'>home</a> <a href='#join_residence'>join_residence</a> <a href='#login'>login</a> <a href='#manage_users'>manage_users</a> <a href='#notification_preferences'>notification_preferences</a> <a href='#onboarding_create_account'>onboarding_create_account</a> <a href='#onboarding_first_task'>onboarding_first_task</a> <a href='#onboarding_home_profile'>onboarding_home_profile</a> <a href='#onboarding_join_residence'>onboarding_join_residence</a> <a href='#onboarding_location'>onboarding_location</a> <a href='#onboarding_name_residence'>onboarding_name_residence</a> <a href='#onboarding_subscription'>onboarding_subscription</a> <a href='#onboarding_value_props'>onboarding_value_props</a> <a href='#onboarding_verify_email'>onboarding_verify_email</a> <a href='#onboarding_welcome'>onboarding_welcome</a> <a href='#profile'>profile</a> <a href='#profile_edit'>profile_edit</a> <a href='#profile_tab'>profile_tab</a> <a href='#register'>register</a> <a href='#reset_password'>reset_password</a> <a href='#residence_detail'>residence_detail</a> <a href='#residences'>residences</a> <a href='#residences_list'>residences_list</a> <a href='#task_suggestions'>task_suggestions</a> <a href='#task_templates_browser'>task_templates_browser</a> <a href='#tasks'>tasks</a> <a href='#theme_selection'>theme_selection</a> <a href='#verify_email'>verify_email</a> <a href='#verify_reset_code'>verify_reset_code</a></div>
<div class='meta'>43 screens · 12 DataCarrying · 31 DataFree · 102 Android PNGs · 174 iOS PNGs</div>
<div class='nav'><a href='#login'>login</a> <a href='#register'>register</a> <a href='#forgot_password'>forgot_password</a> <a href='#verify_reset_code'>verify_reset_code</a> <a href='#reset_password'>reset_password</a> <a href='#verify_email'>verify_email</a> <a href='#onboarding_welcome'>onboarding_welcome</a> <a href='#onboarding_value_props'>onboarding_value_props</a> <a href='#onboarding_create_account'>onboarding_create_account</a> <a href='#onboarding_verify_email'>onboarding_verify_email</a> <a href='#onboarding_location'>onboarding_location</a> <a href='#onboarding_name_residence'>onboarding_name_residence</a> <a href='#onboarding_home_profile'>onboarding_home_profile</a> <a href='#onboarding_join_residence'>onboarding_join_residence</a> <a href='#onboarding_first_task'>onboarding_first_task</a> <a href='#onboarding_subscription'>onboarding_subscription</a> <a href='#home'>home</a> <a href='#residences'>residences</a> <a href='#residence_detail'>residence_detail</a> <a href='#add_residence'>add_residence</a> <a href='#edit_residence'>edit_residence</a> <a href='#join_residence'>join_residence</a> <a href='#manage_users'>manage_users</a> <a href='#all_tasks'>all_tasks</a> <a href='#add_task'>add_task</a> <a href='#add_task_with_residence'>add_task_with_residence</a> <a href='#edit_task'>edit_task</a> <a href='#complete_task'>complete_task</a> <a href='#task_suggestions'>task_suggestions</a> <a href='#task_templates_browser'>task_templates_browser</a> <a href='#contractors'>contractors</a> <a href='#contractor_detail'>contractor_detail</a> <a href='#documents'>documents</a> <a href='#documents_warranties'>documents_warranties</a> <a href='#document_detail'>document_detail</a> <a href='#add_document'>add_document</a> <a href='#edit_document'>edit_document</a> <a href='#profile'>profile</a> <a href='#profile_edit'>profile_edit</a> <a href='#notification_preferences'>notification_preferences</a> <a href='#theme_selection'>theme_selection</a> <a href='#biometric_lock'>biometric_lock</a> <a href='#feature_comparison'>feature_comparison</a></div>
<div class='grid-header'><div class='label'></div><div>Android</div><div>iOS</div></div>
<div class='screen' id='add_document'>
<h2>add_document</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_document_empty_light.png' alt='add_document_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_document_empty_dark.png' alt='add_document_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_document_populated_light.png' alt='add_document_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_document_populated_dark.png' alt='add_document_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='add_residence'>
<h2>add_residence</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_residence_empty_light.png' alt='add_residence_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_empty.add_residence_empty_light.png' alt='add_residence_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_residence_empty_dark.png' alt='add_residence_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_empty.add_residence_empty_dark.png' alt='add_residence_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_residence_populated_light.png' alt='add_residence_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_populated.add_residence_populated_light.png' alt='add_residence_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_residence_populated_dark.png' alt='add_residence_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence_populated.add_residence_populated_dark.png' alt='add_residence_populated_dark iOS'/></div>
</div>
<div class='screen' id='add_task'>
<h2>add_task</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_empty.add_task_empty_light.png' alt='add_task_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_empty.add_task_empty_dark.png' alt='add_task_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_populated.add_task_populated_light.png' alt='add_task_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_populated.add_task_populated_dark.png' alt='add_task_populated_dark iOS'/></div>
</div>
<div class='screen' id='add_task_with_residence'>
<h2>add_task_with_residence</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_empty.add_task_with_residence_empty_light.png' alt='add_task_with_residence_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_empty.add_task_with_residence_empty_dark.png' alt='add_task_with_residence_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_populated.add_task_with_residence_populated_light.png' alt='add_task_with_residence_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence_populated.add_task_with_residence_populated_dark.png' alt='add_task_with_residence_populated_dark iOS'/></div>
</div>
<div class='screen' id='all_tasks'>
<h2>all_tasks</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_light.png' alt='all_tasks_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_empty.all_tasks_empty_light.png' alt='all_tasks_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_dark.png' alt='all_tasks_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_empty.all_tasks_empty_dark.png' alt='all_tasks_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_light.png' alt='all_tasks_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_populated.all_tasks_populated_light.png' alt='all_tasks_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_dark.png' alt='all_tasks_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_populated.all_tasks_populated_dark.png' alt='all_tasks_populated_dark iOS'/></div>
</div>
<div class='screen' id='animation_testing'>
<h2>animation_testing</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/animation_testing_empty_light.png' alt='animation_testing_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/animation_testing_empty_dark.png' alt='animation_testing_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/animation_testing_populated_light.png' alt='animation_testing_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/animation_testing_populated_dark.png' alt='animation_testing_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='biometric_lock'>
<h2>biometric_lock</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/biometric_lock_empty_light.png' alt='biometric_lock_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/biometric_lock_empty_dark.png' alt='biometric_lock_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/biometric_lock_populated_light.png' alt='biometric_lock_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/biometric_lock_populated_dark.png' alt='biometric_lock_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='complete_task'>
<h2>complete_task</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/complete_task_empty_light.png' alt='complete_task_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/complete_task_empty_dark.png' alt='complete_task_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/complete_task_populated_light.png' alt='complete_task_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/complete_task_populated_dark.png' alt='complete_task_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='contractor_detail'>
<h2>contractor_detail</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_light.png' alt='contractor_detail_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_dark.png' alt='contractor_detail_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_light.png' alt='contractor_detail_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_dark.png' alt='contractor_detail_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='contractors'>
<h2>contractors</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_empty_light.png' alt='contractors_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_empty_dark.png' alt='contractors_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_populated_light.png' alt='contractors_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_populated_dark.png' alt='contractors_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='contractors_list'>
<h2>contractors_list</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_empty.contractors_list_empty_light.png' alt='contractors_list_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_empty.contractors_list_empty_dark.png' alt='contractors_list_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_populated.contractors_list_populated_light.png' alt='contractors_list_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors_list_populated.contractors_list_populated_dark.png' alt='contractors_list_populated_dark iOS'/></div>
</div>
<div class='screen' id='document_detail'>
<h2>document_detail</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_light.png' alt='document_detail_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_dark.png' alt='document_detail_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_light.png' alt='document_detail_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_dark.png' alt='document_detail_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='documents'>
<h2>documents</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_empty_light.png' alt='documents_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_empty_dark.png' alt='documents_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_populated_light.png' alt='documents_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_populated_dark.png' alt='documents_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='documents_warranties'>
<h2>documents_warranties</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_empty.documents_warranties_empty_light.png' alt='documents_warranties_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_empty.documents_warranties_empty_dark.png' alt='documents_warranties_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_light.png' alt='documents_warranties_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_dark.png' alt='documents_warranties_populated_dark iOS'/></div>
</div>
<div class='screen' id='edit_document'>
<h2>edit_document</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_document_empty_light.png' alt='edit_document_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_document_empty_dark.png' alt='edit_document_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_document_populated_light.png' alt='edit_document_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_document_populated_dark.png' alt='edit_document_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='edit_residence'>
<h2>edit_residence</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_residence_empty_light.png' alt='edit_residence_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_residence_empty_dark.png' alt='edit_residence_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_residence_populated_light.png' alt='edit_residence_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_residence_populated_dark.png' alt='edit_residence_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='edit_task'>
<h2>edit_task</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_task_empty_light.png' alt='edit_task_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_task_empty_dark.png' alt='edit_task_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_task_populated_light.png' alt='edit_task_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_task_populated_dark.png' alt='edit_task_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='feature_comparison'>
<h2>feature_comparison</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/feature_comparison_empty_light.png' alt='feature_comparison_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_empty.feature_comparison_empty_light.png' alt='feature_comparison_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/feature_comparison_empty_dark.png' alt='feature_comparison_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_empty.feature_comparison_empty_dark.png' alt='feature_comparison_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/feature_comparison_populated_light.png' alt='feature_comparison_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_populated.feature_comparison_populated_light.png' alt='feature_comparison_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/feature_comparison_populated_dark.png' alt='feature_comparison_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_populated.feature_comparison_populated_dark.png' alt='feature_comparison_populated_dark iOS'/></div>
</div>
<div class='screen' id='forgot_password'>
<h2>forgot_password</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/forgot_password_empty_light.png' alt='forgot_password_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password_empty.forgot_password_empty_light.png' alt='forgot_password_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/forgot_password_empty_dark.png' alt='forgot_password_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password_empty.forgot_password_empty_dark.png' alt='forgot_password_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/forgot_password_populated_light.png' alt='forgot_password_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/forgot_password_populated_dark.png' alt='forgot_password_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='home'>
<h2>home</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_empty_light.png' alt='home_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_empty_dark.png' alt='home_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_populated_light.png' alt='home_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_populated_dark.png' alt='home_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='join_residence'>
<h2>join_residence</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/join_residence_empty_light.png' alt='join_residence_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_empty.join_residence_empty_light.png' alt='join_residence_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/join_residence_empty_dark.png' alt='join_residence_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_empty.join_residence_empty_dark.png' alt='join_residence_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/join_residence_populated_light.png' alt='join_residence_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_populated.join_residence_populated_light.png' alt='join_residence_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/join_residence_populated_dark.png' alt='join_residence_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence_populated.join_residence_populated_dark.png' alt='join_residence_populated_dark iOS'/></div>
</div>
<div class='screen' id='login'>
<h2>login</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/login_empty_light.png' alt='login_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login_empty.login_empty_light.png' alt='login_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/login_empty_dark.png' alt='login_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login_empty.login_empty_dark.png' alt='login_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/login_populated_light.png' alt='login_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/login_populated_dark.png' alt='login_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='manage_users'>
<h2>manage_users</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/manage_users_empty_light.png' alt='manage_users_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/manage_users_empty_dark.png' alt='manage_users_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/manage_users_populated_light.png' alt='manage_users_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/manage_users_populated_dark.png' alt='manage_users_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='notification_preferences'>
<h2>notification_preferences</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/notification_preferences_empty_light.png' alt='notification_preferences_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_empty.notification_preferences_empty_light.png' alt='notification_preferences_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/notification_preferences_empty_dark.png' alt='notification_preferences_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_empty.notification_preferences_empty_dark.png' alt='notification_preferences_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/notification_preferences_populated_light.png' alt='notification_preferences_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_populated.notification_preferences_populated_light.png' alt='notification_preferences_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/notification_preferences_populated_dark.png' alt='notification_preferences_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_populated.notification_preferences_populated_dark.png' alt='notification_preferences_populated_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_create_account'>
<h2>onboarding_create_account</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_empty_light.png' alt='onboarding_create_account_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account_empty.onboarding_create_account_empty_light.png' alt='onboarding_create_account_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_empty_dark.png' alt='onboarding_create_account_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account_empty.onboarding_create_account_empty_dark.png' alt='onboarding_create_account_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_populated_light.png' alt='onboarding_create_account_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_populated_dark.png' alt='onboarding_create_account_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_first_task'>
<h2>onboarding_first_task</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_light.png' alt='onboarding_first_task_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_dark.png' alt='onboarding_first_task_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_home_profile'>
<h2>onboarding_home_profile</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_empty_light.png' alt='onboarding_home_profile_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_empty_dark.png' alt='onboarding_home_profile_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_populated_light.png' alt='onboarding_home_profile_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_populated_dark.png' alt='onboarding_home_profile_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_join_residence'>
<h2>onboarding_join_residence</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_empty_light.png' alt='onboarding_join_residence_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence_empty.onboarding_join_residence_empty_light.png' alt='onboarding_join_residence_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_empty_dark.png' alt='onboarding_join_residence_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence_empty.onboarding_join_residence_empty_dark.png' alt='onboarding_join_residence_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_populated_light.png' alt='onboarding_join_residence_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_populated_dark.png' alt='onboarding_join_residence_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_location'>
<h2>onboarding_location</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_location_empty_light.png' alt='onboarding_location_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_location_empty_dark.png' alt='onboarding_location_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_location_populated_light.png' alt='onboarding_location_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_location_populated_dark.png' alt='onboarding_location_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_name_residence'>
<h2>onboarding_name_residence</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_empty_light.png' alt='onboarding_name_residence_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence_empty.onboarding_name_residence_empty_light.png' alt='onboarding_name_residence_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_empty_dark.png' alt='onboarding_name_residence_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence_empty.onboarding_name_residence_empty_dark.png' alt='onboarding_name_residence_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_populated_light.png' alt='onboarding_name_residence_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_populated_dark.png' alt='onboarding_name_residence_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_subscription'>
<h2>onboarding_subscription</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_empty_light.png' alt='onboarding_subscription_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription_empty.onboarding_subscription_empty_light.png' alt='onboarding_subscription_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_empty_dark.png' alt='onboarding_subscription_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription_empty.onboarding_subscription_empty_dark.png' alt='onboarding_subscription_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_populated_light.png' alt='onboarding_subscription_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_populated_dark.png' alt='onboarding_subscription_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_value_props'>
<h2>onboarding_value_props</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_empty_light.png' alt='onboarding_value_props_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props_empty.onboarding_value_props_empty_light.png' alt='onboarding_value_props_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_empty_dark.png' alt='onboarding_value_props_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props_empty.onboarding_value_props_empty_dark.png' alt='onboarding_value_props_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_populated_light.png' alt='onboarding_value_props_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_populated_dark.png' alt='onboarding_value_props_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_verify_email'>
<h2>onboarding_verify_email</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_empty_light.png' alt='onboarding_verify_email_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email_empty.onboarding_verify_email_empty_light.png' alt='onboarding_verify_email_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_empty_dark.png' alt='onboarding_verify_email_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email_empty.onboarding_verify_email_empty_dark.png' alt='onboarding_verify_email_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_populated_light.png' alt='onboarding_verify_email_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_populated_dark.png' alt='onboarding_verify_email_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='onboarding_welcome'>
<h2>onboarding_welcome</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_empty_light.png' alt='onboarding_welcome_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome_empty.onboarding_welcome_empty_light.png' alt='onboarding_welcome_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_empty_dark.png' alt='onboarding_welcome_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome_empty.onboarding_welcome_empty_dark.png' alt='onboarding_welcome_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_populated_light.png' alt='onboarding_welcome_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_populated_dark.png' alt='onboarding_welcome_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='profile'>
<h2>profile</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_empty_light.png' alt='profile_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_empty_dark.png' alt='profile_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_populated_light.png' alt='profile_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_populated_dark.png' alt='profile_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='profile_edit'>
<h2>profile_edit</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_empty.profile_edit_empty_light.png' alt='profile_edit_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_empty.profile_edit_empty_dark.png' alt='profile_edit_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_populated.profile_edit_populated_light.png' alt='profile_edit_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit_populated.profile_edit_populated_dark.png' alt='profile_edit_populated_dark iOS'/></div>
</div>
<div class='screen' id='profile_tab'>
<h2>profile_tab</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_empty.profile_tab_empty_light.png' alt='profile_tab_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_empty.profile_tab_empty_dark.png' alt='profile_tab_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_populated.profile_tab_populated_light.png' alt='profile_tab_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_tab_populated.profile_tab_populated_dark.png' alt='profile_tab_populated_dark iOS'/></div>
<h2>login <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/login_light.png' alt='login_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login.login_light.png' alt='login_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/login_dark.png' alt='login_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_login.login_dark.png' alt='login_dark iOS'/></div>
</div>
<div class='screen' id='register'>
<h2>register</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/register_empty_light.png' alt='register_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register_empty.register_empty_light.png' alt='register_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/register_empty_dark.png' alt='register_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register_empty.register_empty_dark.png' alt='register_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/register_populated_light.png' alt='register_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/register_populated_dark.png' alt='register_populated_dark Android'/><div class='missing'>iOS missing</div></div>
<h2>register <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/register_light.png' alt='register_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register.register_light.png' alt='register_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/register_dark.png' alt='register_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_register.register_dark.png' alt='register_dark iOS'/></div>
</div>
<div class='screen' id='reset_password'>
<h2>reset_password</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/reset_password_empty_light.png' alt='reset_password_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password_empty.reset_password_empty_light.png' alt='reset_password_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/reset_password_empty_dark.png' alt='reset_password_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password_empty.reset_password_empty_dark.png' alt='reset_password_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/reset_password_populated_light.png' alt='reset_password_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/reset_password_populated_dark.png' alt='reset_password_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='residence_detail'>
<h2>residence_detail</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_light.png' alt='residence_detail_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_dark.png' alt='residence_detail_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_light.png' alt='residence_detail_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_dark.png' alt='residence_detail_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='residences'>
<h2>residences</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_empty_light.png' alt='residences_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_empty_dark.png' alt='residences_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_populated_light.png' alt='residences_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_populated_dark.png' alt='residences_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='residences_list'>
<h2>residences_list</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_empty.residences_list_empty_light.png' alt='residences_list_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_empty.residences_list_empty_dark.png' alt='residences_list_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_populated.residences_list_populated_light.png' alt='residences_list_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><div class='missing'>Android missing</div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences_list_populated.residences_list_populated_dark.png' alt='residences_list_populated_dark iOS'/></div>
</div>
<div class='screen' id='task_suggestions'>
<h2>task_suggestions</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_suggestions_empty_light.png' alt='task_suggestions_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_empty.task_suggestions_empty_light.png' alt='task_suggestions_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_suggestions_empty_dark.png' alt='task_suggestions_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_empty.task_suggestions_empty_dark.png' alt='task_suggestions_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_suggestions_populated_light.png' alt='task_suggestions_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_populated.task_suggestions_populated_light.png' alt='task_suggestions_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_suggestions_populated_dark.png' alt='task_suggestions_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_populated.task_suggestions_populated_dark.png' alt='task_suggestions_populated_dark iOS'/></div>
</div>
<div class='screen' id='task_templates_browser'>
<h2>task_templates_browser</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_light.png' alt='task_templates_browser_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_light.png' alt='task_templates_browser_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_dark.png' alt='task_templates_browser_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_dark.png' alt='task_templates_browser_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_light.png' alt='task_templates_browser_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_populated.task_templates_browser_populated_light.png' alt='task_templates_browser_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_dark.png' alt='task_templates_browser_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_populated.task_templates_browser_populated_dark.png' alt='task_templates_browser_populated_dark iOS'/></div>
</div>
<div class='screen' id='tasks'>
<h2>tasks</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/tasks_empty_light.png' alt='tasks_empty_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/tasks_empty_dark.png' alt='tasks_empty_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/tasks_populated_light.png' alt='tasks_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/tasks_populated_dark.png' alt='tasks_populated_dark Android'/><div class='missing'>iOS missing</div></div>
</div>
<div class='screen' id='theme_selection'>
<h2>theme_selection</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/theme_selection_empty_light.png' alt='theme_selection_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_empty.theme_selection_empty_light.png' alt='theme_selection_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/theme_selection_empty_dark.png' alt='theme_selection_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_empty.theme_selection_empty_dark.png' alt='theme_selection_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/theme_selection_populated_light.png' alt='theme_selection_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_populated.theme_selection_populated_light.png' alt='theme_selection_populated_light iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/theme_selection_populated_dark.png' alt='theme_selection_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_populated.theme_selection_populated_dark.png' alt='theme_selection_populated_dark iOS'/></div>
</div>
<div class='screen' id='verify_email'>
<h2>verify_email</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_email_empty_light.png' alt='verify_email_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email_empty.verify_email_empty_light.png' alt='verify_email_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_email_empty_dark.png' alt='verify_email_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email_empty.verify_email_empty_dark.png' alt='verify_email_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_email_populated_light.png' alt='verify_email_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_email_populated_dark.png' alt='verify_email_populated_dark Android'/><div class='missing'>iOS missing</div></div>
<div class='screen' id='forgot_password'>
<h2>forgot_password <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/forgot_password_light.png' alt='forgot_password_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password.forgot_password_light.png' alt='forgot_password_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/forgot_password_dark.png' alt='forgot_password_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_forgot_password.forgot_password_dark.png' alt='forgot_password_dark iOS'/></div>
</div>
<div class='screen' id='verify_reset_code'>
<h2>verify_reset_code</h2>
<div class='row'><div class='label'>empty<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_empty_light.png' alt='verify_reset_code_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code_empty.verify_reset_code_empty_light.png' alt='verify_reset_code_empty_light iOS'/></div>
<div class='row'><div class='label'>empty<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_empty_dark.png' alt='verify_reset_code_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code_empty.verify_reset_code_empty_dark.png' alt='verify_reset_code_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated<br><span class='mode'>light</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_populated_light.png' alt='verify_reset_code_populated_light Android'/><div class='missing'>iOS missing</div></div>
<div class='row'><div class='label'>populated<br><span class='mode'>dark</span></div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_populated_dark.png' alt='verify_reset_code_populated_dark Android'/><div class='missing'>iOS missing</div></div>
<h2>verify_reset_code <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_light.png' alt='verify_reset_code_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code.verify_reset_code_light.png' alt='verify_reset_code_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_reset_code_dark.png' alt='verify_reset_code_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_reset_code.verify_reset_code_dark.png' alt='verify_reset_code_dark iOS'/></div>
</div>
<div class='screen' id='reset_password'>
<h2>reset_password <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/reset_password_light.png' alt='reset_password_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password.reset_password_light.png' alt='reset_password_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/reset_password_dark.png' alt='reset_password_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_reset_password.reset_password_dark.png' alt='reset_password_dark iOS'/></div>
</div>
<div class='screen' id='verify_email'>
<h2>verify_email <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_email_light.png' alt='verify_email_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email.verify_email_light.png' alt='verify_email_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/verify_email_dark.png' alt='verify_email_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_verify_email.verify_email_dark.png' alt='verify_email_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_welcome'>
<h2>onboarding_welcome <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_light.png' alt='onboarding_welcome_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome.onboarding_welcome_light.png' alt='onboarding_welcome_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_welcome_dark.png' alt='onboarding_welcome_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_welcome.onboarding_welcome_dark.png' alt='onboarding_welcome_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_value_props'>
<h2>onboarding_value_props <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_light.png' alt='onboarding_value_props_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props.onboarding_value_props_light.png' alt='onboarding_value_props_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_value_props_dark.png' alt='onboarding_value_props_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_value_props.onboarding_value_props_dark.png' alt='onboarding_value_props_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_create_account'>
<h2>onboarding_create_account <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_light.png' alt='onboarding_create_account_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account.onboarding_create_account_light.png' alt='onboarding_create_account_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_create_account_dark.png' alt='onboarding_create_account_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_create_account.onboarding_create_account_dark.png' alt='onboarding_create_account_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_verify_email'>
<h2>onboarding_verify_email <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_light.png' alt='onboarding_verify_email_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email.onboarding_verify_email_light.png' alt='onboarding_verify_email_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_verify_email_dark.png' alt='onboarding_verify_email_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_verify_email.onboarding_verify_email_dark.png' alt='onboarding_verify_email_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_location'>
<h2>onboarding_location <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_location_light.png' alt='onboarding_location_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_location.onboarding_location_light.png' alt='onboarding_location_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_location_dark.png' alt='onboarding_location_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_location.onboarding_location_dark.png' alt='onboarding_location_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_name_residence'>
<h2>onboarding_name_residence <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_light.png' alt='onboarding_name_residence_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence.onboarding_name_residence_light.png' alt='onboarding_name_residence_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_name_residence_dark.png' alt='onboarding_name_residence_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_name_residence.onboarding_name_residence_dark.png' alt='onboarding_name_residence_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_home_profile'>
<h2>onboarding_home_profile <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_light.png' alt='onboarding_home_profile_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_home_profile.onboarding_home_profile_light.png' alt='onboarding_home_profile_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_home_profile_dark.png' alt='onboarding_home_profile_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_home_profile.onboarding_home_profile_dark.png' alt='onboarding_home_profile_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_join_residence'>
<h2>onboarding_join_residence <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_light.png' alt='onboarding_join_residence_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence.onboarding_join_residence_light.png' alt='onboarding_join_residence_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_join_residence_dark.png' alt='onboarding_join_residence_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_join_residence.onboarding_join_residence_dark.png' alt='onboarding_join_residence_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_first_task'>
<h2>onboarding_first_task <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_empty_light.png' alt='onboarding_first_task_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_light.png' alt='onboarding_first_task_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_empty_dark.png' alt='onboarding_first_task_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task_empty.onboarding_first_task_empty_dark.png' alt='onboarding_first_task_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_populated_light.png' alt='onboarding_first_task_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task.onboarding_first_task_populated_light.png' alt='onboarding_first_task_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_first_task_populated_dark.png' alt='onboarding_first_task_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_first_task.onboarding_first_task_populated_dark.png' alt='onboarding_first_task_populated_dark iOS'/></div>
</div>
<div class='screen' id='onboarding_subscription'>
<h2>onboarding_subscription <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_light.png' alt='onboarding_subscription_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription.onboarding_subscription_light.png' alt='onboarding_subscription_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/onboarding_subscription_dark.png' alt='onboarding_subscription_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_onboarding_subscription.onboarding_subscription_dark.png' alt='onboarding_subscription_dark iOS'/></div>
</div>
<div class='screen' id='home'>
<h2>home <span class='badge badge-datacarrying'>DataCarrying</span> <span class='badge badge-only'>Android-only</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_empty_light.png' alt='home_empty_light Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>home_empty_light.png</span></div></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_empty_dark.png' alt='home_empty_dark Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>home_empty_dark.png</span></div></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_populated_light.png' alt='home_populated_light Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>home_populated_light.png</span></div></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/home_populated_dark.png' alt='home_populated_dark Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>home_populated_dark.png</span></div></div>
</div>
<div class='screen' id='residences'>
<h2>residences <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_empty_light.png' alt='residences_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_empty_light.png' alt='residences_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_empty_dark.png' alt='residences_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_empty_dark.png' alt='residences_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_populated_light.png' alt='residences_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_populated_light.png' alt='residences_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residences_populated_dark.png' alt='residences_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residences.residences_populated_dark.png' alt='residences_populated_dark iOS'/></div>
</div>
<div class='screen' id='residence_detail'>
<h2>residence_detail <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_light.png' alt='residence_detail_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_empty_light.png' alt='residence_detail_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_empty_dark.png' alt='residence_detail_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_empty_dark.png' alt='residence_detail_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_light.png' alt='residence_detail_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_populated_light.png' alt='residence_detail_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/residence_detail_populated_dark.png' alt='residence_detail_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_residence_detail.residence_detail_populated_dark.png' alt='residence_detail_populated_dark iOS'/></div>
</div>
<div class='screen' id='add_residence'>
<h2>add_residence <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_residence_light.png' alt='add_residence_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence.add_residence_light.png' alt='add_residence_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_residence_dark.png' alt='add_residence_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_residence.add_residence_dark.png' alt='add_residence_dark iOS'/></div>
</div>
<div class='screen' id='edit_residence'>
<h2>edit_residence <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_residence_light.png' alt='edit_residence_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_residence.edit_residence_light.png' alt='edit_residence_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_residence_dark.png' alt='edit_residence_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_residence.edit_residence_dark.png' alt='edit_residence_dark iOS'/></div>
</div>
<div class='screen' id='join_residence'>
<h2>join_residence <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/join_residence_light.png' alt='join_residence_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence.join_residence_light.png' alt='join_residence_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/join_residence_dark.png' alt='join_residence_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_join_residence.join_residence_dark.png' alt='join_residence_dark iOS'/></div>
</div>
<div class='screen' id='manage_users'>
<h2>manage_users <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/manage_users_light.png' alt='manage_users_light Android'/><div class='missing missing-needed'>[missing — ios]<br><span class='hint'>manage_users_light.png</span></div></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/manage_users_dark.png' alt='manage_users_dark Android'/><div class='missing missing-needed'>[missing — ios]<br><span class='hint'>manage_users_dark.png</span></div></div>
</div>
<div class='screen' id='all_tasks'>
<h2>all_tasks <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_light.png' alt='all_tasks_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_empty.all_tasks_empty_light.png' alt='all_tasks_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_empty_dark.png' alt='all_tasks_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks.all_tasks_empty_dark.png' alt='all_tasks_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_light.png' alt='all_tasks_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks.all_tasks_populated_light.png' alt='all_tasks_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/all_tasks_populated_dark.png' alt='all_tasks_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_populated.all_tasks_populated_dark.png' alt='all_tasks_populated_dark iOS'/></div>
</div>
<div class='screen' id='add_task'>
<h2>add_task <span class='badge badge-datafree'>DataFree</span> <span class='badge badge-only'>iOS-only</span></h2>
<div class='row'><div class='label'>light</div><div class='missing missing-platform'>not on android<br><span class='hint'>add_task_light.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task.add_task_light.png' alt='add_task_light iOS'/></div>
<div class='row'><div class='label'>dark</div><div class='missing missing-platform'>not on android<br><span class='hint'>add_task_dark.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task.add_task_dark.png' alt='add_task_dark iOS'/></div>
</div>
<div class='screen' id='add_task_with_residence'>
<h2>add_task_with_residence <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_task_with_residence_light.png' alt='add_task_with_residence_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence.add_task_with_residence_light.png' alt='add_task_with_residence_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_task_with_residence_dark.png' alt='add_task_with_residence_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_task_with_residence.add_task_with_residence_dark.png' alt='add_task_with_residence_dark iOS'/></div>
</div>
<div class='screen' id='edit_task'>
<h2>edit_task <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_task_light.png' alt='edit_task_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_task.edit_task_light.png' alt='edit_task_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_task_dark.png' alt='edit_task_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_task.edit_task_dark.png' alt='edit_task_dark iOS'/></div>
</div>
<div class='screen' id='complete_task'>
<h2>complete_task <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/complete_task_light.png' alt='complete_task_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_complete_task.complete_task_light.png' alt='complete_task_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/complete_task_dark.png' alt='complete_task_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_complete_task.complete_task_dark.png' alt='complete_task_dark iOS'/></div>
</div>
<div class='screen' id='task_suggestions'>
<h2>task_suggestions <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_suggestions_light.png' alt='task_suggestions_light Android'/><div class='missing missing-needed'>[missing — ios]<br><span class='hint'>task_suggestions_light.png</span></div></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_suggestions_dark.png' alt='task_suggestions_dark Android'/><div class='missing missing-needed'>[missing — ios]<br><span class='hint'>task_suggestions_dark.png</span></div></div>
</div>
<div class='screen' id='task_templates_browser'>
<h2>task_templates_browser <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_light.png' alt='task_templates_browser_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_light.png' alt='task_templates_browser_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_empty_dark.png' alt='task_templates_browser_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser.task_templates_browser_empty_dark.png' alt='task_templates_browser_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_light.png' alt='task_templates_browser_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_populated.task_templates_browser_populated_light.png' alt='task_templates_browser_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/task_templates_browser_populated_dark.png' alt='task_templates_browser_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser.task_templates_browser_populated_dark.png' alt='task_templates_browser_populated_dark iOS'/></div>
</div>
<div class='screen' id='contractors'>
<h2>contractors <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_empty_light.png' alt='contractors_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_empty_light.png' alt='contractors_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_empty_dark.png' alt='contractors_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_empty_dark.png' alt='contractors_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_populated_light.png' alt='contractors_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_populated_light.png' alt='contractors_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractors_populated_dark.png' alt='contractors_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractors.contractors_populated_dark.png' alt='contractors_populated_dark iOS'/></div>
</div>
<div class='screen' id='contractor_detail'>
<h2>contractor_detail <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_light.png' alt='contractor_detail_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_empty_light.png' alt='contractor_detail_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_empty_dark.png' alt='contractor_detail_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_empty_dark.png' alt='contractor_detail_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_light.png' alt='contractor_detail_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_populated_light.png' alt='contractor_detail_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/contractor_detail_populated_dark.png' alt='contractor_detail_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_contractor_detail.contractor_detail_populated_dark.png' alt='contractor_detail_populated_dark iOS'/></div>
</div>
<div class='screen' id='documents'>
<h2>documents <span class='badge badge-datacarrying'>DataCarrying</span> <span class='badge badge-only'>Android-only</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_empty_light.png' alt='documents_empty_light Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>documents_empty_light.png</span></div></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_empty_dark.png' alt='documents_empty_dark Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>documents_empty_dark.png</span></div></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_populated_light.png' alt='documents_populated_light Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>documents_populated_light.png</span></div></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/documents_populated_dark.png' alt='documents_populated_dark Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>documents_populated_dark.png</span></div></div>
</div>
<div class='screen' id='documents_warranties'>
<h2>documents_warranties <span class='badge badge-datacarrying'>DataCarrying</span> <span class='badge badge-only'>iOS-only</span></h2>
<div class='row'><div class='label'>empty / light</div><div class='missing missing-platform'>not on android<br><span class='hint'>documents_warranties_empty_light.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties.documents_warranties_empty_light.png' alt='documents_warranties_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><div class='missing missing-platform'>not on android<br><span class='hint'>documents_warranties_empty_dark.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_empty.documents_warranties_empty_dark.png' alt='documents_warranties_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><div class='missing missing-platform'>not on android<br><span class='hint'>documents_warranties_populated_light.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_light.png' alt='documents_warranties_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><div class='missing missing-platform'>not on android<br><span class='hint'>documents_warranties_populated_dark.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_documents_warranties_populated.documents_warranties_populated_dark.png' alt='documents_warranties_populated_dark iOS'/></div>
</div>
<div class='screen' id='document_detail'>
<h2>document_detail <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_light.png' alt='document_detail_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_empty_light.png' alt='document_detail_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_empty_dark.png' alt='document_detail_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_empty_dark.png' alt='document_detail_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_light.png' alt='document_detail_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_populated_light.png' alt='document_detail_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/document_detail_populated_dark.png' alt='document_detail_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_document_detail.document_detail_populated_dark.png' alt='document_detail_populated_dark iOS'/></div>
</div>
<div class='screen' id='add_document'>
<h2>add_document <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_document_light.png' alt='add_document_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_document.add_document_light.png' alt='add_document_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/add_document_dark.png' alt='add_document_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_add_document.add_document_dark.png' alt='add_document_dark iOS'/></div>
</div>
<div class='screen' id='edit_document'>
<h2>edit_document <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_document_light.png' alt='edit_document_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_document.edit_document_light.png' alt='edit_document_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/edit_document_dark.png' alt='edit_document_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_edit_document.edit_document_dark.png' alt='edit_document_dark iOS'/></div>
</div>
<div class='screen' id='profile'>
<h2>profile <span class='badge badge-datacarrying'>DataCarrying</span></h2>
<div class='row'><div class='label'>empty / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_empty_light.png' alt='profile_empty_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_empty_light.png' alt='profile_empty_light iOS'/></div>
<div class='row'><div class='label'>empty / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_empty_dark.png' alt='profile_empty_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_empty_dark.png' alt='profile_empty_dark iOS'/></div>
<div class='row'><div class='label'>populated / light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_populated_light.png' alt='profile_populated_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_populated_light.png' alt='profile_populated_light iOS'/></div>
<div class='row'><div class='label'>populated / dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/profile_populated_dark.png' alt='profile_populated_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile.profile_populated_dark.png' alt='profile_populated_dark iOS'/></div>
</div>
<div class='screen' id='profile_edit'>
<h2>profile_edit <span class='badge badge-datafree'>DataFree</span> <span class='badge badge-only'>iOS-only</span></h2>
<div class='row'><div class='label'>light</div><div class='missing missing-platform'>not on android<br><span class='hint'>profile_edit_light.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit.profile_edit_light.png' alt='profile_edit_light iOS'/></div>
<div class='row'><div class='label'>dark</div><div class='missing missing-platform'>not on android<br><span class='hint'>profile_edit_dark.png</span></div><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_profile_edit.profile_edit_dark.png' alt='profile_edit_dark iOS'/></div>
</div>
<div class='screen' id='notification_preferences'>
<h2>notification_preferences <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/notification_preferences_light.png' alt='notification_preferences_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences.notification_preferences_light.png' alt='notification_preferences_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/notification_preferences_dark.png' alt='notification_preferences_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences.notification_preferences_dark.png' alt='notification_preferences_dark iOS'/></div>
</div>
<div class='screen' id='theme_selection'>
<h2>theme_selection <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/theme_selection_light.png' alt='theme_selection_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection.theme_selection_light.png' alt='theme_selection_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/theme_selection_dark.png' alt='theme_selection_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection.theme_selection_dark.png' alt='theme_selection_dark iOS'/></div>
</div>
<div class='screen' id='biometric_lock'>
<h2>biometric_lock <span class='badge badge-datafree'>DataFree</span> <span class='badge badge-only'>Android-only</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/biometric_lock_light.png' alt='biometric_lock_light Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>biometric_lock_light.png</span></div></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/biometric_lock_dark.png' alt='biometric_lock_dark Android'/><div class='missing missing-platform'>not on ios<br><span class='hint'>biometric_lock_dark.png</span></div></div>
</div>
<div class='screen' id='feature_comparison'>
<h2>feature_comparison <span class='badge badge-datafree'>DataFree</span></h2>
<div class='row'><div class='label'>light</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/feature_comparison_light.png' alt='feature_comparison_light Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison.feature_comparison_light.png' alt='feature_comparison_light iOS'/></div>
<div class='row'><div class='label'>dark</div><img loading='lazy' src='../composeApp/src/androidUnitTest/roborazzi/feature_comparison_dark.png' alt='feature_comparison_dark Android'/><img loading='lazy' src='../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison.feature_comparison_dark.png' alt='feature_comparison_dark iOS'/></div>
</div>
<script>
// Ctrl/Cmd-F friendly: expose screen names in the document title on anchor change.

View File

@@ -1,9 +1,13 @@
# Parity gallery — iOS ↔ Android snapshot regression
Every primary screen on both platforms is captured as a PNG golden and
committed to the repo. A PR that drifts from a golden fails CI. The
committed `docs/parity-gallery.html` pairs iOS and Android side-by-side in
a scrollable HTML grid you can open locally or from gitea's raw-file view.
Every user-reachable screen in the HoneyDue app is captured as a PNG
golden on both platforms and committed to the repo. A PR that drifts
from a golden fails CI. The gallery HTML (`docs/parity-gallery.html`)
pairs iOS and Android renders side-by-side so cross-platform UX
divergences are visible at a glance. Gaps — screens captured on one
platform but not the other — render as explicit red-bordered
`[missing — android]` / `[missing — ios]` placeholders rather than
silently omitted rows, so the work to close them is obvious.
## Quick reference
@@ -14,82 +18,195 @@ make optimize-goldens # Rerun zopflipng over existing PNGs. Idempotent.
python3 scripts/build_parity_gallery.py # Rebuild docs/parity-gallery.html
```
## Canonical manifest — the single source of truth
Every screen in the gallery is declared once in
`composeApp/src/commonMain/kotlin/com/tt/honeyDue/testing/GalleryManifest.kt`.
The manifest is a `commonMain` Kotlin object — readable from both
platforms, via SKIE from Swift — listing each screen's canonical name,
category, and which platforms capture it:
```kotlin
GalleryScreen("contractor_detail", GalleryCategory.DataCarrying, both)
GalleryScreen("login", GalleryCategory.DataFree, both)
GalleryScreen("home", GalleryCategory.DataCarrying, androidOnly)
GalleryScreen("profile_edit", GalleryCategory.DataFree, iosOnly)
```
Two parity tests keep the platforms aligned with the manifest:
- `composeApp/src/androidUnitTest/kotlin/com/tt/honeyDue/screenshot/GalleryManifestParityTest.kt`
fails if the entries in `GallerySurfaces.kt` don't match the subset of
the manifest with `Platform.ANDROID` in their `platforms`.
- `iosApp/HoneyDueTests/GalleryManifestParityTest.swift` does the same
for `SnapshotGalleryTests.swift` against `Platform.IOS`.
If you add a screen to either platform without updating the manifest,
CI fails with a specific diff message telling you what's drifted.
## Variant matrix — driven by category
Every screen captures one of two matrices, chosen by `GalleryCategory`
in the manifest:
**`DataCarrying` — 4 captures per surface**
```
<screen>_empty_light.png <screen>_empty_dark.png
<screen>_populated_light.png <screen>_populated_dark.png
```
Empty variants use `FixtureDataManager.empty(seedLookups = false)` so
even form screens that only read dropdowns produce a visible diff
between empty and populated.
**`DataFree` — 2 captures per surface**
```
<screen>_light.png <screen>_dark.png
```
Used for pure forms, auth flows, onboarding steps, and static chrome
that render no entity data. The populated variant is deliberately
omitted — it would be byte-identical to empty and add zero signal.
The fixture seed still uses `empty(seedLookups = true)` so the
priority picker, theme list, and subscription-tier gates render the
same as they would for a fresh-signed-in user in production.
## How it works
### Shared fixtures
`composeApp/src/commonMain/kotlin/com/tt/honeyDue/testing/FixtureDataManager.kt`
exposes `.empty()` and `.populated()` factories. Both platforms render the
same screens against the same fixture graph — the only cross-platform
differences left are actual UI code differences (by design). Fixtures use
a fixed clock (`Fixtures.FIXED_DATE = LocalDate(2026, 4, 15)`) so dates
never drift.
The pipeline is four moving parts: **fixture → DataManager seed → VM
derived state → screen capture**. Every snapshot reads the same fixture
graph on both platforms, and every VM receives that fixture through the
same DI seam.
### Android capture (Roborazzi)
- `composeApp/src/androidUnitTest/kotlin/com/tt/honeyDue/screenshot/ScreenshotTests.kt`
declares one `@Test` per surface in `GallerySurfaces.kt`.
- Each test captures 4 variants: `empty × light`, `empty × dark`,
`populated × light`, `populated × dark`.
- Runs in Robolectric — no emulator needed, no flake from animations.
- Goldens: `composeApp/src/androidUnitTest/roborazzi/<screen>_<state>_<mode>.png`
### 1. Shared fixtures
`composeApp/src/commonMain/kotlin/com/tt/honeyDue/testing/FixtureDataManager.kt`
implements `IDataManager` with in-memory `StateFlow` fields. Two
factories:
- **`empty(seedLookups: Boolean = true)`** — no residences, tasks,
contractors, or documents. When `seedLookups` is `false`
(DataCarrying variant), lookups (priorities, categories, templates)
are empty too; when `true` (DataFree variant + default production
call sites), lookups are present because the picker UI expects them.
- **`populated()`** — every StateFlow is seeded: 2 residences, 8 tasks,
3 contractors, 5 documents, totals, all lookups, detail maps, task
completions, notification preferences.
Fixtures use a fixed clock (`Fixtures.FIXED_DATE = LocalDate(2026, 4, 15)`)
so relative dates like "due in 3 days" never drift between runs.
### 2. DI seam: `IDataManager` injection
Every ViewModel accepts `dataManager: IDataManager = DataManager` as a
constructor parameter and derives read-state reactively via
`stateIn(SharingStarted.Eagerly, initialValue = ...)`. The initial
value is computed from `dataManager.x.value` synchronously at VM
construction — so when a snapshot captures the first composition frame,
the VM already holds populated data, no dispatcher flush required.
Detail ViewModels (Contractor, Document, Task) additionally accept an
`initialSelectedX: Int? = null` parameter. The parity-gallery harness
passes a known fixture id at construction so the `stateIn` initial-value
closure — which reads `_selectedX.value` — observes the id and seeds
`Success(entity)` on the first frame. Without this, the screen's own
`LaunchedEffect(id) { vm.loadX(id) }` dispatches the id assignment to a
coroutine that runs *after* capture, leaving both empty and populated
captures byte-identical on the `Idle` branch.
This DI contract is enforced by a file-scan regression test:
`composeApp/src/androidUnitTest/kotlin/com/tt/honeyDue/architecture/NoIndependentViewModelStateFileScanTest.kt`.
### 3. Test-time injection (both channels)
`ScreenshotTests.kt` (Android) and `SnapshotGalleryTests.swift` (iOS)
seed **two** paths per variant because screens read data through two
channels:
1. **`LocalDataManager`** (Android CompositionLocal) /
`DataManagerObservable.shared` (iOS `@EnvironmentObject`) — screens
that read the ambient DataManager pick up the fixture through the
composition/environment tree.
2. **`DataManager` singleton** (Android) / same observable (iOS) —
VMs instantiated without an explicit `dataManager:` arg default to
the singleton. The test clears the singleton then seeds every
StateFlow from the fixture before capture.
Clearing the singleton between variants is critical — without
`dm.clear()` the previous surface's populated data leaks into the next
surface's empty capture.
### 4. Android capture (Roborazzi)
- Test runner: `ParameterizedRobolectricTestRunner` +
`@GraphicsMode(NATIVE)` + `@Config(qualifiers = "w360dp-h800dp-mdpi")`.
- `LocalInspectionMode` is provided as `true` so composables that call
`FileProvider.getUriForFile` (camera pickers), APNs / FCM registration,
or animation tickers short-circuit in the hermetic test environment.
- Compose resources bootstrap: `@Before` hook installs the
`AndroidContextProvider` static via reflection so `stringResource(...)`
works under Robolectric.
- Goldens: `composeApp/src/androidUnitTest/roborazzi/<screen>_<suffix>.png`.
- Typical size: 3080 KB per image.
### iOS capture (swift-snapshot-testing)
- `iosApp/HoneyDueTests/SnapshotGalleryTests.swift` has 4 tests per screen.
- Rendered at `displayScale: 2.0` (not the native 3.0) to cap per-image size.
- Uses `FixtureDataManager.shared.empty()` / `.populated()` via SKIE.
- Goldens: `iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_<name>.<variant>.png`
- Typical size: 150300 KB per image after `zopflipng` post-processing.
### 5. iOS capture (swift-snapshot-testing)
- Uses `FixtureDataManager.shared.empty(seedLookups:)` /
`.populated()` via SKIE interop.
- Swift VMs subscribe to `DataManagerObservable.shared`; the harness
copies fixture StateFlow values onto the observable's `@Published`
properties synchronously before the view is instantiated so VMs seed
from cache without waiting for Combine's async dispatch.
- Rendered at `displayScale: 2.0` (not native 3.0) to cap per-image
size.
- Goldens:
`iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_<func>.<suffix>.png`.
- Typical size: 150300 KB per image after `zopflipng`.
### Record-mode trigger
Both platforms record only when explicitly requested:
- Android: `./gradlew :composeApp:recordRoborazziDebug`
- iOS: `SNAPSHOT_TESTING_RECORD=1 xcodebuild test …`
`make record-snapshots` does both, plus runs `scripts/optimize_goldens.sh`
to shrink the output PNGs. No code edits required to switch between record
and verify — the env var / gradle task controls everything.
to shrink the output PNGs.
## When to record vs verify
## Adding a screen
**Verify** is what CI runs on every PR. It is the gate. If verify fails,
ask: *was this drift intentional?*
1. **Declare in the manifest**
`composeApp/src/commonMain/kotlin/com/tt/honeyDue/testing/GalleryManifest.kt`:
```kotlin
GalleryScreen("my_new_screen", GalleryCategory.DataCarrying, both),
```
Update the `expected_counts_match_plan` canary in
`GalleryManifestTest` to match the new totals.
**Record** is what you run locally when a UI change is deliberate and you
want to publish the new look as the new baseline. Commit the regenerated
goldens alongside your code change so reviewers see both the code and the
visual result in one PR.
2. **Wire Android** — add a `GallerySurface(...)` entry in
`composeApp/src/androidUnitTest/kotlin/com/tt/honeyDue/screenshot/GallerySurfaces.kt`.
If the screen is a detail view, pass the VM explicitly with
`initialSelectedX = <fixtureId>`:
```kotlin
GallerySurface("my_new_screen") {
val id = Fixtures.xxx.first().id
val vm = remember { MyViewModel(initialSelectedId = id) }
MyScreen(id = id, viewModel = vm, onNavigateBack = {})
}
```
Running record by mistake (on a branch where you didn't intend to change
UI) will produce a large image-diff in `git status`. That diff is the
signal — revert the goldens, investigate what unintentionally changed.
3. **Wire iOS** — add a `test_<name>()` function in
`iosApp/HoneyDueTests/SnapshotGalleryTests.swift`, using
`snapDataCarrying(...)` or `snapDataFree(...)` as appropriate.
Add the canonical name to `iosCoveredScreens` in
`GalleryManifestParityTest.swift`.
## Adding a screen to the gallery
4. **Regenerate goldens** — `make record-snapshots`, then
`python3 scripts/build_parity_gallery.py` to rebuild the HTML.
### Android
Add one entry to
`composeApp/src/androidUnitTest/kotlin/com/tt/honeyDue/screenshot/GallerySurfaces.kt`:
5. **Commit the code change, the goldens, and the regenerated gallery
together** so reviewers see the intent + the visual result in one
PR.
```kotlin
GallerySurface("my_new_screen") { MyNewScreen(onNavigateBack = {}, /* required params from fixtures */) },
```
If the screen needs a specific model (`task`, `residence`, etc.) pass one
from `Fixtures.*` — e.g. `Fixtures.tasks.first()`. If the screen renders
differently in empty vs populated, the `LocalDataManager` provider wiring
in `ScreenshotTests.kt` handles it automatically.
### iOS
Add 4 test functions to `iosApp/HoneyDueTests/SnapshotGalleryTests.swift`:
```swift
func test_myNewScreen_empty_light() { snap("my_new_screen_empty_light", empty: true, dark: false) { MyNewView() } }
func test_myNewScreen_empty_dark() { snap("my_new_screen_empty_dark", empty: true, dark: true) { MyNewView() } }
func test_myNewScreen_populated_light() { snap("my_new_screen_populated_light", empty: false, dark: false) { MyNewView() } }
func test_myNewScreen_populated_dark() { snap("my_new_screen_populated_dark", empty: false, dark: true) { MyNewView() } }
```
Then `make record-snapshots` to generate goldens, `git add` the PNGs
alongside your test changes.
The parity tests fail until both platforms' surface lists match the
manifest — you'll know immediately if you miss step 2 or 3.
## Approving intentional UI drift
@@ -101,26 +218,41 @@ make record-snapshots
git status composeApp/src/androidUnitTest/roborazzi/ iosApp/HoneyDueTests/__Snapshots__/
git diff --stat composeApp/src/androidUnitTest/roborazzi/ iosApp/HoneyDueTests/__Snapshots__/
# 3. Stage and commit alongside the UI code change.
git add <screen-file.kt> <SnapshotGalleryTests.swift changes> \
# 3. Rebuild the HTML gallery.
python3 scripts/build_parity_gallery.py
# 4. Stage and commit alongside the UI code change.
git add <screen-file> \
composeApp/src/androidUnitTest/roborazzi/ \
iosApp/HoneyDueTests/__Snapshots__/
iosApp/HoneyDueTests/__Snapshots__/ \
docs/parity-gallery.html docs/parity-gallery-grid.md
git commit -m "feat: <what changed>"
```
Reviewers see the code diff AND the golden diff in one PR — makes intent
obvious.
## Cleaning up orphan goldens
`scripts/cleanup_orphan_goldens.sh` removes PNGs left over from prior
test configurations — old multi-theme captures (`*_default_*`,
`*_midnight_*`, `*_ocean_*`), Roborazzi comparison artifacts
(`*_actual.png`, `*_compare.png`), and legacy empty/populated pairs for
DataFree surfaces (which now capture `<name>_light.png` /
`<name>_dark.png` only). Dry-runs by default; pass `--execute` to
actually delete.
```bash
./scripts/cleanup_orphan_goldens.sh # preview
./scripts/cleanup_orphan_goldens.sh --execute # delete
```
## Image size budget
Per-file soft budget: **400 KB**. Enforced by CI.
Android images are rarely this large. iOS images can exceed 400 KB for
Android images rarely approach this. iOS images can exceed 400 KB for
gradient-heavy screens (Onboarding welcome, organic blob backgrounds).
If a new screen exceeds budget:
1. Check whether the screen really needs a full-viewport gradient.
2. If yes, consider rendering at `displayScale: 1.0` for just that test
(the `snap` helper accepts an override).
2. If yes, consider rendering at `displayScale: 1.0` for just that test.
## Tool installation
@@ -130,15 +262,23 @@ brew install zopfli # preferred — better compression
brew install pngcrush # fallback
```
Neither installed? `make record-snapshots` warns and skips optimization
goldens are still usable, just larger.
Neither installed? `make record-snapshots` warns and skips optimization.
## HTML gallery
`docs/parity-gallery.html` is regenerated by
`scripts/build_parity_gallery.py` whenever goldens change. It's a
self-contained HTML file with relative `<img>` paths that resolve within
the repo — so gitea's raw-file view renders it without any server.
`scripts/build_parity_gallery.py`, which parses the canonical manifest
directly (`GalleryManifest.kt`) and lays out one row per screen in
product-flow order (auth → onboarding → home → residences → tasks →
contractors → documents → profile → subscription). Platform cells
render as:
- **Captured PNG** — standard image.
- **`[missing — <platform>]` red-bordered box** — screen is in the
manifest for this platform but the PNG isn't on disk. Action needed.
- **`not on <platform>` muted-border box** — screen is explicitly
not-on-this-platform per the manifest (e.g. `home` is Android-only).
No action.
To view locally:
```bash
@@ -146,56 +286,30 @@ python3 scripts/build_parity_gallery.py
open docs/parity-gallery.html
```
The gallery groups by screen name. Each row shows Android vs iOS for one
{state, mode} combination, with sticky headers for quick navigation.
## Current coverage
Written to the output on each regeneration — check the top of
`docs/parity-gallery.html` for the current count.
The `docs/parity-gallery-grid.md` variant renders inline in gitea's
Markdown viewer (gitea serves raw `.html` as `text/plain`).
## Known limitations
- **Android populated-state coverage is partial (10/34 surfaces differ).** Screens
like `home`, `profile`, `residences`, `contractors`, `all_tasks` render truly
populated data. The other ~24 screens (`documents`, `complete_task`,
`feature_comparison`, `notification_preferences`, `manage_users`, every
`edit_*` / `add_*` / auth form) currently show **identical renders for
empty and populated fixtures**, because their ViewModels independently track
state via `APILayer.getXxx()` calls that fail with "Not authenticated" in
Robolectric — the VM state never transitions to `ApiResult.Success` so the
screen's "populated" branch never renders, even though `LocalDataManager`
and the global `DataManager` singleton are both seeded with the fixture.
- **Cross-platform diff is visual, not pixel-exact.** SF Pro (iOS) vs
SansSerif (Android) render different glyph shapes by design.
Pixel-diff is only used within a platform.
**The architectural fix**: every VM's `xxxState` needs to mirror
`DataManager.xxx` reactively (e.g., `dataManager.documents.map { Success(it) }`)
instead of independently tracking the API call result. That's a
per-VM refactor across ~20 ViewModels; currently only `HomeScreen` and
`DocumentsScreen` have been patched to fall back to `LocalDataManager`
directly. Gallery viewers should treat a "same" row as indicating the
fixture didn't reach the screen, not that the screens genuinely render
identically.
- **`home` is Android-only.** Android has a dedicated dashboard route
with aggregate stats; iOS lands directly on the residences list
(iOS's first tab plays the product role Android's `home` does, but
renders different content). Captured as Android-only; iOS cell shows
the `not on ios` placeholder.
- **iOS populated-state coverage is partial**. Swift Views today instantiate
their ViewModels via `@StateObject viewModel = FooViewModel()`; the
ViewModels read `DataManagerObservable.shared` directly rather than
accepting an injected `IDataManager`. Until ViewModels gain a DI seam,
populated-state snapshots require per-screen ad-hoc workarounds.
Tracked as a follow-up.
- **`documents` vs `documents_warranties`.** Android has a single
`documents` route; iOS splits the same conceptual screen into a
segmented-tab `documents_warranties` view. Captured as two rows
rather than coerced into one to keep the structural divergence
visible.
- **Android detail-screen coverage is partial**. Screens that require a
pre-selected model (`ResidenceDetailScreen(residence = ...)`,
`ContractorDetailScreen(contractor = ...)`) silently skip rendering
unless `GallerySurfaces.kt` passes a fixture item. Expanding these to
full coverage is a follow-up PR — low-risk additions to
`GallerySurfaces.kt`.
- **`add_task`, `profile_edit`** are iOS-only — Android presents these
flows inline (dialog inside `residence_detail`, inline form inside
`profile`). Captured as iOS-only.
- **Cross-platform diff is visual, not pixel-exact**. SF Pro (iOS) vs
SansSerif (Android) render different glyph shapes by design. Pixel-diff
is only used within a platform — the HTML gallery is for side-by-side
human review.
- **Roborazzi path mismatch**. The historical goldens lived at
`composeApp/src/androidUnitTest/roborazzi/`. The Roborazzi Gradle block
sets `outputDir` to match. If `verifyRoborazziDebug` ever reports
"original file not found", confirm the `outputDir` hasn't drifted.
- **`biometric_lock`** is Android-only — iOS uses the system Face ID
prompt directly, not a custom screen.