Skip to content

Add Beta Upload Activity - User Interface Redesign#21338

Merged
dannon merged 134 commits intogalaxyproject:devfrom
davelopez:explore_upload_activity
Jan 27, 2026
Merged

Add Beta Upload Activity - User Interface Redesign#21338
dannon merged 134 commits intogalaxyproject:devfrom
davelopez:explore_upload_activity

Conversation

@davelopez
Copy link
Copy Markdown
Contributor

@davelopez davelopez commented Nov 20, 2025

This PR introduces a new, beta upload experience for Galaxy, available alongside the existing upload dialog. The new interface moves from a modal-based approach to a dedicated activity panel with a method-first workflow and clearer separation between different import mechanisms.

The interface is clearly marked with a Beta to indicate it's in the testing phase. The goal is to gather user feedback on the new upload flow before replacing the traditional Upload Dialog in a future release.

Note

To provide feedback comment on discussion issue: #21340

image

How to Activate the Beta Upload

The beta upload interface is opt-in and can be accessed through the activity bar:

  1. Click the "More" (⋯) button at the bottom of the activity bar (left sidebar)
  2. Find "Beta Upload" in the additional activities list
  3. Click to enable or "add to favorites"
  4. Drag the activity icon to the top section for easy access and close the "More" menu when done
  5. Click the "Beta Upload" icon in the activity bar to open the new upload panel
image

Key Improvements

1. Method-First Discovery

Before: Single modal with 4 tabs (Regular/Composite/Collection/Rules Builder) requiring users to understand Galaxy's upload taxonomy upfront.

Now: A set of explicitly separated import methods presented as a searchable list with clear names, descriptions, and contextual tips:

  • Upload from Computer - Local file selection with drag & drop
  • Paste/Fetch Data - Direct content pasting or URL imports
  • Choose Remote Files - Cloud storage and FTP browsers
  • Data Libraries - Import from shared data libraries
  • Browse ZIP Archive - Extract and import from ZIP files
  • Data Source Tools - Launch Galaxy data source tools (e.g., NCBI, UCSC, ENA)
  • Import Entire History - Clone complete analysis histories
  • Import Workflow - Load workflow definitions
  • Rule-based Import - Advanced bulk import (requires Advanced Mode toggle)

Each method includes contextual tips intended to guide users toward the most appropriate import option and best practices.

image

2. Staging Area for Local and Remote Files

Before: The elements selected in the upload modal were lost if navigation occurred.

Now:

  • Staging across method interactions - Upload elements selected via upload methods can be reviewed and adjusted before starting the upload and persist across navigation within the upload panel (please note: local files cannot persist across full browser reloads due to browser security restrictions)
  • Incremental batch building - Add more files before starting an upload
  • Per-file configuration - Adjust name, datatype, genome build, and conversion options prior to upload
  • Clear visual feedback - Table-based review of staged files with inline validation
image

3. Integrated Collection Creation

  • Pre-upload collection configuration - Declare intent before uploading for simple collection types
  • Automatic pairing detection - Common paired-end naming conventions are detected where applicable
  • Real-time validation - Prevents invalid configurations (e.g., odd file count for pairs)
  • Automatic creation - Collection built immediately after successful uploads
image

4. Upload Progress Tracking

  • In-panel progress indicator - Shows active uploads in the panel header

  • Dedicated progress page - A full progress view is available at /upload/progress

  • Batch grouping - Collection uploads are displayed together with aggregate progress

  • Status updates for individual uploads and collection-related operations

  • Rich file details:

    • Upload progress percentage
    • File size and type indicators
    • Target history with quick-switch links
    • Elapsed time since upload started
    • Clear error messages with actionable guidance when possible/available
  • Persistent history - Completed uploads remain visible until manually cleared

image

5. Advanced Mode Toggle

  • Progressive disclosure - Advanced features hidden by default
  • Per-user preference - Setting persisted across sessions (same browser)
  • Filtered methods - Rule-based Import only shown in Advanced Mode
  • Simplified controls - POSIX line ending options hidden unless needed

6. Target History Selection

Before: Uploads always went to current history.

Now:

  • History selection - Choose destination history before uploading
  • Visual confirmation - Target history clearly displayed during upload
  • Quick switching - Links to switch to target history from progress view
  • Per-upload selection - Target history is selected as part of the upload flow
image

Technical Notes

Architecture

  • Modular component system - Upload methods independently registered and loaded
  • TypeScript throughout - Type-safe implementation with comprehensive interfaces
  • Composable business logic - Reusable upload queue, staging, and collection creation composables
  • Client-side routing - Deep-linkable upload workflows (/upload, /upload/local-file, /upload/progress)

Known Limitations

⚠️ The following features are not yet implemented in the beta upload interface:

  1. Composite datatypes - Complex multi-file datatypes are not currently handled. Use the legacy upload dialog for these cases.

  2. Some specialized upload scenarios - If you encounter issues with specific workflows, please report them in the discussion issue here and use the legacy dialog as a fallback. You are welcome to test the beta upload for general use cases or use the discussion to request specific missing features or provide feedback.

The traditional Upload Dialog remains available and fully functional during the beta period.

We Need Your Feedback!

This beta release is specifically designed to gather user feedback before replacing the legacy upload dialog. We're particularly interested in:

  • Ease of discovery - Can you find the upload method you need?
  • Workflow efficiency - Does the new interface save you time?
  • Clarity - Are the tips and guidance helpful?
  • Error handling - If uploads fail, are error messages actionable or clear?
  • Collection creation - Does the integrated workflow make sense?
  • Missing features - What capabilities from the old dialog do you miss?
  • Pain points - What's confusing or frustrating?

How to test the changes?

License

  • I agree to license these and all my past contributions to the core galaxy codebase under the MIT license.

Comment thread client/src/api/upload.ts Outdated
@davelopez davelopez force-pushed the explore_upload_activity branch 2 times, most recently from 56bb2d1 to f371854 Compare November 27, 2025 20:39
@davelopez davelopez force-pushed the explore_upload_activity branch 5 times, most recently from 913733a to 3a1aca6 Compare December 15, 2025 12:09
@davelopez davelopez force-pushed the explore_upload_activity branch 3 times, most recently from 8eb65c4 to fa1964e Compare January 14, 2026 09:37
@davelopez davelopez force-pushed the explore_upload_activity branch 2 times, most recently from f51cce0 to 75adf9e Compare January 20, 2026 14:54
@davelopez davelopez force-pushed the explore_upload_activity branch 3 times, most recently from bdc4b3b to 7c0ca71 Compare January 23, 2026 18:44
This way we can have more control  about the content, how to validate it, suggest using deferred data, etc.
Name and description already cover the same words for searching so no need for it for now.
Introduces a registry-driven upload method architecture, enabling dynamic selection and configuration of upload types. Moves upload logic into modular, async-loaded components. Lays groundwork for easier extensibility, improved user experience, and future integration of new import workflows.
Introduces automatic rotation for tips, starting with a random tip and allowing the interval to be customized. Enhances user engagement and ensures timely tip visibility without manual interaction. Cleans up rotation timer on unmount to prevent memory leaks.
@davelopez davelopez marked this pull request as ready for review January 26, 2026 17:21
@davelopez davelopez added kind/enhancement kind/refactoring cleanup or refactoring of existing code, no functional changes labels Jan 26, 2026
@davelopez davelopez changed the title Explore Upload Activity Redesign Add Beta Upload Activity - User Interface Redesign Jan 26, 2026
@davelopez davelopez added this to the 26.0 milestone Jan 26, 2026
@github-actions github-actions Bot modified the milestones: 26.0, 26.1 Jan 26, 2026
@davelopez
Copy link
Copy Markdown
Contributor Author

So this is finally ready for review. I know it's a lot of code 😅, hopefully a big chunk of it is just type definitions and docstrings 😇

Ideally, we would include this in 26.0 to start getting early feedback from certain users. There are very few automated tests, mostly for the refactored elements, rather than the new components. The idea is to gather some general feedback from those interested users and then, after the changes, solidify the implementation with proper automated tests before it gets out of beta and replaces the old Upload dialog in a future release.

I'm not sure if this should be included in the release user highlights or rather just directly communicated to particular users who can provide some feedback, and then properly highlight it in the final release.

@davelopez davelopez modified the milestones: 26.1, 26.0 Jan 26, 2026
@bgruening
Copy link
Copy Markdown
Member

Maybe not a highlight for 26.0 but for 26.1, we can write a blog post and I can reach out to a few (power) users and ask for feedback.

throw new Error(`Missing target history for upload item [${index}] ${item.fileName}`);
}
const data = uploadPayload([item], item.targetHistoryId);
const data = buildLegacyPayload([item], item.targetHistoryId);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this be dropped once we switch over to the new uploader activities and remove the current upload modal?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that is the intention. This and some other functions and types in the Legacy Compatibility Layer section are marked as deprecated to be removed once we completely switch over. But before that, we will probably need some kind of "dialog version" of the new upload in case there are places in tool forms or landing requests that require a way to upload without losing the current context in the central panel.

@dannon dannon merged commit e6fd9b1 into galaxyproject:dev Jan 27, 2026
61 of 63 checks passed
@ahmedhamidawan
Copy link
Copy Markdown
Member

We should still label it as a highlight for release testing (not for the release notes).

@ahmedhamidawan ahmedhamidawan added the highlight Included in user-facing release notes at the top label Jan 27, 2026
@davelopez davelopez deleted the explore_upload_activity branch January 27, 2026 15:15
@guerler guerler added the release-testing-26.0 PRs marked for testing for the 26.0 release and issues stemming from release testing label Jan 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/UI-UX highlight Included in user-facing release notes at the top kind/enhancement kind/refactoring cleanup or refactoring of existing code, no functional changes release-testing-26.0 PRs marked for testing for the 26.0 release and issues stemming from release testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants