# 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.** ## 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.