Skip to content

fix(app): allow setup with no pipette #19160

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

Open
wants to merge 10 commits into
base: chore_release-8.6.0
Choose a base branch
from

Conversation

sfoster1
Copy link
Member

@sfoster1 sfoster1 commented Aug 7, 2025

We want to allow module setup flows when there aren't pipettes attached, if the module can be setup without pipettes. Which is some of them, some of the time, from 3 different places.

Closes RQA-4481

The new behavior applies to stackers and to absorbance readers, since neither requires a pipette for setup.

The new behavior should be:

  • On the desktop app, stacker/reader modules that are not currently in the deck config should get the setup banner even if no pipette is attached
  • On the desktop app, clicking a stacker's setup banner should launch you into setup module, which should be completeable all the way through, even if no pipette is attached
  • On the ODD, if either (a) at the time the system boots a stacker/reader is present and not in the deck config or (b) a stacker/reader is newly plugged in after boot and not in the deck config (removing a stacker from the deck config will not trigger this) you should get the blue new-module-connected banner, even if there's no pipette
  • On the ODD, the module setup wizard should prompt only modules that both need to be can currently be set up - so, even if there is a heater/shaker that needs calibration, if you don't have a pipette it shouldn't appear in the menu, but stackers and readers should always appear
  • When you run out of modules that can currently be calibrated, the flow should be the same as if you set up all the modules

@sfoster1 sfoster1 changed the title "fix" (app): allow setup with no pipette fix(app): allow setup with no pipette Aug 8, 2025
@sfoster1 sfoster1 marked this pull request as ready for review August 8, 2025 17:53
@sfoster1 sfoster1 requested a review from smb2268 August 8, 2025 17:53
Copy link

codecov bot commented Aug 8, 2025

Codecov Report

❌ Patch coverage is 0% with 88 lines in your changes missing coverage. Please review.
✅ Project coverage is 24.19%. Comparing base (95b9d6e) to head (a4be1d6).

Files with missing lines Patch % Lines
app/src/App/hooks.ts 0.00% 27 Missing ⚠️
...erventionModal/ModalContentOneColSimpleButtons.tsx 0.00% 25 Missing ⚠️
...p/src/organisms/ModuleWizardFlows/SelectModule.tsx 0.00% 18 Missing ⚠️
app/src/molecules/UpdateBanner/index.tsx 0.00% 11 Missing ⚠️
...pp/src/organisms/ModuleWizardFlows/DetachProbe.tsx 0.00% 3 Missing ⚠️
app/src/organisms/ModuleWizardFlows/index.tsx 0.00% 3 Missing ⚠️
app/src/organisms/ModuleWizardFlows/Success.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@                   Coverage Diff                   @@
##           chore_release-8.6.0   #19160      +/-   ##
=======================================================
+ Coverage                24.00%   24.19%   +0.18%     
=======================================================
  Files                     3377     3377              
  Lines                   296968   297021      +53     
  Branches                 31523    31541      +18     
=======================================================
+ Hits                     71301    71870     +569     
+ Misses                  225649   225128     -521     
- Partials                    18       23       +5     
Flag Coverage Δ
app 2.32% <0.00%> (+0.23%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...pp/src/organisms/ModuleWizardFlows/AttachProbe.tsx 0.00% <ø> (ø)
...rc/organisms/ModuleWizardFlows/BeforeBeginning.tsx 0.00% <ø> (ø)
...rganisms/ModuleWizardFlows/CheckStackerInstall.tsx 0.00% <ø> (ø)
...c/organisms/ModuleWizardFlows/CloseStackerDoor.tsx 0.00% <ø> (ø)
...src/organisms/ModuleWizardFlows/InstallShuttle.tsx 0.00% <ø> (ø)
...p/src/organisms/ModuleWizardFlows/PlaceAdapter.tsx 0.00% <ø> (ø)
...src/organisms/ModuleWizardFlows/SelectLocation.tsx 0.00% <ø> (ø)
...src/organisms/ModuleWizardFlows/UpdateFirmware.tsx 0.00% <ø> (ø)
app/src/organisms/ModuleWizardFlows/types.ts 100.00% <ø> (ø)
app/src/organisms/ModuleWizardFlows/Success.tsx 0.00% <0.00%> (ø)
... and 6 more

... and 16 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sfoster1 sfoster1 changed the base branch from edge to chore_release-8.6.0 August 8, 2025 19:03
export function useModuleAttachedToast(
launchModuleSetupCallback: () => void
): void {
const newModules = useGetNewModules()
const currentlySetuppableModules = useGetModulesNeedingSetupThatCanCurrentlyBeSetUp()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

“setuppable” 😅

// allNeedingSetup is a superset of allSetupable
const hasUnsetupabbleModules = allNeedingSetup.length > allSetupable.length
const isSingleModule = newModules.length === 1 && !hasUnsetupabbleModules
const shortCircuitFlow = attachedModuleOnLaunch != null || isSingleModule
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add another comment explaining this variable a bit?

Copy link
Contributor

@smb2268 smb2268 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing! I didn’t test it out but code lgtm.

We want to allow module setup flows when there aren't pipettes attached,
if the module can be setup without pipettes. Which is some of them, some
of the time, from 3 different places.

"Closes" RQA-4481
This is a little nicer. Split up the getNewModules code to separate
modules between whether or not they need a pipette to be set up, so we
can prompt for modules that can be set up immediately.
Sorry! It's kind of ugly but needed, right now
This way you won't be confused if you only see your stackers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants