diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b69c09a7aef..430dda11707 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -399,11 +399,9 @@ If you create the key as `~/.ssh/robot_key` and `~/.ssh/robot_key.pub` then `mak Our release process is still a work-in-progress. The app and API projects are currently versioned together to ensure interoperability. - 1. Ensure you have a buildroot release created in GitHub with all the changes you want in this release, if any. If there are no buildroot changes, you don't have to create a new release; the last tag in buildroot is used for release builds. 2. Checkout `edge` and make a release branch, without any new changes. The branch name should match `release_*` to make `make bump` usage easier and make it clear this is a release. - ```shell git checkout edge git pull @@ -432,26 +430,28 @@ git push origin v${version} 12. Run QA on this release. If issues are found, create PRs targeted on the release branch. To create new alpha releases, repeat steps 4-11. 13. Once QA is a pass, bump to the target release version (review [the section below](#make-bump-usage) again) 14. Fix up the autogenerated changelogs to remove the references to alpha versions and make sure the release version has all changes since the latest release - - Make sure the comparison link is to the latest release verison (e.g.: `compare/v3.11.4...v3.12.0)` instead of `compare/v3.12.0-alpha.1...v3.12.0)`) - - Delete the sub-sections that relate only to alpha releases, so that the changelog is against the latest actual release + +- Make sure the comparison link is to the latest release verison (e.g.: `compare/v3.11.4...v3.12.0)` instead of `compare/v3.12.0-alpha.1...v3.12.0)`) +- Delete the sub-sections that relate only to alpha releases, so that the changelog is against the latest actual release + 15. Do a NORMAL MERGE into `master`. Do NOT squash or rebase. This should be done from your local command line (and will succeed as long as the release PR is reviewed and status checks have passed): ```shell -# note: make sure you have pulled the latest changes for branch +# note: make sure you have pulled the latest changes for branch # release_${version} locally before merging into master git checkout master git merge --ff-only release_${version} git push origin master ``` -15. Tag the release: +15. Tag the release: ```shell git tag -a v${version} -m 'chore(release): ${version}' git push origin v${version} ``` -16. Open a PR of `master` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`: +16. Open a PR of `master` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`: ```shell git checkout edge @@ -466,7 +466,6 @@ git merge --no-ff master 1. Ensure you have a buildroot release created in GitHub with all the changes you want to see, if any. If there aren't any, you don't have to create a new buildroot release; by default, the last tag is used for release builds. 2. Checkout `master` and make a release branch, without any new changes. The branch name should match `hotfix_*` to make it clear this is a hotfix, and make `make bump` usage simpler. - ```shell git checkout master git pull @@ -495,26 +494,28 @@ git push origin v${version} 12. Run QA on this release. If issues are found, create PRs targeted on the release branch. To create new alpha releases, repeat steps 4-11. 13. Once QA is a pass, bump to your target version (review [the section below](#make-bump-usage) again) 14. Fix up the autogenerated changelogs to remove the references to alpha versions and make sure the release version has all changes since the last release - - Make sure the comparison link is to the latest release verison (e.g.: `compare/v3.11.4...v3.12.0)` instead of `compare/v3.12.0-alpha.1...v3.12.0)`) - - Delete the sub-sections that relate only to alpha releases, so that the changelog is against the latest actual release + +- Make sure the comparison link is to the latest release verison (e.g.: `compare/v3.11.4...v3.12.0)` instead of `compare/v3.12.0-alpha.1...v3.12.0)`) +- Delete the sub-sections that relate only to alpha releases, so that the changelog is against the latest actual release + 15. Do a NORMAL MERGE into `master`. Do NOT squash or rebase. This should be done from your local command line (and will succeed as long as the release PR is reviewed and status checks have passed): ```shell -# note: make sure you have pulled the latest changes for branch +# note: make sure you have pulled the latest changes for branch # release_${version} locally before merging into master git checkout master git merge --ff-only release_${version} git push origin master ``` -15. Tag the release: +15. Tag the release: ```shell git tag -a v${version} -m 'chore(release): ${version}' git push origin v${version} ``` -16. Open a PR of `master` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`: +16. Open a PR of `master` into `edge`. Give the PR a name like `chore(release): Merge changes from ${version} into edge`. Once it passes, on the command line merge it into `edge`: ```shell git checkout edge diff --git a/app-shell/src/buildroot/index.js b/app-shell/src/buildroot/index.js index f1d633722ac..5043f4085d0 100644 --- a/app-shell/src/buildroot/index.js +++ b/app-shell/src/buildroot/index.js @@ -43,14 +43,18 @@ export function registerBuildrootUpdate(dispatch: Dispatch) { log.info('Starting robot premigration', { robot }) startPremigration(robot) - .then((): BuildrootAction => ({ - type: 'buildroot:PREMIGRATION_DONE', - payload: robot.name, - })) - .catch((error: Error): BuildrootAction => ({ - type: 'buildroot:PREMIGRATION_ERROR', - payload: { message: error.message }, - })) + .then( + (): BuildrootAction => ({ + type: 'buildroot:PREMIGRATION_DONE', + payload: robot.name, + }) + ) + .catch( + (error: Error): BuildrootAction => ({ + type: 'buildroot:PREMIGRATION_ERROR', + payload: { message: error.message }, + }) + ) .then(dispatch) break diff --git a/app/src/components/ModuleLiveStatusCards/ThermocyclerCard.js b/app/src/components/ModuleLiveStatusCards/ThermocyclerCard.js index ec7aa04c0f3..64819ed1a4a 100644 --- a/app/src/components/ModuleLiveStatusCards/ThermocyclerCard.js +++ b/app/src/components/ModuleLiveStatusCards/ThermocyclerCard.js @@ -72,12 +72,16 @@ const ThermocyclerCard = ({ , row: number): Array => { - return columns.map((slot: DeckSlotId, col: number): React.Node => { - if (slot === TRASH_SLOTNAME) return null + return columns.map( + (slot: DeckSlotId, col: number): React.Node => { + if (slot === TRASH_SLOTNAME) return null - const props = { - slot, - width: SLOT_RENDER_WIDTH, - height: SLOT_RENDER_HEIGHT, - } - const transform = `translate(${[ - SLOT_RENDER_WIDTH * col + SLOT_SPACING_MM * (col + 1), - SLOT_RENDER_HEIGHT * row + SLOT_SPACING_MM * (row + 1), - ].join(',')})` + const props = { + slot, + width: SLOT_RENDER_WIDTH, + height: SLOT_RENDER_HEIGHT, + } + const transform = `translate(${[ + SLOT_RENDER_WIDTH * col + SLOT_SPACING_MM * (col + 1), + SLOT_RENDER_HEIGHT * row + SLOT_SPACING_MM * (row + 1), + ].join(',')})` - return ( - // $FlowFixMe: (mc, 2019-04-18) don't know why flow doesn't like this, don't care because this is going away - - - {LabwareComponent && } - - ) - }) + return ( + // $FlowFixMe: (mc, 2019-04-18) don't know why flow doesn't like this, don't care because this is going away + + + {LabwareComponent && } + + ) + } + ) } ) } diff --git a/components/src/deck/LabwareRender.js b/components/src/deck/LabwareRender.js index 79eb2bea742..faa4075ef19 100644 --- a/components/src/deck/LabwareRender.js +++ b/components/src/deck/LabwareRender.js @@ -36,7 +36,9 @@ export default function LabwareRender(props: LabwareRenderProps) { const cornerOffsetFromSlot = props.definition.cornerOffsetFromSlot return ( {() => ( {() => ( => - (currentValue || '') - .trim() - .split(',') - .map(s => s.trim()) - .filter(Boolean) + .transform( + ( + currentValue: ?string, + originalValue: ?string + ): $PropertyType => + (currentValue || '') + .trim() + .split(',') + .map(s => s.trim()) + .filter(Boolean) ), loadName: Yup.string() diff --git a/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.js b/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.js index ae58480c6fc..1bc395b45ee 100644 --- a/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.js +++ b/protocol-designer/src/components/LabwareSelectionModal/LabwarePreview.js @@ -44,7 +44,9 @@ const LabwarePreview = (props: Props) => {
{() => } diff --git a/protocol-designer/src/components/StepEditForm/fields/ChangeTip/index.js b/protocol-designer/src/components/StepEditForm/fields/ChangeTip/index.js index d5b82946078..a7ce3976e60 100644 --- a/protocol-designer/src/components/StepEditForm/fields/ChangeTip/index.js +++ b/protocol-designer/src/components/StepEditForm/fields/ChangeTip/index.js @@ -45,7 +45,9 @@ function getDisabledChangeTipOptions( } default: { console.warn( - `getChangeTipOptions for stepType ${rawForm.stepType} not yet implemented!` + `getChangeTipOptions for stepType ${ + rawForm.stepType + } not yet implemented!` ) return null } diff --git a/protocol-designer/src/components/labware/SingleLabware.js b/protocol-designer/src/components/labware/SingleLabware.js index 51858c522fb..af3f3a8d786 100644 --- a/protocol-designer/src/components/labware/SingleLabware.js +++ b/protocol-designer/src/components/labware/SingleLabware.js @@ -8,7 +8,9 @@ type Props = React.ElementProps export default function SingleLabware(props: Props) { return ( {() => } diff --git a/protocol-designer/src/file-data/selectors/commands.js b/protocol-designer/src/file-data/selectors/commands.js index 21829ff0240..bd2ce5a3102 100644 --- a/protocol-designer/src/file-data/selectors/commands.js +++ b/protocol-designer/src/file-data/selectors/commands.js @@ -164,7 +164,9 @@ export const getRobotStateTimeline: Selector = createSe if (!reducedCommandCreator) { console.warn( - `commandCreatorFnName "${stepArgs.commandCreatorFnName}" not yet implemented for robotStateTimeline` + `commandCreatorFnName "${ + stepArgs.commandCreatorFnName + }" not yet implemented for robotStateTimeline` ) return acc } diff --git a/protocol-designer/src/step-forms/reducers/index.js b/protocol-designer/src/step-forms/reducers/index.js index f8e9b8c8d6b..af08c439cc5 100644 --- a/protocol-designer/src/step-forms/reducers/index.js +++ b/protocol-designer/src/step-forms/reducers/index.js @@ -516,13 +516,15 @@ export const labwareInvariantProperties = handleActions< state: NormalizedLabwareById, action: ReplaceCustomLabwareDef ): NormalizedLabwareById => - mapValues(state, (prev: NormalizedLabware): NormalizedLabware => - action.payload.defURIToOverwrite === prev.labwareDefURI - ? { - ...prev, - labwareDefURI: getLabwareDefURI(action.payload.newDef), - } - : prev + mapValues( + state, + (prev: NormalizedLabware): NormalizedLabware => + action.payload.defURIToOverwrite === prev.labwareDefURI + ? { + ...prev, + labwareDefURI: getLabwareDefURI(action.payload.newDef), + } + : prev ), }, initialLabwareState diff --git a/protocol-designer/src/step-forms/selectors/index.js b/protocol-designer/src/step-forms/selectors/index.js index 35b9008111d..c0c7165b668 100644 --- a/protocol-designer/src/step-forms/selectors/index.js +++ b/protocol-designer/src/step-forms/selectors/index.js @@ -75,7 +75,9 @@ function _hydrateLabwareEntity( const def = defsByURI[l.labwareDefURI] assert( def, - `could not hydrate labware ${labwareId}, missing def for URI ${l.labwareDefURI}` + `could not hydrate labware ${labwareId}, missing def for URI ${ + l.labwareDefURI + }` ) return { ...l, diff --git a/protocol-designer/src/step-forms/utils.js b/protocol-designer/src/step-forms/utils.js index 2583d9088be..cb65c7ad9db 100644 --- a/protocol-designer/src/step-forms/utils.js +++ b/protocol-designer/src/step-forms/utils.js @@ -57,7 +57,9 @@ export function denormalizePipetteEntities( const spec = getPipetteNameSpecs(pipette.name) if (!spec) { throw new Error( - `no pipette spec for pipette id "${pipetteId}", name "${pipette.name}"` + `no pipette spec for pipette id "${pipetteId}", name "${ + pipette.name + }"` ) } diff --git a/protocol-designer/src/step-generation/commandCreators/compound/transfer.js b/protocol-designer/src/step-generation/commandCreators/compound/transfer.js index 6c58532da4c..2c9408e1a53 100644 --- a/protocol-designer/src/step-generation/commandCreators/compound/transfer.js +++ b/protocol-designer/src/step-generation/commandCreators/compound/transfer.js @@ -41,7 +41,9 @@ const transfer = (args: TransferArgs): CompoundCommandCreator => ( */ assert( args.sourceWells.length === args.destWells.length, - `Transfer command creator expected N:N source-to-dest wells ratio. Got ${args.sourceWells.length}:${args.destWells.length}` + `Transfer command creator expected N:N source-to-dest wells ratio. Got ${ + args.sourceWells.length + }:${args.destWells.length}` ) // TODO Ian 2018-04-02 following ~10 lines are identical to first lines of consolidate.js... const actionName = 'transfer' diff --git a/protocol-designer/src/step-generation/getNextRobotStateAndWarnings/index.js b/protocol-designer/src/step-generation/getNextRobotStateAndWarnings/index.js index cc5212fe170..be07c6f0cd8 100644 --- a/protocol-designer/src/step-generation/getNextRobotStateAndWarnings/index.js +++ b/protocol-designer/src/step-generation/getNextRobotStateAndWarnings/index.js @@ -40,7 +40,9 @@ export default function getNextRobotStateAndWarnings( default: assert( false, - `unknown command: ${command.command} passed to getNextRobotStateAndWarning` + `unknown command: ${ + command.command + } passed to getNextRobotStateAndWarning` ) return { robotState: prevRobotState, warnings: [] } } diff --git a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.js b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.js index 8f6d2a103bd..a7e0da7b2c7 100644 --- a/protocol-designer/src/steplist/formLevel/handleFormChange/utils.js +++ b/protocol-designer/src/steplist/formLevel/handleFormChange/utils.js @@ -64,7 +64,9 @@ export function getMaxDisposalVolumeForMultidispense( if (!rawForm) return null assert( rawForm.path === 'multiDispense', - `getMaxDisposalVolumeForMultidispense expected multiDispense, got path ${rawForm.path}` + `getMaxDisposalVolumeForMultidispense expected multiDispense, got path ${ + rawForm.path + }` ) const volume = Number(rawForm.volume) const pipetteEntity = pipetteEntities[rawForm.pipette] @@ -82,7 +84,9 @@ export function volumeInCapacityForMulti( const volume = Number(rawForm.volume) assert( rawForm.pipette in pipetteEntities, - `volumeInCapacityForMulti expected pipette ${rawForm.pipette} to be in pipetteEntities` + `volumeInCapacityForMulti expected pipette ${ + rawForm.pipette + } to be in pipetteEntities` ) const pipetteEntity = pipetteEntities[rawForm.pipette] const pipetteCapacity = pipetteEntity && getPipetteCapacity(pipetteEntity) diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.js b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.js index b61675ad789..39c3275acb3 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.js +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.js @@ -48,7 +48,9 @@ const moveLiquidFormToArgs = ( ): MoveLiquidStepArgs => { assert( hydratedFormData.stepType === 'moveLiquid', - `moveLiquidFormToArgs called with stepType ${hydratedFormData.stepType}, expected "moveLiquid"` + `moveLiquidFormToArgs called with stepType ${ + hydratedFormData.stepType + }, expected "moveLiquid"` ) const fields = hydratedFormData.fields @@ -185,7 +187,9 @@ const moveLiquidFormToArgs = ( sourceWellsUnordered.length === 1 || destWellsUnordered.length === 1 || sourceWellsUnordered.length === destWellsUnordered.length, - `cannot do moveLiquidFormToArgs. Mismatched wells (not 1:N, N:1, or N:N!) for path="single". Neither source (${sourceWellsUnordered.length}) nor dest (${destWellsUnordered.length}) equal 1` + `cannot do moveLiquidFormToArgs. Mismatched wells (not 1:N, N:1, or N:N!) for path="single". Neither source (${ + sourceWellsUnordered.length + }) nor dest (${destWellsUnordered.length}) equal 1` ) switch (path) { diff --git a/protocol-designer/src/steplist/generateSubsteps.js b/protocol-designer/src/steplist/generateSubsteps.js index f8720a087e6..4e26f692fc7 100644 --- a/protocol-designer/src/steplist/generateSubsteps.js +++ b/protocol-designer/src/steplist/generateSubsteps.js @@ -107,7 +107,9 @@ function transferLikeSubsteps(args: {| } else { // TODO Ian 2018-05-21 Use assert here. Should be unreachable console.warn( - `transferLikeSubsteps got unsupported stepType "${stepArgs.commandCreatorFnName}"` + `transferLikeSubsteps got unsupported stepType "${ + stepArgs.commandCreatorFnName + }"` ) return null } diff --git a/protocol-designer/src/steplist/substepTimeline.js b/protocol-designer/src/steplist/substepTimeline.js index ae6c5025a57..807378b8601 100644 --- a/protocol-designer/src/steplist/substepTimeline.js +++ b/protocol-designer/src/steplist/substepTimeline.js @@ -66,7 +66,9 @@ const substepTimelineSingle = (commandCreators: Array) => ( ) { assert( nextFrame.commands.length === 1, - `substepTimeline expected nextFrame to have only single commands for ${firstCommand.command}` + `substepTimeline expected nextFrame to have only single commands for ${ + firstCommand.command + }` ) const commandGroup = firstCommand @@ -143,7 +145,9 @@ const substepTimeline = ( ) { assert( nextFrame.commands.length === 1, - `substepTimeline expected nextFrame to have only single commands for ${firstCommand.command}` + `substepTimeline expected nextFrame to have only single commands for ${ + firstCommand.command + }` ) const { well, volume, labware } = firstCommand.params diff --git a/protocol-designer/src/top-selectors/well-contents/index.js b/protocol-designer/src/top-selectors/well-contents/index.js index bab9ebb6fab..0880e2f99b5 100644 --- a/protocol-designer/src/top-selectors/well-contents/index.js +++ b/protocol-designer/src/top-selectors/well-contents/index.js @@ -154,7 +154,9 @@ export const getAllWellContentsForActiveItem: Selector = assert( timelineIdx !== -1, - `getAllWellContentsForActiveItem got unhandled terminal id: "${activeItem.id}"` + `getAllWellContentsForActiveItem got unhandled terminal id: "${ + activeItem.id + }"` ) const liquidState = timeline[timelineIdx].robotState.liquidState.labware diff --git a/protocol-designer/src/ui/steps/selectors.js b/protocol-designer/src/ui/steps/selectors.js index 99b87f8807a..3b778f5daa9 100644 --- a/protocol-designer/src/ui/steps/selectors.js +++ b/protocol-designer/src/ui/steps/selectors.js @@ -91,7 +91,9 @@ const getHoveredStepLabware: Selector> = createSelector( if (!(stepArgs.commandCreatorFnName === 'delay')) { // TODO Ian 2018-05-08 use assert here console.warn( - `getHoveredStepLabware does not support step type "${stepArgs.commandCreatorFnName}"` + `getHoveredStepLabware does not support step type "${ + stepArgs.commandCreatorFnName + }"` ) } diff --git a/shared-data/js/helpers/getWellNamePerMultiTip.js b/shared-data/js/helpers/getWellNamePerMultiTip.js index 59f9632e058..eec777d2235 100644 --- a/shared-data/js/helpers/getWellNamePerMultiTip.js +++ b/shared-data/js/helpers/getWellNamePerMultiTip.js @@ -39,7 +39,9 @@ export function getWellNamePerMultiTip( const topWell = labwareDef.wells[topWellName] if (!topWell) { console.warn( - `well "${topWellName}" does not exist in labware ${labwareDef?.namespace}/${labwareDef?.parameters?.loadName}, cannot getWellNamePerMultiTip` + `well "${topWellName}" does not exist in labware ${ + labwareDef?.namespace + }/${labwareDef?.parameters?.loadName}, cannot getWellNamePerMultiTip` ) return null } diff --git a/shared-data/js/helpers/getWellTotalVolume.js b/shared-data/js/helpers/getWellTotalVolume.js index 8581195c0c4..ae9dc2fd1bb 100644 --- a/shared-data/js/helpers/getWellTotalVolume.js +++ b/shared-data/js/helpers/getWellTotalVolume.js @@ -8,7 +8,9 @@ const getWellTotalVolume = ( const well = labwareDef.wells[wellName] if (!well) { console.warn( - `No well "${wellName}" found for labware ${labwareDef?.namespace}/${labwareDef?.parameters?.loadName}/${labwareDef?.version}"` + `No well "${wellName}" found for labware ${labwareDef?.namespace}/${ + labwareDef?.parameters?.loadName + }/${labwareDef?.version}"` ) return null }