Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 02 Jan 08:12
· 61 commits to main since this release

Features

  • add api to get bluelight viewer config (7237059)
  • add backend testing with Vitest integration (93b0d63)
  • add custom modified @remix-run/multipart-parser (aec8f0f)
  • add middleware for cleaning up temporary files in WADO-RS (0ea9d8e)
  • add quality handling in JPEG conversion (35669e7)
  • api: add DICOM stats route (e4ed5c7)
  • audit: implement DICOM transfer auditing across WADO-RS handlers (79a8901)
  • auth: add authentication and permission verification to multiple routes (7feb724)
  • auth: implement verifyAuth middleware and guest user handling (37a4943)
  • auth: wrap /api/auth/session to get guest user (3612b58)
  • build: add pre build script (293de24)
  • build: add sea build workflow and example environment configuration (8b3ef76)
  • build: enhance sea build process with optional JRE inclusion (ed1e1ad)
  • build: use nodejs official sea build instead of nexe (71d0fc1)
  • database: add cascade option in relation (b1030f7)
  • database: add createdAt index to event log table (a9a270f)
  • database: add deletedAt to workspace table for soft deletion (5036b1b)
  • database: add dicomCodeSequence table (5393681)
  • database: add instance table (cee3979)
  • database: add InstanceSubscriber and SeriesSubscriber for automatic instance and series count updates (13ae1af)
  • database: add name column to share_link table (eeadf19)
  • database: add numberOfSeriesRelatedInstances column to SeriesEntity (4daa86d)
  • database: add patient table (b4e8e3c)
  • database: add person_name table (8597ebf)
  • database: add poolSize for sqlite/better-sqlite3 type (ba7eaf3)
  • database: add series table (700c054)
  • database: add SeriesRequestAttributesEntity and update SeriesEntity (db58dc5)
  • database: add study table (af2b100)
  • database: add workspaceId column to event log table (e00e234)
  • database: add default values to numberOfStudyRelatedColumns in StudyEntity (cf9ab61)
  • database: add tag and tag_assignment entities (f373faa)
  • database: append tag entities to data source definition (d46b065)
  • database: change targetId type to string in tag_assignment table (b2be871)
  • database: convert acquisitionDateTime to bigint (8cf44e5)
  • database: create DIMSE configuration and related entities (4069bb1)
  • database: enhance Instance, Series, and Study services to merge JSON data (8bba4a6)
  • database: enhance subscribers with listenTo method (19765de)
  • database: update modalitiesInStudy in study json after series insertion (4743e3d)
  • database: update columns to patient table (b9d8147)
  • database: update unique index for tag_assignment table (e7d1b44)
  • dicom-audit: implement DICOM audit logging (c3f146e)
  • dicom-card: add DicomCardTagBadge component for displaying tags (d1839b3)
  • dicom-context-menus: add sopInstanceUid prop to context menu and data table (ae7bcc5)
  • dicom-context-menus: integrate tag sub menu in DICOM context menus (28f6089)
  • dicom-data-table: add context menus to DICOM studies, series, and instances data tables (660fd19)
  • dicom-delete: add delete routes for DICOM instances, series, and studies (a7a0b00)
  • dicom-delete: implement delete and undelete functionality for instances, series, and studies (e6dd4b4)
  • dicom-instance-context-menu: add DICOM, JPG, and PNG download options (3768d72)
  • dicom-instances: add DICOM series management components (9491eb5)
  • dicom-instances: add download in selection toolbar for selected DICOM series (9942460)
  • dicom-instances: add download with JPG and PNG options for instance level (4e32111)
  • dicom-instances: extract loading and error states to components (01c9c0b)
  • dicom-instances: implement instance level page (cc6ee4c)
  • dicom-recycle: add routes for recycling DICOM instances, series, and studies (348b411)
  • dicom-search: add tag filtering capability to DICOM search conditions (19ccadd)
  • dicom-search: enhance search functionality with URL synchronization (5dddc19)
  • dicom-search: implement search for DICOM studies (423201b)
  • dicom-search: integrate search for DICOM series and instances (b2f4ce0)
  • dicom-study-context-menu: add close context menu functionality (157b82a)
  • dicom-tag-management: integrate tag dropdown sub in DICOM tables (ca30982)
  • dicom: add cookie support to queries (800da3b)
  • dicom: add DICOM cleanup scheduler and shutdown handling (9e8126b)
  • dicom: add restore routes for DICOM instances, series, and studies (ae78566)
  • dicom: clear selection on component unmount (864f767)
  • dicom: compute number of related columns via query (17e371f)
  • dicom: enhance DICOM cleanup process with recycling logic (afdffc1)
  • dicom: enhance query functionality with cookie support (67d2931)
  • dicom: enhance thumbnail query logic (53fdab6)
  • dicom: implement clear selection on blank click (6947b11)
  • dicom: implement cursor-based pagination for series and study instanceS retrieval (a322bb1)
  • dicom: implement list layout for DICOM instances display (ebca4ed)
  • dicom: implement reactivateInstancesOnUpload method (1e536d0)
  • dicom: implement recycling confirmation dialog for instances, series, and studies (9aa3e42)
  • dicom: integrate BlueLight Viewer into DICOM instance context menu and data table (20f0a00)
  • dicom: integrate delete status in DICOM queries and components (9b8f580)
  • dicom: only restore instance when upload same instance (bd37515)
  • dicom: set delete status to ACTIVE when uploading same instance (f2c3a7f)
  • dimse: add c-echo dimse service (88aefab)
  • dimse: implement C-FIND SCP service (441de1b)
  • dimse: implement C-MOVE SCP service (e441c83)
  • dimse: implement C-STORE SCP service (858b8ad)
  • dimse: implement DIMSE configuration routes and services (0db4756)
  • dimse: reload device application entities when dimse config changed (8be911e)
  • docker: add Dockerfile and compose files (d93ebde)
  • download-manager: add getAllTasksCount method and update close logic (859c737)
  • download: implement series download functionality (be7bd3a)
  • env: add DICOM_STORAGE_FILEPATH for local storage usage (bda925b)
  • event-logs: add event logs UI components and functionality (6ff388a)
  • event-logs: implement event logs API (2b5e3c9)
  • extract common logic of convert method to base converter (6c4a57b)
  • global-search: extend search types and enhance state management (f6ee10d)
  • global-search: implement global search across DICOM components (372ca54)
  • handle frameNumber in DICOM image converter (46bdb9c)
  • handle ICC profiles for DICOM image conversion (d75c7eb)
  • i18n: add i18n support for share-with-me page (5ba1747)
  • i18n: add i18n support for share page (b62262d)
  • i18n: add i18n support for tag creation dialogs (8550a54)
  • i18n: add i18n surrpot for pagination control (f2fef6d)
  • i18n: add translation to date-range-picker (a8cfe68)
  • i18n: apply i18n to my share links related components (6db4225)
  • i18n: apply i18n to forbidden component (f203142)
  • i18n: apply i18n to share management dialog related components (3fb801c)
  • i18n: integrate internationalization across UI components (de81c79)
  • i18n: integrate translation for DICOM recycle messages (b9af695)
  • image-converter: support displayp3 value for iccprofile param (e837c06)
  • image-converter: support yes value for ICC profile param (1d32a47)
  • implement base converter for DICOM image conversion (bd30eca)
  • implement retrieve series instances API (1ac970a)
  • implement retrieve study instances API (e8e1955)
  • implement WADO-URI API for retrieving DICOM instance (5208d20)
  • instrumentation: enhance shutdown handling and logging (ad4816d)
  • integrate loading component and top loading bar (29f381c)
  • layout: replace RootLayout to LanguageLayout (564e757)
  • logging: implement database logging for events (2e82f0f)
  • logging: include workspaceId in event logging across multiple routes (cbc96bd)
  • middleware: enhance authentication flow for signin route (282689d)
  • middleware: implement authentication middleware (745de39)
  • myShares: implement My Shares page with share link management and pagination (988c90c)
  • nav: add signout for nav user (636167a)
  • next.config: add CORS headers for API routes in dev env (bf526f3)
  • qido-rs: add searchInstances route (361dfd8)
  • qido-rs: add searchSeries route (bc644a6)
  • qido-rs: add searchStudySeries route and schema (5a3d5f9)
  • qido-rs: add searchStudySeriesInstances route and related schema (76b91a8)
  • qido-rs: add delete status handling with query builders (2eade58)
  • qido-rs: add DICOM query audit logging (eac9073)
  • qido-rs: add request ID and event log to DICOM query routes (cdda578)
  • qido-rs: add search studies route (62740b5)
  • qido-rs: add tag filtering to DICOM search queries (27e5a90)
  • qido-rs: implement DateTimeQueryStrategy for handling datetime queries (2b1e996)
  • qido-rs: implement DICOM search query builder and strategies (78fdfad)
  • qido-rs: update response with study and series related instance counts (59193b1)
  • query: introduce number query schema and strategy (b12b6a8)
  • schemas: add date and time range validation schemas for DICOM queries (72d8f4a)
  • server: Implement viewport handling in JPEG (e66694c)
  • server: add DICOM image conversion in WADO-RS instance retrieval (996d745)
  • server: add global logger (48b1f03)
  • server: add verify workspace exists middleware (340caf5)
  • server: add WADO-RS instance retrieval basic API (1fadf24)
  • server: implement DICOM image conversion utilities (01ea8e9)
  • server: implement s3 storage provider (75ad484)
  • server: implement storing files and data into db in STOW-RS (61375b0)
  • share-link: add delete and public share link routes (26bdf28)
  • share-link: implement share link with permissions (83dd91b)
  • share-link: implement share link management routes (2a49185)
  • share-links: add route to get count of target share links (5384a72)
  • share-links: add route to retrieve target share links for workspaces (2b3fe90)
  • share-links: add share link access middleware for target verification (ec8be8c)
  • share-links: enhance share link context and dropdown menus with permission checks (1f83bb4)
  • share-links: implement Share With Me for displaying received share links (f045b56)
  • share-links: include user-specific permissions in public share link route (80b768e)
  • share-link: update permissions and access tracking in updateShareLink (025bd4f)
  • share: add routes for retrieving thumbnails of shared instances, series, and studies (cb4c89e)
  • share: add tag display to shared DICOM cards (38884b7)
  • share: add WADO-RS and WADO-URI routes for retrieving shared DICOM (84bba56)
  • share: enhance bluelight viewer to open shared DICOM resources (439b987)
  • share: implement share link routes and middleware (ada1dc5)
  • share: implement share management system for ui (7e28b9b)
  • share: implement shared content viewer for DICOM resources (f0eb1ac)
  • share: implement tag management APIs for shared resources (bd42630)
  • share: implement tag management UI for shared DICOM resources (fb9dc63)
  • shareLink: add optional name field to share link creation and update schemas (ee820ab)
  • shareLink: implement pagination for user share links retrieval (b1998e0)
  • share: support name input field in CreateShareTab and ManageShareTab components (53af7ca)
  • share: support share link description updating (136440c)
  • stow-rs: add request id and event log (c915797)
  • tag-context-menu: add loading state for improved user experience (38f2ec1)
  • tag: add delete tag (8b35181)
  • tags: enhance tag assignment logic to check for existing assignments (4ec171a)
  • tags: implement tag management routes (fcd5313)
  • tag: sort tag by name in tag sub menu (62b8cfb)
  • tags: support name query to getAllTags route (67f107c)
  • ui-dashboard: add no modalities display (7eca810)
  • ui-dicom-recycle: add type prop for context menus in DICOM components (d358bee)
  • ui-dicom-recycle: implement DICOM recycle for studies, series, and instances (e84ecf3)
  • ui-dicom: add tags column to DICOM data tables (51e3256)
  • ui-dicom: clear params upon backing to parent level (d7802bf)
  • ui-dicom: integrate BlueLight Viewer functionality (b8ed467)
  • ui-tags: add CreateTagDialog and TagContextMenuSub components for tag management (2299b98)
  • ui-tags: implement TagDropdownSub component for tag management (5a62f08)
  • ui-workspaces: implement workspace management (fbeea94)
  • ui/dicom: add "Copy UID" to dicom item context menu (ab8b585)
  • ui/dicom: apply i18n to series content (a64fe38)
  • ui/dimse: add DIMSE settings UI (6e76e08)
  • ui: add context menu for DICOM study card (9cb7677)
  • ui: add custom 404 not found page (002c57a)
  • ui: add dashboard & sidebar (ce68ab0)
  • ui: add share management functionality to DICOM table actions (1467537)
  • ui: enhance pages and actions with permission checks (28604c8)
  • ui: implement LoadingDataTable component (436d8dd)
  • ui: implement DICOM instances management page (ff83c25)
  • ui: restructure project dirs for more flexible layout usage (fc54c77)
  • ui: support recycling DICOM in instances, series, and studies pages (5ad86c9)
  • update favicon (132d5a3)
  • update instance's tag to store for search response payload (ebe8914)
  • upload: implement DICOM file upload page (d2a2f47)
  • url-search-params: improve URL synchronization and state management (53c3463)
  • user: implement user search route and service (5a055ec)
  • wado-rs: add retrieveFramePixelData route (659a3e9)
  • wado-rs: add retrieveInstanceMetadata API (624148d)
  • wado-rs: add retrieveRenderedInstances API (1492d11)
  • wado-rs: add retrieveRenderedSeries API (36d05c3)
  • wado-rs: add retrieveSeriesMetadata API (55492b7)
  • wado-rs: add retrieveStudyMetadata API (6d44199)
  • wado-rs: add request id and event log (574241b)
  • wado-rs: add support for retrieving rendered frames (641a8f4)
  • wado-rs: add thumbnail transaction APIs (df6d3aa)
  • wado-rs: enhance frame number handling and validation (c093649)
  • wado-rs: support uncompressed frame output (0c3d6f7)
  • WADO-URI: add iccprofile param (09cfe9d)
  • wado-uri: enhance windowing params validation (b5f9038)
  • workspace: add endpoint to retrieve default workspace (95527a2)
  • workspace: add leave workspace functionality (e505852)
  • workspace: add workspace permission verification middleware and service (b42b374)
  • workspace: create new default workspace when all workspaces deleted (2aaaedc)
  • workspaces: add guest access handling for default workspace when auth is disabled (3b60e84)
  • workspaces: add routes for getting workspace by id (d53c0af)
  • workspaces: add workspace member management routes (69e4d77)
  • workspaces: update workspace retrieval to include user member ship (f36f832)
  • workspace: validate UUIDs for workspace and user IDs in service methods (41342f0)

Bug Fixes

  • auth: implement custom TypeORM adapter for authentication (763161d)
  • auth: update column types in entities (c8b8a09)
  • build: add pre build script into package.json (66367f8)
  • build: update to include imagemagick wasm in output folder (1e2b4cb)
  • database: acquisitionDateTime should be datetime (4776363)
  • database: getDateTimeType return datetime when type being sqlite (e11239c)
  • database: add default for accessCount in shareLink entity (a96851a)
  • database: fix import path for const (4bcbd45)
  • database: handle memory sqlite in config parser (0232c72)
  • database: make accessionNumber nullable in StudyEntity (a46187c)
  • database: missing DicomCodeSequenceEntity in data source (684bb96)
  • database: should append unique flag in uq index of migrations (471a2c8)
  • database: should be ManyToOne for referringPhysicianName field (13fa209)
  • database: should set to optional for nullable props (47f056c)
  • database: update create and update column type to timestamp (c32d98e)
  • database: update DT value transformation logic (b73fc67)
  • database: update entities definitions in AppDataSource (1399acc)
  • database: update entity relationships in ShareLink entities (2bc173d)
  • database: update import path without alias (a5590ba)
  • database: update import path without alias & update typo field (fbd98fc)
  • database: update imports and adjust date column types in tag entities (7959217)
  • dicom-delete: missing update series and study after deletion (ce440c9)
  • dicom-delete: update delete status from RECYCLED to DELETED for cleanupEmptySeries (385bca0)
  • dicom-instances: missing SOPClassUID and SOPInstanceUID columns for instance data table (2f2c234)
  • dicom-recycle: invalidate queries on instance restore and delete success (3c7d997)
  • dicom-studies: update effect dependencies for blue light viewer closure (48d9559)
  • dicom-study-card: refine button styling and add left-click restriction (a2fd70b)
  • dicom-table: wrap thumbnail image in a flex container for better alignment (ef68a29)
  • dicom-ui: missing invalidate query after recycling in series context menu (20b5f3b)
  • dicom: handle empty series and study instances in query builders (3094bc1)
  • dicomSearch: make deleteStatus parameter optional in query builder (957f458)
  • dicom: update delete status handling in DICOM queries and components (e8bf60b)
  • env: use base optional schema to passthrough authentication schema to env (71f717d)
  • fix incorrect magick format of image.write (a0358cc)
  • fix linter for bluelight-viewer-dialog (8085e32)
  • fix retrieval url in stow-rs response message (fe4a285)
  • i18n: correct translation path for clearAll in search modal (b507b0e)
  • lint (01ef47d)
  • log: update log to print error stack (714c76b)
  • middleware: prevent i18n redirect for /html path (79f7003)
  • missing cookie declaration (68dfe77)
  • nav-main: add full width class to navigation links for better layout (039d179)
  • nav: missing cookie for fetching session in app-sidebar (d69439b)
  • patient: update subquery syntax in EXISTS clause (3519592)
  • pre-build: correct example env path (e451a70)
  • qido-rs: use valid query for right type inference (0f5edab)
  • react-query-study: missing apply queryParams to hono api calling (8c1a0db)
  • react-query: update query key to include params to cache data properly (f07777f)
  • remove duplicate content-length info in multipart (77cfbee)
  • resolve read-only filesystem error in nexe packaged env (24c22f7)
  • schema: add SeriesDescription field and correct ScheduledProcedureStepID key in searchStudySeriesSchema (bc6f23d)
  • server: correct response structure of STOW-RS (88adde8)
  • share-link-card: resolve nested button hydration error and a11y violation (3720800)
  • share-links: missing recipient in share link creation (ce20bf7)
  • share-links: resolve recipient is not update error (7dedae5)
  • share-links: resolve the error where users not included in recipient (0b9a073)
  • share-links: update instance query to use right query builder (03deb8d)
  • share-wado-rs: remove unused workspaceId param in validation schema (f4b7381)
  • share: content not displaying after enter correct password (dc61286)
  • share: correct schema and validation order in assignShareTag route (6988b9e)
  • share: fix query key order to invalidate share links properly (f4da889)
  • tags: update targetId type in assignTagSchema to string (db5a0e3)
  • tests: update instance variable names in TestDatabaseManager for consistency (1609457)
  • ui-share: update public permissions handling in ManageShareTab (1d4a86f)
  • ui/invite-member: should invalidate queries after inviting (1a2f479)
  • ui: delete not invoke in selection-control-bar (7e38a49)
  • ui: use static import for images to work in production (6965701)
  • upload: handle directory uploads or multiple files when dropping (c5af6bd)
  • upload: let upload queue process more than one job (e728f61)
  • upload: reset file input value after file selection (9d4bf09)
  • upload: should invalidate studies, series, instances queries after uploading (0bce67a)
  • upload: update translation keys to include count for valid and invalid uploads (d1b2228)
  • validate frame number in DICOM image conversion (250844c)
  • wadoRs: correct validation logic for viewport parameters (192810f)
  • workspace: correct spelling of membership in workspace store (0844d5c)
  • workspace: update permission requirement for workspace deletion (c7dd2dd)
  • workspace: update permission requirement for workspace updating (ba1df30)

Others

  • add build:web and copy-file:web scripts in package.json (915007b)
  • add date-fns-tz package for timezone (ea047f3)
  • add nextjs-toploader package (f3c3213)
  • add bluelight submodule (488c80b)
  • add memory mcp rule for cursor (383357f)
  • bump @biomejs/biome to 2.3.10 (6078ee4)
  • bump class-validator to 0.14.3 (93823ae)
  • bump hono to 4.10.7 (aad4c00)
  • bump next to 15.5.9 (1abb2ff)
  • bump nextjs to 15.5.7 (f07622c)
  • bump raccoon-dcm4che-bridge to 0.7.1 (6863644)
  • bump raccoon-dcm4che-bridge to 0.7.2 (6cbfde0)
  • bump react-dom to 19.1.4 (4dd737c)
  • bump react to 19.1.4 (075de9f)
  • bump vitest to 4.0.14 (285640b)
  • disable radix auto import (c73baf3)
  • exclude all bluelight in biome linter (5759606)
  • fix biome config for ignoring bluelight (8902112)
  • init (bd06963)
  • remove desktop app (060f8d5)
  • run biome format (02df14c)
  • run formatting (e1534d5)
  • sort import (c0c36eb)
  • update bluelight submodule (4e70eeb)
  • update bluelight submodule (051ef11)
  • update bluelight viewer submodule (04e8801)
  • update pnpm workspace configuration (8521e4f)
  • update type of DicomElement (d851982)

Refactor

  • change type to timestamp for now column (c0a0bdd)
  • change upload concurrent to one to prevent database conflict (e87b7a8)
  • convert: singleton magick wasm path (e0cb34e)
  • database: extract database initialization (b780285)
  • default frameNumber to 1 for WADO-RS/URI (83a6571)
  • default store ISO_IR 192 to characterSet (5b93ebe)
  • dicom-delete: generalize the update delete status and optimize queries (88cb3c5)
  • dicom-file-saver: move hash computation out of transaction (e20316b)
  • dicom-instances: centralize download handling with custom hook (1f7aec1)
  • dicom-instances: extract pagination control to component (4ea1479)
  • dicom-instances: extract selection bar to component (98e2b39)
  • dicom-instances: implement pagination logic with hook (9f18c4e)
  • dicom-instances: streamline instance data table (6af9b9d)
  • dicom-recycle: extract instance recycle actions into a custom hook (d8e39fd)
  • dicom-recycle: extract series recycle actions into a custom hook (8b8a01a)
  • dicom-recycle: extract study recycle actions into a custom hook (2e41f12)
  • dicom-recycle: streamline data tables for studies, series, and instances (a6be20a)
  • dicom-series: streamline series data table (ad01c09)
  • dicom-studies: streamline DICOM studies data table and thumbnail handling (4dfab1f)
  • dicom: centralize selection handling in DicomSeriesCard and DicomStudyCard (0283b22)
  • dicom: enhance DICOM stats with delete status filtering (66406ac)
  • dicom: extract tag display to DicomCardHeaderTagsDisplay component (7b8fca0)
  • dicom: improve WASM path resolution (2c7fd9d)
  • dicom: rename contentDateTime to contentTime across database and related files (d452bbc)
  • dicom: simplify thumbnail handling in DicomSeriesCard and DicomStudyCard (ce24096)
  • dimse: extract getContextKey to utils fns (4e228bb)
  • dimse: replace getWorkspaceId with getWorkspaceIdFromAssociation utility function (4a9dc1b)
  • download: extract download common logic to downloadDicomResource (63d2ff9)
  • drop pglite support (066c059)
  • enhance STOW-RS with error handling and logging (e648fe0)
  • extract multipart decode method (90670aa)
  • image-converter: read dataset before pixel data (3ea2b32)
  • move instrumentation to src folder (783d78e)
  • move cleanup to background to avoid block response (125f48f)
  • move dimse module from packages to apps/web/src/server (175a34e)
  • move wado rs schema into schemas folder (62f2828)
  • qido-rs: refactor searchStudySeriesSchema to use nested tag keys for better type infer (070577f)
  • query: refactor DICOM search query builders for improved flexibility (45fae00)
  • recycle: extract create tag dialog state to zustand store (9105fcb)
  • recycle: extract recycle confirm dialog state to zustand store (96e7c0d)
  • recycle: extract share create tag dialog state to zustand store (cc67fe1)
  • rely on stream event to delete temp file (2d313cc)
  • remove IS_LOCAL_APP and rely on migrations for SQLite (1971fef)
  • rename dicom-series.card to dicom-series-card (96ed437)
  • rename ENABLE_AUTH to NEXT_PUBLIC_ENABLE_AUTH to use in both of client and server side (e5f3d72)
  • replace dicom-instances route with dicom-studies for clarity (21ec086)
  • run next-auth middleware only when auth mode on (902b2aa)
  • server: initialize database in instrumentation (1de4500)
  • server: only select id as existing flag to improve sql query (59fa90c)
  • share: extract share management dialog state to zustand store (41eb35f)
  • share: improve password authentication with cookie-based verification (be30a4f)
  • shareLink: update query logic for user share links by removing recipient (5245bc0)
  • share: skip retry for password protected content (c195e96)
  • share: streamline ManageShareTab component and integrate ShareLinkEditForm (ce22ef6)
  • share: unify share link data handling across components (97839fe)
  • standardize date and timestamp types across entities (64af752)
  • thumbnail: extract core logic to handlers for reusable (7b01f32)
  • ui: enhance selection bar with icon button group (3bdcb85)
  • ui: extract download options to component for reusable (b4b0264)
  • ui: implement pagination for share link list in ManageShareTab component (ea8f60d)
  • ui: improve DICOM component state management and selection handling (8d74f11)
  • upload: change toast to bottom-center for better UX (d40426d)
  • wado-rs: extract core logic to handler for reusable (6eab5bd)
  • wado-rs: implement cursor-based pagination for study and series instances retrieval (8d11c65)
  • wado-uri: extract core logic to handler for reusable (69d27f1)