Commit Graph

93468 Commits

Author SHA1 Message Date
mvdbeek 0ed5fd28f1 Add config-driven Galaxy subdomain switcher
Expose an ordered subdomain_switcher site list through the public configuration API and render valid non-current origins as native masthead anchor items.

This replaces deployment-specific webhook JavaScript with an opt-in core mechanism that preserves site ordering and exact root destinations for every masthead variant.
2026-08-27 10:38:41 +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
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
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
Alireza Heidari f616fa5902 Update DataDialogSearch component in SelectionDialog
- Change v-model to use :value and @input for filter binding
- Ensure proper data flow for search functionality
2026-07-22 18:06:02 +02:00
Alireza Heidari 34ff50700b Update fields to use TableField type in dialogs
- Changed fields definitions in DataDialog, FilesDialog, BasicSelectionDialog, and HistoryDatasetPicker components to explicitly use TableField type.
- Added labels for fields in each dialog to improve clarity and consistency.
2026-07-22 18:06:01 +02:00
Alireza Heidari 1d49ca538f Replace BTable with GTable in DatasetCollectionDialog tests
- Updated the test file to remove the BTable component.
- Integrated GTable component to align with recent UI changes.
- Ensured that the tests reflect the current component structure.
2026-07-22 18:06:01 +02:00
Alireza Heidari 552943ed7f Replace BTable with GTable in SelectionDialog tests
- Updated the SelectionDialog test file to replace instances of BTable with GTable.
- Ensured that the tests correctly check for the existence of GTable instead of BTable.
2026-07-22 18:06:01 +02:00
Alireza Heidari 024366260c Remove unused FieldEntry interface
- Deleted the FieldEntry interface from selectionTypes.ts as it is no longer needed.
- This change helps to clean up the code and improve maintainability.
2026-07-22 18:06:01 +02:00
Alireza Heidari 5044379dc3 Update SelectionDialog component
- Remove deprecated BTable in favor of GTable for improved functionality.
- Update field types from FieldEntry to TableField for consistency.
- Enhance sorting and filtering capabilities with new computed properties.
- Refactor event handling for row clicks and sorting changes.
- Improve pagination reset logic when filters are applied.
2026-07-22 18:06:01 +02:00
Ahmed Hamid Awan e7272a77d1 Merge pull request #23154 from itisAliRH/fix/formdata-alert-height
Fix FormData no-options alert height and align the accepted-formats/column-select controls
2026-07-22 11:04:37 -05:00
Sveinung 7cfbc9485e fix(jobs): run remote_tool_eval with GALAXY_PYTHON 2026-07-22 15:44:46 +02:00
Marius van den Beek d5c8fd2293 Merge pull request #23156 from ahmedhamidawan/fix_issue_23148
[26.1] Fix `set_history` committing None `galaxy_session`
2026-07-22 15:35:41 +02:00
mvdbeek 3240ca17f4 Deny cookieless anonymous history copies instead of orphaning them
POST /api/histories may copy a published history for anonymous users,
but a request with neither an API key nor a galaxysession cookie has no
galaxy_session to own the result. Previously this crashed in set_history
(sa_session.add(None), issue #23148); with the set_history guard from the
previous commit it would instead silently perform the (potentially
expensive) copy and return a history the caller can never reach again.

Reject that case up front in HistoriesService.create with a 403 rather
than doing wasted work. Legitimate anonymous copies from the browser are
unaffected: the SPA shell is served by the legacy WSGI route, which mints
a galaxysession cookie, so those requests always carry a session.

Replace the set_history unit test with an API test that drives the real
request path: a cookieless copy of a published history now returns 403.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-22 11:26:42 +02:00