These should be the final plan and product IDs for the new Premium
and Bundle subscriptions in production.
The actual prices, as well as the product and plan IDs for the
phone plans, are yet to come.
Setting STATSD_DEBUG will enable metrics as well as the the logging
backend for markus. Setting DJANGO_STATSD_ENABLED is still required to
enable the Datadog backend (statsd plus tags)
This removes most of the views rendered by Django, linters applying
only to those files, and the infra to compile Sass. It preserves
the package.json file at the root, primarily for our Heroku
configuration (to set the Node and npm versions, and the commands
to run to build the website - i.e. heroku-postbuild), but also to
list the one in `frontend` as an npm workspace, leading to an npm
install in the root also running frontend/'s postinstall scripts
and thereby set up the Git hooks.
I've left the routes to the Django-rendered FAQ and home pages in
place (even though those views are now empty), because they're
still used to generate links. It might be more sensible to just
replace those with direct links, but I'll let people with more
Django experience decide on that.
I've also left the template tags in place, in case they still come
in useful when e.g. rendering the forwarded email.
* start new phones page behind PHONE_PROD_ID and "phones" waffle flag
Adds a new PHONE_PROD_ID environment variable for a new Stripe product
ID which grants the new relay-phones capability.
Adds new WAFFLE_FLAGS, WAFFLE_SWITCHES, and WAFFLE_SAMPLES arrays to the
/api/v1/runtime_data endpoint.
Adds a new flagIsActive React function.
Adds a new /phone route and page, which only shows up if flagIsActive()
returns true for the user.
* restore phoneLink to new Navigation.tsx
* fix WaffleFlag type and mockData to match
* update locales submodule to fresh rebase
* move phone UI messages to pendingTranslations.ftl
* set privaterelay/locales submodule to match main
Co-authored-by: Maxx Crawford <maxx.crawford@gmail.com>
Bitwarden Web Vault integrates Relay. So, our production server allows
the Bitwarden production origin. Our stage server should also allow
the Bitwarden stage origin.
This command is based on process_delayed_emails_from_sqs, but is
designed to run until interrupted (or for a maximum duration)
rather than until the queue is empty.
The command logs to eventsinfo.process_emails_from_sqs:
* At the start and end of execution (INFO)
* For each polling loop (INFO if messages, DEBUG if none)
* For each processed message (INFO if failed, DEBUG if success)
* For AWS errors (ERROR)
Adds two new environment variables:
* AWS_SQS_EMAIL_QUEUE_URL - The SQS queue for incoming emails
* AWS_SQS_EMAIL_DLQ_URL - The dead letter queue for that queue
Adds three new stats gauges:
* email_queue_count - Estimated messages in SQS
* email_queue_count_delayed - ...that are not yet availabled
* email_queue_count_not_visible - ...that are reserved by a receiver
The current SNS workflow uses AWS_SQS_QUEUE_URL as its dead-letter
queue, and AWS_SQS_EMAIL_DLQ_URL could have the same value.
AWS_SQS_QUEUE_URL can be deprected and dropped after the transition
from SNS POSTs to SQS pulls.
Adds docs to test these changes in a local developer environment, and
tests to cover the new commands.
If SERVE_REACT is False, the old website will continue to show.
When it is set to True, the React-based version of the website will
be served by Whitenoise.
* Fix issue where premium dashboard would prompt user who registered domain during onboarding step to register their domain
* Adjust premium dashboard UI to match Figma more
* Add comment in SCSS
* Submodule updates
* Add sourcemaps to SCSS build process
* Adjust off-white background color to match Figma/Nebula color
* Add markup HTML/CSS scaffolding for multi-step process
* Move buttons into same container as progress bar, update JS, mobile styles
* Add install/not installed states for add-on on Step 3,
* Update domain registration js function to accept mutliple forms, and accept additional logic based on which form is submitted
* Revise position for desktop to be more responsive, revise desktop content area to 50/50 split, add logic to update Step 3 CTA based if addon is installed
* Add logic to only show onboarding if user is premium, add TODO about additional logic needed on profile template
* Update spellig comment static/js/domain-registration.js
Co-authored-by: Vincent <Vinnl@users.noreply.github.com>
* change POST profile_subdomain to always return JSON
* WIP Commit for Fetch Subdomain
* Update Content-Type
* add Profile.onboarding_state
to store how much onboarding the user has seen
* start onboarding_state HTML & JS code
* refactor into new api.js
* MAX_ONBOARDING_AVAILABLE=3
* Add eslint fix, test usage in onboarding setting
* Lint fixes
* Add logic to show active/last completed onboarding step or hide altogether if dismissed
* Update current slide/next button logic
* Add success state to onboarding domain registration
* Add DOM messaging support during domain registration
* Mobile refinements, add analytics pings during onboarding process to measure funnel completion
* Update UTM for add-on install
* Add code comment for magic number value
Co-authored-by: Vincent <Vinnl@users.noreply.github.com>
* Fix regression wher delete modal buttons are flipped on desktop
* Replace text with L10N strings
* Remove HTML comments
* JavaScript cleanup: Moved function to api.js, renamed variables to be more readable, add logic to only run premiumOnboarding function when needed
* Adjust Protocol token, lint fixes
* Spacing adjustment
Co-authored-by: Peter deHaan <pdehaan@hey.com>
* Adjusted string IDs based on L10N changes
* New l10n string IDs
* Add logic to show/hide addon prompt step CTAs on mobile/non-Fx browsers
* Lint fixes
* Submodule updates
Co-authored-by: Vincent <Vinnl@users.noreply.github.com>
Co-authored-by: groovecoder <lcrouch@mozilla.com>
Co-authored-by: Peter deHaan <pdehaan@hey.com>
refactor purchase urls into new premium_subscribe_url template tag
it accepts an accept-language value, and returns the proper subscription
url based on the first language and/or country code in the
accept-language header.
it uses a hard-coded map of currency, language, and country to the
appropriate stripe product plan ID.