Changelog¶
[0.3.1] - 2026-10-25¶
Fixed¶
- mzML files with a stale index now open. A file whose
<indexList>no longer matches the file (for example because it was edited or truncated after conversion) was reported as "File contains no spectra or chromatograms". When the stored index yields no spectra, the spectrum index is now rebuilt by scanning the file.
[0.3.0] - 2026-10-21¶
The first release since v0.2.0 (2026-03-01). Chromascope grows from an mzML viewer into a quantification workbench with a command-line interface and two MCP servers.
Added¶
- Update check. The desktop windows look for a newer release once a day, in the background,
and show "Chromascope X.Y.Z is available — Download · Dismiss" on the status bar. It reads the
redirect of
releases/latest(no GitHub API), never shows an error when offline, downloads and installs nothing, and is switched off by View → Check for updates orCHROMASCOPE_NO_UPDATE_CHECK=1.get_settings/set_settingscarrycheck_for_updates, andget_settingsreportsupdate_available. The command-line tool and the headless MCP server never contact the network. - Quantification and QC workspace. Batch quantification with per-analyte integration settings (classic, valley/drop-line, Savitzky-Golay + SNR, fixed window), weighted linear and quadratic calibration, internal standards, qualifiers, dilution, extrapolation of end standards, rule-based peak confidence (0-100 with named reasons), explicit peak review, and batch QC and method validation with reasoned acknowledgements that can never turn a failing rule into a pass.
- Shared analytical engine (
engine::execute) behind the desktop app, the JSON command-line interface (chromascope-cli) and the headless MCP server (chromascope-engine-mcp), so a number from the GUI is the number from the CLI. - Projects and the audit package. Append-only project revisions with source hashes, relink and restore; readable HTML report, JSON, CSV, TSV and SVG exports; portable, checksummed bundles that can be verified and re-processed without replacing the original results.
- Desktop MCP server (
chromascope-mcp): an AI client does over MCP everything a person does in the window, with the same result and the same audit trail. 74 tools in the default build: 60 that drive the window and the 14 engine tools (calibration, QC, review proposals, projects);--tool-profile corelists only the 40 tools of the main workflows for clients that cap the number of tools.tools/liststays under 40 KB: engine requests are described briefly andanalysis_capabilitiesreturns the complete schema. A calibration or QC computed by an AI appears in the Quantification tab without reopening anything. Launch flags--allow-root,--allow-changes,--allow-exportsand--allow-project-writesdecide what it may touch; every call is recorded in the AI call log of the window (see "AI oversight in the window" below). Every tool has its own description that says what it does, when to use it and which flag it needs, and carries read-only/destructive annotations.chromascope-engine-mcpis a subset of this server, kept for scripts and machines without a desktop. New window tools: vendor files through msconvert inopen_files, stored SRM/MRM chromatograms (native_chromatogram),set_layout,retain_trace,remove_trace,set_trace_visibility,save_session/load_session,list_presets/get_preset/save_preset,save_method/open_method,save_batch/load_batch,create_project/open_project/save_project/refresh_project,build_bundle/verify_bundle/reprocess_result,get_settings/set_settings,export_results/import_results,show_workspace,remove_measurement,clear_integration,clear_display,export_measurementsandset_viewwithreset. - AI oversight in the window. In the
chromascope-mcpwindow the status bar shows "AI connected · N requests · View log" (and "AI is working…" while a request runs); View log opens a floating AI call log with the launch permissions, the folders and the latest 100 requests, which stays open whatever workspace the assistant shows. The log lasts only while the window is open;session_auditandprepare_analysis_reportgive a permanent record. The plainchromascope.exehas no assistant and shows none of this. - Review AI proposals. The Audit package has a section Review AI proposals: original and
proposed values side by side with the assistant's reason and evidence, and Approve or
Reject with the person's own reason.
prepare_review_proposalandqueue_review_proposaldeliver the proposal to the window by themselves (status bar: "The AI proposed a change · Review"), without switching workspace and without--allow-changes; a proposal stored in a project with--allow-project-writesis found when that project is opened later, also inchromascope.exe.review_quantificationwithproposeproposes new peak boundaries for a batch result; approving applies them exactly like a manual boundary edit, keeps the automatic peak, records both reasons on the result and refuses a proposal whose result changed since. The assistant cannot approve its own proposal. The server instructions, the tool descriptions and thereview_integrationprompt tell an assistant to propose when you ask it to. An empty list explains what a proposal is and how to ask for one. There is no separate "AI activity" workspace;show_workspaceacceptsdata_explorer,quantification,method_editorandaudit_package. - Stable dataset IDs.
list_datasetsshows astable_id(the SHA-256 of the source file) next to the number; every tool accepts either, or a project dataset's UUID, so an AI cannot point at the wrong file after a restart. - MCP prompts and resources. The six workflow recipes (
investigate_chromatographic_anomalies,review_integration,construct_calibration,troubleshoot_qc,compare_processing_methods,prepare_report) are offered as prompts by both servers. The desktop server publishes the open datasets, retained traces, quantification results, QC reports and project revisions aschromascope://resources. - No window control without an MCP tool.
src/gui/actions.rsmaps every button, menu item and input to its tool, andtests/mcp_parity.rsfails when one is missing, when a listed tool is not offered, or when no test calls a tool over the protocol. Two actions are withheld on purpose: choosing the msconvert program, and approving or rejecting an AI proposal in the window. - Experimental workflows are hidden. Identification, Untargeted analysis and Statistics are
compiled but only exposed when built with
--features experimental. The engine itself rejects their operations withexperimental_unavailable, so project re-processing and AI review proposals cannot run them either, and none of their tools, prompts or workspaces is listed over MCP. - Saves are atomic. Sessions, methods, batches, presets, settings and CSV/SVG exports are written to a temporary file in the same folder and renamed into place, so a crash or a full disk cannot destroy your only copy. Exports that create a new file never replace an existing one.
- Numerical behaviour is written down. Precursor filtering matches scans within 0.01 Da (a miss is an error that names the window, not an empty trace), trace points are summed in double precision and rounded once to the stored 32-bit value, and settings are read field by field so one unreadable value does not reset the others. See the user guide.
- Vendor file import through a separately installed ProteoWizard
msconvert. - m/z tolerance in ppm or mDa for XIC extraction and methods, and a user-set number of m/z decimals (View menu); exports keep full precision.
- Appearance. Light, dark or system theme, interface size, Inter and JetBrains Mono fonts;
theme, size and m/z decimals live in one
settings.json. - Installers for every platform: Windows MSI (x64, arm64, x86) and portable zip, macOS universal
dmg and zip, Linux deb, rpm, AppImage and tar.gz (x86_64, aarch64), with
SHA256SUMS.txt. Every package shipsLICENSEandTHIRD_PARTY_LICENSES.txt. - Hosted CI now also runs the tests on Windows and macOS and compiles on the minimum supported Rust (1.88); the release workflow runs the tests before it builds any installer.
Changed¶
- Branding copy: the slogan "Analyze more. Click less." and the line "AI-assisted LC-MS analysis, across instrument vendors, with traceable results" on the README, the website
home page (with OpenGraph tags), the About window and the
chromascope-clihelp; the package descriptions and the citation abstract say the same in one factual line. - The README and the website home page open with a centred introduction (logo, name, slogan, badges, links) and describe Chromascope as a free, lightweight, vendor-agnostic LC-MS workbench for targeted analysis; the browser tab of the home page reads "Chromascope: Analyze more. Click less."
- The Reports tab is now Audit package; its workflow step, window title and documentation use that single name.
- Window titles use sentence case ("Plot properties", "m/z range filter").
- Release assets are named
chromascope-<version>-<os>-<arch>.<ext>. v0.2.0 published only the GUI binary under target-triple names.
Fixed¶
- Data explorer integration. "Integrate visible RT range" and a right-drag that starts outside the trace used to extend the edge intensity flat, so the area changed with the zoom and the recorded start/end fell outside the data. Windows are now clamped to the data, and a window that misses the trace is rejected.
- CSV export and stale concentrations. Export CSV and the MCP export no longer write the latest calculated concentrations next to peak areas that changed after the calculation: when peaks or settings changed, the concentration columns stay empty and the message says to recalculate.
- Report replay after relocating sources into a bundle; NaN scan windows; stale reference output in CI.
Security and licensing¶
- The embedded JetBrains Mono font's SIL Open Font License text ships with the font and is shown in File > About Chromascope… > Credits & licenses, next to Inter's.
appimagetoolis pinned to a tagged release and verified against a SHA-256 before it runs.- CSV exports prefix a text cell that starts with
=,+,-,@, a tab or a carriage return with an apostrophe so a spreadsheet cannot run it as a formula; numbers are untouched. - Test data and reference files no longer contain an account name or local folder paths. The git history still does.
- Every path an AI names goes through the same authorisation (
--allow-root), exports and new saves never overwrite an existing file, and an AI can neither mark a peak as human-reviewed nor choose the msconvert program.
[0.2.0] - 2026-03-01¶
Multi-file support, per-precursor MS2 scan filters, peak integration, spectrum CSV export, newer egui/eframe, GPL-3.0 licence. Published as GUI binaries only.
[0.1.0] - 2024-08-17¶
First public release: lightweight mzML viewer with TIC, BPC and XIC extraction.