Commit Graph
7325 Commits
Author SHA1 Message Date
Ghadeer Albattarni 01939e2236 test: add E2E test for contour combine intersect and subtract operations (#6131) 2026-07-11 02:21:39 -04:00
ohif-bot f0e2f64397 chore(version): Update package versions to 3.13.0-beta.121 [skip ci] v3.13.0-beta.121 2026-07-10 22:54:59 +00:00
Alireza 43226d9191 fix(app): appearance modal provider scope, worklist preview persistence, and tag browser label overflow (#6136)
- Insert ServiceProvidersManager providers ahead of the dialog/modal
  providers in App.tsx: modal content renders as a sibling of the
  provider's children, so contexts registered via the manager (e.g.
  ActiveThemeProvider) were out of scope and the appearance modal
  crashed with 'useActiveTheme must be used within an ActiveThemeProvider'.
- Persist the worklist preview panel open/closed state in
  sessionStorage so it survives navigating into a study and back.
- Keep the DICOM tag browser instance number label on one line:
  the words truncate, the (n of total) digits never clip.
2026-07-10 18:52:06 -04:00
ohif-bot dc9df56be4 chore(version): Update package versions to 3.13.0-beta.120 [skip ci] v3.13.0-beta.120 2026-07-10 21:08:34 +00:00
Alireza 9c76afa075 feat(segmentation): replace One Click Segment with ClickSegmentTool (#6135)
* feat(segmentation): replace One Click Segment with ClickSegmentTool

Wire OHIF to ClickSegmentTool from Cornerstone3D (#2780), rename the
toolbox button to Click to Segment, and enable it only on PET (PT)
viewports.

* chore(deps): bump @cornerstonejs packages to 5.4.13

Pick up ClickSegmentTool from the published Cornerstone3D release so
OHIF installs the tool from npm without a local CS3D link.
2026-07-10 17:05:26 -04:00
ohif-bot 6d8a275171 chore(version): Update package versions to 3.13.0-beta.119 [skip ci] v3.13.0-beta.119 2026-07-10 19:38:19 +00:00
Alireza 1eee3e6119 fix(MetadataProvider): Correctly assign imageId for multiframe images and remove unused frame information retrieval method (#5965) 2026-07-10 15:35:09 -04:00
ohif-bot 2c54616136 chore(version): Update package versions to 3.13.0-beta.118 [skip ci] v3.13.0-beta.118 2026-07-10 17:34:50 +00:00
Alireza 9329dd5b55 test(core): use fake timers in Queue unit tests to stop CI flakes (#6134)
The Queue tests measured real setTimeout wall-clock time and asserted
elapsed < 2 * threshold. On busy CI runners a 2400ms timer can take
longer than 4800ms to fire, failing the assertion intermittently (seen
in downstream validation runs). Switch to jest's modern fake timers so
elapsed is exactly the timeout delay: the tests are deterministic and
no longer spend ~5 seconds of real time waiting.
2026-07-10 13:31:42 -04:00
ohif-bot 75105ced04 chore(version): Update package versions to 3.13.0-beta.117 [skip ci] v3.13.0-beta.117 2026-07-10 16:46:10 +00:00
Bill Wallace b266c0a86a feat: Add extensibility for tmtv and segmentation modes (#6128)
* feat: Add extensibility for tmtv and segmentation modes

* Fixes for ordering issues on laod

* Remove unnecessary reference lookup

* Chane side panel timing to fix tests

* PR comments - change how mode definitions get created

* Improvements to mode customizations

* Start organizing customizations

* Misc fixes for a customization demo page

* Security fixes

* PR requested changes to naming
2026-07-10 12:43:17 -04:00
ohif-bot f79055f98e chore(version): Update package versions to 3.13.0-beta.116 [skip ci] v3.13.0-beta.116 2026-07-10 12:19:06 +00:00
Bill WallaceandClaude Fable 5 6b6761088b fix: Several new worklist issues (#6130)
* fix: Several new worklist issues

* refactor: Export a single OnStudyDoubleClick type from the StudyList barrel

Addresses PR review feedback: the double-click handler signature was
written out in both TableProps and the WorkList customization cast,
so the two could drift apart.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat: Run worklist study double-click as a command, registrable by modes

- Modes can now export getCommandsModule on their definition; appInit
  registers it (via the new ExtensionManager.registerCommandsModule)
  before the mode is instantiated, in a new 'WORKLIST' commands context,
  so the commands are available on the worklist before any mode route
  is entered.
- The workList.onStudyDoubleClick customization is now a command run
  input (name/options) instead of a bare function, defaulting to the
  new launchDefaultMode command, which launches the default workflow
  falling back to the first applicable one. commandOptions.workflowId
  overrides it to a specific mode.
- Duplicate mode ids are now skipped before running their modeFactory
  rather than after.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 08:16:16 -04:00
dbb8b1526e feat: Add support for labelmap seg images in any supported tsuid (also for compressed bitmap) (#5806)
* feat: Update to use pnpm (#6031) [simulated squash-merge]

* feat: load DICOM SEG images via imageLoader

* feat: load DICOM SEG images via imageLoader

* PR review fixes

* Test fragment of compressed multiframes

* fix: Removed dependencies incorrectly

* Update frame as a targetted change to avoid stripping remaining params

* lock

* Update test to agree with the missing representation branch

* test(contour): contour color change coverage (#6042)

* test(contour): contour interactions delete segment (#6069)

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 3.13.0-beta.98 [skip ci]

* feat(testing): OHIF Test Agent Skills (#5993)

* chore(version): Update package versions to 3.13.0-beta.99 [skip ci]

* test(contour): Add the ContourSegmentToggleLock.spec.ts test file to test contour locking (#6072)

* chore(version): Update package versions to 3.13.0-beta.100 [skip ci]

* chore(testing): Flock lock for playwright tests; Pin node version for OHIF; add more workers (#6099)

* update Cypress apt deps for Ubuntu Noble (drop libgconf-2-4, libasound2→libasound2t64)

* chore(version): Update package versions to 3.13.0-beta.101 [skip ci]

* Debug fixes

* perf(seg): pass explicit frame decode concurrency (16) to SEG loader

Pass an explicit concurrency value (SEG_FRAME_DECODE_CONCURRENCY = 16) into
createFromDicomSegImageId rather than relying on the adapter default, so the
SEG frame fetch/decode parallelism is set at the call site and is ready to
become configurable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(behaviours): add behaviours section + multiframe Part 10 prefetch proposal

Start a "Behaviours" docs section for documenting how the system and UI behave
end-to-end (observed behaviours, design proposals, and failure modes), with an
index README and a Docusaurus category.

First entry is the proposal for loading a multiframe SEG as a single Part 10
instance: prefetch the whole instance (gated by loadMultiframeAsPart10RaceTimeMs),
parse it with dcmjs (handling multipart/related vs raw DICOM), and register the
per-frame compressed pixels into the Cornerstone3D core image cache (the single
uniform frame registry) so the per-frame load path is served locally while the
standard decode path is unchanged. Best-effort: falls back to per-frame fetches
on any failure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Pre-cache the image data using a full part10 file for performance

* Add customizations to specify type of segmentation save

* Add clearcache of the cacheData

* Bump @cornerstonejs/* pins 5.1.3 -> 5.4.10 to match libs/@cornerstonejs base

libs/@cornerstonejs (fix/use-imageLoader-for-seg) is based on the released
cs3d 5.4.10 (merge-base with origin/main is the 5.4.10 version bump), so pin
OHIF to that release. The local branch changes still reach the app via the
cs3d:link symlinks; these pins keep the lockfile/npm fallback aligned.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix seg OOM

* fix: file meta garbage element, bogus NumberOfFrames, unguarded source-map-loader

- dicomWriter: drop the naturalized meta.TransferSyntaxUID assignment that
  dcmjs wrote as a garbage (0000,0000) element into every saved file's meta
  group (download / clipboard / local wadouri blob / local store); keep the
  hex 00020010 assignment, which is required for string-form _meta fallbacks.
- registerNaturalizedDatasetForLocalWadouri: keep the computed frame count
  local so single-frame IODs (SR, RTSTRUCT) no longer gain a bogus
  NumberOfFrames element in their serialized form.
- rsbuild.config: resolve source-map-loader opportunistically (it is not a
  project dependency; the rule only serves the gitignored cs3d-link
  workflow) so fresh clones no longer crash at config load.
- Regression tests for both writer fixes (mutation-checked).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* PR review comment fixes

* Update versions

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: diattamo <mmddiatta@gmail.com>
Co-authored-by: ohif-bot <danny.ri.brown+ohif-bot@gmail.com>
Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com>
2026-07-09 20:54:23 -04:00
ohif-bot b996070583 chore(version): Update package versions to 3.13.0-beta.115 [skip ci] v3.13.0-beta.115 2026-07-08 18:15:05 +00:00
Bill Wallace 1b6fa2194e Revert "feat: Add extensibility for tmtv and segmentation modes"
This reverts commit 84c7d17b13.
2026-07-08 14:11:24 -04:00
Bill Wallace 84c7d17b13 feat: Add extensibility for tmtv and segmentation modes 2026-07-08 14:08:59 -04:00
ohif-bot 76687cf496 chore(version): Update package versions to 3.13.0-beta.114 [skip ci] v3.13.0-beta.114 2026-07-07 19:33:37 +00:00
Bill WallaceandClaude Opus 4.8 3dd5c70cb2 feat: Add customization URL parameter (#5992)
* Add customization URL parameter

* fix: Preserve should be customizeable

* Update customizations docs

* fix: Overlay items on patient name

* Add customization test

* Fix resolve to absolute path

* fix: Warn on no data in load

* Remove unused customization stuff

* fix: PR comments

* Update stored parameters to only use an array for mulitples

* Remove requires ohif.* special call out

* Remove strict mode

* PR comments

* Document segmentation examples

* Add three examples as requested

* PR comments

* lock

* Remove old customizatoin export

* fix: Ordering issues on customization loads

* fix: Use correct default for dev builds app config

* Fixes for conflicts

* chore: restore pnpm-lock.yaml to match master

The lockfile diff was incidental peer-descriptor churn and carried no
functional dependency change. It tripped the CircleCI security-audit gate
(which only runs when pnpm-lock.yaml is in the PR diff), surfacing a
pre-existing critical `decompress` transitive vuln that also exists on
master. Restoring master's lockfile removes the audit trigger.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(ci): restore json5 lockfile entry; ignore unfixable decompress GHSA

The previous commit restored pnpm-lock.yaml from master, which dropped the
json5@2.2.3 entry that platform/core legitimately depends on (JSONC parsing
for the customization feature). That broke `--frozen-lockfile` install
(ERR_PNPM_OUTDATED_LOCKFILE). This restores the correct lockfile.

Because the lockfile must change (json5), the CircleCI security-audit gate
runs and previously failed on a critical `decompress` <=4.2.1 zip-slip
advisory. This is a pre-existing transitive vuln (present on master too) with
no published patch — decompress's latest release is 4.2.1, so no version
bump/override can resolve it. It reaches the tree only via @itk-wasm/dam, a
build/data-asset extraction tool under @cornerstonejs/labelmap-interpolation.

Add GHSA-mp2f-45pm-3cg9 to the existing pnpm-workspace.yaml auditConfig
ignoreGhsas accepted-risk list, matching how the repo already exempts other
build-tooling advisories. `pnpm audit --audit-level high` now passes locally
(1 critical ignored, 0 high).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(e2e): fix visitStudy URL encoding that broke mpr2 study load

The visitStudy rewrite (added for the ?customization= option) built the URL
with new URLSearchParams({ StudyInstanceUIDs: studyInstanceUID }), which
percent-encodes the value. mpr2.spec.ts embeds an extra param in the UID
string ('<uid>&hangingprotocolid=mpr'), so the & and = were encoded and the
whole thing collapsed into one invalid StudyInstanceUIDs value -> the study
could not be found ('studies are not available'), the viewer never rendered,
and the side-panel-header-right click timed out.

Restore master's raw concatenation for StudyInstanceUIDs (so embedded params
survive as separate query params) while still appending the customization
option separately. Only mpr2 embeds & in the UID, matching the single failure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* PR comments

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:30:27 -04:00
ohif-bot 3d9a17bc0c chore(version): Update package versions to 3.13.0-beta.113 [skip ci] v3.13.0-beta.113 2026-07-07 18:01:19 +00:00
Joe Boccanfuso 333d73e334 fix(security): ignore decompress security vulnerability (#6125) 2026-07-07 13:58:15 -04:00
ohif-bot e381d22200 chore(version): Update package versions to 3.13.0-beta.112 [skip ci] v3.13.0-beta.112 2026-07-07 17:21:45 +00:00
Alireza f8546ce0e0 fix: recipe config cleanup, report-only CSP, logout redirect validation (#6124) 2026-07-07 13:18:46 -04:00
ohif-bot 973631b7e8 chore(version): Update package versions to 3.13.0-beta.111 [skip ci] v3.13.0-beta.111 2026-07-06 13:38:47 +00:00
Alireza e0f42d4f1d fix(dicom-pdf): enhance PDF loading with authentication support
- move authenticated rendered media loading into the datasource\n- route DICOM video display sets through Cornerstone video viewports\n- add a 3.12 to 3.13 migration note for the removed DICOM-video viewport namespace
2026-07-06 09:35:26 -04:00
ohif-bot 2800f82e3c chore(version): Update package versions to 3.13.0-beta.110 [skip ci] v3.13.0-beta.110 2026-07-02 13:00:56 +00:00
Joe Boccanfuso 38214f26de fix(wsi): mount WSI/SM viewports via setDisplaySets (#6107) 2026-07-02 08:57:13 -04:00
ohif-bot cb6cdafd24 chore(version): Update package versions to 3.13.0-beta.109 [skip ci] v3.13.0-beta.109 2026-06-30 13:28:46 +00:00
Alireza aa1ba771e0 fix(test): stabilize DICOM Tag Browser scrollbar screenshot (#6118) 2026-06-30 09:25:37 -04:00
ohif-bot d4153f12b2 chore(version): Update package versions to 3.13.0-beta.108 [skip ci] v3.13.0-beta.108 2026-06-29 16:58:29 +00:00
Alireza 71c50db9b5 fix(ci): deploy docs with Netlify CLI monorepo filter (#6115) 2026-06-29 12:55:01 -04:00
ohif-bot 4cdcd34a33 chore(version): Update package versions to 3.13.0-beta.107 [skip ci] v3.13.0-beta.107 2026-06-29 16:42:34 +00:00
Dan Rukas 0dfd321326 feat(ui-next): Adds appearance dialog with theme presets and custom theme support (#6041) 2026-06-29 12:38:46 -04:00
ohif-bot 0fcebe05c6 chore(version): Update package versions to 3.13.0-beta.106 [skip ci] v3.13.0-beta.106 2026-06-29 16:36:28 +00:00
Dan Rukas ac45a9497f docs(site): add ui-next component documentation and upgrade Docusaurus (#6102) 2026-06-29 12:33:16 -04:00
Dan Rukas 03b180f185 fix(colors): Replace hardcoded colors with theme tokens (#6040) 2026-06-29 12:32:40 -04:00
ohif-bot e1bc625ab8 chore(version): Update package versions to 3.13.0-beta.105 [skip ci] v3.13.0-beta.105 2026-06-26 12:23:19 +00:00
Joe Boccanfuso 661ecb5b2e fix(hotkeyBindings): consolidate Escape hotkey behavior for contour drawing tools (#6104)
* fix(hotkeyBindings): consolidate Escape hotkey behavior for contour drawing tools

* PR feedback.

* PR feedback.
2026-06-26 08:20:22 -04:00
ohif-bot b7c8b865dd chore(version): Update package versions to 3.13.0-beta.104 [skip ci] v3.13.0-beta.104 2026-06-24 19:21:51 +00:00
ee165b4d8e Fix: Segmentation Hide All fails when switching from 2D to 3D fourUp (#5995)
* Fix: Segmentation "Hide All" fails when switching from 2D to 3D four-up viewport

* Update based on the review comment on segmentation load in 3d fourup

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix: simplify the conditional logic

* fix: playwright test

* fix: playwright test

* fix: render timeout in test

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Belbin-GK <150322972+Belbin-GK@users.noreply.github.com>
Co-authored-by: Devu Jayalekshmi <devu.jayalekshmi@trenser.com>
Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>
2026-06-24 15:18:16 -04:00
ohif-bot 589d6a1506 chore(version): Update package versions to 3.13.0-beta.103 [skip ci] v3.13.0-beta.103 2026-06-24 15:08:56 +00:00
diattamo 95200ec6e8 test(segmentation): switch getSegmentCount to expect(rows).toHaveCount in panel specs (#6105) 2026-06-24 11:05:27 -04:00
ohif-bot 8f6947b75d chore(version): Update package versions to 3.13.0-beta.102 [skip ci] v3.13.0-beta.102 2026-06-24 14:39:34 +00:00
diattamo 79cb2356e1 chore(testing): Playwright tests for contour segmentation create, update, delete interactions (#6091) 2026-06-24 10:36:16 -04:00
ohif-bot 20632f97cf chore(version): Update package versions to 3.13.0-beta.101 [skip ci] v3.13.0-beta.101 2026-06-23 06:25:18 +00:00
Joe Boccanfuso c205965f87 chore(testing): Flock lock for playwright tests; Pin node version for OHIF; add more workers (#6099)
* update Cypress apt deps for Ubuntu Noble (drop libgconf-2-4, libasound2→libasound2t64)
2026-06-23 02:21:18 -04:00
ohif-bot 75488298cd chore(version): Update package versions to 3.13.0-beta.100 [skip ci] v3.13.0-beta.100 2026-06-23 05:56:18 +00:00
diattamo b24f039735 test(contour): Add the ContourSegmentToggleLock.spec.ts test file to test contour locking (#6072) 2026-06-23 01:52:35 -04:00
ohif-bot 1f6670c602 chore(version): Update package versions to 3.13.0-beta.99 [skip ci] v3.13.0-beta.99 2026-06-20 15:33:27 +00:00
diattamo b9cde4981a feat(testing): OHIF Test Agent Skills (#5993) 2026-06-20 11:30:27 -04:00