Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fc8706126 | ||
|
|
539ff44f47 | ||
|
|
146897f216 | ||
|
|
a264413124 | ||
|
|
838f51957e | ||
|
|
bab20143fd | ||
|
|
946735bf90 | ||
|
|
a5be4c3dce | ||
|
|
171ea857cf | ||
|
|
9754fc1e92 | ||
|
|
6772deb4c6 | ||
|
|
1d0a8744b2 | ||
|
|
555c87f1c5 | ||
|
|
51d267e707 | ||
|
|
c5c18f9516 | ||
|
|
213a0974bb | ||
|
|
0d882a425d | ||
|
|
49ea3ac82b | ||
|
|
99736b6437 | ||
|
|
7fb67d2396 | ||
|
|
04b121c1ba | ||
|
|
9782980a7a | ||
|
|
27b1afe040 |
@ -6,7 +6,7 @@ orbs:
|
|||||||
|
|
||||||
defaults: &defaults
|
defaults: &defaults
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/node:20.18.1
|
- image: cimg/node:20.19.0
|
||||||
environment:
|
environment:
|
||||||
TERM: xterm
|
TERM: xterm
|
||||||
QUICK_BUILD: true
|
QUICK_BUILD: true
|
||||||
@ -112,19 +112,31 @@ jobs:
|
|||||||
- checkout
|
- checkout
|
||||||
- attach_workspace:
|
- attach_workspace:
|
||||||
at: ~/repo
|
at: ~/repo
|
||||||
# SECURITY AUDIT
|
# SECURITY AUDIT - only when bun.lock has changed
|
||||||
- run:
|
- run:
|
||||||
name: 'Security Audit - High Risk Vulnerabilities'
|
name: 'Security Audit - High Risk Vulnerabilities'
|
||||||
command: |
|
command: |
|
||||||
echo "🔍 Running bun audit for security vulnerabilities..."
|
git fetch origin master 2>/dev/null || true
|
||||||
|
BASE_REF=$(git merge-base HEAD origin/master 2>/dev/null)
|
||||||
|
if [[ -z "$BASE_REF" ]]; then
|
||||||
|
echo "Could not determine base ref (e.g. shallow clone or no origin/master), skipping security audit."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
CHANGED_FILES=$(git diff --name-only origin/master...HEAD 2>/dev/null || echo "")
|
||||||
|
if ! echo "$CHANGED_FILES" | grep -qx 'bun.lock'; then
|
||||||
|
echo "⏭️ bun.lock unchanged - skipping security audit."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "🔍 bun.lock changed - running bun audit for security vulnerabilities..."
|
||||||
echo "Checking for HIGH-RISK vulnerabilities..."
|
echo "Checking for HIGH-RISK vulnerabilities..."
|
||||||
|
|
||||||
# Define ignored vulnerabilities with comments
|
# Define ignored vulnerabilities with comments
|
||||||
IGNORED_VULNS=(
|
IGNORED_VULNS=(
|
||||||
"GHSA-5j98-mcp5-4vw2" # CVE-2025-64756 - glob is not used on the command line
|
"GHSA-3ppc-4f35-3m26" # CVE-2026-26996 - minimatch via itk-wasm and glob is safe because it does NOT use the CLI
|
||||||
"GHSA-8qq5-rm4j-mr97" # CVE-2026-23745 - limited to build/dev environments
|
# CVE-2026-26996 - minimatch via other packages are strictly for building and CI/CD purposes; no user supplied expressions are passed to minimatch
|
||||||
"GHSA-r6q2-hw4h-h46w" # CVE-2026-23950 - limited to build/dev environments
|
"GHSA-7r86-cg39-jmmj" # CVE-2026-27903 - minimatch same as above
|
||||||
"GHSA-34x7-hfp2-rc4v" # CVE-2026-24842 - limited to build/dev environments
|
"GHSA-23c5-xmqv-rm74" # CVE-2026-27904 - minimatch same as above
|
||||||
|
"GHSA-c2c7-rcm5-vvqj" # CVE-2026-33671 - picomatch is generally used for development and CI/CD purposes
|
||||||
)
|
)
|
||||||
|
|
||||||
# Build ignore flags
|
# Build ignore flags
|
||||||
@ -374,6 +386,7 @@ jobs:
|
|||||||
resource_class: large
|
resource_class: large
|
||||||
parallelism: 8
|
parallelism: 8
|
||||||
steps:
|
steps:
|
||||||
|
- install_bun
|
||||||
- run:
|
- run:
|
||||||
name: Install System Dependencies
|
name: Install System Dependencies
|
||||||
command: |
|
command: |
|
||||||
|
|||||||
4
.github/.dependabot.yaml
vendored
4
.github/.dependabot.yaml
vendored
@ -2,6 +2,8 @@ version: 2
|
|||||||
enable-beta-ecosystems: true
|
enable-beta-ecosystems: true
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: 'bun'
|
- package-ecosystem: 'bun'
|
||||||
|
# Disable all pull requests for bun version updates.
|
||||||
|
open-pull-requests-limit: 0
|
||||||
directory: '/'
|
directory: '/'
|
||||||
schedule:
|
schedule:
|
||||||
interval: 'daily'
|
interval: 'daily'
|
||||||
@ -10,6 +12,8 @@ updates:
|
|||||||
prefix: 'chore'
|
prefix: 'chore'
|
||||||
include: 'scope'
|
include: 'scope'
|
||||||
- package-ecosystem: 'npm'
|
- package-ecosystem: 'npm'
|
||||||
|
# Disable all pull requests for npm version updates.
|
||||||
|
open-pull-requests-limit: 0
|
||||||
directory: '/'
|
directory: '/'
|
||||||
schedule:
|
schedule:
|
||||||
interval: 'daily'
|
interval: 'daily'
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package ohif-monorepo-root
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @externals/devDependencies
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @externals/devDependencies
|
**Note:** Version bump only for package @externals/devDependencies
|
||||||
|
|||||||
24
addOns/externals/devDependencies/package.json
vendored
24
addOns/externals/devDependencies/package.json
vendored
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@externals/devDependencies",
|
"name": "@externals/devDependencies",
|
||||||
"description": "External dev dependencies - put dev build dependencies here",
|
"description": "External dev dependencies - put dev build dependencies here",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -20,7 +20,6 @@
|
|||||||
"react-dom": "18.3.1"
|
"react-dom": "18.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/eslint-parser": "7.28.0",
|
|
||||||
"@pmmmwh/react-refresh-webpack-plugin": "0.5.17",
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.17",
|
||||||
"@rsbuild/core": "1.5.1",
|
"@rsbuild/core": "1.5.1",
|
||||||
"@rsbuild/plugin-node-polyfill": "1.4.2",
|
"@rsbuild/plugin-node-polyfill": "1.4.2",
|
||||||
@ -28,30 +27,27 @@
|
|||||||
"@svgr/webpack": "8.1.0",
|
"@svgr/webpack": "8.1.0",
|
||||||
"@swc/helpers": "0.5.17",
|
"@swc/helpers": "0.5.17",
|
||||||
"@types/jest": "27.5.2",
|
"@types/jest": "27.5.2",
|
||||||
"@typescript-eslint/eslint-plugin": "6.21.0",
|
"@typescript-eslint/eslint-plugin": "8.56.0",
|
||||||
"@typescript-eslint/parser": "6.21.0",
|
"@typescript-eslint/parser": "8.56.0",
|
||||||
"autoprefixer": "10.4.21",
|
"autoprefixer": "10.4.21",
|
||||||
"babel-loader": "8.4.1",
|
"babel-loader": "8.4.1",
|
||||||
"babel-plugin-module-resolver": "5.0.2",
|
|
||||||
"clean-webpack-plugin": "3.0.0",
|
"clean-webpack-plugin": "3.0.0",
|
||||||
"copy-webpack-plugin": "9.1.0",
|
"copy-webpack-plugin": "9.1.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"css-loader": "6.11.0",
|
"css-loader": "6.11.0",
|
||||||
"dotenv": "8.6.0",
|
"dotenv": "8.6.0",
|
||||||
"eslint": "8.57.1",
|
"eslint": "9.39.3",
|
||||||
"eslint-config-prettier": "7.2.0",
|
"eslint-config-prettier": "7.2.0",
|
||||||
"eslint-config-react-app": "6.0.0",
|
"eslint-config-react-app": "7.0.1",
|
||||||
"eslint-plugin-cypress": "2.15.2",
|
"eslint-plugin-cypress": "2.15.2",
|
||||||
"eslint-plugin-flowtype": "7.0.0",
|
|
||||||
"eslint-plugin-import": "2.32.0",
|
"eslint-plugin-import": "2.32.0",
|
||||||
"eslint-plugin-jsx-a11y": "6.10.2",
|
"eslint-plugin-jsx-a11y": "6.10.2",
|
||||||
"eslint-plugin-node": "11.1.0",
|
"eslint-plugin-node": "11.1.0",
|
||||||
"eslint-plugin-prettier": "5.5.1",
|
"eslint-plugin-prettier": "5.5.1",
|
||||||
"eslint-plugin-promise": "5.2.0",
|
"eslint-plugin-promise": "7.2.1",
|
||||||
"eslint-plugin-react": "7.37.5",
|
"eslint-plugin-react": "7.37.5",
|
||||||
"eslint-plugin-react-hooks": "4.6.2",
|
"eslint-plugin-react-hooks": "7.0.1",
|
||||||
"eslint-plugin-tsdoc": "0.2.17",
|
"eslint-plugin-tsdoc": "0.2.17",
|
||||||
"eslint-webpack-plugin": "2.7.0",
|
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"extract-css-chunks-webpack-plugin": "4.10.0",
|
"extract-css-chunks-webpack-plugin": "4.10.0",
|
||||||
"html-webpack-plugin": "5.6.3",
|
"html-webpack-plugin": "5.6.3",
|
||||||
@ -60,7 +56,7 @@
|
|||||||
"jest-canvas-mock": "2.5.2",
|
"jest-canvas-mock": "2.5.2",
|
||||||
"jest-environment-jsdom": "29.7.0",
|
"jest-environment-jsdom": "29.7.0",
|
||||||
"jest-junit": "6.4.0",
|
"jest-junit": "6.4.0",
|
||||||
"lerna": "7.4.2",
|
"lerna": "9.0.4",
|
||||||
"lint-staged": "9.5.0",
|
"lint-staged": "9.5.0",
|
||||||
"mini-css-extract-plugin": "2.9.2",
|
"mini-css-extract-plugin": "2.9.2",
|
||||||
"optimize-css-assets-webpack-plugin": "6.0.1",
|
"optimize-css-assets-webpack-plugin": "6.0.1",
|
||||||
@ -72,7 +68,7 @@
|
|||||||
"prettier-plugin-tailwindcss": "0.6.9",
|
"prettier-plugin-tailwindcss": "0.6.9",
|
||||||
"react-refresh": "0.14.2",
|
"react-refresh": "0.14.2",
|
||||||
"semver": "7.7.2",
|
"semver": "7.7.2",
|
||||||
"serve": "14.2.4",
|
"serve": "14.2.5",
|
||||||
"shader-loader": "1.3.1",
|
"shader-loader": "1.3.1",
|
||||||
"shx": "0.3.4",
|
"shx": "0.3.4",
|
||||||
"source-map-loader": "4.0.2",
|
"source-map-loader": "4.0.2",
|
||||||
@ -80,7 +76,7 @@
|
|||||||
"terser-webpack-plugin": "5.3.14",
|
"terser-webpack-plugin": "5.3.14",
|
||||||
"typescript": "5.5.4",
|
"typescript": "5.5.4",
|
||||||
"unused-webpack-plugin": "2.4.0",
|
"unused-webpack-plugin": "2.4.0",
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-bundle-analyzer": "4.10.2",
|
"webpack-bundle-analyzer": "4.10.2",
|
||||||
"webpack-cli": "5.1.4",
|
"webpack-cli": "5.1.4",
|
||||||
"webpack-dev-server": "5.2.2",
|
"webpack-dev-server": "5.2.2",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
**Note:** Version bump only for package @externals/dicom-microscopy-viewer
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@externals/dicom-microscopy-viewer",
|
"name": "@externals/dicom-microscopy-viewer",
|
||||||
"description": "External reference to dicom-microscopy-viewer",
|
"description": "External reference to dicom-microscopy-viewer",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dicom-microscopy-viewer": "0.48.17"
|
"dicom-microscopy-viewer": "0.48.17"
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
45739b31a2c72cb646c733929f733a8e180a616c
|
146897f216696870682ce933f410bcd2692fc6a4
|
||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-pmap
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-cornerstone-dicom-pmap",
|
"name": "@ohif/extension-cornerstone-dicom-pmap",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "DICOM Parametric Map read workflow",
|
"description": "DICOM Parametric Map read workflow",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -33,10 +33,10 @@
|
|||||||
"start": "yarn run dev"
|
"start": "yarn run dev"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
@ -48,7 +48,6 @@
|
|||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.15.29",
|
"@cornerstonejs/adapters": "4.15.29",
|
||||||
"@cornerstonejs/core": "4.15.29",
|
"@cornerstonejs/core": "4.15.29",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1"
|
||||||
"react-color": "2.19.3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-rt
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-cornerstone-dicom-rt",
|
"name": "@ohif/extension-cornerstone-dicom-rt",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "DICOM RT read workflow",
|
"description": "DICOM RT read workflow",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -33,10 +33,10 @@
|
|||||||
"start": "yarn run dev"
|
"start": "yarn run dev"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
@ -45,7 +45,6 @@
|
|||||||
"react-router-dom": "6.30.3"
|
"react-router-dom": "6.30.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2"
|
||||||
"react-color": "2.19.3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-seg
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-cornerstone-dicom-seg",
|
"name": "@ohif/extension-cornerstone-dicom-seg",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "DICOM SEG read workflow",
|
"description": "DICOM SEG read workflow",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -33,10 +33,10 @@
|
|||||||
"start": "yarn run dev"
|
"start": "yarn run dev"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
@ -48,7 +48,6 @@
|
|||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/adapters": "4.15.29",
|
"@cornerstonejs/adapters": "4.15.29",
|
||||||
"@cornerstonejs/core": "4.15.29",
|
"@cornerstonejs/core": "4.15.29",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1"
|
||||||
"react-color": "2.19.3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dicom-sr
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-cornerstone-dicom-sr",
|
"name": "@ohif/extension-cornerstone-dicom-sr",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension for an SR Cornerstone Viewport",
|
"description": "OHIF extension for an SR Cornerstone Viewport",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -34,10 +34,10 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.135",
|
"@ohif/extension-measurement-tracking": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
**Note:** Version bump only for package @ohif/extension-cornerstone-dynamic-volume
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-cornerstone-dynamic-volume",
|
"name": "@ohif/extension-cornerstone-dynamic-volume",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension for 4D volumes data",
|
"description": "OHIF extension for 4D volumes data",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -29,11 +29,11 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-cornerstone
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-cornerstone",
|
"name": "@ohif/extension-cornerstone",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension for Cornerstone",
|
"description": "OHIF extension for Cornerstone",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -41,8 +41,8 @@
|
|||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.15.29",
|
"@cornerstonejs/dicom-image-loader": "4.15.29",
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
@ -63,10 +63,10 @@
|
|||||||
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
"@itk-wasm/morphological-contour-interpolation": "1.1.0",
|
||||||
"@kitware/vtk.js": "34.15.1",
|
"@kitware/vtk.js": "34.15.1",
|
||||||
"html2canvas": "1.4.1",
|
"html2canvas": "1.4.1",
|
||||||
|
"immutability-helper": "3.1.1",
|
||||||
"lodash.compact": "3.0.1",
|
"lodash.compact": "3.0.1",
|
||||||
"lodash.debounce": "4.0.8",
|
"lodash.debounce": "4.0.8",
|
||||||
"lodash.flatten": "4.4.0",
|
"lodash.flatten": "4.4.0",
|
||||||
"lodash.merge": "4.6.2",
|
|
||||||
"lodash.zip": "4.2.0",
|
"lodash.zip": "4.2.0",
|
||||||
"shader-loader": "1.3.1",
|
"shader-loader": "1.3.1",
|
||||||
"worker-loader": "3.0.8"
|
"worker-loader": "3.0.8"
|
||||||
|
|||||||
@ -59,6 +59,7 @@ import utils from './utils';
|
|||||||
import { useMeasurementTracking } from './hooks/useMeasurementTracking';
|
import { useMeasurementTracking } from './hooks/useMeasurementTracking';
|
||||||
import { setUpSegmentationEventHandlers } from './utils/setUpSegmentationEventHandlers';
|
import { setUpSegmentationEventHandlers } from './utils/setUpSegmentationEventHandlers';
|
||||||
import { setUpAnnotationEventHandlers } from './utils/setUpAnnotationEventHandlers';
|
import { setUpAnnotationEventHandlers } from './utils/setUpAnnotationEventHandlers';
|
||||||
|
import update from 'immutability-helper';
|
||||||
export * from './components';
|
export * from './components';
|
||||||
|
|
||||||
const { imageRetrieveMetadataProvider } = cornerstone.utilities;
|
const { imageRetrieveMetadataProvider } = cornerstone.utilities;
|
||||||
@ -75,7 +76,7 @@ const OHIFCornerstoneViewport = props => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const stackRetrieveOptions = {
|
const DEFAULT_STACK_RETRIEVE_OPTIONS = {
|
||||||
retrieveOptions: {
|
retrieveOptions: {
|
||||||
single: {
|
single: {
|
||||||
streaming: true,
|
streaming: true,
|
||||||
@ -84,6 +85,12 @@ const stackRetrieveOptions = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Normalize to immutability-helper spec: plain object → $merge, otherwise use as-is. */
|
||||||
|
const toUpdateSpec = (obj: object) =>
|
||||||
|
obj != null && typeof obj === 'object' && Object.keys(obj).some(k => k.startsWith('$'))
|
||||||
|
? obj
|
||||||
|
: { $merge: (obj ?? {}) as object };
|
||||||
|
|
||||||
const unsubscriptions = [];
|
const unsubscriptions = [];
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -94,7 +101,11 @@ const cornerstoneExtension: Types.Extensions.Extension = {
|
|||||||
*/
|
*/
|
||||||
id,
|
id,
|
||||||
|
|
||||||
onModeEnter: ({ servicesManager, commandsManager }: withAppTypes): void => {
|
onModeEnter: ({
|
||||||
|
servicesManager,
|
||||||
|
commandsManager,
|
||||||
|
extensionManager,
|
||||||
|
}: withAppTypes): void => {
|
||||||
const { cornerstoneViewportService, toolbarService, segmentationService } =
|
const { cornerstoneViewportService, toolbarService, segmentationService } =
|
||||||
servicesManager.services;
|
servicesManager.services;
|
||||||
|
|
||||||
@ -131,10 +142,17 @@ const cornerstoneExtension: Types.Extensions.Extension = {
|
|||||||
'volume',
|
'volume',
|
||||||
cornerstone.ProgressiveRetrieveImages.interleavedRetrieveStages
|
cornerstone.ProgressiveRetrieveImages.interleavedRetrieveStages
|
||||||
);
|
);
|
||||||
// The default stack loading option is to progressive load HTJ2K images
|
|
||||||
// There are other possible options, but these need more thought about
|
/**
|
||||||
// how to define them.
|
* Stack retrieve options: read from active data source configuration.
|
||||||
imageRetrieveMetadataProvider.add('stack', stackRetrieveOptions);
|
* Pass an immutability-helper spec (e.g. { $merge: {...} } or { $set: {...} }) in
|
||||||
|
* stackRetrieveOptions to customize. Plain object is treated as $merge for backward compat.
|
||||||
|
* Set streaming: false for uncompressed DICOM that requires full file before decode.
|
||||||
|
*/
|
||||||
|
const sourceConfig = extensionManager?.getActiveDataSource?.()?.[0]?.getConfig?.() ?? {};
|
||||||
|
const config = sourceConfig.stackRetrieveOptions ?? {};
|
||||||
|
const stackOptions = update(DEFAULT_STACK_RETRIEVE_OPTIONS, toUpdateSpec(config)) as typeof DEFAULT_STACK_RETRIEVE_OPTIONS;
|
||||||
|
imageRetrieveMetadataProvider.add('stack', stackOptions);
|
||||||
},
|
},
|
||||||
getPanelModule,
|
getPanelModule,
|
||||||
onModeExit: ({ servicesManager }: withAppTypes): void => {
|
onModeExit: ({ servicesManager }: withAppTypes): void => {
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-default
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-default
|
**Note:** Version bump only for package @ohif/extension-default
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-default",
|
"name": "@ohif/extension-default",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Common/default features and functionality for basic image viewing",
|
"description": "Common/default features and functionality for basic image viewing",
|
||||||
"author": "OHIF Core Team",
|
"author": "OHIF Core Team",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -34,8 +34,8 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicomweb-client": "0.10.4",
|
"dicomweb-client": "0.10.4",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
@ -43,13 +43,14 @@
|
|||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
"react-i18next": "12.3.1",
|
"react-i18next": "12.3.1",
|
||||||
"react-window": "1.8.11",
|
"react-window": "1.8.11",
|
||||||
"webpack": "5.89.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/calculate-suv": "1.1.0",
|
"@cornerstonejs/calculate-suv": "1.1.0",
|
||||||
"lodash.get": "4.4.2",
|
"lodash.get": "4.4.2",
|
||||||
"lodash.uniqby": "4.7.0"
|
"lodash.uniqby": "4.7.0",
|
||||||
|
"react-color": "2.19.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import qs from 'query-string';
|
|||||||
|
|
||||||
import getImageId from '../DicomWebDataSource/utils/getImageId';
|
import getImageId from '../DicomWebDataSource/utils/getImageId';
|
||||||
import getDirectURL from '../utils/getDirectURL';
|
import getDirectURL from '../utils/getDirectURL';
|
||||||
|
import { resolveConfigFetchPolicy, fetchConfigJson } from '../utils/secureConfigFetch';
|
||||||
|
|
||||||
const metadataProvider = OHIF.classes.MetadataProvider;
|
const metadataProvider = OHIF.classes.MetadataProvider;
|
||||||
|
|
||||||
@ -59,13 +60,18 @@ const findStudies = (key, value) => {
|
|||||||
return studies;
|
return studies;
|
||||||
};
|
};
|
||||||
|
|
||||||
function createDicomJSONApi(dicomJsonConfig) {
|
function createDicomJSONApi(dicomJsonConfig, servicesManager) {
|
||||||
|
const { userAuthenticationService } = servicesManager.services;
|
||||||
const implementation = {
|
const implementation = {
|
||||||
initialize: async ({ query, url }) => {
|
initialize: async ({ query, url }) => {
|
||||||
if (!url) {
|
if (!url) {
|
||||||
url = query.get('url');
|
url = query.get('url');
|
||||||
}
|
}
|
||||||
let metaData = getMetaDataByURL(url);
|
const evaluatedUrl = resolveConfigFetchPolicy(url, {
|
||||||
|
allowedOrigins: dicomJsonConfig.dangerouslyAllowedOriginsForAuthenticatedEnvironments,
|
||||||
|
userAuthenticationService,
|
||||||
|
});
|
||||||
|
let metaData = getMetaDataByURL(evaluatedUrl.normalizedUrl);
|
||||||
|
|
||||||
// if we have already cached the data from this specific url
|
// if we have already cached the data from this specific url
|
||||||
// We are only handling one StudyInstanceUID to run; however,
|
// We are only handling one StudyInstanceUID to run; however,
|
||||||
@ -76,8 +82,7 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(url);
|
const data = await fetchConfigJson(evaluatedUrl);
|
||||||
const data = await response.json();
|
|
||||||
|
|
||||||
let StudyInstanceUID;
|
let StudyInstanceUID;
|
||||||
let SeriesInstanceUID;
|
let SeriesInstanceUID;
|
||||||
@ -105,11 +110,11 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
_store.urls.push({
|
_store.urls.push({
|
||||||
url,
|
url: evaluatedUrl.normalizedUrl,
|
||||||
studies: [...data.studies],
|
studies: [...data.studies],
|
||||||
});
|
});
|
||||||
_store.studyInstanceUIDMap.set(
|
_store.studyInstanceUIDMap.set(
|
||||||
url,
|
evaluatedUrl.normalizedUrl,
|
||||||
data.studies.map(study => study.StudyInstanceUID)
|
data.studies.map(study => study.StudyInstanceUID)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -252,6 +257,8 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|||||||
console.warn(' DICOMJson store dicom not implemented');
|
console.warn(' DICOMJson store dicom not implemented');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
reject: {},
|
||||||
|
deleteStudyMetadataPromise: () => {},
|
||||||
getImageIdsForDisplaySet(displaySet) {
|
getImageIdsForDisplaySet(displaySet) {
|
||||||
const images = displaySet.images;
|
const images = displaySet.images;
|
||||||
const imageIds = [];
|
const imageIds = [];
|
||||||
@ -297,8 +304,21 @@ function createDicomJSONApi(dicomJsonConfig) {
|
|||||||
},
|
},
|
||||||
getStudyInstanceUIDs: ({ params, query }) => {
|
getStudyInstanceUIDs: ({ params, query }) => {
|
||||||
const url = query.get('url');
|
const url = query.get('url');
|
||||||
return _store.studyInstanceUIDMap.get(url);
|
if (!url) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const evaluatedUrl = resolveConfigFetchPolicy(url, {
|
||||||
|
allowedOrigins: dicomJsonConfig.dangerouslyAllowedOriginsForAuthenticatedEnvironments,
|
||||||
|
userAuthenticationService,
|
||||||
|
});
|
||||||
|
return _store.studyInstanceUIDMap.get(evaluatedUrl.normalizedUrl);
|
||||||
|
} catch {
|
||||||
|
return;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
getConfig: () => dicomJsonConfig,
|
||||||
};
|
};
|
||||||
return IWebApiDataSource.create(implementation);
|
return IWebApiDataSource.create(implementation);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { IWebApiDataSource } from '@ohif/core';
|
import { IWebApiDataSource } from '@ohif/core';
|
||||||
import { createDicomWebApi } from '../DicomWebDataSource/index';
|
import { createDicomWebApi } from '../DicomWebDataSource/index';
|
||||||
|
import { resolveConfigFetchPolicy, fetchConfigJson } from '../utils/secureConfigFetch';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This datasource is initialized with a url that returns a JSON object with a
|
* This datasource is initialized with a url that returns a JSON object with a
|
||||||
@ -11,6 +12,7 @@ import { createDicomWebApi } from '../DicomWebDataSource/index';
|
|||||||
*/
|
*/
|
||||||
function createDicomWebProxyApi(dicomWebProxyConfig, servicesManager: AppTypes.ServicesManager) {
|
function createDicomWebProxyApi(dicomWebProxyConfig, servicesManager: AppTypes.ServicesManager) {
|
||||||
const { name } = dicomWebProxyConfig;
|
const { name } = dicomWebProxyConfig;
|
||||||
|
const { userAuthenticationService } = servicesManager.services;
|
||||||
let dicomWebDelegate = undefined;
|
let dicomWebDelegate = undefined;
|
||||||
|
|
||||||
const implementation = {
|
const implementation = {
|
||||||
@ -20,12 +22,14 @@ function createDicomWebProxyApi(dicomWebProxyConfig, servicesManager: AppTypes.S
|
|||||||
if (!url) {
|
if (!url) {
|
||||||
throw new Error(`No url for '${name}'`);
|
throw new Error(`No url for '${name}'`);
|
||||||
} else {
|
} else {
|
||||||
const response = await fetch(url);
|
const evaluatedUrl = resolveConfigFetchPolicy(url, {
|
||||||
const data = await response.json();
|
allowedOrigins: dicomWebProxyConfig.dangerouslyAllowedOriginsForAuthenticatedEnvironments,
|
||||||
|
userAuthenticationService,
|
||||||
|
});
|
||||||
|
const data = await fetchConfigJson(evaluatedUrl);
|
||||||
if (!data.servers?.dicomWeb?.[0]) {
|
if (!data.servers?.dicomWeb?.[0]) {
|
||||||
throw new Error('Invalid configuration returned by url');
|
throw new Error('Invalid configuration returned by url');
|
||||||
}
|
}
|
||||||
|
|
||||||
dicomWebDelegate = createDicomWebApi(
|
dicomWebDelegate = createDicomWebApi(
|
||||||
data.servers.dicomWeb[0].configuration || data.servers.dicomWeb[0],
|
data.servers.dicomWeb[0].configuration || data.servers.dicomWeb[0],
|
||||||
servicesManager
|
servicesManager
|
||||||
@ -54,9 +58,16 @@ function createDicomWebProxyApi(dicomWebProxyConfig, servicesManager: AppTypes.S
|
|||||||
store: {
|
store: {
|
||||||
dicom: (...args) => dicomWebDelegate.store.dicom(...args),
|
dicom: (...args) => dicomWebDelegate.store.dicom(...args),
|
||||||
},
|
},
|
||||||
deleteStudyMetadataPromise: (...args) => dicomWebDelegate.deleteStudyMetadataPromise(...args),
|
reject: {
|
||||||
getImageIdsForDisplaySet: (...args) => dicomWebDelegate.getImageIdsForDisplaySet(...args),
|
series: (...args) => dicomWebDelegate?.reject?.series?.(...args),
|
||||||
getImageIdsForInstance: (...args) => dicomWebDelegate.getImageIdsForInstance(...args),
|
},
|
||||||
|
deleteStudyMetadataPromise: (...args) => dicomWebDelegate?.deleteStudyMetadataPromise?.(...args),
|
||||||
|
getImageIdsForDisplaySet: (...args) => dicomWebDelegate?.getImageIdsForDisplaySet?.(...args),
|
||||||
|
getImageIdsForInstance: (...args) => dicomWebDelegate?.getImageIdsForInstance?.(...args),
|
||||||
|
getConfig: (...args) =>
|
||||||
|
dicomWebDelegate?.getConfig?.(...args) ?? {
|
||||||
|
dicomUploadEnabled: false,
|
||||||
|
},
|
||||||
getStudyInstanceUIDs({ params, query }) {
|
getStudyInstanceUIDs({ params, query }) {
|
||||||
let studyInstanceUIDs = [];
|
let studyInstanceUIDs = [];
|
||||||
|
|
||||||
|
|||||||
115
extensions/default/src/utils/secureConfigFetch.js
Normal file
115
extensions/default/src/utils/secureConfigFetch.js
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
// @ts-nocheck
|
||||||
|
|
||||||
|
function normalizeAllowedOrigins(allowedOrigins = []) {
|
||||||
|
if (!Array.isArray(allowedOrigins)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const configuredOrigins = allowedOrigins
|
||||||
|
.filter(origin => typeof origin === 'string')
|
||||||
|
.map(origin => origin.trim())
|
||||||
|
.filter(Boolean);
|
||||||
|
|
||||||
|
return configuredOrigins
|
||||||
|
.map(origin => {
|
||||||
|
try {
|
||||||
|
const parsedOrigin = new URL(origin);
|
||||||
|
if (!['http:', 'https:'].includes(parsedOrigin.protocol)) {
|
||||||
|
console.error(
|
||||||
|
`[secureConfigFetch] Ignoring misconfigured allowed origin "${origin}". ` +
|
||||||
|
'Entries must use http:// or https://.'
|
||||||
|
);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
parsedOrigin.username ||
|
||||||
|
parsedOrigin.password ||
|
||||||
|
parsedOrigin.pathname !== '/' ||
|
||||||
|
parsedOrigin.search ||
|
||||||
|
parsedOrigin.hash
|
||||||
|
) {
|
||||||
|
console.error(
|
||||||
|
`[secureConfigFetch] Ignoring misconfigured allowed origin "${origin}". ` +
|
||||||
|
'Entries must be bare origins only (scheme + host + optional port), with no username/password, path, query, or hash.'
|
||||||
|
);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return parsedOrigin.origin;
|
||||||
|
} catch {
|
||||||
|
console.error(
|
||||||
|
`[secureConfigFetch] Ignoring misconfigured allowed origin "${origin}". Entry is not a valid URL.`
|
||||||
|
);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter(Boolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolveConfigUrl(rawUrl) {
|
||||||
|
if (!rawUrl || typeof rawUrl !== 'string') {
|
||||||
|
throw new Error('Missing required "url" query parameter');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new URL(rawUrl, window.location.href);
|
||||||
|
} catch {
|
||||||
|
throw new Error('Invalid URL in "url" query parameter');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolveConfigFetchPolicy(rawUrl, policy = {}) {
|
||||||
|
const { allowedOrigins = [], userAuthenticationService } = policy;
|
||||||
|
const parsedUrl = resolveConfigUrl(rawUrl);
|
||||||
|
const protocol = parsedUrl.protocol.toLowerCase();
|
||||||
|
const isSameOrigin = parsedUrl.origin === window.location.origin;
|
||||||
|
|
||||||
|
if (!['http:', 'https:'].includes(protocol)) {
|
||||||
|
throw new Error('Only HTTP(S) URLs are allowed for dynamic datasource configuration');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parsedUrl.hash) {
|
||||||
|
throw new Error('URL fragments are not allowed for dynamic datasource configuration');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parsedUrl.username || parsedUrl.password) {
|
||||||
|
throw new Error('URL userinfo is not allowed for dynamic datasource configuration');
|
||||||
|
}
|
||||||
|
|
||||||
|
const isAuthenticated = Boolean(
|
||||||
|
userAuthenticationService?.getAuthorizationHeader?.()?.Authorization
|
||||||
|
);
|
||||||
|
|
||||||
|
if (isAuthenticated && !isSameOrigin) {
|
||||||
|
const normalizedAllowedOrigins = normalizeAllowedOrigins(allowedOrigins);
|
||||||
|
if (!normalizedAllowedOrigins.length || !normalizedAllowedOrigins.includes(parsedUrl.origin)) {
|
||||||
|
throw new Error(
|
||||||
|
`Blocked remote configuration origin "${parsedUrl.origin}" in authenticated environment`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
parsedUrl,
|
||||||
|
normalizedUrl: parsedUrl.toString(),
|
||||||
|
isAuthenticated,
|
||||||
|
isSameOrigin,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchConfigJson(normalizedPolicy) {
|
||||||
|
const { normalizedUrl } = normalizedPolicy;
|
||||||
|
const response = await fetch(normalizedUrl, {
|
||||||
|
method: 'GET',
|
||||||
|
mode: 'cors',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
redirect: 'error',
|
||||||
|
referrerPolicy: 'no-referrer',
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Failed to fetch dynamic datasource configuration (${response.status})`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.json();
|
||||||
|
}
|
||||||
|
export { resolveConfigFetchPolicy, fetchConfigJson };
|
||||||
163
extensions/default/src/utils/secureConfigFetch.test.js
Normal file
163
extensions/default/src/utils/secureConfigFetch.test.js
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
// @ts-nocheck
|
||||||
|
import { resolveConfigFetchPolicy, fetchConfigJson } from './secureConfigFetch';
|
||||||
|
|
||||||
|
describe('secureConfigFetch', () => {
|
||||||
|
describe('resolveConfigFetchPolicy', () => {
|
||||||
|
it('allows arbitrary origin in unauthenticated environments', () => {
|
||||||
|
const result = resolveConfigFetchPolicy('https://untrusted.example.com/config.json', {
|
||||||
|
userAuthenticationService: {
|
||||||
|
getAuthorizationHeader: () => ({}),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.normalizedUrl).toBe('https://untrusted.example.com/config.json');
|
||||||
|
expect(result.isAuthenticated).toBe(false);
|
||||||
|
expect(result.isSameOrigin).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('blocks non-allowlisted origins in authenticated environments', () => {
|
||||||
|
expect(() =>
|
||||||
|
resolveConfigFetchPolicy('https://untrusted.example.com/config.json', {
|
||||||
|
allowedOrigins: ['https://trusted.example.com'],
|
||||||
|
userAuthenticationService: {
|
||||||
|
getAuthorizationHeader: () => ({ Authorization: 'Bearer token123' }),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
).toThrow('Blocked remote configuration origin');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('allows allowlisted origin in authenticated environments', () => {
|
||||||
|
const result = resolveConfigFetchPolicy('http://localhost:5000/config.json', {
|
||||||
|
allowedOrigins: ['http://localhost:5000', 'https://trusted.example.com'],
|
||||||
|
userAuthenticationService: {
|
||||||
|
getAuthorizationHeader: () => ({ Authorization: 'Bearer token123' }),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.normalizedUrl).toBe('http://localhost:5000/config.json');
|
||||||
|
expect(result.isAuthenticated).toBe(true);
|
||||||
|
expect(result.isSameOrigin).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('blocks authenticated fetch when allowlist is missing', () => {
|
||||||
|
expect(() =>
|
||||||
|
resolveConfigFetchPolicy('https://noTrustList.example.com/config.json', {
|
||||||
|
userAuthenticationService: {
|
||||||
|
getAuthorizationHeader: () => ({ Authorization: 'Bearer token123' }),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
).toThrow('Blocked remote configuration origin');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('allows same-origin in authenticated environments without allowlist', () => {
|
||||||
|
const result = resolveConfigFetchPolicy('/protected/config.json', {
|
||||||
|
userAuthenticationService: {
|
||||||
|
getAuthorizationHeader: () => ({ Authorization: 'Bearer token123' }),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.normalizedUrl).toBe(`${window.location.origin}/protected/config.json`);
|
||||||
|
expect(result.isAuthenticated).toBe(true);
|
||||||
|
expect(result.isSameOrigin).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('rejects embedded userinfo in config URLs', () => {
|
||||||
|
expect(() =>
|
||||||
|
resolveConfigFetchPolicy('https://user:pass@trusted.example.com/config.json', {
|
||||||
|
allowedOrigins: ['https://trusted.example.com'],
|
||||||
|
userAuthenticationService: {
|
||||||
|
getAuthorizationHeader: () => ({ Authorization: 'Bearer token123' }),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
).toThrow('URL userinfo is not allowed for dynamic datasource configuration');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('fetchConfigJson', () => {
|
||||||
|
const originalFetch = global.fetch;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
global.fetch = jest.fn();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.restoreAllMocks();
|
||||||
|
global.fetch = originalFetch;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses hardened fetch options for unauthenticated cross-origin requests', async () => {
|
||||||
|
global.fetch.mockResolvedValue({
|
||||||
|
status: 200,
|
||||||
|
ok: true,
|
||||||
|
json: async () => ({ ok: true }),
|
||||||
|
});
|
||||||
|
|
||||||
|
await fetchConfigJson({
|
||||||
|
normalizedUrl: 'https://example.com/config.json',
|
||||||
|
isAuthenticated: false,
|
||||||
|
isSameOrigin: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(global.fetch).toHaveBeenCalledWith(
|
||||||
|
'https://example.com/config.json',
|
||||||
|
expect.objectContaining({
|
||||||
|
method: 'GET',
|
||||||
|
mode: 'cors',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
redirect: 'error',
|
||||||
|
referrerPolicy: 'no-referrer',
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses hardened fetch options for unauthenticated same-origin requests', async () => {
|
||||||
|
global.fetch.mockResolvedValue({
|
||||||
|
status: 200,
|
||||||
|
ok: true,
|
||||||
|
json: async () => ({ ok: true }),
|
||||||
|
});
|
||||||
|
|
||||||
|
await fetchConfigJson({
|
||||||
|
normalizedUrl: `${window.location.origin}/protected/config.json`,
|
||||||
|
isAuthenticated: false,
|
||||||
|
isSameOrigin: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(global.fetch).toHaveBeenCalledWith(
|
||||||
|
`${window.location.origin}/protected/config.json`,
|
||||||
|
expect.objectContaining({
|
||||||
|
method: 'GET',
|
||||||
|
mode: 'cors',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
redirect: 'error',
|
||||||
|
referrerPolicy: 'no-referrer',
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses hardened fetch options in authenticated environments', async () => {
|
||||||
|
global.fetch.mockResolvedValue({
|
||||||
|
status: 200,
|
||||||
|
ok: true,
|
||||||
|
json: async () => ({ ok: true }),
|
||||||
|
});
|
||||||
|
|
||||||
|
await fetchConfigJson({
|
||||||
|
normalizedUrl: 'https://trusted.example.com/config.json',
|
||||||
|
isAuthenticated: true,
|
||||||
|
isSameOrigin: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(global.fetch).toHaveBeenCalledWith(
|
||||||
|
'https://trusted.example.com/config.json',
|
||||||
|
expect.objectContaining({
|
||||||
|
method: 'GET',
|
||||||
|
mode: 'cors',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
redirect: 'error',
|
||||||
|
referrerPolicy: 'no-referrer',
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
**Note:** Version bump only for package @ohif/extension-dicom-microscopy
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-dicom-microscopy",
|
"name": "@ohif/extension-dicom-microscopy",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension for DICOM microscopy",
|
"description": "OHIF extension for DICOM microscopy",
|
||||||
"author": "Bill Wallace, md-prog",
|
"author": "Bill Wallace, md-prog",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -30,10 +30,10 @@
|
|||||||
"start": "yarn run dev"
|
"start": "yarn run dev"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
**Note:** Version bump only for package @ohif/extension-dicom-pdf
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-dicom-pdf",
|
"name": "@ohif/extension-dicom-pdf",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension for PDF display",
|
"description": "OHIF extension for PDF display",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -30,8 +30,8 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-dicom-video
|
**Note:** Version bump only for package @ohif/extension-dicom-video
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-dicom-video",
|
"name": "@ohif/extension-dicom-video",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension for video display",
|
"description": "OHIF extension for video display",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -30,8 +30,8 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
**Note:** Version bump only for package @ohif/extension-measurement-tracking
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-measurement-tracking",
|
"name": "@ohif/extension-measurement-tracking",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Tracking features and functionality for basic image viewing",
|
"description": "Tracking features and functionality for basic image viewing",
|
||||||
"author": "OHIF Core Team",
|
"author": "OHIF Core Team",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -34,22 +34,22 @@
|
|||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@cornerstonejs/core": "4.15.29",
|
"@cornerstonejs/core": "4.15.29",
|
||||||
"@cornerstonejs/tools": "4.15.29",
|
"@cornerstonejs/tools": "4.15.29",
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"lodash.debounce": "4.0.8",
|
"lodash.debounce": "4.0.8",
|
||||||
"prop-types": "15.8.1",
|
"prop-types": "15.8.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
"webpack": "5.89.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"@xstate/react": "3.2.2",
|
"@xstate/react": "3.2.2",
|
||||||
"xstate": "4.38.3"
|
"xstate": "4.38.3"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-test
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-test
|
**Note:** Version bump only for package @ohif/extension-test
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-test",
|
"name": "@ohif/extension-test",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension used inside e2e testing",
|
"description": "OHIF extension used inside e2e testing",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -30,8 +30,8 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-tmtv
|
**Note:** Version bump only for package @ohif/extension-tmtv
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-tmtv",
|
"name": "@ohif/extension-tmtv",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF extension for Total Metabolic Tumor Volume",
|
"description": "OHIF extension for Total Metabolic Tumor Volume",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -30,8 +30,8 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"dicom-parser": "1.8.21",
|
"dicom-parser": "1.8.21",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
**Note:** Version bump only for package @ohif/extension-ultrasound-pleura-bline
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/extension-ultrasound-pleura-bline",
|
"name": "@ohif/extension-ultrasound-pleura-bline",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"author": "Rodrigo Basilio",
|
"author": "Rodrigo Basilio",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -37,22 +37,21 @@
|
|||||||
"react-i18next": "12.3.1",
|
"react-i18next": "12.3.1",
|
||||||
"react-router": "6.30.3",
|
"react-router": "6.30.3",
|
||||||
"react-router-dom": "6.30.3",
|
"react-router-dom": "6.30.3",
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.15.29",
|
"@cornerstonejs/core": "4.15.29",
|
||||||
"@cornerstonejs/tools": "4.15.29",
|
"@cornerstonejs/tools": "4.15.29",
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"@ohif/ui-next": "3.12.0-beta.135"
|
"@ohif/ui-next": "3.12.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.28.0",
|
"@babel/core": "7.28.0",
|
||||||
"@babel/eslint-parser": "7.28.0",
|
|
||||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||||
"@babel/plugin-transform-arrow-functions": "7.27.1",
|
"@babel/plugin-transform-arrow-functions": "7.27.1",
|
||||||
"@babel/plugin-transform-class-properties": "7.27.1",
|
"@babel/plugin-transform-class-properties": "7.27.1",
|
||||||
@ -67,14 +66,11 @@
|
|||||||
"@babel/preset-typescript": "7.27.1",
|
"@babel/preset-typescript": "7.27.1",
|
||||||
"@svgr/webpack": "8.1.0",
|
"@svgr/webpack": "8.1.0",
|
||||||
"babel-loader": "8.4.1",
|
"babel-loader": "8.4.1",
|
||||||
"babel-plugin-module-resolver": "5.0.2",
|
|
||||||
"clean-webpack-plugin": "3.0.0",
|
"clean-webpack-plugin": "3.0.0",
|
||||||
"copy-webpack-plugin": "9.1.0",
|
"copy-webpack-plugin": "9.1.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"dotenv": "8.6.0",
|
"dotenv": "8.6.0",
|
||||||
"eslint": "8.57.1",
|
"webpack": "5.105.0",
|
||||||
"eslint-loader": "2.2.1",
|
|
||||||
"webpack": "5.95.0",
|
|
||||||
"webpack-cli": "5.1.4",
|
"webpack-cli": "5.1.4",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
|
|||||||
11
lerna.json
11
lerna.json
@ -1,5 +1,10 @@
|
|||||||
{
|
{
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"packages": ["extensions/*", "platform/*", "modes/*", "addOns/externals/*"],
|
"packages": [
|
||||||
|
"extensions/*",
|
||||||
|
"platform/*",
|
||||||
|
"modes/*",
|
||||||
|
"addOns/externals/*"
|
||||||
|
],
|
||||||
"npmClient": "yarn"
|
"npmClient": "yarn"
|
||||||
}
|
}
|
||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
**Note:** Version bump only for package @ohif/mode-basic-dev-mode
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-basic-dev-mode",
|
"name": "@ohif/mode-basic-dev-mode",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Basic OHIF Viewer Using Cornerstone",
|
"description": "Basic OHIF Viewer Using Cornerstone",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -31,19 +31,19 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.135",
|
"@ohif/extension-dicom-pdf": "3.12.1",
|
||||||
"@ohif/extension-dicom-video": "3.12.0-beta.135"
|
"@ohif/extension-dicom-video": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1"
|
"i18next": "17.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-test
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-test
|
**Note:** Version bump only for package @ohif/mode-test
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-test",
|
"name": "@ohif/mode-test",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Basic mode for testing",
|
"description": "Basic mode for testing",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -34,21 +34,21 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.135",
|
"@ohif/extension-dicom-pdf": "3.12.1",
|
||||||
"@ohif/extension-dicom-video": "3.12.0-beta.135",
|
"@ohif/extension-dicom-video": "3.12.1",
|
||||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.135",
|
"@ohif/extension-measurement-tracking": "3.12.1",
|
||||||
"@ohif/extension-test": "3.12.0-beta.135"
|
"@ohif/extension-test": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1"
|
"i18next": "17.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-basic
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-basic
|
**Note:** Version bump only for package @ohif/mode-basic
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-basic",
|
"name": "@ohif/mode-basic",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "A basic mode used to build other modes on top of",
|
"description": "A basic mode used to build other modes on top of",
|
||||||
"author": "OHIF Contributors",
|
"author": "OHIF Contributors",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -21,20 +21,20 @@
|
|||||||
"yarn": ">=1.16.0"
|
"yarn": ">=1.16.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-rt": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-seg": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.135",
|
"@ohif/extension-dicom-pdf": "3.12.1",
|
||||||
"@ohif/extension-dicom-video": "3.12.0-beta.135"
|
"@ohif/extension-dicom-video": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2"
|
"@babel/runtime": "7.28.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-longitudinal
|
**Note:** Version bump only for package @ohif/mode-longitudinal
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-longitudinal",
|
"name": "@ohif/mode-longitudinal",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Longitudinal Workflow",
|
"description": "Longitudinal Workflow",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -34,23 +34,23 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-rt": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-seg": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.135",
|
"@ohif/extension-dicom-pdf": "3.12.1",
|
||||||
"@ohif/extension-dicom-video": "3.12.0-beta.135",
|
"@ohif/extension-dicom-video": "3.12.1",
|
||||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.135",
|
"@ohif/extension-measurement-tracking": "3.12.1",
|
||||||
"@ohif/mode-basic": "3.12.0-beta.135"
|
"@ohif/mode-basic": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1"
|
"i18next": "17.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-microscopy
|
**Note:** Version bump only for package @ohif/mode-microscopy
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-microscopy",
|
"name": "@ohif/mode-microscopy",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF mode for DICOM microscopy",
|
"description": "OHIF mode for DICOM microscopy",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -35,8 +35,8 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.135"
|
"@ohif/extension-dicom-microscopy": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
**Note:** Version bump only for package @ohif/mode-preclinical-4d
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-preclinical-4d",
|
"name": "@ohif/mode-preclinical-4d",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "4D Workflow",
|
"description": "4D Workflow",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -33,18 +33,18 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-seg": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dynamic-volume": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dynamic-volume": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-tmtv": "3.12.0-beta.135"
|
"@ohif/extension-tmtv": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2"
|
"@babel/runtime": "7.28.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-segmentation
|
**Note:** Version bump only for package @ohif/mode-segmentation
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-segmentation",
|
"name": "@ohif/mode-segmentation",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "OHIF segmentation mode which enables labelmap segmentation read/edit/export",
|
"description": "OHIF segmentation mode which enables labelmap segmentation read/edit/export",
|
||||||
"author": "@ohif",
|
"author": "@ohif",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -35,15 +35,15 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-rt": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-seg": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.135",
|
"@ohif/extension-dicom-pdf": "3.12.1",
|
||||||
"@ohif/extension-dicom-video": "3.12.0-beta.135",
|
"@ohif/extension-dicom-video": "3.12.1",
|
||||||
"@ohif/mode-basic": "3.12.0-beta.135"
|
"@ohif/mode-basic": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
@ -51,7 +51,6 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.28.0",
|
"@babel/core": "7.28.0",
|
||||||
"@babel/eslint-parser": "7.28.0",
|
|
||||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||||
"@babel/plugin-transform-arrow-functions": "7.27.1",
|
"@babel/plugin-transform-arrow-functions": "7.27.1",
|
||||||
"@babel/plugin-transform-class-properties": "7.27.1",
|
"@babel/plugin-transform-class-properties": "7.27.1",
|
||||||
@ -69,9 +68,7 @@
|
|||||||
"copy-webpack-plugin": "9.1.0",
|
"copy-webpack-plugin": "9.1.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"dotenv": "8.6.0",
|
"dotenv": "8.6.0",
|
||||||
"eslint": "8.57.1",
|
"webpack": "5.105.0",
|
||||||
"eslint-loader": "2.2.1",
|
|
||||||
"webpack": "5.95.0",
|
|
||||||
"webpack-cli": "5.1.4",
|
"webpack-cli": "5.1.4",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-tmtv
|
**Note:** Version bump only for package @ohif/mode-tmtv
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-tmtv",
|
"name": "@ohif/mode-tmtv",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Total Metabolic Tumor Volume Workflow",
|
"description": "Total Metabolic Tumor Volume Workflow",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -34,20 +34,20 @@
|
|||||||
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.135",
|
"@ohif/extension-dicom-pdf": "3.12.1",
|
||||||
"@ohif/extension-dicom-video": "3.12.0-beta.135",
|
"@ohif/extension-dicom-video": "3.12.1",
|
||||||
"@ohif/extension-measurement-tracking": "3.12.0-beta.135"
|
"@ohif/extension-measurement-tracking": "3.12.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"i18next": "17.3.1"
|
"i18next": "17.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"webpack": "5.95.0",
|
"webpack": "5.105.0",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
**Note:** Version bump only for package @ohif/mode-ultrasound-pleura-bline
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/mode-ultrasound-pleura-bline",
|
"name": "@ohif/mode-ultrasound-pleura-bline",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Allows users to annotate ultrasound images with pleura B-line annotations.",
|
"description": "Allows users to annotate ultrasound images with pleura B-line annotations.",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -36,14 +36,13 @@
|
|||||||
"@babel/runtime": "7.28.2",
|
"@babel/runtime": "7.28.2",
|
||||||
"@cornerstonejs/core": "4.15.29",
|
"@cornerstonejs/core": "4.15.29",
|
||||||
"@cornerstonejs/tools": "4.15.29",
|
"@cornerstonejs/tools": "4.15.29",
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.135",
|
"@ohif/extension-ultrasound-pleura-bline": "3.12.1",
|
||||||
"i18next": "17.3.1"
|
"i18next": "17.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.28.0",
|
"@babel/core": "7.28.0",
|
||||||
"@babel/eslint-parser": "7.28.0",
|
|
||||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||||
"@babel/plugin-transform-arrow-functions": "7.27.1",
|
"@babel/plugin-transform-arrow-functions": "7.27.1",
|
||||||
"@babel/plugin-transform-class-properties": "7.27.1",
|
"@babel/plugin-transform-class-properties": "7.27.1",
|
||||||
@ -61,9 +60,7 @@
|
|||||||
"copy-webpack-plugin": "9.1.0",
|
"copy-webpack-plugin": "9.1.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"dotenv": "8.6.0",
|
"dotenv": "8.6.0",
|
||||||
"eslint": "8.57.1",
|
"webpack": "5.105.0",
|
||||||
"eslint-loader": "2.2.1",
|
|
||||||
"webpack": "5.95.0",
|
|
||||||
"webpack-cli": "5.1.4",
|
"webpack-cli": "5.1.4",
|
||||||
"webpack-merge": "5.10.0"
|
"webpack-merge": "5.10.0"
|
||||||
}
|
}
|
||||||
|
|||||||
26
package.json
26
package.json
@ -49,7 +49,7 @@
|
|||||||
"install:update-lockfile": "yarn install && bun install --config=./bunfig.update-lockfile.toml",
|
"install:update-lockfile": "yarn install && bun install --config=./bunfig.update-lockfile.toml",
|
||||||
"install:yarn:frozen-lockfile": "echo Deprecated - use install:frozen && yarn install --frozen-lockfile",
|
"install:yarn:frozen-lockfile": "echo Deprecated - use install:frozen && yarn install --frozen-lockfile",
|
||||||
"install:frozen": "yarn install --frozen-lockfile",
|
"install:frozen": "yarn install --frozen-lockfile",
|
||||||
"audit": "bun audit --ignore=GHSA-5j98-mcp5-4vw2",
|
"audit": "bun audit --ignore=GHSA-3ppc-4f35-3m26 --ignore=GHSA-7r86-cg39-jmmj --ignore=GHSA-23c5-xmqv-rm74 --ignore=GHSA-c2c7-rcm5-vvqj",
|
||||||
"preinstall": "node preinstall.js",
|
"preinstall": "node preinstall.js",
|
||||||
"start": "yarn run dev",
|
"start": "yarn run dev",
|
||||||
"test": "yarn run test:unit",
|
"test": "yarn run test:unit",
|
||||||
@ -103,16 +103,14 @@
|
|||||||
"@istanbuljs/nyc-config-typescript": "1.0.2",
|
"@istanbuljs/nyc-config-typescript": "1.0.2",
|
||||||
"@pmmmwh/react-refresh-webpack-plugin": "0.5.17",
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.17",
|
||||||
"babel-loader": "8.4.1",
|
"babel-loader": "8.4.1",
|
||||||
"babel-plugin-istanbul": "7.0.0",
|
"babel-plugin-istanbul": "7.0.1",
|
||||||
"babel-plugin-transform-import-meta": "2.3.3",
|
"babel-plugin-transform-import-meta": "2.3.3",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"css-loader": "6.11.0",
|
"css-loader": "6.11.0",
|
||||||
"cypress": "14.5.2",
|
"cypress": "14.5.2",
|
||||||
"cypress-file-upload": "5.0.8",
|
"cypress-file-upload": "5.0.8",
|
||||||
"file-loader": "6.2.0",
|
"file-loader": "6.2.0",
|
||||||
"istanbul": "0.4.5",
|
|
||||||
"nyc": "17.1.0",
|
"nyc": "17.1.0",
|
||||||
"patch-package": "8.0.0",
|
|
||||||
"playwright-test-coverage": "1.2.12",
|
"playwright-test-coverage": "1.2.12",
|
||||||
"postcss-loader": "6.2.1",
|
"postcss-loader": "6.2.1",
|
||||||
"prettier": "3.6.2",
|
"prettier": "3.6.2",
|
||||||
@ -140,21 +138,31 @@
|
|||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cross-spawn": "7.0.6",
|
"cross-spawn": "7.0.6",
|
||||||
"dcmjs": "0.49.4",
|
"dcmjs": "0.49.4",
|
||||||
"path-to-regexp": "0.1.12",
|
"path-to-regexp": "0.1.13",
|
||||||
"nth-check": "2.1.1",
|
"nth-check": "2.1.1",
|
||||||
"trim-newlines": "5.0.0",
|
"trim-newlines": "5.0.0",
|
||||||
"glob-parent": "6.0.2",
|
"glob-parent": "6.0.2",
|
||||||
"trim": "1.0.1",
|
"trim": "1.0.1",
|
||||||
"package-json": "8.1.1",
|
"package-json": "8.1.1",
|
||||||
"rollup": "2.79.2",
|
"rollup": "2.80.0",
|
||||||
"body-parser": "1.20.3",
|
"body-parser": "1.20.3",
|
||||||
"axios": "1.12.0",
|
"axios": "1.15.2",
|
||||||
"core-js": "3.45.1",
|
"core-js": "3.45.1",
|
||||||
"@babel/runtime-corejs2": "7.26.10",
|
"@babel/runtime-corejs2": "7.26.10",
|
||||||
"tapable": "2.2.2",
|
"tapable": "2.2.2",
|
||||||
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
"@cornerstonejs/codec-openjpeg": "1.3.0",
|
||||||
"node-forge": "1.3.2",
|
"node-forge": "1.4.0",
|
||||||
"qs": "6.14.1"
|
"qs": "6.14.1",
|
||||||
|
"lodash": "4.18.1",
|
||||||
|
"lodash-es": "4.18.1",
|
||||||
|
"diff": "5.2.2",
|
||||||
|
"webpack": "5.105.0",
|
||||||
|
"tar": "7.5.11",
|
||||||
|
"serialize-javascript": "7.0.4",
|
||||||
|
"svgo": "3.3.3",
|
||||||
|
"flatted": "3.4.2",
|
||||||
|
"handlebars": "4.7.9",
|
||||||
|
"protobufjs": "7.5.5"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/app
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/app
|
**Note:** Version bump only for package @ohif/app
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
[build.environment]
|
[build.environment]
|
||||||
# If 'production', `yarn install` does not install devDependencies
|
# If 'production', `yarn install` does not install devDependencies
|
||||||
NODE_ENV = "development"
|
NODE_ENV = "development"
|
||||||
NODE_VERSION = "20.18.1"
|
NODE_VERSION = "20.19.0"
|
||||||
YARN_VERSION = "1.22.5"
|
YARN_VERSION = "1.22.5"
|
||||||
RUBY_VERSION = "2.6.2"
|
RUBY_VERSION = "2.6.2"
|
||||||
YARN_FLAGS = "--no-ignore-optional --pure-lockfile"
|
YARN_FLAGS = "--no-ignore-optional --pure-lockfile"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/app",
|
"name": "@ohif/app",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"productVersion": "3.4.0",
|
"productVersion": "3.4.0",
|
||||||
"description": "OHIF Viewer",
|
"description": "OHIF Viewer",
|
||||||
"author": "OHIF Contributors",
|
"author": "OHIF Contributors",
|
||||||
@ -55,25 +55,25 @@
|
|||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.15.29",
|
"@cornerstonejs/dicom-image-loader": "4.15.29",
|
||||||
"@emotion/serialize": "1.3.3",
|
"@emotion/serialize": "1.3.3",
|
||||||
"@ohif/core": "3.12.0-beta.135",
|
"@ohif/core": "3.12.1",
|
||||||
"@ohif/extension-cornerstone": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-rt": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-rt": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-seg": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-seg": "3.12.1",
|
||||||
"@ohif/extension-cornerstone-dicom-sr": "3.12.0-beta.135",
|
"@ohif/extension-cornerstone-dicom-sr": "3.12.1",
|
||||||
"@ohif/extension-default": "3.12.0-beta.135",
|
"@ohif/extension-default": "3.12.1",
|
||||||
"@ohif/extension-dicom-microscopy": "3.12.0-beta.135",
|
"@ohif/extension-dicom-microscopy": "3.12.1",
|
||||||
"@ohif/extension-dicom-pdf": "3.12.0-beta.135",
|
"@ohif/extension-dicom-pdf": "3.12.1",
|
||||||
"@ohif/extension-dicom-video": "3.12.0-beta.135",
|
"@ohif/extension-dicom-video": "3.12.1",
|
||||||
"@ohif/extension-test": "3.12.0-beta.135",
|
"@ohif/extension-test": "3.12.1",
|
||||||
"@ohif/extension-ultrasound-pleura-bline": "3.12.0-beta.135",
|
"@ohif/extension-ultrasound-pleura-bline": "3.12.1",
|
||||||
"@ohif/i18n": "3.12.0-beta.135",
|
"@ohif/i18n": "3.12.1",
|
||||||
"@ohif/mode-basic-dev-mode": "3.12.0-beta.135",
|
"@ohif/mode-basic-dev-mode": "3.12.1",
|
||||||
"@ohif/mode-longitudinal": "3.12.0-beta.135",
|
"@ohif/mode-longitudinal": "3.12.1",
|
||||||
"@ohif/mode-microscopy": "3.12.0-beta.135",
|
"@ohif/mode-microscopy": "3.12.1",
|
||||||
"@ohif/mode-test": "3.12.0-beta.135",
|
"@ohif/mode-test": "3.12.1",
|
||||||
"@ohif/mode-ultrasound-pleura-bline": "3.12.0-beta.135",
|
"@ohif/mode-ultrasound-pleura-bline": "3.12.1",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"@ohif/ui-next": "3.12.0-beta.135",
|
"@ohif/ui-next": "3.12.1",
|
||||||
"@svgr/webpack": "8.1.0",
|
"@svgr/webpack": "8.1.0",
|
||||||
"@types/react": "18.3.23",
|
"@types/react": "18.3.23",
|
||||||
"classnames": "2.5.1",
|
"classnames": "2.5.1",
|
||||||
|
|||||||
@ -251,6 +251,12 @@ window.config = {
|
|||||||
configuration: {
|
configuration: {
|
||||||
friendlyName: 'dicomweb delegating proxy',
|
friendlyName: 'dicomweb delegating proxy',
|
||||||
name: 'dicomwebproxy',
|
name: 'dicomwebproxy',
|
||||||
|
// Security controls for runtime ?url=... datasource loading:
|
||||||
|
// In authenticated environments, runtime ?url origins must be allowlisted:
|
||||||
|
// dangerouslyAllowedOriginsForAuthenticatedEnvironments: [
|
||||||
|
// 'https://config.example.com',
|
||||||
|
// 'http://localhost:5000',
|
||||||
|
// ],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -259,6 +265,12 @@ window.config = {
|
|||||||
configuration: {
|
configuration: {
|
||||||
friendlyName: 'dicom json',
|
friendlyName: 'dicom json',
|
||||||
name: 'json',
|
name: 'json',
|
||||||
|
// Security controls for runtime ?url=... datasource loading:
|
||||||
|
// In authenticated environments, runtime ?url origins must be allowlisted:
|
||||||
|
// dangerouslyAllowedOriginsForAuthenticatedEnvironments: [
|
||||||
|
// 'https://config.example.com',
|
||||||
|
// 'http://localhost:5000',
|
||||||
|
// ],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/cli
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/cli
|
**Note:** Version bump only for package @ohif/cli
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/cli",
|
"name": "@ohif/cli",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "A CLI to bootstrap new OHIF extension or mode",
|
"description": "A CLI to bootstrap new OHIF extension or mode",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
@ -21,7 +21,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "7.28.0",
|
"@babel/core": "7.28.0",
|
||||||
"axios": "1.12.0",
|
"axios": "1.13.5",
|
||||||
"chalk": "5.4.1",
|
"chalk": "5.4.1",
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"gitignore": "0.7.0",
|
"gitignore": "0.7.0",
|
||||||
|
|||||||
@ -45,16 +45,12 @@
|
|||||||
"@babel/preset-react": "^7.27.1",
|
"@babel/preset-react": "^7.27.1",
|
||||||
"@babel/preset-typescript": "^7.27.1",
|
"@babel/preset-typescript": "^7.27.1",
|
||||||
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
|
"@babel/plugin-transform-private-property-in-object": "^7.27.1",
|
||||||
"@babel/eslint-parser": "7.28.0",
|
|
||||||
"babel-loader": "^8.2.4",
|
"babel-loader": "^8.2.4",
|
||||||
"@svgr/webpack": "^8.1.0",
|
"@svgr/webpack": "^8.1.0",
|
||||||
"babel-plugin-module-resolver": "^5.0.0",
|
|
||||||
"clean-webpack-plugin": "^4.0.0",
|
"clean-webpack-plugin": "^4.0.0",
|
||||||
"copy-webpack-plugin": "^10.2.0",
|
"copy-webpack-plugin": "^10.2.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"dotenv": "^14.1.0",
|
"dotenv": "^14.1.0",
|
||||||
"eslint": "^8.39.0",
|
|
||||||
"eslint-loader": "^2.0.0",
|
|
||||||
"webpack": "5.89.0",
|
"webpack": "5.89.0",
|
||||||
"webpack-merge": "^5.7.3",
|
"webpack-merge": "^5.7.3",
|
||||||
"webpack-cli": "^5.0.2"
|
"webpack-cli": "^5.0.2"
|
||||||
|
|||||||
@ -35,15 +35,12 @@
|
|||||||
"@babel/preset-env": "7.28.0",
|
"@babel/preset-env": "7.28.0",
|
||||||
"@babel/preset-react": "^7.27.1",
|
"@babel/preset-react": "^7.27.1",
|
||||||
"@babel/preset-typescript": "^7.27.1",
|
"@babel/preset-typescript": "^7.27.1",
|
||||||
"@babel/eslint-parser": "7.28.0",
|
|
||||||
"babel-loader": "^8.0.0-beta.4",
|
"babel-loader": "^8.0.0-beta.4",
|
||||||
"@svgr/webpack": "^8.1.0",
|
"@svgr/webpack": "^8.1.0",
|
||||||
"clean-webpack-plugin": "^4.0.0",
|
"clean-webpack-plugin": "^4.0.0",
|
||||||
"copy-webpack-plugin": "^10.2.0",
|
"copy-webpack-plugin": "^10.2.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"dotenv": "^14.1.0",
|
"dotenv": "^14.1.0",
|
||||||
"eslint": "^8.39.0",
|
|
||||||
"eslint-loader": "^2.0.0",
|
|
||||||
"webpack": "5.89.0",
|
"webpack": "5.89.0",
|
||||||
"webpack-merge": "^5.7.3",
|
"webpack-merge": "^5.7.3",
|
||||||
"webpack-cli": "^5.0.2"
|
"webpack-cli": "^5.0.2"
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/core
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/core
|
**Note:** Version bump only for package @ohif/core
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/core",
|
"name": "@ohif/core",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Generic business logic for web-based medical imaging applications",
|
"description": "Generic business logic for web-based medical imaging applications",
|
||||||
"author": "OHIF Core Team",
|
"author": "OHIF Core Team",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -39,8 +39,8 @@
|
|||||||
"@cornerstonejs/codec-openjph": "2.4.7",
|
"@cornerstonejs/codec-openjph": "2.4.7",
|
||||||
"@cornerstonejs/core": "4.15.29",
|
"@cornerstonejs/core": "4.15.29",
|
||||||
"@cornerstonejs/dicom-image-loader": "4.15.29",
|
"@cornerstonejs/dicom-image-loader": "4.15.29",
|
||||||
"@ohif/ui": "3.12.0-beta.135",
|
"@ohif/ui": "3.12.1",
|
||||||
"cornerstone-math": "0.1.9",
|
"cornerstone-math": "0.1.10",
|
||||||
"dicom-parser": "1.8.21"
|
"dicom-parser": "1.8.21"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package ohif-docs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package ohif-docs
|
**Note:** Version bump only for package ohif-docs
|
||||||
|
|||||||
@ -312,6 +312,18 @@ reasons:
|
|||||||
However, if you would like to get compressed data in a specific transfer syntax, you can modify the `acceptHeader` configuration or
|
However, if you would like to get compressed data in a specific transfer syntax, you can modify the `acceptHeader` configuration or
|
||||||
`requestTransferSyntaxUID` configuration.
|
`requestTransferSyntaxUID` configuration.
|
||||||
|
|
||||||
|
### Data Source: stackRetrieveOptions
|
||||||
|
At the data source configuration level, you can set `stackRetrieveOptions` to customize Cornerstone stack image retrieval. Merged with defaults; only specify overrides. For example, set `streaming: false` when the data source returns uncompressed DICOM (e.g. `application/octet-stream` only) to avoid black image on load:
|
||||||
|
|
||||||
|
```js
|
||||||
|
configuration: {
|
||||||
|
acceptHeader: ['application/octet-stream'],
|
||||||
|
stackRetrieveOptions: {
|
||||||
|
retrieveOptions: { single: { streaming: false } },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
|
|
||||||
We use environment variables at build and dev time to change the Viewer's
|
We use environment variables at build and dev time to change the Viewer's
|
||||||
|
|||||||
@ -66,6 +66,56 @@ http://localhost:3000/viewer?StudyInstanceUIDs=1.2.3.4.5.6.6.7&token=e123125jsdf
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Securing dynamic datasource URLs
|
||||||
|
When using `dicomwebproxy` or `dicomjson` data sources with a runtime `?url=...` query parameter,
|
||||||
|
configure explicit trust boundaries to prevent credential exfiltration.
|
||||||
|
|
||||||
|
Use these datasource configuration options:
|
||||||
|
|
||||||
|
- `dangerouslyAllowedOriginsForAuthenticatedEnvironments`: Origin allowlist used only when the viewer is running in an authenticated environment. Entries may use `http://` or `https://` and can include localhost origins.
|
||||||
|
|
||||||
|
Allowed entry format for `dangerouslyAllowedOriginsForAuthenticatedEnvironments`:
|
||||||
|
|
||||||
|
- Must be a bare origin only: `scheme://host[:port]`
|
||||||
|
- `http://` and `https://` are both allowed
|
||||||
|
- Localhost is allowed when explicitly listed (for example, `http://localhost:5000`)
|
||||||
|
- Must not include username/password, path, query string, or hash
|
||||||
|
- Invalid entries are ignored and logged as misconfigured
|
||||||
|
|
||||||
|
Policy summary:
|
||||||
|
|
||||||
|
- In unauthenticated environments, any HTTP(S) `?url=` origin is allowed.
|
||||||
|
- In authenticated environments, same-origin `?url=` values are allowed by default.
|
||||||
|
- In authenticated environments, cross-origin `?url=` values must be present in `dangerouslyAllowedOriginsForAuthenticatedEnvironments`, otherwise loading fails closed.
|
||||||
|
- In unauthenticated environments, cross-origin config URLs are fetched with:
|
||||||
|
- `method: 'GET'`
|
||||||
|
- `mode: 'cors'`
|
||||||
|
- `credentials: 'omit'`
|
||||||
|
- `redirect: 'error'`
|
||||||
|
- `referrerPolicy: 'no-referrer'`
|
||||||
|
- In unauthenticated environments, same-origin config URLs use a plain `fetch()` call (browser default `credentials: 'same-origin'`).
|
||||||
|
- Same-origin config URLs are fetched using simple fetch behavior (so same-origin session/cookie auth is preserved).
|
||||||
|
- In authenticated environments, allowlisted cross-origin config URLs are fetched using simple fetch behavior.
|
||||||
|
- Returned datasource configuration payloads are consumed as-is (no additional URL/config scrubbing).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```js
|
||||||
|
dataSources: [
|
||||||
|
{
|
||||||
|
namespace: '@ohif/extension-default.dataSourcesModule.dicomwebproxy',
|
||||||
|
sourceName: 'dicomwebproxy',
|
||||||
|
configuration: {
|
||||||
|
name: 'dicomwebproxy',
|
||||||
|
dangerouslyAllowedOriginsForAuthenticatedEnvironments: [
|
||||||
|
'https://config.example.com',
|
||||||
|
'http://localhost:5000',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
## Implicit Flow vs Authorization Code Flow
|
## Implicit Flow vs Authorization Code Flow
|
||||||
|
|
||||||
The Viewer supports both the Implicit Flow and the Authorization Code Flow. The Implicit Flow is the default currently, as it is easier to set up and use. However, you can opt for better security by using the Authorization Code Flow. To do so, add `useAuthorizationCodeFlow` to the configuration and change the `response_type` from `id_token token` to `code`.
|
The Viewer supports both the Implicit Flow and the Authorization Code Flow. The Implicit Flow is the default currently, as it is easier to set up and use. However, you can opt for better security by using the Authorization Code Flow. To do so, add `useAuthorizationCodeFlow` to the configuration and change the `response_type` from `id_token token` to `code`.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ohif-docs",
|
"name": "ohif-docs",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"docusaurus": "docusaurus",
|
"docusaurus": "docusaurus",
|
||||||
@ -97,6 +97,12 @@
|
|||||||
"url-loader": "4.1.1"
|
"url-loader": "4.1.1"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"qs": "6.14.1"
|
"qs": "6.14.1",
|
||||||
|
"lodash": "4.17.23",
|
||||||
|
"webpack": "5.105.0",
|
||||||
|
"sharp": "0.34.5",
|
||||||
|
"serialize-javascript": "7.0.4",
|
||||||
|
"rollup": "2.80.0",
|
||||||
|
"svgo": "3.3.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/i18n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/i18n
|
**Note:** Version bump only for package @ohif/i18n
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/i18n",
|
"name": "@ohif/i18n",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Internationalization library for The OHIF Viewer",
|
"description": "Internationalization library for The OHIF Viewer",
|
||||||
"author": "OHIF",
|
"author": "OHIF",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/ui-next
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/ui-next
|
**Note:** Version bump only for package @ohif/ui-next
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/ui-next",
|
"name": "@ohif/ui-next",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "Next version of OHIF Viewers UI, more customizable using shadcn/ui",
|
"description": "Next version of OHIF Viewers UI, more customizable using shadcn/ui",
|
||||||
"main": "dist/ohif-ui-next.umd.js",
|
"main": "dist/ohif-ui-next.umd.js",
|
||||||
"module": "src/index.ts",
|
"module": "src/index.ts",
|
||||||
|
|||||||
@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [3.12.0](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.135...v3.12.0) (2026-02-06)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @ohif/ui
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
# [3.12.0-beta.135](https://github.com/OHIF/Viewers/compare/v3.12.0-beta.134...v3.12.0-beta.135) (2026-02-05)
|
||||||
|
|
||||||
**Note:** Version bump only for package @ohif/ui
|
**Note:** Version bump only for package @ohif/ui
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ohif/ui",
|
"name": "@ohif/ui",
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"description": "A set of React components for Medical Imaging Viewers",
|
"description": "A set of React components for Medical Imaging Viewers",
|
||||||
"author": "OHIF Contributors",
|
"author": "OHIF Contributors",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -58,8 +58,7 @@
|
|||||||
"react-test-renderer": "18.3.1",
|
"react-test-renderer": "18.3.1",
|
||||||
"react-window": "1.8.11",
|
"react-window": "1.8.11",
|
||||||
"react-with-direction": "1.4.0",
|
"react-with-direction": "1.4.0",
|
||||||
"swiper": "8.4.7",
|
"webpack": "5.105.0"
|
||||||
"webpack": "5.95.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.28.0",
|
"@babel/core": "7.28.0",
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"version": "3.12.0-beta.135",
|
"version": "3.12.1",
|
||||||
"commit": "45739b31a2c72cb646c733929f733a8e180a616c"
|
"commit": "146897f216696870682ce933f410bcd2692fc6a4"
|
||||||
}
|
}
|
||||||
@ -1 +1 @@
|
|||||||
3.12.0-beta.135
|
3.12.1
|
||||||
Loading…
Reference in New Issue
Block a user