Files
Yuvomi-App/docs/native-parity.md
T
Yuvomi Mobile Contributors 7ac9882307
Android validation / emulator (37.0) (push) Failing after 3s
Android validation / emulator (35) (push) Failing after 4s
iOS validation / simulator (push) Successful in 59s
Android validation / build (push) Successful in 5m30s
feat(android): align native preview with measured PWA design
2026-10-21 10:45:16 +02:00

6.3 KiB

Native parity tracker

Acceptance contract

Native means native screens, forms, lists, navigation and interaction. Android uses Kotlin/Compose; iOS uses SwiftUI. PWA HTML/JavaScript is not embedded as the application surface. The PWA is the design/behavior reference, not the renderer.

Reference: unmodified upstream 2.78.0, 10bfef7686ed7303b4c74c7fcc55a5eb16356c9d. The scope includes its thirty page modules, settings leaves, permissions, dashboard customization and cross-module workflows. Third-party web extensions need an explicit native integration design; arbitrary server-installed HTML cannot silently become a native module.

Use these states honestly:

  • Slice: real native UI/API interaction exists, with the listed limitations.
  • Pending: not implemented. No fake screen, raw-JSON editor or WebView fallback.
  • Parity accepted: requires functional and visual evidence on both platforms. No module currently has this status.

Android 0.2.2 has a PWA-derived design pass on the supported slice, with real reference/native light/dark captures. See design comparison. This does not change the acceptance status or certify the unchanged iOS UI.

Page inventory

Upstream page Native status Work still required before parity
login Slice: password + TOTP/recovery step OIDC/provider policy, recovery/error UX, localization, visual comparison
setup Slice: initial household creation Full onboarding and configuration workflow
forgot-password Pending Native recovery request and server-capability UX
reset-password Pending Native reset token/confirmation flow
join Pending Invitations, account setup, validation
dashboard Slice: task/calendar/shopping/note previews All remaining widgets, user layout/options, timezone-aware presentation, quick add, wall mode
tasks Slice: list/search/status filter/create/edit/complete/delete Category/assignee/tag/visibility controls, recurrence, subtasks, attachments, comments, archive/history, lock UX, bulk/sync controls
shopping Slice: lists/items/create/edit/check/delete List rename/duplicate, categories, ordering, suggestions, live versions, prices/stores, imports/send/undo
notes Slice: list/search/create/edit/pin/delete Markdown/checklists, categories, note colors, ordering and concurrent edit UX
calendar Dashboard preview only; module pending Agenda/week/month, editing, recurrence/scopes, source calendars, timezone behavior, attachments/sync
schedule Pending Shift grid, roster, creation and settings
birthdays Pending Date/age privacy, contacts, reminders/import
contacts Pending Address book, editing, links/import/export
documents Pending Browse/search, metadata, native upload/camera/export and lifecycle tests
inventory Pending Items, locations, guarantees, attachments and reminders
meals Pending Meal plan, ingredients, household options and shopping transfer
recipes Pending Search/detail/editor, source import, images, pantry/shopping cross-links
pantry Pending Stock, batches/expiry, locations, quantity controls and shopping transfer
budget Pending Accounts, entries, categories, currency/amount handling and attachments
budget-plans Pending Plan editor, period/category matching and forecasts
budget-stats Pending Native charts and filters matching upstream calculations
subscriptions Pending Lifecycle, billing, recurrence and linked budget behavior
split-expenses Pending Groups, guests, balances, settlement and permission distinctions
housekeeping Pending Visits, tasks, time and role-gated payment data
waste Pending Schedules, pickup display/import and reminders
rewards Pending Catalog, ledger, goals, approvals and pocket-money precision
health Pending Medication, cycle, nutrition and capability-gated private views
health-fasting Pending Clock, history, capabilities and lifecycle behavior
settings Slice: native logout/server removal only Every relevant personal/admin settings leaf and native permissions
pair-display Pending Pairing protocol, display role and shared-surface privacy

Design reference

Native primitives reuse the upstream warm palette (#F5F3ED / #191816), opaque surfaces (#FFFFFF / #2B2825), violet accent, 16-point cards, 26-point auth panel, pill navigation/buttons and the exact three-circle brand geometry. These are initial design-token mappings, not proof of 1:1 visuals. Material/SF symbols, typography, sheets, adaptive layouts and module details still need comparison.

Every accepted module needs side-by-side screenshots from matching server data, light/dark and small/large text coverage, keyboard/safe-area/back behavior, read-only/denied permission cases and real API success/error tests. Android's integration test exports a synthetic-fixture native dashboard screenshot; it is not a production screenshot or a visual-parity approval.

Implementation order

  1. Stabilize the current native authentication/dashboard/tasks/notes/shopping slice, including Apple SDK compilation and actual native tests.
  2. Close auth/recovery/SSO and first-slice feature gaps, then accept those screens against PWA visual/behavior baselines rather than adding empty menu entries.
  3. Implement calendar/family/contacts, kitchen/pantry, documents/inventory, then finance, household, rewards and health as separately tested native slices.
  4. Complete settings, extensions/cross-module flows, accessibility, offline and notifications. Audit every upstream route/settings leaf before claiming parity.

Signing work retained, not released

The owner-authorized initial signing key and four Gitea repository secrets were created before the native correction. The private backup remains outside Git at /home/neste/yuvomi-signing/initial-20261021. Never print/commit its contents. The uncommitted signing-workflow changes were preserved in Git stash wip: owner-authorized signing setup paused for true native rewrite; do not apply it blindly to the new workflows. No signing-secret values belong in screenshots, test fixtures, documentation, commits or artifacts. Native signing/release work remains paused until this preview's scope is explicitly accepted.