Commit Graph
93504 Commits
Author SHA1 Message Date
mvdbeek af2fa367e8 LazyToolBox: complete tool indexing for multi-version, <tool_dir>, and YAML-id tools
Round out the index discovery so the lazy toolbox boots against the full
shipping tool set:

- ``scripts/tool_source/_discover.py`` now handles ``<tool_dir>`` panel
  entries and reads YAML tool ids alongside XML, so multi-version tool
  directories and YAML tools land in the index.
- ``LazyToolBox`` extends the bootstrap path to register every variant
  discovered for a single tool id (was previously dropping siblings) and
  uses the shared YAML id reader when chasing direct ``<tool file=...>``
  references from the panel config.
- ``DatabaseToolSourceStore.store_index`` accepts the richer per-id
  payload from the discovery script.

Test coverage is extended in ``test_tool_source_storage`` to assert that
the bootstrapped index sees both directory-based and YAML-defined tools.
2026-07-28 17:26:56 +02:00
mvdbeek 6d05f52cd3 Run api and integration workflows under LazyToolBox
Wires populate_store.py and ``use_lazy_toolbox: true`` into the api
and integration GitHub Actions workflows so the LazyToolBox path is
exercised in CI alongside the default eager toolbox.
2026-07-28 17:26:56 +02:00
mvdbeek 59d24e5e43 Add tool source storage admin and dev documentation
- doc/source/admin/tool_source_storage.rst: operator-facing guide
  covering backend choice, populate_store usage, watch mode, and the
  per-conf composite story.
- doc/source/dev/tool_source_storage.rst: developer-facing
  architecture overview of the store, LazyToolBox, and the batch
  endpoint integration.
2026-07-28 17:26:56 +02:00
mvdbeek 995a8f621b Add integration test for tool source storage and LazyToolBox
End-to-end test that boots Galaxy through the composite store +
LazyToolBox path and verifies tools are discoverable via /api/tools,
covering the wiring exercised by all of the preceding commits.
2026-07-28 17:26:56 +02:00
mvdbeek b639bed95a Route batch tool source endpoints through the LazyToolBox index
Replaces ad-hoc iteration over ``app.toolbox`` in the
``/api/tools``, ``/api/tool_panels``, tests-summary, and
``/api/tools/all_requirements`` endpoints with service methods that
query the LazyToolBox pre-computed index when available, falling
back to the existing toolbox path otherwise. This converts the
batch endpoints from O(N tools) to O(1) when the lazy toolbox is in
use, without changing behavior for the default eager toolbox.
2026-07-28 17:26:56 +02:00
mvdbeek 53aa0cf95f Add LazyToolBox and wire it into the Galaxy app
LazyToolBox extends ToolBox and loads each Tool on demand from the
configured tool source store, backed by an LRU cache sized via
``lazy_toolbox_cache_size``. The pre-computed index lets batch
endpoints (panels, tests summary, requirements) avoid materializing
every tool object.

- tools/lazy_toolbox.py: the on-demand toolbox plus its index cache
  invalidation hook.
- tool_util/toolbox/base.py and parser.py: small extension points
  needed for lazy loading.
- tools/__init__.py: helpers shared with LazyToolBox.
- queue_worker/__init__.py: route ``_get_new_toolbox`` through
  LazyToolBox when opted in, and add the
  ``reload_tool_source_cache`` control message used by
  populate_store --watch to invalidate caches across processes.
- app/__init__.py and galaxy_mock.py: build the tool source store at
  app startup and use LazyToolBox when ``use_lazy_toolbox`` is set.
2026-07-28 17:26:54 +02:00
John Chilton 0a3497a694 Merge pull request #23186 from mvdbeek/annotate-trans
Annotate trans across the codebase
2026-07-28 10:48:53 -04:00
Marius van den Beek 07a1e93693 Merge pull request #23179 from galaxybot/dev_auto_update_dependencies
Update Python dependencies
2026-07-28 16:48:42 +02:00
mvdbeek fdf016e6f9 Merge branch 'release_26.1' into dev 2026-07-26 11:09:00 +02:00
mvdbeek e78dcdf3ae Merge branch 'release_26.0' into release_26.1 2026-07-26 11:04:51 +02:00
Nicola Soranzo 8f9583f4ac Disallow pebble 5.2.1
due to https://github.com/noxdafox/pebble/issues/164 .
2026-07-25 18:58:46 +01:00
Nicola Soranzo 537f447a06 Fix ISC004 errors reported by ruff 0.16.0 2026-07-25 17:36:10 +01:00
Björn Grüning 3076367efd Merge pull request #23176 from mvdbeek/issue-23175-assertionerror
[26.0] Fix AssertionError remapping malformed galaxy markdown blocks
2026-07-25 11:05:14 +02:00
galaxybot 424b1024de Update Python dependencies
by running `make update-dependencies`.
2026-07-25 04:05:05 +00:00
Björn Grüning 9ff63f517d Merge pull request #23165 from itisAliRH/remove-bcollapse-navbar-usages
Remove last BCollapse usages from markdown navbar elements
2026-07-24 22:40:08 +02:00
mvdbeek 21676bfc2a Fix AssertionError remapping malformed galaxy markdown blocks
_remap_container saved the directive line while looping over the
container's lines, but then re-matched GALAXY_MARKDOWN_FUNCTION_CALL_LINE
against the loop variable holding the container's *last* line. For stored
report markdown that was never validated (e.g. an unclosed ```galaxy
fence swallowing following prose), the re-match returned None and the
subsequent assert produced an unhandled 500 on
GET /api/invocations/{invocation_id}/report.

Keep the match object found in the loop instead, and turn the assert on
a second directive within one block into MalformedContents so malformed
user content yields a 4xx rather than an AssertionError.

Fixes #23175
Fixes USEGALAXY-EU-MAIN-61HFG00001W43
2026-07-24 18:42:05 +02:00
Alireza Heidari a8a7893ced Merge pull request #23172 from davelopez/26.1_fix_wf_editor_navigation_discard_changes
[26.1] Prevents loss of unsaved changes on navigation
2026-07-24 16:06:54 +02:00
davelopez c10516be2f Prevents loss of unsaved changes on navigation
Adds a router guard that prompts users to confirm navigation when unsaved changes exist. This stops accidental data loss in editors. Also standardizes early returns in access control logic for consistency.
2026-07-24 13:58:54 +02:00
Marius van den Beek 1e9cd1d787 Merge pull request #23120 from mvdbeek/tool-data-followup
Relativize bundle paths from the known job output root
2026-07-24 13:22:02 +02:00
Marius van den Beek 157c468dd8 Merge pull request #23163 from mvdbeek/issue-22719-fasta-preview-looks-horrible 2026-07-24 08:02:08 +02:00
John Chilton 8720f0e44a Merge pull request #23153 from guerler/fix_filepath_getter
Guard filepath resolution against purged datasets
2026-07-23 20:11:00 -04:00
John Chilton 11d7d2aab0 Merge pull request #23084 from guerler/toolrequests.002
Align async tool requests with sync execution
2026-07-23 19:35:47 -04:00
Nicola Soranzo 50f1b5dbbd Merge pull request #23166 from galaxyproject/dependabot/github_actions/actions-6d9b77fb89
build(deps): bump the actions group with 6 updates
2026-07-23 21:53:16 +01:00
dependabot[bot] 5b83858860 build(deps): bump the actions group with 6 updates
Bumps the actions group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/setup-node](https://github.com/actions/setup-node) | `6.4.0` | `7.0.0` |
| [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) | `3.0.3` | `4.0.0` |
| [dieghernan/cff-validator](https://github.com/dieghernan/cff-validator) | `5.0.1` | `5.1.1` |
| [github/codeql-action](https://github.com/github/codeql-action) | `4.37.0` | `4.37.1` |
| [actions/labeler](https://github.com/actions/labeler) | `6.2.0` | `7.0.0` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.5.7` | `0.6.0` |


Updates `actions/setup-node` from 6.4.0 to 7.0.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.4.0...v7.0.0)

Updates `slackapi/slack-github-action` from 3.0.3 to 4.0.0
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Changelog](https://github.com/slackapi/slack-github-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/slackapi/slack-github-action/compare/v3.0.3...v4.0.0)

Updates `dieghernan/cff-validator` from 5.0.1 to 5.1.1
- [Release notes](https://github.com/dieghernan/cff-validator/releases)
- [Changelog](https://github.com/dieghernan/cff-validator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/dieghernan/cff-validator/compare/v5.0.1...v5.1.1)

Updates `github/codeql-action` from 4.37.0 to 4.37.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v4.37.0...v4.37.1)

Updates `actions/labeler` from 6.2.0 to 7.0.0
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v6.2.0...v7.0.0)

Updates `zizmorcore/zizmor-action` from 0.5.7 to 0.6.0
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/192e21d79ab29983730a13d1382995c2307fbcaa...6599ee8b7a49aef6a770f63d261d214911a7ce02)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: slackapi/slack-github-action
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: dieghernan/cff-validator
  dependency-version: 5.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: github/codeql-action
  dependency-version: 4.37.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/labeler
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-23 16:31:27 +00:00
Marius van den Beek 39e50a5dfe Merge pull request #23152 from mvdbeek/cwl-output-json-unhandled-collection-types-fix
[26.0] Handle sample_sheet and paired_or_unpaired collections in output_to_cwl_json
2026-07-23 15:30:25 +02:00
Marius van den Beek 5a3c0ba723 Merge pull request #23159 from sveinugu/env_galaxy_for_remote_eval
Use GALAXY_PYTHON for remote_tool_eval
2026-07-23 15:29:36 +02:00
Marius van den Beek bf4894fac1 Merge pull request #23162 from mvdbeek/26_0_into_dev
Merge 26.1 into dev
2026-07-23 15:19:42 +02:00
mvdbeek 0ce09ceb66 Fix fasta preview rendering for sequences larger than 100 KB
Sequence.display_data set the text/plain content-type only on the
non-truncated preview branch. Sequences larger than the 100 KB peek
limit were returned without a content-type, so the browser fell back to
text/html: newlines collapsed and the header line ran into the sequence
(the "horrible" fasta preview). Serve text/plain for both branches.

Also stop dropping the final byte of small previews -- the read-ahead
byte that chunk[:-1] removes is only present when the content is
truncated.

Fixes #22719
2026-07-23 15:04:14 +02:00
Alireza Heidari 8e6f36cf61 Remove last BCollapse usages from markdown navbar elements
JobSelection and DatasetCollectionElementPicker used b-collapse with
is-nav inside a non-toggleable b-navbar, so the collapse never actually
collapses: the navbar-expand class forces it visible at every width.
Replace it with a static div.navbar-collapse, which renders identically
(same computed layout) without bootstrap-vue's BCollapse.

Finishes the BCollapse removal started in #21958 (part of #21956).
GCollapse is not used here because nothing toggles; it targets real
collapsible sections, not navbar plumbing.
2026-07-23 14:24:36 +02:00
mvdbeek 0e4beaa04f Merge branch 'release_26.1' into dev 2026-07-23 12:36:49 +02:00
mvdbeek 84d19ac1af Merge branch 'release_26.0' into release_26.1 2026-07-23 12:32:01 +02:00
David López de59688c84 Merge pull request #22231 from itisAliRH/btable-to-gtable-selection-dialogs
Migrate Selection Dialog Components from BTable to GTable
2026-07-23 12:16:40 +02:00
Marius van den Beek 7ba6f9f751 Merge pull request #22857 from jmchilton/wes-bugs
[26.0] WES Bug Fixes
2026-07-23 12:01:24 +02:00
Alireza Heidari 28af5a03ae Make selection dialog checkboxes select like a row click
GTable's row checkbox emits a "row-select" event, but SelectionDialog only
handled "row-click" — so toggling a checkbox was dropped. Clicking a folder's
checkbox did nothing (it reverted to its indeterminate/prior state) while
clicking the row selected the whole directory, an inconsistent, broken-looking
result. Forward "row-select" to the same "onClick" emit so a checkbox toggle
drives identical selection to a row click for both files and folders.
2026-07-22 19:30:09 +02:00
Alireza Heidari 83dcb747b8 Show pointer cursor across the whole GTable selection checkbox
The row/select-all checkbox is a Bootstrap custom-control: the visible box is
the (empty) label's ::before and the real input is visually hidden, both
defaulting to the arrow cursor. Clicking already worked via the label, but the
non-pointer cursor made the checkbox look unclickable except at its top edge
(where the cell showed through). Force a pointer cursor across the control.
2026-07-22 18:53:38 +02:00
Alireza Heidari 4f26f69d7d Collapse selection dialog rows to a single selectionState source
Producers set only selectionState; the redundant per-item 'class' field and
the any-cast/hasClass derivation are gone. SelectionDialog derives both
selected and indeterminate (MIXED) row indices from selectionState, so
partially-selected folders now show an indeterminate checkbox instead of
being dropped. Remove the dead allSelected prop (GTable derives it) and the
redundant manual syncSelectedItems() calls, thread the select-all direction
through to producers, drop the unused cellClass field, and restore the
DataDialogSearch v-model. Tests use SELECTION_STATES constants and cover the
indeterminate case.
2026-07-22 18:08:58 +02:00
Alireza Heidari b90f8c4853 Support indeterminate row checkboxes and emit select-all direction in GTable
Add an optional indeterminateItems prop so a row's selection checkbox can
render as indeterminate (e.g. a folder with only some children selected),
and pass the new checkbox state through the select-all event so parents no
longer have to re-derive the toggle direction. Promote the previously local
TableItemClassMeta type to GTable.types.ts as the canonical shape.
2026-07-22 18:06:04 +02:00
Alireza Heidari fa7684ffb3 Click history label cell to open it in import-from-history dialog
The import-datasets-from-history selenium flow first opens a history
(a non-leaf row) before selecting datasets. Opening requires the row's
label cell, whose onOpen handler drills into the history; clicking the
bare row only fires onClick (dataset selection), so the datasets view
never appeared and the 'search datasets' step timed out.

Target the label cell (td[id^="g-table-cell-label-"]) for the by-index
selector, matching the pre-migration behaviour. Verified locally with
the headless selenium test_library_contents suite.
2026-07-22 18:06:04 +02:00
Alireza Heidari 3ed5af31e4 Restore selection dialog row selenium hooks on GTable
The BTable-to-GTable migration dropped BTable's per-row test hooks
(data-pk from primary-key, aria-rowindex), breaking selenium selectors
that pick rows by dataset id or by position across library contents,
page embeds, workflow run inputs and the upload rule builder.

Add an optional primaryKey prop to GTable that emits data-pk on each
row, plus a 1-based aria-rowindex. SelectionDialog passes primary-key=
"id". Update the import-datasets-by-index selector to aria-rowindex
(fixing an off-by-one vs GTable's 0-based row ids) and the by-id
selectors to tr[data-pk] (tr already has an implicit row role).
2026-07-22 18:06:04 +02:00
Alireza Heidari f4c8f81b03 Expose aria-busy on GTable reflecting loading state
The selection dialog 'options_ready' selenium selector waits on
.selection-dialog-table[aria-busy="false"], previously provided by
BTable. GTable did not emit aria-busy, so FilesDialog-based flows
(e.g. history export to FTP) timed out. Reflect the loading prop as
aria-busy on the table container to restore that contract and improve
accessibility.
2026-07-22 18:06:04 +02:00
Alireza Heidari ebc238f9d9 Update busy spinner selector
- Change the selector for the busy spinner in the selection dialog to use a data attribute for better specificity.
- Update the corresponding import dataset selector to match the new structure.
2026-07-22 18:06:03 +02:00
Alireza Heidari 6828f536ad Fix FilesDialog select-all status with GTable
Update FilesDialog tests to assert the GTable header checkbox state instead of the removed SelectionDialog selectAllVariant prop.\n\nAdd SelectionDialog regression tests that verify select-all checked/indeterminate behavior from incoming item selection metadata.\n\nKeep selected row indices synchronized with incoming table items so select-all state remains correct after directory navigation and recursive selection updates.
2026-07-22 18:06:03 +02:00
Alireza Heidari e91711d3f5 Fix Model import to DataDialog component
- Imported the Model from the local model file to enhance functionality within the DataDialog component.
2026-07-22 18:06:03 +02:00
Alireza Heidari bba2b438a3 Simplify select all logic
- Removed computed property for selectAllIcon.
- Updated props for selection dialog to use allSelected directly.
- Enhanced clarity in the selection handling for datasets.
2026-07-22 18:06:03 +02:00
Alireza Heidari 0112401154 Update selection handling in FilesDialog
- Remove unused selectAllIcon state.
- Replace selectAllIcon with allSelected prop for better clarity.
- Adjust SelectionDialog props for improved functionality.
2026-07-22 18:06:03 +02:00
Alireza Heidari f99e89f08a Refactor SelectionDialog component
- Remove unused select icon field and related props.
- Rename props for clarity: selectAllVariant to selectable, showSelectIcon to allSelected.
- Implement syncSelectedItems function to manage selected items based on item classes and selection state.
- Update event handling for row clicks and select all actions to utilize syncSelectedItems.
2026-07-22 18:06:03 +02:00
Alireza Heidari e1b22b23f5 Rename _rowVariant to selectionState
- Updated the variable name from _rowVariant to selectionState for clarity.
- Added a class binding based on the selection state to enhance UI feedback.
2026-07-22 18:06:02 +02:00
Alireza Heidari 9cd8d9c69e Rename _rowVariant to selectionState
- Updated the FilesDialog component to use 'selectionState' instead of '_rowVariant' for better clarity.
- Adjusted related test cases to reflect this change.
- Ensured consistent handling of selection states across the component.
2026-07-22 18:06:02 +02:00
Alireza Heidari 5bf3173844 Update selection state handling in SelectionDialog
- Change the icon selection logic to use selectionState instead of _rowVariant.
- Update SelectionItem interface to replace _rowVariant with selectionState.
- Ensure proper type imports for TableClassValue in selectionTypes.
2026-07-22 18:06:02 +02:00
Alireza Heidari fb5b2ef217 Enhance TableField with TableClassValue type
- Introduced TableClassValue type for better class management in GTable.
- Updated TableField interface to use TableClassValue for class and cellClass properties.
- Modified GTable.vue to utilize new class handling for rows and cells.
2026-07-22 18:06:02 +02:00