Select residence country by searchable name #64

Closed
opened 2026-10-23 09:35:21 +00:00 by tech · 2 comments
Owner

Goal

Replace the identity profile country-code text field with a searchable country selector that shows country names and stores two-letter country codes.

Approach

Use the existing country_picker Flutter library for its local country dataset, localized names and searchable picker. Preserve IdentityProfile and the provider/service/mapper contracts. Support English and Russian, keyboard activation, cancellation, saved values and busy state.

Acceptance criteria

  • Country of residence opens a searchable country list.
  • Selecting a country displays its localized name and updates the profile with its two-letter code only.
  • Cancel, retry/reselection, prefilled values, EN/RU, narrow layout, large text and keyboard use remain usable.
  • No free-code input, code instructions or character counter remain.
  • Existing KYC journey measurement remains intact; no form values enter telemetry.
  • Focused widget coverage, format, analyzer and make test-frontend pass.

Notes

Primary module: kyc. Frontend-only change. country_picker provides bundled data and needs no network service or new application provider/controller. Existing journey outcomes are reused. Base: main. Delivery includes a reviewed commit and pull request; merge is not authorized.

Delivery: PR #65, branch kyc-64. CountryService/CountryLocalizations from country_picker 2.0.28 provide bundled data and EN/RU names; Material controls add no-results recovery and accessible keyboard/touch selection. Existing profile/service/transport and KYC telemetry contracts are preserved. Format (five Dart files), frontend/app analyzer, make test-frontend (222 tests), release web build with Wasm dry run, and browser Poland search/selection passed. Native screen-reader/device keyboard QA and existing backend review-metric gaps remain documented release checks in docs/ux/kyc.md. PR is ready for review; merge is not authorized.

### Goal Replace the identity profile country-code text field with a searchable country selector that shows country names and stores two-letter country codes. ### Approach Use the existing country_picker Flutter library for its local country dataset, localized names and searchable picker. Preserve IdentityProfile and the provider/service/mapper contracts. Support English and Russian, keyboard activation, cancellation, saved values and busy state. ### Acceptance criteria - [x] Country of residence opens a searchable country list. - [x] Selecting a country displays its localized name and updates the profile with its two-letter code only. - [x] Cancel, retry/reselection, prefilled values, EN/RU, narrow layout, large text and keyboard use remain usable. - [x] No free-code input, code instructions or character counter remain. - [x] Existing KYC journey measurement remains intact; no form values enter telemetry. - [x] Focused widget coverage, format, analyzer and make test-frontend pass. ### Notes Primary module: kyc. Frontend-only change. country_picker provides bundled data and needs no network service or new application provider/controller. Existing journey outcomes are reused. Base: main. Delivery includes a reviewed commit and pull request; merge is not authorized. Delivery: [PR #65](https://git.sendico.io/tech/sxchnge/pulls/65), branch `kyc-64`. CountryService/CountryLocalizations from country_picker 2.0.28 provide bundled data and EN/RU names; Material controls add no-results recovery and accessible keyboard/touch selection. Existing profile/service/transport and KYC telemetry contracts are preserved. Format (five Dart files), frontend/app analyzer, make test-frontend (222 tests), release web build with Wasm dry run, and browser Poland search/selection passed. Native screen-reader/device keyboard QA and existing backend review-metric gaps remain documented release checks in docs/ux/kyc.md. PR is ready for review; merge is not authorized.
tech added the frontend label 2026-10-23 09:35:21 +00:00
tech self-assigned this 2026-10-23 09:35:21 +00:00
tech added this to the SXCHNGE project 2026-10-23 09:35:21 +00:00
tech added reference kyc-64 2026-10-23 09:35:31 +00:00
tech closed this issue 2026-10-23 10:12:13 +00:00
Author
Owner

Local deployment authorized by the user. PR #65 merged into main as 464bd2d565. Building the merged revision from an isolated clean checkout; current kyc-67 work is preserved. Fresh stable image resolution passed from the primary checkout after the containerized resolver could not resolve the isolated worktree's .git pointer (fatal: not a git repository). Only the frontend is being rebuilt/recreated; live services remain healthy during the build. Final deployment verification will be recorded after rollout.

Local deployment authorized by the user. PR #65 merged into main as 464bd2d56511749de3dffab7211f3b919968216c. Building the merged revision from an isolated clean checkout; current kyc-67 work is preserved. Fresh stable image resolution passed from the primary checkout after the containerized resolver could not resolve the isolated worktree's .git pointer (fatal: not a git repository). Only the frontend is being rebuilt/recreated; live services remain healthy during the build. Final deployment verification will be recorded after rollout.
Author
Owner

Local deployment completed from merged main revision 464bd2d565 (PR #65). Fresh stable version/digest resolution passed; the isolated merged-source frontend build with --pull passed; only frontend was recreated with --no-deps and reached healthy state. Deployed image: sha256:75b5686be63d5b0b35758f0f8ba290cd9034af8cca4b1915750ccda544587b96.

Verification passed: https://localhost:5126/ returns 200 with the existing trusted Caddy CA; proxied /api/v1/health reports ok; the HTTPS-served main.dart.js hash matches /srv/main.dart.js in the deployed container and contains the country-search and empty-state strings. make test-dev passed all tooling, Vault/Mongo/NATS isolation/transaction checks, authenticated Sendico currency/ledger checks and all seven service health checks. No email or payment was sent. Existing kyc-67 work remains untouched. Non-secret local deployment revision/image pins are recorded under .local/dev/deployments/kyc-64/.

Local deployment completed from merged main revision 464bd2d56511749de3dffab7211f3b919968216c (PR #65). Fresh stable version/digest resolution passed; the isolated merged-source frontend build with --pull passed; only frontend was recreated with --no-deps and reached healthy state. Deployed image: sha256:75b5686be63d5b0b35758f0f8ba290cd9034af8cca4b1915750ccda544587b96. Verification passed: https://localhost:5126/ returns 200 with the existing trusted Caddy CA; proxied /api/v1/health reports ok; the HTTPS-served main.dart.js hash matches /srv/main.dart.js in the deployed container and contains the country-search and empty-state strings. make test-dev passed all tooling, Vault/Mongo/NATS isolation/transaction checks, authenticated Sendico currency/ledger checks and all seven service health checks. No email or payment was sent. Existing kyc-67 work remains untouched. Non-secret local deployment revision/image pins are recorded under .local/dev/deployments/kyc-64/.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tech/sxchnge#64