Files
Yuvomi-App/docs/native-parity.md
T
Yuvomi Mobile Contributors 40a7962307
Android validation / emulator (35) (push) Failing after 4s
Android validation / emulator (37.0) (push) Failing after 6s
Android validation / build (push) Successful in 5m27s
iOS validation / simulator (push) Canceled after 23m26s
docs: record verified native preview and unfinished PWA parity
Replace current wrapper claims with native architecture/security/build evidence, preserve historical documents, track all thirty pages and explicit release gates, correct brand attribution and provide the twelve-section delivery report without claiming completion. Native signing remains paused and Apple application/device validation outstanding.
2026-10-21 09:13:36 +02:00

92 lines
6.0 KiB
Markdown

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