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
- Stabilize the current native authentication/dashboard/tasks/notes/shopping slice, including Apple SDK compilation and actual native tests.
- Close auth/recovery/SSO and first-slice feature gaps, then accept those screens against PWA visual/behavior baselines rather than adding empty menu entries.
- Implement calendar/family/contacts, kitchen/pantry, documents/inventory, then finance, household, rewards and health as separately tested native slices.
- 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.