Skip to content

chore: update prod from main - #1361

Merged
fhennig merged 7 commits into
prodfrom
main
Sep 9, 2026
Merged

fhennig merged 7 commits into
prodfrom
main

Conversation

@github-actions

Copy link
Copy Markdown

This pull request updates the prod branch with the latest changes from the main branch.

⚠️ Do not squash-merge! ⚠️

Make sure to merge this creating a merge commit.

…alues (#1360)

Pathoplexus restructured mpox lineages: the LAPIS field is now
`outbreakLineage` (old `lineage` field no longer has a lineage index,
causing the lineage definition fetch to fail). Lineage values are now
prefixed with the outbreak identifier (e.g. `sh2017/F.1`).

- Labels updated to "Outbreak & Lineage" throughout
- Predefined variants and compare-side-by-side defaults updated to use
`sh2017/F.*` values
- E2E test helper updated with new field placeholder and lineage value

Co-authored-by: Felix Hennig <felix-agent@felixhennig.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
dashboards Ready Ready Preview Sep 9, 2026 9:00am UTC

Request Review

…ders (#1358)

resolves #1255 

### Summary

The variant-selection e2e tests (compareSideBySide, singleVariant) were
flaky on Firefox/WebKit. The worst failure mode: fillLineageField typed
into the lineage autocomplete then clicked the matching dropdown option,
but the Downshift menu can be closed again by a concurrent re-render
(each filter field fetches its options from LAPIS independently). The
option then never appears and the click waits out the full 60s test
timeout -- a larger timeout cannot help a closed menu. Re-open the menu
and retry the option click together so a transient close cannot wedge
the test.

Also keep two mitigations for the slower "still loading" failure mode:
bump @playwright/test 1.60->1.61 and set a global 15s expect timeout.

Co-authored-by: Felix Hennig <felix-agent@felixhennig.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
fhennig and others added 2 commits July 30, 2026 09:54
…dashboards (#1359)

### Summary

Extract resistance mutation collection configs and helpers from the
wasap subtree into a shared util file (resistanceMutations.ts). Add
`byEnv` as a pure selector to dbIdSpace.ts. Wire COVID, RSV-A, and RSV-B
constants to factory functions that build collection configs; have the
generic Astro page components fetch annotations server-side and pass
them down through the React layout tree.

### Screenshot

<img width="1615" height="1277" alt="image"
src="https://github.com/user-attachments/assets/2ac51710-8848-45d5-9035-6f4f14e06126"
/>


## PR Checklist
- [ ] All necessary documentation has been adapted.
- [ ] The implemented feature is covered by an appropriate test.

---------

Co-authored-by: Felix Hennig <felix-agent@felixhennig.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ageData (#1362)

#1349 

### Summary

Introduce WasapValidationError for config/state validation failures
(mode not enabled, no collection selected, etc.) and tell React Query
not to retry them, so the UI doesn't spin for ~7s on states that are
immediately known to be invalid.

## PR Checklist
- ~~All necessary documentation has been adapted.~~
- [x] The implemented feature is covered by an appropriate test.

---------

Co-authored-by: Felix Hennig <felix-agent@felixhennig.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ant types (#1363)

resolves #1357 

### Summary

Explains what 'Nucleotide substitutions' vs 'New nucleotide
substitutions' means for each lineage collection. The parent lineage
name is included in the description of the 'New' variants. These
descriptions surface in the collection detail page and as tooltips in
the queries-over-time table.

### Screenshot

<img width="1270" height="670" alt="image"
src="https://github.com/user-attachments/assets/c8cdff0d-8683-4f34-b72f-5274b05a9980"
/>


<img width="1538" height="513" alt="image"
src="https://github.com/user-attachments/assets/30a3b7dc-08c4-4dd5-bd90-699d6002038d"
/>


## PR Checklist
- ~~All necessary documentation has been adapted.~~
- ~~The implemented feature is covered by an appropriate test.~~

---------

Co-authored-by: Felix Hennig <felix-agent@felixhennig.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
… 1.19.0 (#1371)

chore(website): bump @genspectrum/dashboard-components from 1.18.0 to
1.19.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_014VYznUoFqp495aC7m4mqDt

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…tes' (#1374)

## Summary
- An unrestricted `samplingDate` at 'day' granularity could exceed the
mutations-over-time component's column limit ("Too many dates"). A bare
WASAP URL now defaults to "Most recent 30 days" instead of leaving the
range unrestricted.
- That default, and any other preset (e.g. picked from the date filter
dropdown), is resolved against the dataset's actual latest sample date
rather than today's wall-clock date, so it stays accurate even when data
lags behind. Resolution only costs a network round trip when a preset
label needs it — explicit custom date ranges still resolve synchronously
with no extra request.
- The date filter dropdown gained an explicit "All times" option for
users who want the old unrestricted behavior deliberately.
- Presets round-trip through the URL as their label (e.g.
`samplingDate=Most+recent+30+days`) instead of being pinned to literal
dates, so reloading or sharing a link re-resolves against current data.
Explicit custom ranges still serialize as literal dates.

## Test plan
- [x] `npx tsc --noEmit` passes
- [x] `npx eslint` clean on changed files
- [x] Unit + browser tests pass (`WasapPageStateHandler.spec.ts`,
`useResolvedSamplingDate.browser.spec.tsx`,
`recentDaysDateRangeOptions.spec.ts`,
`DynamicDateFilter.browser.spec.tsx`)
- [ ] Manual check in a running dev server: load a WASAP page with a
bare URL and confirm it resolves to "Most recent 30 days" against real
data, then try picking other presets and "All times" from the dropdown

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_015sY3zvsCSa8bvRzVAoVa5o

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Felix Hennig <felix-agent@felixhennig.com>
@fhennig
fhennig merged commit 4c10f25 into prod Sep 9, 2026
11 checks passed
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.

1 participant