Changes

1.9.0 (2026-8-10)

  • Save filters in review page (#666)

  • Save sort column name and direction to template (#679)

  • Added buttons to reorder channels in review tab (#680)

  • Fixed slice column sorting and moved to fetchSliceData wrapper (#681)

  • Display population of hovered review thumbnail (#682)

  • Remove manual population ids when saving template on review page (#683)

  • Removed all but paging keyboard shortcuts from preview tab (#688)

  • Rename remove button to Remove Selected (#689)

  • Remove number index for population bins with no KB shortcut (#690)

  • Prevent population sorting on review page for consistent kb shortcuts (#692)

  • Improve thumbnail spacing for outline and add dash indicator (#693)

  • Added export script component and added to review page (#703)

  • Save channel order (#704)

  • Manual Population Type (#705)

  • Fixed issue where object value is next to thumbnail instead of under (#712)

  • Updated custom versioning buildtools (#726)

  • Converted loadedPopulation from store back to signal (#727)

  • Adding initial automatic testing (#728)

  • Handle long population set names (#730)

  • Filter manual populations on frontend instead of using table query (#734)

  • Add Main as default route if no route config is provided (#741)

  • Update Python versions and links (#743)

  • Improve selection shortcuts (#744)

  • Update pvjs to 4.1.0 and accept updates for minor and patch versions (#745)

  • Fix review images not updating padding (#746)

  • Changed tests name to Pageant Test (#747)

  • When channel activated for merge view, activate for greyscale also (#748)

  • Filter population sets and templates in manager that do not match page (#749)

  • Move population utilities (#750)

  • Created context for toast (#754)

  • Update changelog for 1.9.0 (#765)

  • Version maintenance (#771)

  • Separate error messages for permissions and no existing pop sets (#784)

  • Fixed chart settings dropdown from clipping offscreen on medium screen sizes (#785)

1.8.0 (2026-4-20)

  • Keyboard shortcuts (#625)

  • Added select and check to sort preview objects by a column (#633)

  • Remove population can’t load indicator in review page (#635)

  • Fix clear queries update not triggering before page refresh (#637)

  • Save rendering settings for reviewpage into template (#641)

  • Added population to load and save ids in review list (#642)

  • Load population set when needed in population set manager (#644)

  • Add background to sticky row to hide channel controls of other rows (#653)

  • Open template/popset modal on review page start (#654)

  • Fix population bins not deleting (#672)

  • Use copy instead of reference to load population to prevent unintended updates (#673)

  • Return white as default nonmatch color in main page (#674)

  • Fix duplicate label image race condition (#675)

  • Display error message from gs-population-utils with toast (#676)

  • Bump gs-population-utils dependency (#677)

  • Build maintenance (#678)

  • Temporarily pin build to 1.4.2 to fix build failures until proper fix (#700)

  • Fix population queries not loading on clean state (#701)

  • Fix main images not updating for rapid channel control updates (#702)

1.7.0 (2026-3-16)

  • Liquid biopsy UI (#388)

  • Update django dependency (#505)

  • Toggle button to disable x-axis when editing a loaded population in threshold (#506)

  • Added open with pathviewer button (#507)

  • Moved create template button to population set modal (#508)

  • Chart column dropdown empty pick now stays at top and isn’t affected by sort or filter (#509)

  • Update plotly to version 3 and changed pointcloud to scattergl (#512)

  • Set column dropdowns to alpha sort by default (#513)

  • Performance improvements (#516)

  • Added min/max input for chart axes (#517)

  • Sort populations by type and name (#521)

  • Use alpha from configured shape color (#524)

  • Omero config for min/max values (#527)

  • Hide population sets in threshold page (#531)

  • Moved channel slider to thumbnail header in threshold page (#532)

  • Refactor chart type (#533)

  • Change font style of form label text (#534)

  • Remove calculate_hits call when saving/deleting populations (#536)

  • Remove filtering out spatial populations from secondary modal (#537)

  • Add dev deploy workflow file (#538)

  • Update install docs (#541)

  • Fix x-axis default range not working (#545)

  • Stop at first population set in Threshold when loading firstPrimaryPopulation (#546)

  • Stop threshold thumbnail loading in pages other than threshold (#558)

  • Update exportScriptId when imageMetada changes (#561)

  • Add script plugin setting (#565)

  • Use special chart margins to fix query chip bar resizing (#575)

  • Add connection dialog (#576)

  • Clean templates (#579)

  • Added activate channel swatch, seperating it from greyscale checkbox (#581)

  • Fix greyscale images not loading (#582)

  • Population bin loading and saving (#584)

  • Allow deletion of spatial populations (#585)

  • Fixed typo of Excluded in population manager (#587)

  • Fix color picker closing to early (#598)

  • Viewed population (#599)

  • Fix weird review rows (#600)

  • Add filtering functionality to review page (#601)

  • Add export all populations button in pop manager (#603)

  • Aligned channel controls (#604)

  • Fix fatal bug (#606)

  • Added more specific error message for missing column data (#608)

  • Converted parent population select to searchable list (#611)

  • Fixed channel slider in threshold not growing to container size (#620)

  • Wrap roi list in population manager (#622)

  • Added button to remove selected items from bins (#623)

  • Only apply primary populations to review bins (#626)

  • Fixed bug where undefined parentPopulation reads name property (#627)

  • Add a new configurable color for outside threshold objects (#640)

  • Added changelog for 1.7.0 (#656)

1.6.0 (2025-10-23)

Feature:

  • GEOMETRYCOLLECTION Support for Thumbnail Outlines (#264)

    • Replace shape parser with pathviewerjs wktParser for multi geometry support

  • Spatial Populations (#309, #322)

    • Spatial populations can now be generated and used as parent populations.

  • Population Updates

    • Button to run CSV export script if script is available (#325)

    • Added indication and handling for spatial groups with invalid rois (#347)

    • Moved parent population select (#360)

    • Improved Population Manager buttons (#352, #425)

      • Updated button functionality based on population type.

      • Population buttons are disabled based on user permissions.

    • Auto Load (#361, #373, #379, #449)

      • In case of one table auto select it on load.

      • In case one population set auto select it and load first primary population in set.

      • Load new created population.

    • Bugfixes/Maintenance:

      • Set None to be active when population set index is -1 (#334)

      • Set long population name to scrollable (#424)

      • Remove display of counts for populations (#429)

      • Changed parent population default to All Objects instead of None (#436)

      • Remove y scroll arrows from population manager names (#452)

  • New Pageant Configurations (#317, #351)

    • Configurable color for thumbnail shape outline.

    • Configurable color for thumbnail highlight to indicate within threshold.

  • Templates and Population Sets (#319, #391)

    • Ability to save current population set as a template.

    • Saved templates can be applied to current table.

    • Templates and Population Sets have been abstracted to their own modal.

  • Secondary Population Editor (#376, #381, #383)

    • New UI for creating or editing boolean combinations of populations.

  • Threshold Plot Updates

    • Upper and lower bounds now move together as a window (#335)

    • De-emphasize scatter plot data outside of y bound (#336)

    • Moved chart column dropdowns to chart axis titles (#368)

    • Pvjs overlay color matches threshold values (#369)

    • Plot type now is toggled between histogram and scatter based on if y-axis data is selected (#382)

    • QIA chart updates (#490) - Updated chart toolbar buttons. - Chart column dropdowns grows to width or height of container.

    • Bugfixes/Maintenance:

      • Combined upper and lower bounds in threshold to one object and thumbnail gallery (#346)

      • Fix active class of bounds button and updated tooltip (#426)

      • Add noValidate around chart input to remove warning (#427)

      • Fixed auto scale to work on log ranges (#431)

      • Only update bound values when x or y data changes (#438)

      • Fix sticky y axis when changing populations (#460)

      • Parse view queries when loading population (#485)

      • Change first y chart column text to Count in dropdown (#486)

      • Always show chart modebar and remove box select from scatter (#487)

  • Many New Improvements to Pageant Loading

    • Fetch table column via PathViewerJS to use Parquet if available (#358)

    • Multi stage thumbnail loading (#363)

    • gs-population-utils update (#385)

    • Improve Pageant initial loading speed (#395)

    • New region thumbnails (#398)

    • Use bounding box index to generate thumbnails and abort overlapping updates (#468)

    • Preload next two pages of threshold thumbnails (#492)

Bugfixes/Maintenance:

  • Fixed function that detects duplicate filters (#308)

  • Unrequire roi column when generating label image (#310)

  • Fixed thumbnails when thresholding on filtered data, and added special types for RowIndex and ObjectId (#318)

  • Force sorted rows on table slice (#321)

  • Maximum dropdown height in Population Manager (#327)

  • Redirect if route is disabled (#332)

  • Fixed populations not deleting correctly (#349)

  • Fixed deleting population set error (#350)

  • Added text input to slider component (#353)

  • Updated name from y filter to horizontal bound (#362)

  • Fixed bug when loading population not setting template values (#364)

  • Fixed url clearing parameters when navigating (#365)

  • Added threshold thumbnail paging and matches back (#370)

  • Add try/catch around pvjs initialization (#375)

  • Reduced z-index value to stop showing over dropdowns (#384)

  • Explicitly cast all non-string column values to numbers (#387)

  • Set filters to undefined instead of empty array for secondary pop (#392)

  • Updated pvjs to latest 294 (#393)

  • Python package version handling and wheel building (#399)

  • Always checkout repository with fetch-depth 0 and github.ref (#400)

  • Added appending gs-population-utils and add –set to not add duplicates (#401)

  • Fixed objects not selecting due to index mismatch (#403)

  • Don’t set pvjs to loading if no tables (#420)

  • Reduced label image opacity (#439)

  • Update PathViewerJS (#440)

  • Convert canExportCsv from memo to effect since memo always returns promise object (#443)

  • Remove fetch tag command (#446)

  • Fix threshold label image bug (#457)

  • Icon to text buttons (#462)

  • Set tables to loading when updating table columns (#488)

  • Updated threshold pagination buttons for qia (#489)

  • Update change log for 1.6.0 (#502)

  • Update prs_for_changelog.py script (#504)

1.5.0 (2025-03-21)

Feature:

  • Population Manager (#242, #266)

    • Population Manager UI: An interface to create, edit, delete, and load populations/population sets

      • Options to create, copy, edit name, and delete population sets

      • Now can create more robust populations (boolean populations) that can reference and nest other populations with boolean operators

      • New interface to construct boolean populations (Must have primary populations to reference)

      • Options to create, edit, delete, and load boolean populations

      • Can only edit names of primary populations in population manager

      • List of boolean and primary populations and all of their queries

    • Population Toolbar

      • Displays current loaded population and population set

      • Arrow buttons to easily navigate between population within set and load them in Pageant

    • Saving Worklow

      • Saving modal auto populates loaded population

      • Population quicksave button available when in loaded population context

      • Saving population also Pageant state to template

    • Loading Workflow

      • Removed load modal moved loading functionality to population manager

      • Loading a population will update Pageant with saved population template values and stay in context of loaded population

      • Population toolbar arrows to easily load next and prev population

    • Other PR changes:

      • Filters now in global toolbar

      • Moved chart settings to options dropdown

      • Updated flexbox styling throughout page

  • Threshold Page (#219, #237, #243)

    • New navigation menu option for added threshold page

    • Plot Upgrades:

      • Plot now creates scatter plots and histograms

      • Plot gets full column data instead of using meta data

      • Draggable bound lines to examine lower and upper bounded objects

      • Plot axes can now be toggled between linear and log

    • Threshold Gallery:

      • Thumbnails display objects within bound lines in plot

      • Thumbnails are now cached and have other performance improvements

      • Displayed results metadata, includeing object values and total matches

      • Can sort and page through threshold thumbnails

    • Channel Controls

      • Can select channel for thumbnails and image view

      • Added slider to update channel min/max

    • Other PR changes:

      • Auto-open and focus search bar in channel selection

      • Configurable route options with Omero config

      • Add labels to toolbar inputs

      • OMERO.web server prefix support

      • Updated PathViewerJS version

      • Fix race conditions on load

  • Fixed click in object viewer not updating selected object (#255)

  • Added Pageant route configuration to docs (#256)

Bugfixes/Maintenance:

  • Added omero-web and Django dependencies (#244)

  • Remove unneeded web server configuration from documentation (#245)

  • Added bootstrap icons (#262)

  • Added changelog for 1.4.0 and 1.5.0 (#261)

  • Fix plot toolbar (#276)

  • Fixed object scrolling when selecting object off page (#277)

  • Fixed plot queries to not affect plot data (#278)

  • Fixed object coloring to get all objects on the page (#279)

  • Fixed removing custom queries in filter dropdown (#280)

  • Fixed histogram not working with log x-axis (#281)

  • Improved delete population (#287)

  • Fixed threshold input step flickering between precisions (#288)

  • Added primary colored border to check inputs to increase visibility (#291)

  • Added support for string filters in populations (#295)

  • Removed trigger deploy to us-demo since it was discontinued (#299)

  • Fixed populations and plot updating on query change and routing (#300)

  • Fixed slider filter button not being contained by form (#303)

  • Always add parentheses around each condition (#304)

1.4.0 (2024-11-11)

Feature:

  • Converted table fetching to new tables api (#209)

Bugfixes/Maintenance:

  • Added Github issues template (#206)

  • Updated Github actions (#211, #213)

  • Pinned Sphinx version (#214)

  • Updated PathViewerJS (#216)

  • Fixed CSRF token passing (#217, #218)

1.3.0 (2024-09-06)

Features:

  • Initial support for plate data (#163)

  • Created proper routing and navigation (#165, #172, #199)

    • Added navigation bar button to switch between classification and regular mode

  • Ability save/load label image groups as filters (#168)

    • Can save groups to existing or newly created label group displays

  • Filters now have include and exclude object IDs UI (#169)

  • New classification mode (#174, #190)

    • Ability to create/save/name label image groups

    • Object thumbails can be dragged and dropped into groups

    • Classification groups can be saved to new or existing label image displays

  • More robust error indication and handling (#175)

  • New settings modal to control table formatting (#187)

Bugfixes/Maintenance:

  • Context refactor (#158)

  • Updated pvjs and open layers (#159)

  • Supports CSRF token in development mode (#167)

  • Deployment is direct bypassing Jenkins (#173)

  • Updated pvjs to 142 (#180)

  • Increased visibility of chart toggle button (#181)

  • Chart column select is closed when clicking outside (#182)

  • Fixed initializing image metadata (#184)

  • Updated pvjs to 4.0.13 for faster thumbnail load (#185)

  • Now requires Python 3.8 or greater (#188)

  • Fixed table column selection bugs (#192)

  • Fixed error from submitting empty filter (#197)

  • Updated pvjs to fix thumbnail loading on insecure webpages (#198)

  • Updated changelog and version to 1.3.0 (#205)

1.2.0 (2024-02-16)

Features:

  • Added Pageant version in footer (#128)

  • Added integration with label images (#123, #127)

    • Now a togglable label image overlay on PathViewerJS

    • Colored matches for what object on current page

    • Object not on page selectable and able to jump to page of that object

    • Scroll/selecting interaction now connected between all three sections

  • New empty state illustrations (#133)

  • New loading animation (#134)

  • Added changelog for 1.2.0 (#136)

  • Center dot to PathViewerJS view (#142)

  • Chart column selector closes on selection (#146)

  • Chart allows previous plot filter (#146)

  • Increased visibility of chart expand button (#146)

  • Reduced opacity of matched object in PathViewerJS (#155)

  • Filter slider is now centered properly (#156)

Bugfixes/Maintenance:

  • Fixed bug of not correctly detecting column type in filtering (#131)

  • Metadata now loaded from PathViewerJS (#138)

  • Updated Django 4.2 compatibility (#141)

  • Updated loading state order (#151)

  • Updated version to 1.2.0 for release (#132)

1.1.0 (2023-08-11)

Features:

  • Added ability to search and sort columns in filter, column dropdown, and chart column select (#108, #116, #117)

  • Column dropdown organized to shown and hidden (#110)

  • Filter modal redesigned into dropdown (#113)

  • Updated Pageant section organization to have image and thumbnails on right (#114)

  • Moved filter by view over PathViewerJS (#119)

Bugfixes/Maintenance:

  • Guard for initial column selection to be available (#109)

  • Updated PathViewerJS (#118, #122)

  • Build and release maintenance (#124)

1.0.0 (2023-05-17)

Initial release.