-
Notifications
You must be signed in to change notification settings - Fork 551
Implement devhub UI to trigger version rollback #23702
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement devhub UI to trigger version rollback #23702
Conversation
50b769d
to
93f5229
Compare
Merged the CI fix, so feel free to rebase and we can continue with review/verify. |
93f5229
to
2511970
Compare
Many many comments so sorting them.. Okay, sure.
It currently just defaults to the one that's possible because I thought otherwise it may be confusing to the developer why it wasn't available? I can change it 🤷
Feels a bit magical and under specified, but I guess...
Okay, I can drop the error message behind. Question for others
The figma clickable prototype shows:
I did have that at one point during development, but mozilla/addons#15660 (comment) says "This also means that part doesn't need a version-select option, because there can only be one such version" @wagnerand wdyt? Question for Kevin
Not sure what you mean here. Replies
Making the form have as fewer clicks as possible wasn't a project goal. We want the developer to think about what they're doing, I figured.
You aren't supposed to approve it - it's auto approved. From https://mozilla-hub.atlassian.net/browse/AOP-538 "allow a developer to roll-back their users to a previously approved version of an extension immediately"
It wasn't specified either way, does it matter? It's just Firefox remembering form field values.
Just the ones specified in the PRD - greater than the current version for listed.
The messaging will be updated with mozilla/addons#15662 > several general UX commentsThat's why there's a waffle switch :) So we don't have to iterate until the UX is perfect in a single PR |
Yes, that is a success toast on the main page. The only thing is to use the header strings and body strings as specified in the image. |
If it's easier to keep the select in with only one option and @Piratesarereal is ok with that, sure. Ideally we should pre-select the only available option then, if we aren't doing that already. |
Yes a select with a single option satisfies those requirements and is more indicative of the potential decision that is not currently available due to their only being one option.
Im' referring to the scenario There are 3 fields:
2 depends on 1 and 3 depends on 2. 1 and 3 are immediately visible so I could enter a value, but then select an option for 1 that shows me 2 (may or may not be disabled) and depending on what I select (if there is an option at all might retroactively make my selection for 3 invalid. It's just ... weird. If we pres elect an option for 1 we avoid that because all fields are always visible and in the correct state on form entry given the selections for other fields. does that clarify? |
@eviljeff I'll leave it up to you to decide when it's ready to re-verify. LMK or if I'm waiting on some pending commits. Some of the comments seem to have been accepted, some rejected. So I'm expecting at least some further changes.. Please clarify. |
I've made the changes to preselect one of the channels when both are possible, and to disable the channel selector otherwise. The error message in the versions page header is removed. The success message in the versions page header is retained, based on aarjav's confirmation that's what he intended. The listed version text is now a select, like for unlisted. Ready for review again. |
2511970
to
392d7c5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@eviljeff would you rebase and re-request review when all resolved?
You won't expect to see anything in the request/response cycle of the request that launches an async task, no - Also, is this behaviour only apparent now? There's nothing that I (purposefully) changed in the core functionality in the past 2 weeks. |
I can confirm. Weird. |
0a47d2b
to
d2fbdec
Compare
Fixed - the |
Is there a logic condition when it would be required or not required? I assume depending on the selection of the listed channel right? I guess that's fine.. to bad it would be nice to use html validation but alas we have no "react"ivity in our hub of devs. |
I mean I totally could and did expect to see something. It's odd UX to create a version, see the success indicator and then just have no visibility on it until some arbitrary point in the future. We don't even communicate that there will/might be something later. But happy to let that be something we don't fix or fix later. CC @Piratesarereal should look at this at some point.
|
The unlisted version is required if unlisted is chosen in the channel select (and similarly with listed, but there's only one selection so it's always there). But like I said, we have form validation that we have an appropriate version for the selected channel. |
The flow is exactly as the Figma prototype in the issue. The engineering implementation of the task that does the actual rollback was designed around how the prototype works - what you're suggesting is not possible without fundamentally redesigning how the feature works. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The form issue seems to be resolved. In verifying this patch I rolled back about 5-10 versions. I see nothing anywhere documenting which versions I've currently rolled back, their pending status, etc.
I think we should consider if that is a good user flow from the developer's perspective for future iterations, even if it is a fundamental change.
For the future, since we discussed timing on processing this PR. It is ~1k lines of relatively complex user facing features. That is inherently difficult and time consuming to review/verify. Several bugs were found, identified and squashed, all taking time. Each time I have to re-run the full set of steps to make sure one fix didn't open a new bug. You might have considered breaking the PR into smaller PRs that would add chunks of the larger feature. Especially since this feature is behind a flag it is trivial to ship parts at almost any arbitrary slice size. These could be more quickly verified/reviewed and could have led to faster incremental progress and perhaps a faster overall time to approved. Do with that feedback what you will but just a thought for the future. |
Yes, absolutely agree - there was more non-form code change in this than I intended, and potentially even the form could have been split into parts. (The same changes in multiple patches would have likely been more lines of code in total though. For example, I only realised when I was developing the form validation logic that my what I wrote for |
Fixes: mozilla/addons#15660 + fixes mozilla/addons#15666
Description
Adds a devhub modal form that can trigger a rollback to a previous version, along with a waffle switch which ensures the feature is only enabled when ready.
Context
The messaging will be updated with mozilla/addons#15662 but this PR should be functionally complete. There are some differences to the Figma mockup to match the norms already used in the version list - e.g. we don't show the AMO/Self badges until the developer has uploaded versions in both channels - and because of comments where it was clarified we shouldn't offer a selection of versions for rollback for listed, but a single version.
Release notes and suggested versions are separate issues because they were marked as lower priority requirements in the PRD
Testing
version-rollback
enabled in django admin (or with./manage.py
command)Checklist
#ISSUENUM
at the top of your PR to an existing open issue in the mozilla/addons repository.