diff --git a/docs/parity-gallery-grid.md b/docs/parity-gallery-grid.md new file mode 100644 index 0000000..0d358b4 --- /dev/null +++ b/docs/parity-gallery-grid.md @@ -0,0 +1,531 @@ +# honeyDue parity gallery + +*93 Android · 58 iOS · 37 screens* + +Auto-generated by `scripts/build_parity_gallery.py` — do not hand-edit. + +See [parity-gallery.md](parity-gallery.md) for the workflow guide. + +## Screens + +- [add_residence](#add-residence) +- [add_task](#add-task) +- [add_task_with_residence](#add-task-with-residence) +- [all_tasks](#all-tasks) +- [contractors_list](#contractors-list) +- [documents_warranties](#documents-warranties) +- [edit_residence](#edit-residence) +- [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_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) + +--- + +## add_residence + +| 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) | _missing_ | +| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/add_residence_populated_dark.png) | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## add_task + +| 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_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## add_task_with_residence + +| 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_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## all_tasks + +| 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 | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_all_tasks_empty.all_tasks_empty_dark.png) | +| **populated** / light | _missing_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## contractors_list + +| 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_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## documents_warranties + +| 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_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## edit_residence + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## feature_comparison + +| State / Mode | Android | iOS | +|---|---|---| +| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_empty.feature_comparison_empty_light.png) | +| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_feature_comparison_empty.feature_comparison_empty_dark.png) | +| **populated** / light | _missing_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## forgot_password + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## home + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## join_residence + +| 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) | _missing_ | +| **populated** / dark | ![](../composeApp/src/androidUnitTest/roborazzi/join_residence_populated_dark.png) | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## login + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## manage_users + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## notification_preferences + +| State / Mode | Android | iOS | +|---|---|---| +| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_empty.notification_preferences_empty_light.png) | +| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_notification_preferences_empty.notification_preferences_empty_dark.png) | +| **populated** / light | _missing_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_create_account + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_first_task + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_home_profile + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_join_residence + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_location + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_name_residence + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_subscription + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_value_props + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_verify_email + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## onboarding_welcome + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## profile_edit + +| 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_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## profile_tab + +| 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_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## register + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## reset_password + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## residence_detail + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## residences + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + +## residences_list + +| 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_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## task_suggestions + +| State / Mode | Android | iOS | +|---|---|---| +| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_empty.task_suggestions_empty_light.png) | +| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_suggestions_empty.task_suggestions_empty_dark.png) | +| **populated** / light | _missing_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## task_templates_browser + +| State / Mode | Android | iOS | +|---|---|---| +| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_light.png) | +| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_task_templates_browser_empty.task_templates_browser_empty_dark.png) | +| **populated** / light | _missing_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## tasks + +| 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 + +| State / Mode | Android | iOS | +|---|---|---| +| **empty** / light | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_empty.theme_selection_empty_light.png) | +| **empty** / dark | _missing_ | ![](../iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests/test_theme_selection_empty.theme_selection_empty_dark.png) | +| **populated** / light | _missing_ | _missing_ | +| **populated** / dark | _missing_ | _missing_ | + +[top](#honeydue-parity-gallery) + +--- + +## verify_email + +| 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 + +| 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_ | + +[top](#honeydue-parity-gallery) + +--- + diff --git a/docs/parity-gallery.html b/docs/parity-gallery.html index cbb5977..a9bcbd3 100644 --- a/docs/parity-gallery.html +++ b/docs/parity-gallery.html @@ -27,7 +27,7 @@ border-radius: 4px; color: #8b949e; font-size: 12px; }

honeyDue parity gallery

-
91 Android · 58 iOS · 37 screens
+
93 Android · 58 iOS · 37 screens
Android
iOS
@@ -53,7 +53,7 @@

all_tasks

-
empty
light
Android missing
all_tasks_empty_light iOS
+
empty
light
all_tasks_empty_light Androidall_tasks_empty_light iOS
empty
dark
Android missing
all_tasks_empty_dark iOS
populated
light
Android missing
iOS missing
populated
dark
Android missing
iOS missing
@@ -266,7 +266,7 @@
empty
light
tasks_empty_light Android
iOS missing
empty
dark
tasks_empty_dark Android
iOS missing
populated
light
tasks_populated_light Android
iOS missing
-
populated
dark
Android missing
iOS missing
+
populated
dark
tasks_populated_dark Android
iOS missing

theme_selection

diff --git a/scripts/build_parity_gallery.py b/scripts/build_parity_gallery.py index d9a0e1f..df2c6ab 100755 --- a/scripts/build_parity_gallery.py +++ b/scripts/build_parity_gallery.py @@ -25,7 +25,8 @@ import sys REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ANDROID_DIR = "composeApp/src/androidUnitTest/roborazzi" IOS_DIR = "iosApp/HoneyDueTests/__Snapshots__/SnapshotGalleryTests" -OUT = "docs/parity-gallery.html" +OUT_HTML = "docs/parity-gallery.html" +OUT_MD = "docs/parity-gallery-grid.md" # swift-snapshot-testing names files "test_..png" — strip prefix IOS_NAME_RE = re.compile(r"^test_[^.]+\.(.+)\.png$") @@ -63,13 +64,51 @@ def parse_key(key: str) -> tuple[str, str, str]: return key, "?", "?" +def write_markdown(android: dict[str, str], ios: dict[str, str], screens: list[str]) -> None: + """Emit a gitea-renderable grid as markdown tables. + + Gitea serves .html as text/plain (security), but renders .md natively at + its /src/ URL with inline images. This output is the browser-viewable one. + """ + out = os.path.join(REPO_ROOT, OUT_MD) + os.makedirs(os.path.dirname(out), exist_ok=True) + # Markdown image paths are relative to the .md file, which lives in docs/. + # We already compute relative-to-docs paths in load(); those apply here too. + with open(out, "w", encoding="utf-8") as f: + f.write("# honeyDue parity gallery\n\n") + f.write(f"*{len(android)} Android · {len(ios)} iOS · {len(screens)} screens*\n\n") + f.write("Auto-generated by `scripts/build_parity_gallery.py` — do not hand-edit.\n\n") + f.write("See [parity-gallery.md](parity-gallery.md) for the workflow guide.\n\n") + f.write("## Screens\n\n") + for s in screens: + f.write(f"- [{s}](#{s.replace('_', '-')})\n") + f.write("\n---\n\n") + for screen in screens: + anchor = screen.replace("_", "-") + f.write(f"## {screen}\n\n") + f.write("| State / Mode | Android | iOS |\n") + f.write("|---|---|---|\n") + for state in ("empty", "populated"): + for mode in ("light", "dark"): + key = f"{screen}_{state}_{mode}" + a = android.get(key) + i = ios.get(key) + a_cell = f"![]({a})" if a else "_missing_" + i_cell = f"![]({i})" if i else "_missing_" + f.write(f"| **{state}** / {mode} | {a_cell} | {i_cell} |\n") + f.write("\n[top](#honeydue-parity-gallery)\n\n---\n\n") + print(f"wrote {OUT_MD}") + + def main() -> int: android = load("android", ANDROID_DIR) ios = load("ios", IOS_DIR) keys = sorted(set(android) | set(ios)) screens = sorted({parse_key(k)[0] for k in keys}) - out_path = os.path.join(REPO_ROOT, OUT) + write_markdown(android, ios, screens) + + out_path = os.path.join(REPO_ROOT, OUT_HTML) os.makedirs(os.path.dirname(out_path), exist_ok=True) with open(out_path, "w", encoding="utf-8") as f: f.write(PAGE_HEAD) @@ -111,7 +150,7 @@ def main() -> int: f.write("
\n") f.write(PAGE_FOOT) - print(f"wrote {OUT}: {len(screens)} screens, {len(android)} Android + {len(ios)} iOS images") + print(f"wrote {OUT_HTML}: {len(screens)} screens, {len(android)} Android + {len(ios)} iOS images") return 0