What's Changed
🎉 Major Changes
- Redesign TS landing page with prominent search box. by @jmchilton in #21430
- Reimplement keycloak/cilogon as PSA providers and remove custos by @nuwang in #21234
- Add AI Agent Framework and ChatGXY 2.0 by @dannon in #21434
- Provide more accurate step hints for failing subworkflow steps by @mvdbeek in #21514
- Add Jupyternaut adapter for JupyterLite integration by @guerler in #21463
- Adds Vintent visualization plugin by @guerler in #21586
- Drop support for Python 3.9 by @nsoranzo in #21583
- Implement workflow completion monitoring with extensible hooks by @mvdbeek in #21532
- Add agent based AI tool recommendation by @dannon in #21661
- Add Beta Upload Activity - User Interface Redesign by @davelopez in #21338
🚀 New Features
- Add plotly pie charts by @guerler in #21174
- Add OMERO File Source Plugin by @davelopez in #21367
- Add new Azure Flat object store file source by @guerler in #21398
- Add support for Python 3.14 by @nsoranzo in #21486
- Fix output dataset collection visualizations by @mvdbeek in #20544
- Add initial support for the DICOM format by @kostrykin in #21385
- Add Google Batch job runner by @ksuderman in #21443
🔧 Enhancements
- Selenium test cases for IGV. by @jmchilton in #21034
- Selenium test for the new storage delete confirm dialog. by @jmchilton in #21039
- Add service account support for Google Cloud Storage client initialization by @dannon in #21027
- Improve type annotation of job runners by @nsoranzo in #21050
- Selenium test exercising workflow debug, failed jobs, etc... (20912) by @jmchilton in #21058
- Selenium test case for basic tools list functionality. by @jmchilton in #21059
- Enhance Confirm Dialog Types and More by @itisAliRH in #21108
- Add type annotations to job handling code by @nsoranzo in #21171
- Add Playwright Backend Support to Galaxy Browser Automation Framework by @jmchilton in #21102
- Remove tabular chunked, binary and large file mako by @guerler in #21106
- Selenium test for #20886 (sharing private histories) by @jmchilton in #21040
- Integrate 'uv' for enhanced package management by @arash77 in #21002
- Replace tuswsgi with tuspyserver by @mvdbeek in #21201
- Tool Request API by @jmchilton in #20935
- Standardize FontAwesome usage by @dannon in #20334
- Upload user defined tools from url by @mvdbeek in #20860
- Richer tracking of transient failures. by @jmchilton in #21227
- Allow filtering job searches by history ID by @nsoranzo in #21257
- Add Custom Validation for User-Configured Templates by @davelopez in #21155
- Add an easy to access/obvious button to hide history panel by @ahmedhamidawan in #21207
- Add
select all, simple search and pagination to Zip file selector by @davelopez in #21120 - Smoke test and PR by @ksuderman in #21277
- Add "show in multiview" to mutiple history selection by @davelopez in #21260
- Add workflow dispatch to artifact building workflow by @mvdbeek in #21323
- Consolidate Dataset State Display by @guerler in #21231
- Update last queue process handler by @guerler in #21288
- Slight improvement of mztab2 datatype by @nguilhot in #21258
- Update error message handling for OIDC by @uwwint in #21297
- Migrate client tests from Jest to Vitest by @dannon in #21348
- Vitest followup: switch to happy-dom, cleanup/fixes to mocks by @dannon in #21359
- Fix: tool execution typing improvements/fixes by @jmchilton in #21374
- Replace Webpack with Vite for client build by @dannon in #21369
- Add citation reminder to job completion email by @Syrinx55 in #21347
- More use of base64 to improve test stability. by @jmchilton in #21383
- Update fastapi to 0.123.4 and
get_openapi()fork by @nsoranzo in #21384 - Pulsar relay implementation by @mvdbeek in #21118
- Add toolshed metadata fixing script by @mvdbeek in #21456
- Link to an external profile when user accounts are managed by a single OIDC provider by @marius-mather in #21356
- A couple more tool shed fixes. by @jmchilton in #21433
- Discriminate decompression tools by @mvdbeek in #21510
- Add support for workflow landing requests using simple URLs by @mvdbeek in #21525
- Add workflow API test for use_cached_job with sample sheet collections by @mvdbeek in #21522
- Add
ruff --checkto pre-commit sample config by @mvdbeek in #21523 - Extend
image_diffand image content assertions to handle boolean images by @kostrykin in #21527 - Include subworkflow jobs in invocation metrics by @mvdbeek in #21511
- Enable attaching sample sheet to landing requests by @mvdbeek in #21489
- Update dependencies for IGV and Plotly by @guerler in #21543
- Various test documentation updates. by @jmchilton in #21507
- Add discarded_data option to model store import API by @mvdbeek in #21582
- Sort data managers using case-insensitive order for display in admin UI by @jdavcs in #21587
- Switch Google Cloud Storage file source from fs-gcsfs to gcsfs (fsspec) by @mvdbeek in #21590
- Update to gravity 1.2.0 by @nsoranzo in #21608
- Use
fail-on-cache-misswhen restoring the client cache by @nsoranzo in #21597 - Blur input path instead of requiring explicit enter in FormDirectory input by @dannon in #20047
- Add functional test for filtering outputs by parameters in repeats by @bernt-matthias in #21501
- Implement subworkflow invocation export by @mvdbeek in #21512
- Add Claude Code slash commands for GitHub issue triage by @jmchilton in #21579
- Unify extensions of file source templates by @bernt-matthias in #21594
- Fix slow startup regression by @ksuderman in #21637
- Remove sanitization from built-in grep tool by @wm75 in #21648
- Tool testing: add min/max attributes to test output collections by @bernt-matthias in #21495
- Add Support for HTTP Headers in URL Fetch Requests with Secure Storage for Landing Requests by @davelopez in #20924
- Implement GA4GH WES API by @jmchilton in #21335
- Improve ruff configuration to mimic our isort settings by @nsoranzo in #21666
- Improve docs for
invalidjobexception_stateand_retryof DRMAA runners by @bernt-matthias in #20612 - Type annotations and refactorings by @nsoranzo in #21673
- Add DRS compact identifier support by @dannon in #20410
- Add tests for oidc usernames by @nuwang in #21655
- [26.0] Check file source template config files for determining conditional dependencies + add constraint for zero-ice by @bernt-matthias in #21688
- [26.0] Revert startup probe timeout by @ksuderman in #21748
- [26.0] Send a Slack notification if the Docker image build or smoke test fails by @ksuderman in #21751
- [26.0] Various fixes to file source template's validation system by @davelopez in #21704
- [26.0] Adds indicator to show if upload target history is current by @davelopez in #21830
- [26.0] Allow connecting sample sheet inputs to compatible collection inputs in editor by @mvdbeek in #21859
- [26.0] Replaced deprecated actions with modern equivalents by @ksuderman in #21849
- [26.0] Adds ImageJ metadata support to TIFF export by @davelopez in #21882
- [26.0] Update qiskit interactive tool by @thepineapplepirate in #21948
- [26.0] Add linter to validate required_files include paths exist by @mvdbeek in #22061
- [26.0] Use mock test server when tests don't target external galaxy server by @mvdbeek in #22103
- [26.0] Add _F/_R auto-pairing filter for forward/reverse datasets by @jmchilton in #22267
- [26.0] Add new datatypes: .taf and .taf.gz by @Maed0x in #22242
🐛 Bug Fixes
- Infer type from extension for mzml by @bgruening in #21033
- Attempt to fix transient API test failure for jobs search. by @jmchilton in #20898
- Update config samples from schema by @davelopez in #21053
- Drop down revision for drop_job_params migration by @mvdbeek in #21122
- Pin Ansible version during Docker image building by @ksuderman in #21131
- Change invocation step state display selector to fix styling by @ahmedhamidawan in #21144
- Fix various bugs/hacks with tool_data_table handling. by @jmchilton in #21163
- Simplify transiently failing test (#21224) see if this stabilizes it at all by @jmchilton in #21239
- Fix differentiation between single handler and handler tag by @natefoo in #21252
- Cross product tools: Fix typos in help section by @RZ9082 in #21061
- Plumbing for tracking potential fixes for transient failures (and a fix demonstrating it) by @jmchilton in #21243
- Fix quoting issue getting the Galaxy version by @ksuderman in #21316
- Use uv also for the lint_openapi_schema GitHub workflow by @nsoranzo in #21319
- Extend startup probe timeout by @ksuderman in #21326
- remove a tool from sample that is no longer included in dist by @martenson in #21371
- Various fixes around ascp file source by @mvdbeek in #21372
- Attempt to fix transiently failing tests that click this tab. by @jmchilton in #21376
- Use icon classes instead of strings for history content item states by @guerler in #21393
- Attempt to fix transient failure in list_list_copy by @jmchilton in #21381
- Use Playwright from the Galaxy virtualenv by @nsoranzo in #21425
- Assorted tool shed fixes. by @jmchilton in #21424
- Fix tool request API for multiple select parameters with defaults. by @jmchilton in #21416
- Fix tool shed repository last updated time by @mvdbeek in #21427
- Add license define for vite by @dannon in #21431
- Create alembic merge by @mvdbeek in #21447
- Don't set OAUTHLIB_INSECURE_TRANSPORT setting in user_data by @nuwang in #21451
- Add tool_shed_url config for explicit hostname setting by @jmchilton in #21499
- Raise ConfigurationError instead etree.ParseError by @mvdbeek in #21509
- Fix use of function, method and argument names deprecated in pyparsing 3.0.0 by @nsoranzo in #21517
- Accept 404 as valid intermediate state when waiting for dataset purge by @mvdbeek in #21521
- Fix input tags not being copied when using copy_inputs_to_history by @mvdbeek in #21529
- Clean up code with pyupgrade by @nsoranzo in #21540
- Fix width and height assignment for image metadata using Pillow by @kostrykin in #21554
- Preserve assistant messages with tool calls by @guerler in #21545
- Restrict collection of dynamic working dir output to specified directory in pulsar by @mvdbeek in #21515
- Don't return 404 when file name can't be serialized by @mvdbeek in #21577
- Update Molstar by @guerler in #21567
- Fix Vite 5 upgrade compatibility issues for tool shed frontend by @mvdbeek in #21581
- Better error message for unencoded/unresolvable filesource uri by @dannon in #21562
- Remove dummy header from JupyterLite requests by @guerler in #21585
- Fix toolshed tests on Python 3.14 by @mvdbeek in #21617
- Fix package test using
--index-strategy unsafe-best-matchto match pip behavior by @mvdbeek in #21619 - Triage command followup fixes/tweaks by @dannon in #21629
- Fix loading spinner positioning in admin grid by @dannon in #21564
- Fix Auto Layout crash with conditional (when) step inputs by @jmchilton in #21616
- Overhaul ChatGXY Routing approach by @dannon in #21580
- Fix ace import in cell-based markdown editor by @guerler in #21622
- Fix incorrect router tag in plugins API by @dannon in #21669
- Add missing types to visualization model by @guerler in #21672
- Reduce completion monitor logging by @mvdbeek in #21674
- [26.0] Fixes select field clipping and filtering by @guerler in #21479
- [26.0] Fix storing origin for workflow landing requests by @mvdbeek in #21696
- [26.0] Fix
test_value_restriction_with_select_from_multiple_subworkflow_inputsformatting by @mvdbeek in #21723 - [26.0] Hide interactivetools activity when disabled in config by @dannon in #21755
- [26.0] Deserialize json string for export_metadata from old records by @mvdbeek in #21772
- [26.0] Removes unnecessary overflow restriction in upload method panel by @davelopez in #21774
- [26.0] Fix upload local file drop zone when listing by @davelopez in #21776
- [26.0] Fix on_complete column type mismatch by @mvdbeek in #21765
- [26.0] Hide ChatGXY activity when LLM API isn't configured by @dannon in #21756
- [26.0] Handle TPV floating point memory values by @ksuderman in #21763
- [26.0] Fix passing invalid job_destination dict to JobState constructor by @mvdbeek in #21798
- [26.0] Use 1-based step index in invocation metric UI by @mvdbeek in #21799
- [26.0] Fix redirect upon impersonation by @guerler in #21810
- [26.0] Avoid slash duplication in display application urls by @guerler in #21809
- [26.0] Fixes navigation back to added URLs in upload panel by @davelopez in #21796
- [26.0] Update
get_definitions()to FastAPI 0.128.8 by @nsoranzo in #21834 - [26.0] Fix selenium test test_rename_history by @davelopez in #21835
- [26.0] When getting tool by uuid, get that exact tool by @mvdbeek in #21844
- [26.0] Fix ascp download retries by @mvdbeek in #21857
- [26.0] Fix OMERO file source download multi channel TIFF by @davelopez in #21856
- [26.0] Fixes some more optional fields in templates by @davelopez in #21891
- [26.0] Fix infinite request loop on dataset preview fetch failure by @dannon in #21881
- [26.0] Fix missing sharable link URL in TS2.0 emails by @jmchilton in #21892
- [26.0] Parse input collections as well in markdown editor by @ahmedhamidawan in #21913
- [26.0] Fix collection step Job markdown elements not rendering by @ahmedhamidawan in #21917
- [26.0] Fix Pydantic UnsupportedFieldAttributeWarning for Field defaults in Annotated by @mvdbeek in #21923
- [26.0] Remove unused handle_tool_shed_url_protocol by @mvdbeek in #21925
- [26.0] Fix HTML dataset extra files 404 in preview by @dannon in #21981
- [26.0] Fix dict leaking to process_dataset() during workflow execution by @mvdbeek in #21982
- [26.0] Fix repo metadata persistence in fix_tool_config_paths.py by @mvdbeek in #22012
- [26.0] Fix uncaught
ImplicitConversionRequiredby @mvdbeek in #22027 - [26.0] Fix toolshed "copy page link" copying relative URL instead of absolute by @mvdbeek in #22028
- [26.0] Fix subworkflow editing navigation and enable e2e test by @mvdbeek in #22032
- [26.0] Use inference_services config for plugin chat proxy by @dannon in #21986
- [26.0] Fix AttributeError serializing implicit output collections during job prep by @mvdbeek in #22034
- [25.1] Fix dataset collection tag duplication when copying a history by @mvdbeek in #21984
- [26.0] Fix AttributeError when export_metadata is a string instead of dict by @mvdbeek in #22033
- [26.0] Fix invalid function schema error for tools with None parameters by @mvdbeek in #22030
- [26.0] Fix AttributeError when fetching citations for missing tools by @mvdbeek in #22029
- [26.0] Fix AttributeError when dataset in inheritance chain has no user by @mvdbeek in #22062
- [26.0] Fix FileNotFoundError when workflow references purged HDA by @mvdbeek in #22060
- [26.0] Move history panel expand button to top by @ahmedhamidawan in #22076
- [26.0] Fix TypeError when column_names metadata is None by @mvdbeek in #22057
- [26.0] Add check_database_connection to workflow scheduling path by @mvdbeek in #22063
- [25.1] Fix
preferred_object_store_idnot respected for discovered outputs with extended metadata by @mvdbeek in #22056 - [26.0] Store tool shed search index test data in repo by @mvdbeek in #22071
- [26.0] Use ParameterValueError for dataset count validation to reduce Sentry noise by @mvdbeek in #22058
- [26.0] AttributeError when history is None during tool execution by @mvdbeek in #22031
- [26.0] Fix workflow search broken after auto layout by @dannon in #22093
- [25.0] Fix legacy_expose_api error callable returning str instead of bytes by @mvdbeek in #22106
- [26.0] Fix nested collection query performance by @mvdbeek in #22119
- [26.0] Fix WSGI middlewares returning strings by @mvdbeek in #22108
- [26.0] Fix CardinalityViolation in nested collection ARRAY walk scalar subqueries by @mvdbeek in #22123
- [26.0] Model hidden_data params as optional data in tool meta-models. by @jmchilton in #22116
- [26.0] Use skip_locked also when updating collection by @mvdbeek in #22133
- [26.0] Do not render hide button on non-optional activities in activity bar by @ahmedhamidawan in #22140
- [26.0] Fix unhandled exceptions in tool form model population by @guerler in #22129
- [26.0] Fix workflow report time handling by @dannon in #19292
- [26.0] Bump tiffviewer visualization to v0.0.4 by @davelopez in #22168
- [25.1] Fix make all histories private controller None id bug by @ahmedhamidawan in #22174
- [25.1] Do not queue paused jobs by @martenson in #22156
- [26.0] Fix redundant empty collection elements by @mvdbeek in #22154
- [26.0] Fixes for gxformat2 by @jmchilton in #22179
- [26.0] Don't fail on probable delete race by @mvdbeek in #22183
- [26.0] Add batch celery task for history dataset purging by @mvdbeek in #22180
- [26.0] Update fastmcp requirement to 3.0.2 by @nsoranzo in #22221
- [26.0] Include missing tools in stock_tool_paths. by @jmchilton in #22181
- [26.0] Fix race condition in history list when rapidly changing search filters by @mvdbeek in #22223
- [26.0] Throw ParameterValueError instead of generic error by @guerler in #22188
- [26.0] Fix event loop blocking in async API routes by @mvdbeek in #22202
- [26.0] Fix missing focus helper by @guerler in #22225
- [25.1] Use
/api/tool_dataendpoints in DataTables.vue & DataManagerTable.vue by @mvdbeek in #22229 - [26.0] Fix batch history purge not updating user's update_time by @mvdbeek in #22238
- [26.0] Fix TypeError in ExternalIdentities by always including provider_label in authnz response by @guerler in #22234
- [26.0] Optimize dataset get_edit API by deferring expensive role queries by @mvdbeek in #22232
- [25.1] Restore file doesn't match sniffed datatype message by @mvdbeek in #21988
- [26.0] Cache url path lookup by @mvdbeek in #22198
- [26.0] Fix AmbiguousColumn error in job search for tools with long input names by @mvdbeek in #22167
- [26.0] Fix import order error from ESLint by @nsoranzo in #22240
- [26.0] Fix file source removal by @davelopez in #22246
- [26.0] Validate replacement_params values are strings before storing by @mvdbeek in #22250
- [26.0] Fix N+1 queries in fetch_job_states for jobs_summary endpoints by @mvdbeek in #22251
- [26.0] Fixes optional integer form handling in templates by @davelopez in #22257
- [26.0] Fix oauth2 template validation by @davelopez in #22253
- [26.0] Drop stored workflow menu entries from user serialization by @mvdbeek in #22254
- [26.0] Replace BaseHTTPMiddleware with pure ASGI middleware for X-Frame-Options by @mvdbeek in #22255
- [26.0] Delete dummy error controller, fix type error on invalid requests by @mvdbeek in #22245
- [26.0] Fix DOMPurify sanitize TypeError in Library components by @dannon in #22263
- [26.0] Make sure origins for data landings are persisted by @d-callan in #22248
- [26.0] Fix HDCA lost in tool form on rerun by @mvdbeek in #22258
- [26.0] Batch-prefetch HDCA job_state_summary in history contents listing by @mvdbeek in #22256
- [25.1] Fix refresh time in object store caches by @bgruening in #22279
- [26.0] Raise error when API client sends invalid parameter keys by @mvdbeek in #22277
- [25.1] Sequence datatypes: only read first character per line for setting metadata by @bernt-matthias in #22276
- [25.1] Fix flaky job search for HDCA inputs on PostgreSQL by @mvdbeek in #22290
- [26.0] Fail early wehn no route match is found by @mvdbeek in #22284
- [26.0] Fix purge for anon histories by @mvdbeek in #22275
- [26.0] Fix HDCA shown as unavailable on tool form rerun by @mvdbeek in #22291
- [26.0] Fix nested DatasetCollectionElement in dynamic options by @mvdbeek in #22287
- [26.0] Fix toolshed static image url encoding by @mvdbeek in #22286
- [26.0] Improve timeout and error handling in
/api/proxyendpoint by @mvdbeek in #22297 - [26.0] Downgrade authnz OAuth callback errors from ERROR/EXCEPTION to WARNING by @mvdbeek in #22300
- [26.0] Fix AttributeError when anonymous user searches workflows with
is:bookmarkedby @mvdbeek in #22296 - [26.0] Raise MessageException instead of generic Exception in rules_dsl by @mvdbeek in #22285
- [26.0] Skip WorkflowHub tests when workflowhub.eu is down by @mvdbeek in #22302
- [26.0] Delay workflow scheduling when collection has unresolved 'auto' extension by @mvdbeek in #22303
- [26.0] Fix atomicity issues when pulling files into object store cache by @mvdbeek in #22304
- [26.0] Mark dataset collections as deleted when purging a history by @mvdbeek in #22315
- [26.0] Fix OMERO temp directory handling by @davelopez in #22262
- [26.0] Handle inaccessible history errors in route-level components by @mvdbeek in #22323
- [26.0] Add optional dataset collection mode to harmonize tool by @mvdbeek in #22236
- [26.0] Fix validation of certain classes of text validators in tools. by @jmchilton in #22280
- [26.0] Ignore aborted requests in rethrowSimple by @mvdbeek in #22325
- [25.1] Discard rest of line in chunks in iter_start_of_line by @mvdbeek in #22332
- [26.0] Fix AbortSignal being serialized as dataset view query parameter by @mvdbeek in #22326
- [26.0] Throw RequestAbortedError instead of returning undefined by @mvdbeek in #22352
- [26.0] Fix slow get_private_role_user_emails_dict query by @mvdbeek in #22307
- [26.0] Strip content-length and accept-ranges headers from proxied streaming responses by @mvdbeek in #22314
- [26.0] Fix tool "Copy Link" generating broken /root?tool_id= URLs by @mvdbeek in #22339
- [26.0] Harden API parameter validation by @mvdbeek in #22351
- [25.1] Fix timestamp parsing in job import/export by @mvdbeek in #22372
- [26.0] Fix Content-Disposition header with trailing whitespace by @mvdbeek in #22379
- [26.0] Don't retry JobNotReadyException in job destination mapping by @mvdbeek in #22377
- [26.0] Remove broken serialize_urls from HDASerializer by @mvdbeek in #22358
- [26.0] Wrap webhook scripts in IIFE to prevent redeclaration errors by @mvdbeek in #22320
- [26.0] Fail job gracefully when output name exceeds 255 character DB limit by @mvdbeek in #22059
- [26.0] Fix invalid request error for get_metadata_file endpoint by @mvdbeek in #22389
- [26.0] Ensure
x-content-truncatedheader is string by @mvdbeek in #22386 - [26.0] Show error message when display action not ready by @mvdbeek in #22383
- [26.0] Fix workflow extract NoneType on LDDA leaf in implicit collection by @jmchilton in #22381
- [26.0] Validate workflow invocation parameters values are dicts by @mvdbeek in #22388
- [26.0] Fix dataset preview rendering to preserve newlines by @mvdbeek in #22397
- [26.0] Offload AsyncClient construction to worker thread by @mvdbeek in #22392
- [26.0] Unwrap HDCAs/DCEs nested in multi data input lists by @mvdbeek in #22405
- [26.0] Silence social_core's noisy handle_http_errors logging by @mvdbeek in #22403
- [26.0] Handle
MaxDiscoveredFilesExceededErrorfor dynamic collections by @mvdbeek in #22402 - [26.0] Serialize data provider errors as MessageException subclasses by @mvdbeek in #22398
- [26.0] Fix HideDatasetAction not applied for cached workflow jobs by @mvdbeek in #22360
- [26.0] Reject HDCA submitted to single data parameter by @mvdbeek in #22406
- [26.0] Pass tool_uuid as proper query parameter instead of reusing URL path id by @mvdbeek in #22309
- [26.0] Fix headings in selenium package readme by @guerler in #22411
🧰 Refactoring
- Version 26.0.dev by @ahmedhamidawan in #21020
- Move database revision tags to separate file by @guerler in #20998
- Remove Trackster by @guerler in #20974
- Remove History Panel proxy by @guerler in #21037
- Convert Modal to plain JavaScript and remove from Galaxy object by @guerler in #21038
- Remove jquery from legacy onload helpers and Rule Builder by @guerler in #21063
- Remove Job.params by @jdavcs in #21075
- Update client API schema by @davelopez in #21147
- Remove legacy Visualization Mako and Controllers by @guerler in #21133
- Refactor client imports for better ES module compatibility by @dannon in #21194
- Refactor display application handling by @guerler in #15076
- Annotates archive explorer tests as Selenium-only by @davelopez in #21341
- Replace Copy Dataset Mako with Vue Component by @guerler in #17507
- Migrate rate limiter tests from Jest to Vitest by @davelopez in #21361
- Remove Tool Runner mako by @guerler in #21235
- Move js-client bootstrapping to FastAPI by @guerler in #21264
- Remove Reports Application by @guerler in #21076
- Replace gulp with native Node.js build script by @dannon in #21370
- Remove unused javascript from toolshed test makos by @guerler in #21387
- Modernize UrlTracker into a Typescript composable by @davelopez in #21490
- Migrate client package manager from Yarn to pnpm by @dannon in #21539
- Adds vue-eslint-parser as a dev dependency by @davelopez in #21588
- Migrate remaining vitest tests from
axios-mock-adaptertouseServerMockby @dannon in #21634 - Remove unused js-dependencies by @guerler in #21621
- Move legacy Visualization Plugins API to FastAPI by @guerler in #21612
- Refactor/cleanup admin_cleanup_datasets.py script by @ccoulombe in #20819
- [26.0] Update version to 26.0.rc1 by @guerler in #21686
- [26.0] Standardize agent API schemas and response metadata by @dannon in #21692
📚 Documentation
Other Changes
- Update revision tags for release 25.1 by @arash77 in #21022
- Add automated npm publishing for client-api package by @dannon in #21533
- Bump default milestone to 26.1 by @guerler in #21628
- Add Database Revision for 26.0 by @guerler in #21675
- [26.0] Show invalid tool error reasons in Tool Shed UI by @mvdbeek in #22040
New Contributors
- @RZ9082 made their first contribution in #21061
- @nguilhot made their first contribution in #21258
- @Syrinx55 made their first contribution in #21347
- @Maed0x made their first contribution in #22242
Full Changelog: v25.1.2...v26.0.0