What's Changed
🎉 Major Changes
- Introduce a new favorite tool panel and most-recent tools by @bgruening in #21600
- Convert workflow extraction interface to Vue by @ahmedhamidawan in #21935
- Add Hashicorp Vault token renewal support by @mvdbeek in #22281
- Show step/tool form for any step in invocation graph by @ahmedhamidawan in #22144
- Improve celery rate limit and concurrency handling by @mvdbeek in #22189
- Server-Sent Events for history + notification updates by @mvdbeek in #22513
- Replace WinBox with native Vue scratchbook component by @dannon in #22095
- Galaxy Notebooks: Persistent Narrative for Human-AI Collaborative Science in Galaxy by @jmchilton in #22361
- Add bulk dataset storage migration by @davelopez in #22606
🚀 New Features
- Migrate History Markdown Components to GComponents and GTable Enhancements by @itisAliRH in #21800
- Add tool_source endpoint to tool shed API by @mvdbeek in #21794
- Show persistent best practice results in workflow editor by @mvdbeek in #19546
- Switch to only MIT license by @mr-c in #16970
- ChatGXY UI improvements and exchange management by @dannon in #21950
- Migrate Some components from BTable to GTable and GTable header variant by @itisAliRH in #22048
- Add toggle to invocation graph for viewing step inputs/outputs like in the editor by @ahmedhamidawan in #22159
- Add an "Isolate" (focus) mode to workflow graph by @ahmedhamidawan in #22142
- Add support for test credentials in tools by @arash77 in #21643
- Add a Search to Invocation View by @ahmedhamidawan in #22476
- Add a stop job button that allows users to stop jobs by @ahmedhamidawan in #21921
- Extend the favorite tool panel concept by @bgruening in #22212
- Add Workflow Report generator agent by @ahmedhamidawan in #21934
- Add sheet_names metadata to XLSX datatype by @Anthony96pi in #22327
- Add persistent docked ChatGXY panel with context awareness by @dannon in #22096
🔧 Enhancements
- Introduce reusable GTable component by @itisAliRH in #21635
- Update locuszoom package version to 0.0.9 by @elmedjadjirayane in #21658
- Allow admin to override
$GALAXY_MEMORY_MBby @natefoo in #21700 - Don't persist credentials when checking out repositories by @nsoranzo in #21705
- Add multi-language support for international users by @jianzuoyi in #21710
- Skip test_abort_fetch_job if httpstat.us is down by @jmchilton in #21718
- Use uv instead of pip cache in playwright CI workflow by @nsoranzo in #21725
- Update client-api dependencies and expand usage examples by @dannon in #21724
- Improve Chinese translation based on English locale.js by @djken2009 in #21044
- Fix scratchbook window z-index stacking and improve styling by @dannon in #21738
- Migrate Toolshed Components from Bootstrap Components to GComponents and add Local Filter to GTable by @itisAliRH in #21766
- Add badges to upload methods with staged items count by @davelopez in #21779
- Add Metadata Inspector UI and Enhanced reset_metadata API by @jmchilton in #21786
- Migrate Upload Components from BTable to GTable and Enhance Table Styling by @itisAliRH in #21820
- Convert FormDisplay to Composition API by @guerler in #21775
- Migrate admin components from BTable to GTable and Add stacked Style to GTable by @itisAliRH in #21836
- Various YAML Tool Hardening and Progress toward Tool State Goals by @jmchilton in #21828
- Migrate more E2E tests to be Playwright compatible by @jmchilton in #21841
- Add documentation for Celery result expiration and short-term storage by @mvdbeek in #21733
- Switch Storage Dashboard Bar Chart from D3 chart to Vega by @guerler in #21822
- Allow OIDC to update EMAIL and username (if mapped) by @uwwint in #21386
- Beta upload: create dataset collections directly via HdcaDataItemsTarget by @mvdbeek in #21855
- Use (also) case-insensitive comparison for user email by @nsoranzo in #21885
- Add support for file hash in Dataverse datasets by @davelopez in #21890
- Enhance Playwright tests by @jmchilton in #21893
- Prevent uploads to non-active histories in Beta Upload Activity by @davelopez in #21895
- Return redirection instead of a JSON with the redirect URI by @enolfc in #21678
- Add format_xml to galaxy-tool-util for shared XML formatting by @dannon in #21903
- Improve the workflow import UI by @neoformit in #21516
- Improve Type and Reference selectors in Upload Activity by @davelopez in #21906
- Converge framework workflow test syntax toward Planemo syntax by @jmchilton in #21907
- Support URL and TRS references for subworkflows in workflow import by @mvdbeek in #21887
- Add Selenium tests for workflow extraction UI by @jmchilton in #21805
- Add try Beta Upload button by @davelopez in #21898
- Make Shed 2 the Default - Drop Legacy Shed Tests in CI by @jmchilton in #21922
- Fix infinite request loops in cached stores with retry-aware error handling by @dannon in #21920
- Render collections as images via the element picker in reports by @ahmedhamidawan in #21909
- Migrate Library components from BTable to GTable and improve GTable by @itisAliRH in #21894
- Allow tools to specify time limits by @jmchilton in #21927
- Add
delete_completed_jobsoption to GCP Batch runner by @ksuderman in #21929 - Audit pre-2021-04-27 contributors to check for relicensing by @mr-c in #16708
- Handle missing
futurepackage in galaxy-util by @mr-c in #21924 - Add weekly-triage Claude Code skill by @dannon in #21915
- Add basic upload queue tests by @davelopez in #21965
- Allow per-job max_run_duration for GCP Batch runner by @ksuderman in #21928
- More concise test logging by @jmchilton in #21983
- Model subcollection mapping (map_over_type) and DCE in tool parameter schema by @jmchilton in #21991
- Add
run_playwright_tests.htmlto.gitignoreby @ahmedhamidawan in #22049 - Enrich tool parameter JSON Schema with Galaxy metadata via model methods by @mvdbeek in #22020
- Treat SVG datasets as images in dataset preview by @dannon in #22065
- Add admin docs for AI agent configuration by @jmchilton in #21997
- Cap invocation graph zoom-to-fit at 100% by @dannon in #22105
- Persist scratchbook windows across page reloads by @dannon in #22088
- Add API tests proving current_case is redundant at execution time by @jmchilton in #22134
- Migrate User CustomBuilds and ReviewCleanupDialog components from BTable to GTable by @itisAliRH in #22039
- Use GModal in Selection Dialog by @ahmedhamidawan in #20375
- More precise
metric_prefix()implementation by @nsoranzo in #22155 - Show change stack count on workflow editor changes activity by @ahmedhamidawan in #22141
- Add copy link button to published workflow page by @dannon in #22172
- Replace mocked agent tests with static YAML backend for deterministic API/E2E testing by @jmchilton in #22070
- Fix long history names pushing items off panel by @dannon in #22094
- Add test suite for running tool tests via Playwright using the tool form by @jmchilton in #22157
- Expand E2E testing by @jmchilton in #22164
- Update client-api dependencies, bump openapi-fetch to 0.17, add CI by @dannon in #22169
- Add composite dataset upload method to Upload Activity by @davelopez in #21944
- Substantially expand tool form testing by @jmchilton in #22216
- Add new Upload Modal Dialog by @davelopez in #22165
- Migrate tool execution request from api/tools to api/jobs by @guerler in #21842
- Replace BCollapse with custom GCollapse component by @dannon in #21958
- First pass in unifying and clarifying collection operation interfaces and help sections by @nekrut in #21939
- Support IEC units in
size_to_bytes(), addQuotaManagerunit tests by @nsoranzo in #22237 - Modernize the ConfirmDialog composable to use GModal by @ahmedhamidawan in #22091
- Test against psycopg3 by @mvdbeek in #22210
- Upgrade Sentry JS SDK to v10, add opt-in session replay by @dannon in #22233
- Simplify gxformat2 contract - drop ImporterGalaxyInterface, convert_and_import_workflow by @jmchilton in #22241
- Add egapx_local_cache datatype, a subclass of Directory by @richard-burhans in #22268
- Show file size for CRAM datasets and in download tooltip by @dannon in #22273
- Add bwa_index datatype by @Delphine-L in #22310
- Add
pick_valueWorkflow Module by @jmchilton in #22222 - Replace BModal usage with GModal in several components by @ahmedhamidawan in #22114
- More Complete, Robust, and Tested JSON-Schema for Tool State Models by @jmchilton in #22362
- Improve pairing wizard UX by @nekrut in #22295
- Use a help popover for TRS search field by @ahmedhamidawan in #22330
- Migrate Workflow Components from BTable to GTable by @itisAliRH in #22228
- Search and paginate user and roles api by @mvdbeek in #22311
- Add OneDrive file source by @PlushZ in #22367
- Add twine check to package test script to lint RST long descriptions by @ahmedhamidawan in #22412
- Make invocation view header area collapsible by @ahmedhamidawan in #22425
- Add IIIF File Source Support by @davelopez in #22420
- Mark History.jobs relationship as viewonly by @mvdbeek in #22474
- Show revision creation date in Tool Shed revision dropdown by @mvdbeek in #22478
- Parameterize GCP Batch job naming for better tracking by @ksuderman in #22434
- Add configurable tooltip hover timing delay by @davelopez in #22264
- Show node state colors in workflow invocation graph minimap by @ahmedhamidawan in #22335
- Better Auth0 OIDC support by @marius-mather in #22426
- Allow etree.XMLParser to resolve external entities by @jancrichter in #17504
- Add ASCII Raster (.asc) datatype by @tStehling in #21937
- Drop npm/pnpm from the prebuilt client install; use galaxy-web-client wheel by @dannon in #22514
- Improvements for ssh file sources by @bernt-matthias in #21646
- Add Hugging Face shared data table schema by @arash77 in #22511
- Enhance the workflow editor activity bar by @ahmedhamidawan in #22500
- Fix display of BAMs with large headers by @wm75 in #22516
- Narrow YAML schema by @jmchilton in #22507
- Speed up integration tests by @mvdbeek in #22538
- Migrate WebDAV file source to fsspec/webdav4 by @PlushZ in #22477
- Update label for invert parameter in grep.xml for clarity by @Sch-Da in #22550
- Add
RetrySessionto automatically retry idempotent HTTP requests by @nsoranzo in #22567 - Tighten the workflow test schema by @jmchilton in #22566
- Require logging in again when OIDC tokens can't be refreshed by @marius-mather in #22449
- Pass chat history to agents as structured messages by @dannon in #22607
- Give the chat router fast-path tools for browsing and inventory by @dannon in #22610
- Pass orchestration state between agents as a typed object by @dannon in #22608
- Add the History Graph API by @guerler in #21932
- Add user-defined-tool operations to the agent-operations layer by @dannon in #22625
- Manage SSE reconnect on transient 5xx/429 outages by @mvdbeek in #22629
- Replace QuotaUsageProvider with Pinia store + enhancements by @davelopez in #22640
- Improve type annotation of workflow management methods by @nsoranzo in #22637
- Expose more metadata in ParsedTool abstraction by @jmchilton in #22667
- Add GAlert component and replace BAlert in exemplar usages by @dannon in #22687
- Add support for file checksums in Zenodo/Invenio by @davelopez in #22691
- Upgrade client build to Vite 8 (Rolldown) by @dannon in #22145
- Lift legacy UserToolSource representations on read by @mvdbeek in #22624
- Overhaul and synchronize collection type algebra verbs by @jmchilton in #22565
- Unify remove button icons across upload methods by @davelopez in #22716
- Add auto decompress advanced option (Beta Upload) by @davelopez in #22711
- Beef up MCP tool docstrings with workflow guidance by @dannon in #22627
- Add legacy job submission fallback by @guerler in #22555
- Add GTN training agent to ChatGXY by @dannon in #22097
- Update locale.js MAJ french translation by @yvanlebras in #21736
- Add celery-beat-schedule to
gitignoreby @ahmedhamidawan in #22574 - Improve toolSectionTitle font size by @madsi1m in #22638
- Replace agent structured-output denylist with capability table by @dannon in #22609
- Enhance workflow extraction by IDs with deduplication and UI improvements by @jmchilton in #22706
- More structured HistoryGraph API references by @jmchilton in #22732
- Add real-LLM evaluation harness for Galaxy agents by @dannon in #22692
- Re-introduce IWC tools in agent-operations layer by @dannon in #22626
- Push UserToolSource semantic validation onto the pydantic model by @mvdbeek in #22615
- Update German history localization terms for consistency by @itisAliRH in #22417
- Allow attaching OIDC access token to DRS requests by @marius-mather in #22484
- Add producer/critic reflection loops to CustomToolAgent by @dannon in #22612
- Paginate /api/tools/{tool_id}/build history options by @mvdbeek in #22643
- Add rmd filetype by @jdavcs in #22746
- [26.1] Optimize the purge_historyless_hdas case by @bgruening in #22831
- [26.1] Backport of iRODS file source by @davelopez in #22816
- [26.1] Refresh agent-ops data (GTN database + IWC manifest) on a celery beat schedule by @dannon in #22783
- [26.1] Improve import workflow usability by @davelopez in #22813
- [26.1] Update tiffviewer to v0.0.5 by @davelopez in #22866
- [26.1] Add namespace stripping to
CachedExplicitSingularityContainerResolverby @mvdbeek in #22878 - [26.1] Enforce color format in JSON schema tests via FormatChecker by @mvdbeek in #22909
- [26.1] Fix upload progress usability by @davelopez in #22919
- [26.1] Align remote file browser labels by @itisAliRH in #22922
- [26.1] Further polish/bugfixes for notebooks created from invocations by @ahmedhamidawan in #22873
- [26.1] Add new datatypes for the tool vg giraffe by @Maed0x in #22935
- [26.1] Emit SSE/queue metrics as gauges, sample SSE counts in web workers by @mvdbeek in #22960
- [26.1] Disable non anonymous upload methods by @davelopez in #22965
- [26.1] Enable CORS on ToolShed read-only metadata endpoints by @jmchilton in #22972
- [26.1] Update pulsar-galaxy-client dependency to 0.15.15 by @mvdbeek in #23108
- [26.1] Add PAGE XML, AbbyyXML, hOCR, mlmodel and Apache Arrow IPC datatype support in datatypes_conf.xml.sample by @IvoLeist in #23088
- [26.1] Release Notes by @guerler in #23158
🐛 Bug Fixes
- Escape
$in galaxy.xsd to fix output filter docs rendering by @gdefazio in #21731 - Fix delete dataset storage overview by @davelopez in #21746
- Migrate OrganizationViewer and PersonViewer from BTable to GTable by @itisAliRH in #21761
- Fix transient failure in test_delete_dataset_from_storage_view by @jmchilton in #21793
- Make database heartbeat more robust by @mvdbeek in #21734
- Pin setuptools<82 for galaxy-files package by @jmchilton in #21824
- Stop uv from using the system Python to create the venv by @uwwint in #21807
- Fix Selenium select_by_value: wait for element before find by @jmchilton in #21874
- Disallow gunicorn 25.1.0 by @nsoranzo in #21905
- Use focus/blur to prevent prop updates from changing
FormTextvalues while typing by @ahmedhamidawan in #21300 - Fix dbkey filter returning no options when dbkey unset by @jmchilton in #21916
- Restore visual hierarchy for ReStructuredText headers in tool form's help section by @hujambo-dunia in #21780
- Fix workflow implicit mapping of flat collections over paired_or_unpaired by @jmchilton in #21933
- Fix test that transiently fails if GitHub rejects a request by @jmchilton in #22005
- Fix broken log format string in validate_non_local by @jmchilton in #22004
- Fix ToolExpressionOutput.to_model() for boolean type by @jmchilton in #22007
- Remove unused enable_beta_workflow_modules config option by @jmchilton in #22050
- Bug fix and refactor of ChatGXY chat history component by @jmchilton in #22010
- Fix merge, tool shed metadata revision page uses new invalid_tools structure by @mvdbeek in #22072
- Disable undo/redo buttons in workflow editor when unavailable by @dannon in #22092
- Update pre-commit black pin from 24.1.1 to 26.1.0 by @dannon in #22111
- Fix anonymous_user_concurrent_jobs to not allow jobs when 0 by @ccoulombe in #22110
- Fix transient CI failures by @mvdbeek in #22102
- Fix transient failure in test_workflow_with_deleted_dataset_step_parameter by @jmchilton in #22138
- Prevent card images from overflowing container by @dannon in #22148
- Skip X-Frame-Options header for published embed views by @dannon in #22107
- Convert math.inf to None in JSON-serialized tool dicts by @dannon in #22152
- Fix tag duplication when copying datasets/collections between histories by @dannon in #22109
- Install playwright browsers for unit tests by @nsoranzo in #22161
- Prevent tag placeholder text wrapping in narrow columns by @dannon in #22176
- Fix more paired_or_unpaired collection issues by @jmchilton in #22170
- Use correct binary unit prefixes (KiB/MiB/GiB) by @dannon in #22153
- Refactor Agent Registry Wiring and Fix Config Options by @jmchilton in #22011
- Try to create Rucio temp directory before writing rucio.cfg by @evilkermit in #22112
- Fix silently ignored in oidc_backends_config.xml so kc_idp_hint reaches Keycloak by @gkr0110 in #21992
- Fix GTabs vertical layout and spacing by @dannon in #21972
- Fix mapOver terminology typo and minor polish by @martenson in #22226
- Set proxy_ssl_server_name for GTN proxy on CloudFlare due to SNI by @martenson in #22249
- Improve history multiview UX with load more option by @dannon in #21687
- Remove dual load of cutWrapper.xml by @natefoo in #22266
- Fix flaky Selenium tests
test_refresh_preserves_stateandtest_tool_discovery_landingby @mvdbeek in #22301 - Fix S3 multipart upload to start all threads before waiting by @martenson in #22356
- Fix RST syntax and other small bugs in help Markdown term YAML by @jmchilton in #22374
- Add request_checksum_calculation support for s3fs by @lldelisle in #21993
- Fix mypy and packaging issues; pin rocrate<0.15.0 by @nsoranzo in #22469
- Fix Hashicorp Vault 2.0 non-canonical path rejection by @mvdbeek in #22530
- Fix tool id handling for shed-installed tools by @guerler in #22553
- Revert
galaxy.yml.samplechanges by @nsoranzo in #22569 - Skip missing history item ids in job exports by @guerler in #22563
- Mount fastmcp at subapp root by @mvdbeek in #22618
- Fix long title squashing in g-card by @mvdbeek in #22621
- Bump default max_tokens for AI agents by @dannon in #22630
- Restore WebDAV template v0; add v1 for url -> base_url rename by @mvdbeek in #22570
- Update test workflows to respect gxformat2 0.26.0 syntax by @nsoranzo in #22642
- Update test workflows to respect gxformat2 0.26.0 syntax (part 2) by @nsoranzo in #22645
- Fix MCP get_dataset_details crash on display-apps serialization by @mvdbeek in #22635
- Fix SQL compatibility in kombu message pruning by @davelopez in #22655
- Honor group-derived roles in unprivileged tool access check by @mvdbeek in #22623
- Drop unintended claude settings and extend gitignore by @mvdbeek in #22699
- Defer dynamic destination evaluation across resubmits by @nuwang in #22670
- Share route_name_index with mounted MCP sub-app by @mvdbeek in #22622
- Harden access control for user-defined tools by @mvdbeek in #22704
- Fix workflow extraction not including user-defined tool steps by @ahmedhamidawan in #22694
- Use now() wrapper instead of datetime.now() by @bgruening in #22579
- Drop dead history_id kwarg from QueueJobs construction by @jmchilton in #22726
- Patch bar_chart tool for the Python 3 Gnuplot module by @gsaudade99 in #22597
- Fix galaxy_task DI injection on Python 3.14 by @mvdbeek in #22727
- Don't install data table entries for non-DM tool installs by @natefoo in #22679
- Avoid missing field value failure in data tables by @guerler in #21008
- Minor styling fixes for invocation view header and history list cards by @ahmedhamidawan in #22639
- Fix shed install column mismatch from synthesized name alias by @mvdbeek in #22733
- [26.1 (spiritually)] Fix UDT collection outputs being silently dropped in YAML tool parser by @jmchilton in #22761
- [26.1] Reconnect SSE live updates on wake, network restore, and click by @mvdbeek in #22767
- [26.1] Drop full path from client_build_hash.txt exclusion by @dannon in #22772
- [26.1] Framework test for UDTs in Format 2 Workflows by @jmchilton in #22756
- [26.1] Add fallback at read location in dynamic options by @guerler in #22779
- [26.1] Fix admin panel style by @guerler in #22776
- [26.1] Prevent vertical scrolling in invocation graph by @guerler in #22769
- [26.1] Fix composite uploads ignoring substitute_name_with_metadata by @mvdbeek in #22788
- [26.1] Relax legacy doi:-prefixed citation handling (#22795) by @mvdbeek in #22799
- [26.1] Fix BreadcrumbHeading imposing a minimum width on parent components by @ahmedhamidawan in #22804
- [26.1] Add handler for URL source type in workflow card indicators by @itisAliRH in #22808
- [26.1] GalaxyAI minor chat history and interface display fixes and polish by @ahmedhamidawan in #22793
- [26.0] Drop console scripts from packages'
setup.cfgfiles by @nsoranzo in #22832 - [26.0] Move classifiers and keywords from setup.cfg to pyproject.toml by @jdavcs in #22834
- [26.1] Fix galaxy-api-client npm publishing on release by @dannon in #22847
- [26.0] Fix tag creation self-deadlock under SQLite by @mvdbeek in #22846
- [26.1] Route ChatGXY on the current message, and ask when uncertain by @dannon in #22791
- [26.0] Prevent crash on pgcleanup script when attempting to delete files in user-defined object stores by @davelopez in #22833
- [26.0] Stop workflow editor leaking UI metadata into Apply Rules tool_state by @jmchilton in #22823
- [26.1] Remove duplicate clear call in remove_objects method by @bgruening in #22862
- [26.1] Create notebooks from invocation reports instead of a new page/report by @ahmedhamidawan in #22872
- [26.1] Handle existing rows in tool_source during db migration by @mvdbeek in #22870
- [26.1] Add missing
confirmprop toGModalin `RefactorConfirmatio… by @ahmedhamidawan in #22879 - [26.1] Fix memory-unit conversion and polling_interval bugs in the GCP Batch runner by @ksuderman in #22880
- [26.1] Match tpv in conditional dependency requirement to pinned version by @mvdbeek in #22874
- [26.1] Reuse the global, context-aware GalaxyAI for Galaxy Notebooks by @ahmedhamidawan in #22807
- [26.1] Fix on_string containing redundant datasets by @bernt-matthias in #22801
- [26.0] Pin galaxy-tool-util-models to current minor version in dependents by @jdavcs in #22877
- [26.1] Bump up gravity to 1.2.3 by @mvdbeek in #22886
- [26.1] Fix input mangling when conditional parameter name ends in
_Nby @mvdbeek in #22891 - [26.1] Address arch-review issues from #22807: move business logic out of chat controller by @mvdbeek in #22885
- [26.1] Cut GTN training agent token usage by capping its search loop by @dannon in #22890
- [26.1] Fix table header column handling in plotly and tabulator by @guerler in #22893
- [26.0] Use default_panel_view in docs by @jdavcs in #22892
- [26.1] Fix syncServerAttributes clobbering conditional case options for shared param names by @mvdbeek in #22867
- [26.1] Use the correct default value for job_id_prefix by @ksuderman in #22871
- [26.1] Fix floating window drag/resize over iframes with pointer capture by @dannon in #22881
- [26.1] Fix sharing pages impossible due to incorrect
api/reportsfetches on the client by @ahmedhamidawan in #22901 - [26.1] Fix upload_file_from_url passing decoded id to FetchDataPayload by @jmchilton in #22905
- [26.1] Add fixed color set from webcolors package by @guerler in #22869
- [26.1] Make GalaxyAI route IWC workflow imports more reliably by @dannon in #22908
- [26.1] Make GalaxyAI agent retry budget configurable (fix "Exceeded maximum output retries") by @dannon in #22896
- [25.1] Allow workflows with optional credentials to run without credentials set by @arash77 in #22858
- [26.1] Make unowned but accessible pages uneditable by @ahmedhamidawan in #22911
- [26.1] Fix GButton disabled-title not displaying by @dannon in #22920
- [26.1] Fix HTTP Range requests on dataset files (non-nginx deployments) by @jmchilton in #22924
- [26.1] Remove GHCR container build job by @ksuderman in #22897
- [26.1] Accept dce collection references in the tool request model by @mvdbeek in #22926
- [26.1] Keep collection-operation outputs as workflow steps in extraction by @jmchilton in #22912
- [26.1] Auto-grow the GalaxyAI chat input as you type by @dannon in #22933
- [26.1] Fix New Chat button while a GalaxyAI conversation is in flight by @dannon in #22882
- [26.1] Fix GModal content truncation and dev proxy cookie handling by @mvdbeek in #22943
- [26.1] Speed up workflow Run form: memoize and skip redundant history scans (#22927) by @mvdbeek in #22932
- [26.1] Release request-scoped DB connection during streams via GalaxyStreamingResponse (alternative to #22939) by @mvdbeek in #22940
- [26.1] Ground ChatGXY's "what can you do" answer in enabled agents by @dannon in #22944
- [26.1] Fix legacy DatabaseVault secrets canonical key migration by @davelopez in #22942
- [26.1] Always attempt to build tool request for new API endpoint by @mvdbeek in #22894
- [26.1] Fix misaligned activity bar icons by @ahmedhamidawan in #22956
- [26.1] Fix view state logic for paste links upload by @davelopez in #22962
- [26.1] Make the user-defined tool schema robust for LLM authoring (CustomToolAgent) by @mvdbeek in #22968
- [26.1] Fix tool shed state serving for stock tools by @jmchilton in #22963
- [26.1] Fix GalaxyAI router context loss and agent response attribution by @dannon in #22904
- [26.1] Include hidden intermediates in workflow extraction summary (#22967) by @jmchilton in #22970
- [26.1] Route ChatGXY follow-ups using the previous conversation turn by @dannon in #22975
- [26.1] Fallback to default chunk size for file uploads by @davelopez in #22985
- [26.1] Log SSE dispatch task and addressed webapp workers by @mvdbeek in #22995
- [26.1] Resolve user-defined tools in by-ids workflow extraction by @mvdbeek in #22992
- [26.1] Fix storage operation column types (Database migration) by @davelopez in #23032
- [26.1] Fix SSE dispatch cache unit tests: give queue mocks a string .name by @mvdbeek in #23035
- [26.1] Default S3 request checksum to when_required for non-AWS endpoints by @mvdbeek in #23034
- [26.1] Fix My Tools favorite tag sections showing old tool versions by @itisAliRH in #23040
- [26.0] Require gravity 1.2.2 by @jdavcs in #23050
- [25.0] Fix NameError, move assignation of days prior to get_failed_jobs call by @ccoulombe in #23053
- [25.0] Pin Ansible version by @ksuderman in #23057
- [26.1] Fix celery worker cold-start thundering herd (build app once, scope tool-data walk to load pass) by @mvdbeek in #23048
- [26.1] Keep the standalone SSE monitor out of the control-queue routing table by @mvdbeek in #22958
- [26.1] Fix tool panel discover counts and recent tool version duplicates by @itisAliRH in #23045
- [26.1] Skip RST help linting when help format is not restructuredtext by @mvdbeek in #23073
- [26.0] Fix ToolPanelElements._section_by_tool being class-level shared state by @mvdbeek in #23062
- [26.1] Fix recent tools for My Tools default panel by @itisAliRH in #23075
- [26.1] Fix discover tool count fallback for My Tools default panels by @itisAliRH in #23074
- [26.1] Rewrite proxy redirect headers to dev origin by @davelopez in #22980
- [26.1] Fix page published view sharing routes by @ahmedhamidawan in #22977
- [26.1] Stop the ssh file source from using local keys or the SSH agent by @bernt-matthias in #23066
- [26.1] Update spatialdata datatype by @nilchia in #23087
- [26.1] Bound memory use in h5grove structured content endpoint by @mvdbeek in #23089
- [26.1] Custom-tool agent: verified container resolution + authoring safeguards (with a reusable mulled-recommend CLI) by @mvdbeek in #22981
- [26.0] Use requests rather than urllib for Invenio authenticated downloads by @martenson in #23096
- [26.1] Fix Markdown help rendering in tools list by @itisAliRH in #23106
- [26.1] Add configurable activation for OIDC accounts by @mvdbeek in #23109
- [26.1] Disable tool request by default by @guerler in #23113
- [26.1] Fix Workflow.copy() dropping readme, help, logo_url and doi by @mvdbeek in #23117
- [26.0] Fix typo in irods object store cache size by @davelopez in #23124
- [26.1] Fix activation email lookup regression by @davelopez in #23130
- [26.1] Make verify_collection fail usefully on output-shape mismatches by @mvdbeek in #23134
- [26.1] Fix tool-form option pagination never updating the select (#23135) by @mvdbeek in #23136
- [26.0] Fix clean jwd task by @davelopez in #23121
- [26.1] Support multipart upload for Invenio-based file sources by @martenson in #23118
- [26.1] Hide generated headers for tabular previews by @qchiujunhao in #22947
- [26.1] Fix workflow preview layout spacing by @itisAliRH in #23143
- [26.1] Fix
set_historycommitting Nonegalaxy_sessionby @ahmedhamidawan in #23156 - [26.0] Fix WES workflow completion and add missing WES docs by @jmchilton in #22857
- [26.0] Handle sample_sheet and paired_or_unpaired collections in output_to_cwl_json by @mvdbeek in #23152
- [26.0] Fix fasta preview rendering for sequences larger than 100 KB by @mvdbeek in #23163
- [26.1] Prevent loss of unsaved changes on navigation by @davelopez in #23172
- [26.0] Fix AssertionError remapping malformed galaxy markdown blocks by @mvdbeek in #23176
- [26.1] Fix webhooks broken by the Backbone/underscore removal by @itisAliRH in #23173
- [26.1] Use a thread-safe libmagic handle when sniffing datasets by @mvdbeek in #23200
- [26.1] Fix workflow graph css issues by @ahmedhamidawan in #23194
- [26.1] fix(client): compile SCSS in collection wizard style blocks by @jmchilton in #23217
- [26.1] Fix TUS uploads when galaxy_url_prefix is set by @afgane in #23224
- [25.1] Fix broken calls to
InteractiveToolManagermethods by @nsoranzo in #23216 - [26.1] Build packages without syncing the workspace virtualenv by @mvdbeek in #23231
- [26.1] Drop unused _setup-dev-venv rule from package Makefiles by @mvdbeek in #23243
🔒 Security Updates
🧰 Refactoring
- Version 26.1.dev by @guerler in #21685
- Move BootstrapSize type to shared module by @davelopez in #21702
- Break dereference_input into HDA and HDCA variants by @mvdbeek in #21694
- Migrate ExportRecordTable from BTable to GTable by @itisAliRH in #21727
- Fix Chinese localization formatting in locale.js by @itisAliRH in #21745
- Migrate DatasetIndex from BTable to GTable and Add Local Sorting to GTable by @itisAliRH in #21728
- Migrate CleanupResultDialog from BTable to GTable by @itisAliRH in #21729
- Clean up stale yarn references after pnpm migration by @dannon in #21792
- Drop use of pkg_resources by @nsoranzo in #21858
- Create a history datasets store that caches compact dataset summaries by @ahmedhamidawan in #21754
- ChatGXY extraction: sub-components + vitest tests by @jmchilton in #21897
- Fix tool.parameters initialization by @mvdbeek in #21914
- Update config sample files after
make config-rebuildby @davelopez in #21940 - Use
os.path.join()orpathlib.Pathinstead of f-strings for filesystem paths by @nsoranzo in #21954 - Implement workflow extraction backend typing by @jmchilton in #21749
- Replace BTabs/BTab with custom GTabs/GTab components by @dannon in #21960
- Eliminate Twill from Tool Shed tests by @jmchilton in #21953
- Replace BOverlay with custom GOverlay component by @dannon in #21957
- Attempt to fix transient failure in selenium test test_advanced_search by @davelopez in #21967
- Remove dead
if not userguards in chat API by @dannon in #21975 - Clean up more Tool Shed code (round 2) by @jmchilton in #22037
- Clean up more Tool Shed code (round 3) by @jmchilton in #22078
- Replace v-b-tooltip directive with custom v-g-tooltip by @dannon in #21962
- Restore the #22116 fixes that only apply to dev by @jmchilton in #22218
- Remove direct underscore dependency from client by @dannon in #22355
- Remove backbone dependency from client by @dannon in #22357
- Unify path adaptation for remote file sources by @davelopez in #22336
- Clean up legacy SQLAlchemy patterns that emit deprecation warnings by @mvdbeek in #22462
- Delete dead legacy tag controller by @mvdbeek in #22466
- Clean up remaining deprecation warnings by @mvdbeek in #22473
- Add Selenium/Playwright coverage to Beta Upload Activity by @davelopez in #22467
- Clean up various pytest warnings by @mvdbeek in #22472
- Replace v-b-tooltip in RemoteFilesUpload with v-g-tooltip by @itisAliRH in #22494
- Clean up Pydantic v2 deprecation warnings by @mvdbeek in #22463
- Use shared host_port_and_url helper in integration driver by @itisAliRH in #22512
- Standardize on LoadingSpan, retire BSpinner usages by @dannon in #22669
- Always use context managers in py2filesystem file sources by @bernt-matthias in #21645
- Remove leftover debug print statement by @davelopez in #22697
- Migrate Dropbox file source to fsspec by @PlushZ in #22682
- Migrate the Google Drive file source to fsspec by @PlushZ in #22696
- Rebrand ChatGXY to GalaxyAI by @dannon in #22707
- Put the pnpm workspace at client/, with galaxy-api-client as the first member by @dannon in #22554
📚 Documentation
- Add a shared operations layer for internal and external AI agents by @dannon in #21942
- Add
enable_statsd_middlewareoption to send backend execution timing to statsd without enabling web request timing by @natefoo in #22557 - Add a new "htcondor" job runner that uses the Python HTCondor version 2 bindings by @bgruening in #21528
🛠️ API Changes
🧪 Testing
Other Changes
New Contributors
- @gdefazio made their first contribution in #21731
- @djken2009 made their first contribution in #21044
- @evilkermit made their first contribution in #22112
- @gkr0110 made their first contribution in #21992
- @Sch-Da made their first contribution in #22550
- @madsi1m made their first contribution in #22638
- @Anthony96pi made their first contribution in #22327
- @IvoLeist made their first contribution in #23088
Full Changelog: v26.0.1...v26.1.0