Repository navigation
Release 2026.3.1 - #752
Merged
Merged
Release 2026.3.1#752
Conversation
Claude Code doesn't load .github/instructions, and parts had drifted from the code (it still says there's no test suite). AGENTS.md and .claude/rules replace them later on this branch.
Vue compiles a handler as a function body only when it contains a semicolon, and Prettier (semi: false) removes it, which breaks the build. A comma expression survives formatting.
Mechanical: prettier --write . with the existing .prettierrc.json. No behavior change; the unit tests and the production build pass.
- Chart accessors are now typed as get/set overloads, so chained setters type-check and the line chart and histogram chains no longer error. - Add @types/jquery for the histogram's one jquery call. - Keep auth.ts's vue-router import as a side-effect import; removing it drops the global component properties from about 100 components. - Remove scoreSetHasCalibrationWithEvidenceStrengths, which had no callers and read the renamed functionalRanges field. - Smaller fixes: null props passed as undefined so their defaults apply, the calibration suggestions prop takes external publications, a missing histogram score is NaN, SimpleDnaVariation no longer redeclares an inherited field with a wider type, and a typed mock parameter in a test.
58 lines in lib/heatmap.ts and ScoreSetHeatmap.vue, mostly d3 selection generics and possibly-null SVG handles. Each marker fails the type check once its line is fixed, so they come out one at a time.
Attribute order and prefer-const, from eslint src --fix.
eslint --suppress-all wrote eslint-suppressions.json with the 117 findings left after the autofixes (89 are no-explicit-any). New violations fail; after fixing old ones, run npx eslint src --prune-suppressions to shrink the file.
bin/check runs vue-tsc, ESLint and the Prettier check in about 12 s and reports every failure in one pass. bin/t wraps vitest. CI gains a check job; until now it ran only the unit tests.
AGENTS.md (CLAUDE.md imports it) holds setup, commands and the rules that apply in every session. .claude/rules/ holds components, styling, data and routing guidance, loaded only for matching paths. Both replace the removed Copilot files, cut to what the code doesn't show, with two corrections: there is a test suite, and the second beforeEach in main.js redirects variant URNs, not legacy hash URLs. The README gains a checks section.
Prettier (semi: false) can turn a two-statement inline handler into a template that vue-tsc, ESLint and Prettier accept and only the Vue build rejects, as with the handlers fixed earlier on this branch.
Deny --no-verify and reads of ~/.aws and ~/.pgpass. Ask before pushes, AWS and Elastic Beanstalk commands, the prod-API dev server and dependency changes. The same file lives in the workspace and in each repo, because Claude Code reads settings only from the folder a session starts in. These are guardrails, not a security boundary: a rewritten command can get past them.
Serves on 127.0.0.1:8090 (or PORT) without the self-signed certificate, which embedded browser panes reject, and skips the MkDocs build so it starts without Python. ORCID sign-in does not work on that port.
Sessions get AWS_PROFILE=mavedb-agent-readonly, so aws commands use the read-only role (see deployment/environments/aws/agent-access.md) and fail rather than fall back to full credentials where the profile is missing. Choosing another profile asks first, replacing the blanket prompt on aws. Reading ~/.ssh is now blocked, alongside ~/.aws and ~/.pgpass.
Edits to AGENTS.md, CLAUDE.md and anything under .claude/ now ask first. Those files shape every later session, and settings.json holds the guardrails. The rules cover Edit and Write; a shell redirect into one of these files is not caught.
Prompts now cover force pushes, pushes to main, mavedb-main, mavedb-dev or release-*, AWS with an explicit profile, eb, adding a dependency and edits to settings.json itself. Ordinary feature-branch pushes, dependency updates and edits to AGENTS.md, CLAUDE.md and .claude/rules no longer ask; the never rule in the workspace AGENTS.md still covers those edits, and PR review sees the diffs.
The ui checks it with Prettier, so every copy uses that layout.
The lockfile listed only the darwin-arm64 builds of lightningcss and @tailwindcss/oxide, a known npm bug when a lock is updated over an existing node_modules. npm ci on Linux then installs neither, and vite build fails with "Cannot find module ../lightningcss.linux-x64-gnu.node". Re-resolving those two packages adds the missing platform entries at the same versions (1.30.2 and 4.1.16); nothing else in the lockfile changes.
Agent harness: AGENTS.md, bin/check, and a type, lint and format gate
Opening or pushing to a PR moves its linked issues to In review, and merging it into a release branch moves them to Pending release. A release PR into the default branch gets a Closes line for every issue its branch picked up, so GitHub closes them when the release merges. Issues only ever move forward. Adds a pull request template whose Closes line feeds the automation.
GitHub turns a Closes line into an issue link only on PRs into the default branch. On a PR into a release branch it stays a plain mention, so the workflow missed issues named that way. The script now reads closing lines from PR descriptions as well as the sidebar links.
…s-automation ci: move linked issues across the backlog board from PR events
Construct libraries use sequence-based targets even when the construct matches a reference exactly; accession-based targets are for variants edited into the genome at their native locus. Explain why on the targets page, align Key Concepts and the FAQ, and reword the score set form's target-type question and the edit-target help text to ask how the variant library was built. Closes #737
The base branch now runs bin/check, whose Prettier check flagged the reworded help text and toggle.
Make mapping/forward-mapping.md the canonical mapping page and redirect the old reference/variant-mapping URL to it (adds mkdocs-redirects). Fix the broken search examples and pagination description in the API quickstart, invalid and contradictory HGVS examples, the publish instruction, contributor permissions, and overstated mapping and reverse-translation claims. Use one term for each concept (supersede; assay-level/reference-level with the preMapped/postMapped field names), keep a single copy of the required-fields checklist and other repeated explanations, and describe the real experiment and score set form steps in the upload guide. Cut filler, date hard-coded statistics, and extend the glossary. Closes #738
… order Replace "mapped variants" and the assay-level/reference-level wording with submitted variants (as uploaded, on the target) and reference variants (on the human reference), matching the rest of the app. Rename the histogram note's "reference variants" to control variants so the term isn't overloaded. Document how the variant page orders measurements within each group and that research-use-only calls never affect the ranking.
Replace Before You Start and the Upload Guide with Submitting a Dataset: a single "what to have ready" table, then each step of the experiment and score set forms. Move the rules for splitting a study into records out of Key Concepts into a new Organizing Your Study page, leaving Key Concepts as definitions, and fix its stale contributor permissions line. The Submitting Data overview takes the prerequisites and workflow. Redirect the old page URLs to the walkthrough, point the home page's submission link and the score set form's experiment help at the new pages, and fix "supercede" in that help text. Closes #742
Diagrams without their own styles now default to the brand sage through Material's Mermaid variables. The data model, data standards, and submission diagrams use the app's sage, orange, info, and help colors instead of off-palette blues, greens, and purples; the publish step is orange to match the Publish button.
Experiment sets don't affect how data is read, so describe them as a container grouped however best organizes the data, such as by publication or by target, instead of requiring one set per target.
Split the controls section into adding and reading controls. Explain the Pathogenic and Benign control rows on calibration tables, their agreement colors, and the concordance summary, and state that controls are public once their calibration is published. Add the MONDO disease or disorder to the calibration metadata, and note in the submission walkthrough that controls are added by editing the calibration after scores are processed. Closes #747
…n-controls-docs docs(calibrations): document calibration controls and the disease field
Reflects the api change that stores API keys as hashes: access key listings carry id and keyHint instead of keyId, keyId appears only on a newly created key, and keys are deleted by numeric id. Also picks up description-only changes to the VRS lookup from api release-2026.3.2.
The API now stores keys as hashes and returns the full key only in the response that creates it. The settings page keeps that key for the session and shows it with a copy button and a note to save it. Listed keys show only their last four characters, with no reveal or copy, and are deleted by numeric id. The accounts docs say the key is shown once, and no longer claim that generating a key invalidates the previous one: the page only offers to generate a key when none exists, so replacing one means deleting it first.
Show a new key from the create response, so it appears even if the key list is slow to reload, and only against the key it belongs to. Clear it when that key is deleted. Wrap the key rather than truncate it, and say so when copying fails. The docs now describe the settings page's limit, which the API doesn't enforce.
…eys-as-hashes feat: show a new API key once, at creation
MaveMD search results linked to the score set without naming the variant, so the score set page opened with nothing selected and the user had to find the variant again. Pass it as the `variant` query parameter, which the score set page already reads to select a variant.
…rom-mavemd fix(search): focus the measured variant when opening its score set
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.
Features
Bug Fixes
Documentation
reference/variant-mappingredirects tomapping/forward-mapping.Maintenance
AGENTS.mdand.claude/rules/,bin/check(vue-tsc, ESLint, Prettier) andbin/t, a CI check job that also builds the app,npm run dev:agent, and one Prettier formatting commit. Records the non-macOS builds oflightningcssand@tailwindcss/oxidein the lockfile.Deployment
.git-blame-ignore-revskeeps its hash.release-2026.4.0ontomain.