Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
4e61c15
Update selenium-webdriver to version 4.41.0
depfu[bot] Feb 27, 2026
5441fa2
Merge pull request #2718 from sanger/depfu/update/selenium-webdriver-…
StephenHulme Feb 27, 2026
078cd89
Update bootsnap to version 1.23.0
depfu[bot] Mar 2, 2026
47fa215
fix: add log level setting to development environment
StephenHulme Mar 3, 2026
14b1b55
Merge pull request #2720 from sanger/depfu/update/bootsnap-1.23.0
StephenHulme Mar 3, 2026
3e14783
Update Node.js to version 24.14.0
depfu[bot] Mar 4, 2026
25edfd9
build: pin web-console due to rails upgrade requirement
StephenHulme Mar 4, 2026
c0c3c2f
Merge pull request #2725 from sanger/sh51/pin-web-console
StephenHulme Mar 4, 2026
d559095
Merge pull request #2724 from sanger/depfu/engine/yarn/nodejs-24.14.0
StephenHulme Mar 4, 2026
33024f5
Update autoprefixer to version 10.4.27
depfu[bot] Mar 4, 2026
ea5753e
Update vite_ruby to version 3.9.3
depfu[bot] Mar 4, 2026
52a5641
Merge pull request #2722 from sanger/sh51/add-log-level-to-dev-env
StephenHulme Mar 6, 2026
78f5d04
Merge pull request #2729 from sanger/depfu/update/yarn/autoprefixer-1…
StephenHulme Mar 6, 2026
53abffc
Update axios to version 1.13.6
depfu[bot] Mar 8, 2026
d7c1a08
Update vue to version 3.5.29
depfu[bot] Mar 9, 2026
64a6dcc
test: add bioscan LBSN-96 Lysate spec context
StephenHulme Mar 10, 2026
9a8f215
fix: determine pipeline groups from subsets of criteria
StephenHulme Mar 10, 2026
a107c39
test: update specs
StephenHulme Mar 10, 2026
8d1793e
created a modified presenter for bioscan lysate plate that does not s…
andrewsparkes Mar 10, 2026
783fdb4
Merge branch 'develop' into y26-062-bioscan-pcr-1-button
andrewsparkes Mar 12, 2026
263a6eb
Merge pull request #2736 from sanger/depfu/update/yarn/vue-3.5.29
StephenHulme Mar 13, 2026
17cb550
Merge pull request #2734 from sanger/depfu/update/yarn/axios-1.13.6
StephenHulme Mar 13, 2026
013eb3b
test: repair failing test
StephenHulme Mar 13, 2026
2834f79
Update postcss to version 8.5.8
depfu[bot] Mar 13, 2026
2085df9
Update rubocop to version 1.85.1
depfu[bot] Mar 16, 2026
fefc50c
style: update rubocop todo
StephenHulme Mar 16, 2026
94e35bf
style: lint Layout/IndentationWidth
StephenHulme Mar 16, 2026
d937b26
style: lint Style/FileOpen
StephenHulme Mar 16, 2026
8ca3abf
style: lint Style/HashAsLastArrayItem
StephenHulme Mar 16, 2026
8832d7e
style: lint Style/RedundantParentheses
StephenHulme Mar 16, 2026
2229fa9
Merge branch 'y26-062-bioscan-pcr-1-button' into y26-061-bioscan-subm…
andrewsparkes Mar 16, 2026
b16ea08
Merge pull request #2745 from sanger/depfu/update/rubocop-1.85.1
StephenHulme Mar 16, 2026
e93cc10
Adding CONTRIBUTING.md
TWJW-SANGER Mar 16, 2026
0143289
modified bioscan lysate plate presenters and statemachine to facilita…
andrewsparkes Mar 16, 2026
e064e28
created new shared example test for both bioscan presenters for the l…
andrewsparkes Mar 17, 2026
b9b2435
added unit tests for submission behaviour
andrewsparkes Mar 17, 2026
005895e
added tests for submission presenter states
andrewsparkes Mar 17, 2026
c9a29c8
Update sass to version 1.98.0
depfu[bot] Mar 17, 2026
45e147f
style: add ampersands comment
StephenHulme Mar 18, 2026
7eb0768
Merge pull request #2743 from sanger/sh51/add-more-use-cases-for-requ…
StephenHulme Mar 18, 2026
2cdbd36
Merge branch 'develop' into y26-061-bioscan-submission-button-not-sho…
andrewsparkes Mar 18, 2026
8080ff0
added code in case tube
andrewsparkes Mar 18, 2026
2136fcc
Update loofah to version 2.25.1
depfu[bot] Mar 18, 2026
fef8944
Update rspec-rails to version 8.0.4
depfu[bot] Mar 18, 2026
52fe60f
Update Ruby to version 3.4.9
depfu[bot] Mar 19, 2026
5d3ceaf
Update json to version 2.19.2
depfu[bot] Mar 19, 2026
f7eff75
Merge pull request #2753 from sanger/depfu/update/json-2.19.2
StephenHulme Mar 23, 2026
4a8dd65
Merge pull request #2749 from sanger/depfu/update/loofah-2.25.1
StephenHulme Mar 23, 2026
f847903
Merge pull request #2750 from sanger/depfu/update/rspec-rails-8.0.4
StephenHulme Mar 23, 2026
8587d48
Merge pull request #2748 from sanger/depfu/update/yarn/sass-1.98.0
StephenHulme Mar 23, 2026
4cfee75
Merge pull request #2744 from sanger/depfu/update/yarn/postcss-8.5.8
StephenHulme Mar 23, 2026
48682be
Merge pull request #2730 from sanger/depfu/update/vite_ruby-3.9.3
StephenHulme Mar 23, 2026
cc7414e
Merge pull request #2751 from sanger/depfu/engine/ruby-3.4.9
StephenHulme Mar 23, 2026
47b37bb
fixed typo and set submission state instead of ready?
andrewsparkes Mar 23, 2026
58a206c
Update oj to version 3.16.16
depfu[bot] Mar 23, 2026
c6ec886
Merge pull request #2754 from sanger/depfu/update/oj-3.16.16
StephenHulme Mar 24, 2026
c850be7
Update vue to version 3.5.30
depfu[bot] Mar 24, 2026
b48e4b5
Update vite-plugin-ruby to version 5.2.0
depfu[bot] Mar 24, 2026
36e4db2
Update vite_rails to version 3.10.0
depfu[bot] Mar 24, 2026
b6ded25
Update vite_ruby to version 3.10.0
depfu[bot] Mar 24, 2026
2d50ea2
Update webmock to version 3.26.2
depfu[bot] Mar 25, 2026
736b04b
Update mcp to version 0.9.2
depfu[bot] Mar 27, 2026
07c742e
Merge pull request #2764 from sanger/depfu/update/mcp-0.9.2
StephenHulme Mar 30, 2026
c04366e
Merge pull request #2760 from sanger/depfu/update/webmock-3.26.2
StephenHulme Mar 30, 2026
dc1d992
Merge pull request #2759 from sanger/depfu/update/vite_ruby-3.10.0
StephenHulme Mar 30, 2026
3efa351
Merge pull request #2758 from sanger/depfu/update/vite_rails-3.10.0
StephenHulme Mar 30, 2026
d16fdac
Merge pull request #2757 from sanger/depfu/update/yarn/vite-plugin-ru…
StephenHulme Mar 30, 2026
d1314db
Merge pull request #2756 from sanger/depfu/update/yarn/vue-3.5.30
StephenHulme Mar 30, 2026
e00ff45
Merge pull request #2747 from sanger/y26-061-bioscan-submission-butto…
andrewsparkes Mar 30, 2026
75270f8
Merge branch 'develop' into Y26-054
TWJW-SANGER Apr 8, 2026
2c8885b
Making Y26-054 consistent with current develop branch for ultima.
TWJW-SANGER Apr 8, 2026
f94c4cb
Making release-version consistent with develop
TWJW-SANGER Apr 8, 2026
8957f29
Making prettier ignore markdown files
TWJW-SANGER Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v24.13.1
v24.14.0
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
*.md
.bundle
db/*.sqlite3
log/*.log*
Expand Down
2 changes: 1 addition & 1 deletion .release-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.96.1
3.96.0
3 changes: 3 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ AllCops:
- vendor/**/*
NewCops: enable

Layout/IndentationWidth:
EnforcedStyleAlignWith: relative_to_receiver

Layout/LeadingCommentSpace:
AllowRBSInlineAnnotation: true

Expand Down
29 changes: 27 additions & 2 deletions .rubocop_todo.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config --no-exclude-limit`
# on 2025-12-03 11:51:13 UTC using RuboCop version 1.81.7.
# on 2026-03-16 10:14:34 UTC using RuboCop version 1.85.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
Expand Down Expand Up @@ -298,7 +298,7 @@ RSpec/MultipleDescribes:
- 'spec/models/utility/normalised_binning_calculator_spec.rb'
- 'spec/models/utility/pcr_cycles_binning_calculator_spec.rb'

# Offense count: 248
# Offense count: 249
# Configuration parameters: Max.
RSpec/MultipleExpectations:
Exclude:
Expand Down Expand Up @@ -569,12 +569,37 @@ RSpecRails/TravelAround:
- 'spec/models/presenters/permissive_submission_presenter_spec.rb'
- 'spec/models/presenters/submission_plate_presenter_spec.rb'

# Offense count: 2
Style/FileOpen:
Exclude:
- 'script/limber'

# Offense count: 2
Style/MultilineBlockChain:
Exclude:
- 'app/controllers/pipelines_controller.rb'
- 'app/models/labware_creators/tubes_from_plate_well.rb'

# Offense count: 2
# Configuration parameters: AllowedClasses.
Style/OneClassPerFile:
Exclude:
- 'config/initializers/json_api_casters.rb'
- 'spec/models/concerns/presenters/statemachine/feature_in_states_spec.rb'

# Offense count: 8
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/ReduceToHash:
Exclude:
- 'app/helpers/exports_helper.rb'
- 'app/integrations/sequencescape/api/v2/tag_layout_template.rb'
- 'app/models/plate_walking.rb'
- 'app/models/tube_rack_walking.rb'
- 'app/models/utility/common_dilution_calculations.rb'
- 'lib/tasks/config.rake'
- 'lib/well_helpers.rb'
- 'spec/models/labware_creators/plate_split_to_tube_racks_spec.rb'

# Offense count: 4
# Configuration parameters: Max.
Style/SafeNavigationChainLength:
Expand Down
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.4.8
3.4.9
30 changes: 30 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Contributing

All contributions to this project are subject to the [MIT License](https://foss-haas.mit-license.org/). By submitting a contribution, you agree to license your work under these terms.

## Contribution Process

### 1. Issue First

All contributions from outside the core team require an **Issue First** approach. Before submitting a pull request (PR), you must:

- Open an issue in the repository.
- Ensure the issue includes:
- **Clear problem statement:** Describe the issue or feature request.
- **Reproduction steps:** If reporting a bug, provide steps to reproduce it.
- **Proposed approach:** Outline your suggested solution or implementation.
- **Why this change matters:** Explain the impact or necessity of the change.
- Tag `@sanger/psd-developers` in the issue to bring it to the attention of a maintainer.
- Wait for the issue to be assigned or approved by a maintainer.

### 2. Pull Request

Once your issue is approved:

- Fork the repository and create a branch for your changes.
- Submit a PR referencing the approved issue.
- Ensure your code adheres to the project's coding standards and passes all tests.

### 3. Review

Maintainers will review your PR. Address any feedback before merging.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ruby:3.4.8-slim
FROM ruby:3.4.9-slim

# Major version of Node.js to install
ARG nodeVersion=22
Expand Down
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ group :development do
gem 'guard-rspec', require: false
gem 'pry'
gem 'pry-byebug'
gem 'web-console'
gem 'web-console', '~> 4.2.1' # version 4.3.0 requires Rails 8.0

# MiniProfiler allows you to see the speed of a request conveniently on the page.
gem 'rack-mini-profiler'
Expand Down
52 changes: 29 additions & 23 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ GEM
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
addressable (2.8.9)
public_suffix (>= 2.0.2, < 8.0)
ast (2.4.3)
base64 (0.3.0)
benchmark (0.5.0)
Expand All @@ -113,9 +113,9 @@ GEM
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bigdecimal (4.0.1)
bigdecimal (4.1.0)
bindex (0.8.1)
bootsnap (1.22.0)
bootsnap (1.23.0)
msgpack (~> 1.2)
builder (3.3.0)
byebug (13.0.0)
Expand Down Expand Up @@ -220,7 +220,10 @@ GEM
prism (>= 1.3.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
json (2.18.1)
json (2.19.2)
json-schema (6.2.0)
addressable (~> 2.8)
bigdecimal (>= 3.1, < 5)
language_server-protocol (3.17.0.5)
launchy (3.1.1)
addressable (~> 2.8)
Expand All @@ -231,7 +234,7 @@ GEM
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
logger (1.7.0)
loofah (2.25.0)
loofah (2.25.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
lumberjack (1.2.10)
Expand All @@ -243,6 +246,8 @@ GEM
net-smtp
marcel (1.1.0)
matrix (0.4.2)
mcp (0.9.2)
json-schema (>= 4.1)
method_source (1.1.0)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
Expand All @@ -263,18 +268,18 @@ GEM
net-smtp (0.5.1)
net-protocol
nio4r (2.7.5)
nokogiri (1.19.1)
nokogiri (1.19.2)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
notiffany (0.1.3)
nenv (~> 0.1)
shellany (~> 0.0)
oj (3.16.15)
oj (3.16.16)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
ostruct (0.6.3)
parallel (1.27.0)
parser (3.3.10.1)
parser (3.3.10.2)
ast (~> 2.4.1)
racc
pp (0.6.3)
Expand All @@ -292,7 +297,7 @@ GEM
psych (5.3.1)
date
stringio
public_suffix (6.0.2)
public_suffix (7.0.5)
puma (7.2.0)
nio4r (~> 2.0)
racc (1.8.1)
Expand Down Expand Up @@ -368,30 +373,31 @@ GEM
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-json_expectations (2.2.0)
rspec-mocks (3.13.7)
rspec-mocks (3.13.8)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (8.0.3)
rspec-rails (8.0.4)
actionpack (>= 7.2)
activesupport (>= 7.2)
railties (>= 7.2)
rspec-core (~> 3.13)
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-core (>= 3.13.0, < 5.0.0)
rspec-expectations (>= 3.13.0, < 5.0.0)
rspec-mocks (>= 3.13.0, < 5.0.0)
rspec-support (>= 3.13.0, < 5.0.0)
rspec-support (3.13.7)
rubocop (1.84.1)
rubocop (1.85.1)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
mcp (~> 0.6)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.49.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.49.0)
rubocop-ast (1.49.1)
parser (>= 3.3.7.2)
prism (~> 1.7)
rubocop-capybara (2.22.1)
Expand Down Expand Up @@ -419,7 +425,7 @@ GEM
ruby2_keywords (0.0.5)
rubyzip (3.2.2)
securerandom (0.4.1)
selenium-webdriver (4.40.0)
selenium-webdriver (4.41.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
Expand Down Expand Up @@ -460,10 +466,10 @@ GEM
unicode-emoji (~> 4.1)
unicode-emoji (4.2.0)
useragent (0.16.11)
vite_rails (3.0.20)
vite_rails (3.10.0)
railties (>= 5.1, < 9)
vite_ruby (~> 3.0, >= 3.2.2)
vite_ruby (3.9.2)
vite_ruby (3.10.0)
dry-cli (>= 0.7, < 2)
logger (~> 1.6)
mutex_m
Expand All @@ -474,7 +480,7 @@ GEM
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
railties (>= 6.0.0)
webmock (3.26.1)
webmock (3.26.2)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
Expand Down Expand Up @@ -534,7 +540,7 @@ DEPENDENCIES
syslog
vite_rails
vite_ruby
web-console
web-console (~> 4.2.1)
webmock
yard

Expand Down
2 changes: 1 addition & 1 deletion app/integrations/sequencescape/api/v2/plate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class Sequencescape::Api::V2::Plate < Sequencescape::Api::V2::Base

DEFAULT_INCLUDES = [
:purpose,
{ wells: [requests_as_source: %i[primer_panel], aliquots: [request: %i[primer_panel request_type]]] }
{ wells: [{ requests_as_source: %i[primer_panel], aliquots: [{ request: %i[primer_panel request_type] }] }] }
].freeze

self.plate = true
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# frozen_string_literal: true

require_dependency 'presenters/statemachine'
module Presenters::Statemachine
#
# Presenters::Statemachine::SubmissionWhenInputAndWhenPassed can be included in a class to
# provide a state machine with the following behaviour:
# - When plates are 'pending' the submission sidebar will be displayed.
# This sidebar allows the user to build a submission for an input plate.
# - When plates are 'passed' the submission sidebar will also be displayed.
# This sidebar allows the user to build a submission for a plate that has already been through
# the pipeline before. Used for repeating runs.
# - In all other states the default sidebar will be used
# - When the plate is passed, the user will be allowed to create the child plates
# - In all other states the user will be unable to advanced the plate
#
# Typically this state machine should be used in conjunction with an input
# plate purpose. {file:docs/purposes_yaml_files.md See the purposes yaml configuration.}
# Purposes with input_plate set to true use the PlatePurpose::Input class in sequencescape.
# These plates show the following states:
# Pending: No submission made, or some wells with samples have no submissions
# Passed: Initial Submission has been made, and the plate is ready to proceed, or previous run has
# completed, but ready for a repeat run.
# Cancelled/Failed: Seen when all requests out of the plate have these states.
#
# Other states: Typically not seen in standard scenarios.
module SubmissionWhenInputAndWhenPassed
extend ActiveSupport::Concern

included do
include Shared

# The state machine for plates which has knock-on effects on the plates that can be created
state_machine :state, initial: :pending do
StateTransitions.inject(self)

# These are the states, which are really the only things we need ...
state :pending do
include StateDoesNotAllowChildCreation

def sidebar_partial
'submission'
end
end

state :started do
include StateDoesNotAllowChildCreation
end

state :processed_1 do
include StateAllowsChildCreation
end

state :processed_2 do
include StateDoesNotAllowChildCreation
end

state :processed_3 do
include StateDoesNotAllowChildCreation
end

state :processed_4 do
include StateDoesNotAllowChildCreation
end

state :passed do
include StateAllowsChildCreation

def sidebar_partial
'submission_default'
end
end

state :qc_complete, human_name: 'QC Complete' do
include StateAllowsChildCreation
end

state :cancelled do
include StateDoesNotAllowChildCreation
end

state :failed do
include StateDoesNotAllowChildCreation
end

state :unknown do
include StateDoesNotAllowChildCreation
end
end
end
end
end
Loading
Loading