Skip to content

Commit 92d9f03

Browse files
Merge branch 'merge_25.0_into_25.1_oct' into merge_25.1_into_dev_oct
2 parents f23a469 + 14b118a commit 92d9f03

22 files changed

Lines changed: 420 additions & 66 deletions

File tree

.github/release-drafter.yml

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Release Drafter Configuration for Galaxy
2+
# Implements YY.N.P versioning scheme using existing Galaxy labels
3+
#
4+
# IMPORTANT: Galaxy's versioning scheme is YY.N.P where:
5+
# - YY = Two-digit year (25 for 2025)
6+
# - N = Feature release number (0, 1, 2... - typically 2-3 per year)
7+
# - P = Patch/point release number (0, 1, 2, 3...)
8+
#
9+
# Year transitions (24→25) must be handled manually when creating releases.
10+
11+
name-template: 'Galaxy $RESOLVED_VERSION'
12+
tag-template: 'v$RESOLVED_VERSION'
13+
14+
# Categories for organizing release notes using existing Galaxy labels
15+
categories:
16+
- title: '🎉 Major Changes'
17+
labels:
18+
- 'major'
19+
- 'highlight'
20+
- title: '🚀 New Features'
21+
labels:
22+
- 'kind/feature'
23+
- title: '🔧 Enhancements'
24+
labels:
25+
- 'kind/enhancement'
26+
- title: '🐛 Bug Fixes'
27+
labels:
28+
- 'kind/bug'
29+
- title: '🔒 Security Updates'
30+
labels:
31+
- 'area/security'
32+
- title: '⚡ Performance'
33+
labels:
34+
- 'area/performance'
35+
- title: '🧰 Refactoring'
36+
labels:
37+
- 'kind/refactoring'
38+
- title: '📚 Documentation'
39+
labels:
40+
- 'area/documentation'
41+
- title: '🔧 Admin & Configuration'
42+
labels:
43+
- 'area/admin'
44+
- 'area/configuration'
45+
- title: '🛠️ API Changes'
46+
labels:
47+
- 'area/API'
48+
- title: '🧪 Testing'
49+
labels:
50+
- 'area/testing'
51+
- 'area/testing/api'
52+
- 'area/testing/integration'
53+
- 'area/testing/selenium'
54+
- title: '🏗️ Infrastructure & Dependencies'
55+
labels:
56+
- 'area/dependencies'
57+
- 'area/client-build'
58+
59+
# Exclude certain labels from release notes
60+
exclude-labels:
61+
- 'triage'
62+
- 'procedures'
63+
- 'planning'
64+
- 'merge'
65+
- 'status/needs feedback'
66+
- 'status/planning'
67+
68+
# Template for each change line
69+
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
70+
71+
# Characters to escape in titles
72+
change-title-escapes: '\<*_&'
73+
74+
# Version is read from lib/galaxy/version.py by the workflow
75+
# No version-resolver needed since Galaxy manages versions manually
76+
77+
# Template for the release body
78+
template: |
79+
## Changes in $RESOLVED_VERSION
80+
81+
$CHANGES
82+
83+
**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION

.github/workflows/build_container_image.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
id: buildargs
4444
run: |
4545
echo "gitcommit=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
46-
echo "builddate=$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
46+
echo "builddate=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
4747
4848
- name: Set up Docker Buildx
4949
uses: docker/setup-buildx-action@v3
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Release Drafter
2+
3+
on:
4+
push:
5+
branches:
6+
- dev
7+
- master
8+
- 'release_*'
9+
pull_request_target:
10+
types: [opened, reopened, synchronize]
11+
12+
permissions:
13+
contents: read
14+
15+
jobs:
16+
update_release_draft:
17+
permissions:
18+
contents: write
19+
pull-requests: write
20+
if: github.repository == 'galaxyproject/galaxy'
21+
runs-on: ubuntu-latest
22+
steps:
23+
- uses: actions/checkout@v4
24+
with:
25+
ref: dev
26+
sparse-checkout: |
27+
lib/galaxy/version.py
28+
29+
- name: Read Galaxy version
30+
id: galaxy-version
31+
run: |
32+
# Extract VERSION_MAJOR from version.py (e.g., "25.1")
33+
VERSION_MAJOR=$(grep '^VERSION_MAJOR' lib/galaxy/version.py | cut -d'"' -f2)
34+
RELEASE_VERSION="${VERSION_MAJOR}.0"
35+
echo "version=${RELEASE_VERSION}" >> $GITHUB_OUTPUT
36+
echo "Galaxy release version: ${RELEASE_VERSION}"
37+
38+
- uses: release-drafter/release-drafter@v6
39+
with:
40+
config-name: release-drafter.yml
41+
version: ${{ steps.galaxy-version.outputs.version }}
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.k8s_ci.Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,14 @@ RUN set -xe; \
150150
locales \
151151
vim-tiny \
152152
nano-tiny \
153+
netcat-openbsd \
153154
curl \
154155
procps \
155156
less \
156157
bzip2 \
157158
tini \
158159
nodejs \
160+
wget \
159161
&& update-alternatives --install /usr/bin/nano nano /bin/nano-tiny 0 \
160162
&& update-alternatives --install /usr/bin/vim vim /usr/bin/vim.tiny 0 \
161163
&& echo "set nocompatible\nset backspace=indent,eol,start" >> /usr/share/vim/vimrc.tiny \

client/src/components/Collections/ListWizard.vue

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { showHid } from "./common/useCollectionCreator";
1919
import type { WhichListBuilder } from "./ListWizard/types";
2020
import { useAutoPairing } from "./usePairing";
2121
22+
import LoadingSpan from "../LoadingSpan.vue";
2223
import ListCollectionCreator from "./ListCollectionCreator.vue";
2324
import WhichBuilder from "./ListWizard/WhichBuilder.vue";
2425
import PairedOrUnpairedListCollectionCreator from "./PairedOrUnpairedListCollectionCreator.vue";
@@ -199,16 +200,22 @@ function onRuleState(newRuleState: boolean) {
199200
<template>
200201
<div v-if="currentHistoryId">
201202
<div v-if="creationError">
202-
<BAlert variant="danger">
203+
<BAlert variant="danger" show>
203204
{{ creationError }}
204205
</BAlert>
205206
</div>
206207
<div v-if="collectionCreated">
207208
<BAlert variant="success" show> Collection created and it has been added to your history. </BAlert>
208209
</div>
209-
<div v-else-if="!selectedItems">Loading...</div>
210+
<div v-else-if="!selectedItems">
211+
<BAlert variant="info" show>
212+
<LoadingSpan />
213+
</BAlert>
214+
</div>
210215
<div v-else-if="selectedItems.length == 0">
211-
<p>Select datasets from history panel to use the Galaxy list building wizard.</p>
216+
<BAlert variant="info" show>
217+
Select datasets from the history panel to use the Galaxy list building wizard.
218+
</BAlert>
212219
</div>
213220
<GenericWizard v-else :use="wizard" :is-busy="isBusy" :submit-button-label="buildButtonLabel" @submit="submit">
214221
<div v-if="wizard.isCurrent('which-builder')">

client/src/components/Collections/ListWizard/WhichBuilder.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function toggleAdvanced() {
3434
<b>Flat List</b>
3535
</BCardTitle>
3636
<div>
37-
This options creates a simple flat list of files. If your data isn't nested and does not contained
37+
This option creates a simple flat list of files. If your data isn't nested and does not contained
3838
paired datasets, this is the the option to choose.
3939
</div>
4040
</BCard>
@@ -47,8 +47,8 @@ function toggleAdvanced() {
4747
<b>List of Paired Datasets</b>
4848
</BCardTitle>
4949
<div>
50-
This options creates a uniform list of paired datasets, use this option if all of your data should
51-
be paired off.
50+
This option creates a uniform list of paired datasets, use this option if all of your data should be
51+
paired off.
5252
</div>
5353
</BCard>
5454
<BCard

client/src/components/Collections/wizard/WhichWorkbookCollectionType.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ defineProps<Props>();
2626
<b>Flat List</b>
2727
</BCardTitle>
2828
<div>
29-
This options creates a simple flat list of files. If your data isn't nested and does not contained
30-
paired datasets, this is the the option to choose.
29+
This option creates a simple flat list of files. If your data isn't nested and does not contained
30+
paired datasets, this is the option to choose.
3131
</div>
3232
</BCard>
3333
<BCard
@@ -39,8 +39,8 @@ defineProps<Props>();
3939
<b>List of Paired Datasets</b>
4040
</BCardTitle>
4141
<div>
42-
This options creates a uniform list of paired datasets, use this option if all of your data should
43-
be paired off.
42+
This option creates a uniform list of paired datasets, use this option if all of your data should be
43+
paired off.
4444
</div>
4545
</BCard>
4646
</BCardGroup>

client/src/components/Common/Wizard/GenericWizard.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,11 @@ const bodyStyle = computed(() => {
344344
.card-header {
345345
border-radius: 0;
346346
}
347+
348+
&:hover {
349+
border-color: lighten($brand-primary, 20%);
350+
cursor: pointer;
351+
}
347352
}
348353
}
349354
</style>

client/src/components/History/CurrentCollection/CollectionOperations.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ const showCollectionDetailsUrl = computed(() =>
2222
);
2323
const disableDownload = props.dsc.populated_state !== "ok";
2424
25+
const hasSampleSheet = computed(() => {
26+
return props.dsc.collection_type && props.dsc.collection_type.startsWith("sample_sheet");
27+
});
28+
2529
const sheetUrl = computed(() => {
2630
return `${getAppRoot()}collection/${props.dsc.id}/sheet`;
2731
});
@@ -68,7 +72,7 @@ function onDownload() {
6872
<span>Run Job Again</span>
6973
</b-button>
7074
<b-button
71-
v-if="sheetUrl"
75+
v-if="hasSampleSheet && sheetUrl"
7276
class="rounded-0 text-decoration-none"
7377
size="sm"
7478
variant="link"

client/src/components/History/CurrentHistory/HistoryOperations/SelectionOperations.vue

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,14 @@ export default {
303303
const { setSelectedItems } = useCollectionBuilderItemSelection();
304304
const selection = Array.from(this.contentSelection.values());
305305
setSelectedItems(selection);
306-
this.$router.push({ path: `/collection/new_list?advanced=${advanced}` });
306+
307+
if (this.$route.path === "/collection/new_list") {
308+
// vue-router 4 supports a native force push with clean URLs, but we're using a __vkey__
309+
// bit as a workaround to allow the builder to be invoked consecutively
310+
this.$router.push({ path: `/collection/new_list?advanced=${advanced}` }, { force: true });
311+
} else {
312+
this.$router.push(`/collection/new_list?advanced=${advanced}`);
313+
}
307314
},
308315
// Selected content manipulation, hide/show/delete/purge
309316
hideSelected() {

0 commit comments

Comments
 (0)