Chore: Mergeback of chore_release-9.1.0 into chore_release-pd-9.0.0#21735
Merged
Conversation
# Overview Turns the 96 channel QC script into a protocol.
Closes RQA-5473 We were not enforcing proper title casing for the instrument names on the Devices page. After syncing with Design, we do want title casing here. The fix cleans up some improper interpolation, too.
# Overview
During the Flex first run experience, you can choose to connect to the
Flex via USB rather than connecting the Flex to a network. If you do,
you end up at a screen that won't let you pass until you connect to the
Flex with a desktop app. This is executed by having the app use a legacy
authorization system from before we actually added authn and authz that
worked somewhat differently to the way the current authn and authz
system works. If something in that process is broken, you can't get past
the screen.
As in every good fable, three issues were preventing the Flex from
noticing that an app was connected to it via USB in the welcome flow:
one new, one middle-aged, and one old.
The new issue is that when we enabled real account mechanisms, they used
OAuth2 and sent their auth token via the standard HTTP basic
authorization `Authorization: Bearer {token}` header. The legacy "auth"
system used a header called `authenticationBearer`, which to quote
Hitchhiker's Guide to the Galaxy is something almost but not quite
unlike tea. Specifying the legacy auth token through the `request()`
function `token:` argument would put it in `Authorization: Bearer`,
which the legacy `/system/authorize` endpoint wouldn't accept, so apps
weren't registering themselves.
The middle-aged issue is that fastapi `Dependency`s do not have a
guaranteed order of execution unless they mark each other as
dependencies. The legacy auth system has a
`check_{authorization,authentication}_token` `Dependency` that stuffs
the token in the request state, and a
`get_{authorization,authentication}_token` `Dependency` that gets the
token from the request state, and if the token isn't there it 500s. So
sometimes you'd happen to get the check dependency running before the
get dependency, and everything would be fine; sometimes the check
dependency wouldn't run first, and you'd 500. Marking the get dependency
as dependent on the check dependency fixes this. Probably this problem
became more serious after the system upgrades in 9.0.
The old issue is that the ODD page for waiting to connect an app via USB
just, like, wasn't refetching? At all? ?????
## Test Plan and Hands on Testing
- Push the system server and the ODD to a robot
- `rm /data/ODD/config.json` to force ODD FRE
- go through the FRE to the connect via USB page
- Look at the robot from the desktop app while connected to the robot
via USB
- You get a big green checkmark!
## Changelog
- Specify the old `authenticationBearer` header through axios config for
the legacy auth routes
- Fix a dependency-ordering issue in system server in the legacy auth
routes
- Add refetching to the `ConnectViaUSB` page
## Review requests
- Please submit your entry for the moral of this fable
## Risk assessment
Low, this wasn't working before at all and it doesn't change much.
Closes RQA-5462
# Overview Fully implement the old QC test as a protocol. the tip sensor and the liquid probe tests have been updated to remove the need for jogging. The old versions are left in with a jog stub function available if we need to go back for whatever reason.
# Overview Adds the most basic integration for peripherals/barcode scanner into protocol engine/api At this point all you can do is create one and call scan.
…he package. (#21730) # Overview With this, the data, drivers and the opentrons_api subdirectory will be included with standard package under opt/opentrons-robot-server. With this we can create more protocols that use these tools in a shared code instead of duplicating them through many protocols.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## chore_release-pd-9.0.0 #21735 +/- ##
==========================================================
- Coverage 21.71% 21.70% -0.01%
==========================================================
Files 3908 3926 +18
Lines 320262 328120 +7858
Branches 57782 59858 +2076
==========================================================
+ Hits 69531 71226 +1695
- Misses 247740 253913 +6173
+ Partials 2991 2981 -10
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
sfoster1
approved these changes
Jun 12, 2026
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.
Incremental mergeback of
chore_release-9.1.0intochore_release-pd-9.0.0. no merge conflicts