The GTN renders tool and workflow buttons as spans, so inside the Galaxy webhook they could only be activated with a mouse. Give non-link buttons role="button" and tabindex="0" unless already set, and run the same action on Enter or Space, preventing the page scroll on Space.
Sites such as Zenodo send X-Frame-Options and render as a broken page when a tutorial link is followed inside the proxied GTN iframe. Links that leave the /training-material/ path, including links back to the Galaxy instance, now open in a new tab; tool and workflow links keep their existing handling.
The workflow click handler only climbed one level from the click target, so any nested markup inside a data-workflow button would launch trs_url=undefined. Use the element the listener is bound to, matching the tool handler, and stop leaking trs_url as a global.
GTN renders tool titles through markdown, so names like **Filter** or `Bowtie2` become nested <strong><strong> or <strong><code> inside the data-tool span. Clicking that inner text resolved the parent <strong> instead of the span and opened tool_id=undefined. Read the tool id from the element the listener is bound to, which also stops leaking tool_id as a global.
The GTN webhook's iframe load handler adds classes and click handlers
through contentDocument, which is null once the iframe shows a page from
another origin: the public GTN fallback when /training-material/ is not
proxied, or any external link followed inside the iframe. Every such
load threw "Cannot read properties of null (reading
'getElementsByTagName')".
Sentry: GALAXY-MAIN-4KSCZZZ0019TF
bootstrap-vue renders BFormCheckbox as a `custom-control-input` with
`opacity: 0`, so Selenium reports the `deferred-toggle` input as not
displayed and `element_to_be_clickable` never succeeds. Playwright calls
it visible - opacity is not part of its visibility check - which is why
the step only failed on the Selenium backend.
The label sibling is the visible thing, and clicking it toggles the
checkbox; `upload_activity_helpers.py` already reads state off the input
and clicks the label. The tour highlight now lands on something the user
can see.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Due to the addition of the job information view on the tool success page, the tour mistakenly selects the content item in the outputs section in the tool success view, to explore and explain an expanded content item. This specifies it to select the first content item in the history panel instead, so that remains expanded as we explore the dataset.
Follow-up to https://github.com/galaxyproject/galaxy/pull/21076 , which
removed the `galaxy.webapps.reports` Python package. This finishes the
removal by dropping the `reports` app from `config_manage.py`'s `APPS`,
its config schema and sample YAML, admin docs, Sphinx autodoc stubs, and
associated `Makefile`, `mypy.ini`, `.github/labeler.yml`, and
`.ci/first_startup.sh` entries, plus the now-dead `test_config_manage.py`
tests and fixture.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Migrates interactive tours from the legacy upload dialog to the new activity-based upload interface.
Updates component selectors and step descriptions across multiple core tours—including UI, History, and Visualizations—to reflect the current activity bar navigation. These changes ensure the tours remain functional and accurate for users interacting with the modernized Galaxy interface.
Introduces a new sample configuration to define an allow-list for HTTP headers in external URL fetch requests. This mechanism allows administrators to specify which headers are permitted for different URL patterns, improving security and control over fetch requests.
The configuration also supports marking headers as sensitive, prompting encryption of their values. The sample provides illustrative examples for common services like GitHub, AWS S3, and generic cloud storage.
- Tool Generated Tours have an internal GET FastAPI route.
- That API uses a new `TourManager`.
- The `tour_generator` webhook has been removed entirely.