Collect country when subscribing to product updates during setup - #10513
Merged
Conversation
The setup form asks users to subscribe to product and feature updates but
captures no region, so subscribers cannot be segmented by geography. Add a
required country selector that appears once the subscribe box is checked,
and carry the value through to the comm-prefs metadata and stats sender
alongside the existing name/email/company fields.
> the setup ui suggest to subscribe for updates. when user selected to
> subscribe we need would like to have a Country selector and post this
> information. copy the list of countries into the code from
> Master Spreadsheet - Country Picklist Values.csv
Agent copied all 251 picklist values verbatim into countries.ts and plumbed
`country` through swagger, the regenerated SDKs, the KV metadata and the
stats collector. Worth noting the collector does a direct struct conversion
CommPrefsData(CommPrefs), so the field had to land at the same position in
both. No server-side validation of the value, matching companyName.
> the country web ui selection takes all the dialog width. based on best
> practices, set better width for it.
Measured in the browser rather than guessing: the longest name ("South
Georgia and the South Sandwich Islands") needs 387px including padding and
caret, and md={6} gives 434px, so half width fits every entry and matches
the First/Last name fields already in the form.
> it can be side by side with the subscription message?
> undo my last request - leave it under the subscription
Tried it side by side; the checkbox label is long enough that the select
collapsed to ~130px below ~1400px viewports. Reverted to the stacked
half-width layout.
nopcoder
added a commit
to nopcoder/lakeFS
that referenced
this pull request
Aug 2, 2026
itaiad200
approved these changes
Aug 2, 2026
| @@ -0,0 +1,255 @@ | |||
| // Country picklist values, copied verbatim from the marketing master spreadsheet. | |||
| // Order matches the source sheet; keep it in sync when the picklist changes. | |||
| export const COUNTRIES: string[] = [ | |||
Contributor
There was a problem hiding this comment.
Does the user also have the option to select something which is not here?
Contributor
Author
There was a problem hiding this comment.
Nope - closed list.
5 tasks
nopcoder
added a commit
that referenced
this pull request
Aug 3, 2026
The country selector added in #10513 only appeared once the user ticked "I'd like to receive product and feature updates", so country was captured for subscribers only. We want the region for every install, regardless of whether the user opts in to updates. Move the selector out of the subscribe-gated block and place it between the email and company name fields. It is now shown and required for everyone, and the selected value is sent whether or not the user subscribed. > apply a fix to the country field - we would like to show and accept the > 'country' field; no matter if the user subscribed or not. place the field > after the details field, before the subscribe checkbox and make sure we > send the selected. Agent moved the field and dropped the `checked &&` from the validation gate. It also removed the setCountry('') reset in handleChecksChange, which only existed because the field used to be hidden - leaving it would have silently wiped a chosen country when toggling the checkbox off. No backend change was needed: the Setup and SetupCommPrefs handlers already read body.Country independent of featureUpdates. Verified by capturing the real request with the box unchecked ("featureUpdates":false,"country":"Japan") and confirming the value reached the KV store. > place the country field between the Email and the Company name fields. Straight reorder of the JSX rows. Also reordered the e2e page object to fill in the same order and corrected a stale comment that described the old position.
nopcoder
added a commit
that referenced
this pull request
Aug 3, 2026
The country selector added in #10513 only appeared once the user ticked "I'd like to receive product and feature updates", so country was captured for subscribers only. We want the region for every install, regardless of whether the user opts in to updates. Move the selector out of the subscribe-gated block and place it between the email and company name fields. It is now shown and required for everyone, and the selected value is sent whether or not the user subscribed. > apply a fix to the country field - we would like to show and accept the > 'country' field; no matter if the user subscribed or not. place the field > after the details field, before the subscribe checkbox and make sure we > send the selected. Agent moved the field and dropped the `checked &&` from the validation gate. It also removed the setCountry('') reset in handleChecksChange, which only existed because the field used to be hidden - leaving it would have silently wiped a chosen country when toggling the checkbox off. No backend change was needed: the Setup and SetupCommPrefs handlers already read body.Country independent of featureUpdates. Verified by capturing the real request with the box unchecked ("featureUpdates":false,"country":"Japan") and confirming the value reached the KV store. > place the country field between the Email and the Company name fields. Straight reorder of the JSX rows, with the e2e page object filling in the same order. > instead of the two tests just verify that 'country' is required like > email. 'country' is not optional and remove also the code comment. Collapsed the country tests into a single "country is required" case mirroring the email one, and dropped the conditional around selectOption in the page object so country is always selected.
nopcoder
added a commit
that referenced
this pull request
Aug 3, 2026
The country selector added in #10513 only appeared once the user ticked "I'd like to receive product and feature updates", so country was captured for subscribers only. We want the region for every install, regardless of whether the user opts in to updates. Move the selector out of the subscribe-gated block and place it between the email and company name fields. It is now shown and required for everyone, and the selected value is sent whether or not the user subscribed. > apply a fix to the country field - we would like to show and accept the > 'country' field; no matter if the user subscribed or not. place the field > after the details field, before the subscribe checkbox and make sure we > send the selected. Agent moved the field and dropped the `checked &&` from the validation gate. It also removed the setCountry('') reset in handleChecksChange, which only existed because the field used to be hidden - leaving it would have silently wiped a chosen country when toggling the checkbox off. No backend change was needed: the Setup and SetupCommPrefs handlers already read body.Country independent of featureUpdates. Verified by capturing the real request with the box unchecked ("featureUpdates":false,"country":"Japan") and confirming the value reached the KV store. > place the country field between the Email and the Company name fields. Straight reorder of the JSX rows, with the e2e page object filling in the same order. > instead of the two tests just verify that 'country' is required like > email. 'country' is not optional and remove also the code comment. Collapsed the country tests into a single "country is required" case mirroring the email one, and dropped the conditional around selectOption in the page object so country is always selected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The setup form asks users to subscribe to product and feature updates but captures no region, so subscribers cannot be segmented by geography.
This adds a required country selector that appears once the subscribe box is checked, and carries the value through to the comm-prefs metadata and the stats sender alongside the existing name/email/company fields. The 251 country names are copied verbatim from the marketing master spreadsheet picklist.
Screenshot
The country selector appears only after the updates checkbox is ticked, and is required before setup can be submitted:
Prompt log
Agent copied all 251 picklist values verbatim into
countries.tsand plumbedcountrythrough swagger, the regenerated SDKs, the KV metadata and the stats collector. Worth noting the collector does a direct struct conversionCommPrefsData(CommPrefs), so the field had to land at the same position in both. No server-side validation of the value, matchingcompanyNametoday.Measured in the browser rather than guessing: the longest name ("South Georgia and the South Sandwich Islands") needs 387px including padding and caret, and
md={6}gives 434px — so half width fits every entry and matches the First/Last name fields already in the form.Tried side by side; the checkbox label is long enough that the select collapsed to ~130px below ~1400px viewports. Reverted to the stacked half-width layout.
Related Issue
Closes #10512
Test plan
make lint— golangci-lint 0 issues, eslint cleanmake test-go— full suite, 0 failuresmake gen-codeproduces no further diff (generated code in sync)npm run build,npm test(72 tests), prettier checksetup-validation7/7 (incl. new country-required case) andcommon-setupfull setup submissionUnited States) after a real setup