ELN Metadata Diff Viewer

Load pull or merge request

Status

Display Options

Display options

Diff results

About this tool

A client-side web tool visualizing .eln file metadata differences across GitHub pull requests/GitLab merge requests.

Please note that this tool is only a proof of concept and not production ready software. See the Git repo or the KITopen record for more information.

Detailed information

What this tool does

This tool visualizes changes to .eln files (the ELN File Format) across a GitHub Pull Request or GitLab Merge Request. It extracts ro-crate-metadata.json from each changed .eln archive on both sides of the diff and shows you what actually changed.

How to use

  1. Paste a PR / MR URL into the input field and click Load & Diff (or press Enter).
  2. For private repositories, provide a personal access token (ghp_…/github_pat_… for GitHub, glpat-… for GitLab).
  3. Use the Mask export noise checkboxes to hide UUID v4 values (unique identifiers looking like c58319b2-348e-4743-b04a-60052db24113), dates, and datetimes that eLabFTW regenerates on every export; those values differ between exports even when nothing meaningful changed. Note that masking replaces every UUID v4 value/date/datetime with the same placeholder, so it can also hide a genuine change from one real UUID v4 value/date/datetime to another. If a diff looks unchanged with masking on, double-check with masking off before concluding nothing changed.
  4. Click a diff header to collapse/expand that file.

URL parameters

All options (except token) can be set via query string, so you can bookmark or share links. The token deliberately cannot be set via the URL for security reasons.

Supported URL query parameters and what they do
Parameter Description
pull_request or merge_request Enter the pull request or merge request URL to auto-load it on page open
maskUUIDv4 Set to true (default) or false to control whether UUID v4 values should be masked
maskDate Set to true (default) or false to control whether dates should be masked
maskDatetime Set to true (default) or false to control whether datetimes should be masked
mask Shortcut that sets maskUUIDv4, maskDate, and maskDatetime to true (default) or false

Technical notes

  • Everything runs client-side: no data leaves your browser (except API calls to GitHub/GitLab).
  • .eln files are ZIP archives. JSZip extracts ro-crate-metadata.json in the browser.
  • Diffs are computed with jsDiff (Myers algorithm; diffJson for lines, diffWords for intra-line highlighting). Because of diffJson, two exports with the same properties in a different order diff as identical. This does not extend to arrays: if @graph lists the same entities in a different order, that still shows up as changed lines.
  • GitHub's API rate-limits unauthenticated requests to 60/hour. With a token it's 5,000/hour.
  • Self-hosted GitLab instances may block CORS. The status log will show a hint if this happens.