Skip to content

Conversation

@jmchilton
Copy link
Member

@jmchilton jmchilton commented Dec 9, 2025

Tool Shed 2.1 Frontend Bug Fixes

Fixes several UI bugs reported in the new Tool Shed frontend.

Changes

More changes after that:

WCAG 2.1 AA accessibility improvements for Tool Shed frontend (xref #21412)

  • Add skip link and ARIA landmarks to App.vue
  • Add role="alert" and aria-live="assertive" to ErrorBanner
  • Add role="status" and aria-live="polite" to LoadingDiv
  • Add aria-haspopup and aria-label to toolbar buttons/dropdowns
  • Add aria-label to FABs in RepositoryExplore, RepositoryActions, RevisionActions, RepositoryHealth
  • Add aria-label to PaginatedRepositoriesGrid table
  • Add global :focus-visible styles

Add accessible error announcements to login form (xref #21412)

  • Use ErrorBanner in LoginForm for screen reader announcements
  • Change auth.store.ts to throw errors instead of swallowing with notifyOnCatch

Add proxy for external backend login in dev mode

  • Add /api_internal and /backend_session proxies in vite.config.ts
  • /backend_session rewrites to backend root to set session_csrf_token cookie

I had Cursor exercise the UI and offer up random usability improvements

Fix pagination "len" label bug and add description truncation

  • Fix rowsPerPage computed ref not unwrapped in pagination object
  • Add watcher to sync rowsPerPage when route query changes
  • Add CSS ellipsis truncation for long repository descriptions

How to test the changes?

(Select all options that apply)

  • Instructions for manual testing are as follows:
    1. Deploy to test toolshed from my branch, review each linked issue and navigate to the test toolshed and see if it is fixed 🤷‍♀️.

License

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

@jmchilton jmchilton added kind/bug area/UI-UX area/toolshed area/toolshed-2.0 Required features and bugs for the new tool shed labels Dec 9, 2025
jmchilton and others added 11 commits December 9, 2025 16:26
Handle API errors in ToolVersionPage - display error message with
guidance to reset repository metadata instead of spinning forever.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Discard stale search results when a newer search has been initiated.
Prevents out-of-order responses from overwriting correct results.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Persist search query and page number in URL for browser back/forward
navigation and shareable links.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add clearable button and delete key handler to SelectUser component.
Emit cleared event so parent can reset state.

Note: galaxyproject#21413 not fully resolved - the textbox+select combo remains
unintuitive. Users still expect backspace to work like a text input.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Skip link + landmarks (App.vue): role="banner", role="main", skip-to-content
- Focus indicators: global :focus-visible CSS
- Live regions: ErrorBanner role="alert", LoadingDiv role="status"
- Toolbar: aria-haspopup on dropdowns, aria-label on icon buttons
- FABs: aria-label on all FAB triggers (4 components)
- Table: aria-label on PaginatedRepositoriesGrid
- CLAUDE.md: document accessibility patterns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Login errors now display via ErrorBanner (role="alert", aria-live="assertive")
instead of toast notifications, ensuring screen readers announce failures.

- LoginForm: catch errors locally, display inline ErrorBanner
- auth.store: use await/throw instead of .catch(notifyOnCatch)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- /api_internal proxy for login/logout endpoints
- /backend_session proxy to get session_csrf_token cookie
- README: document visiting /backend_session before login

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Fix rowsPerPage computed ref not being unwrapped in pagination object
- Add watcher to sync rowsPerPage when route query changes
- Add CSS ellipsis truncation for long repository descriptions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@jmchilton jmchilton marked this pull request as ready for review December 10, 2025 14:40
@github-actions github-actions bot added this to the 26.0 milestone Dec 10, 2025
@mvdbeek mvdbeek merged commit aab6c4e into galaxyproject:dev Dec 10, 2025
56 of 60 checks passed
@mvdbeek
Copy link
Member

mvdbeek commented Dec 10, 2025

Thank you @jmchilton! @natefoo can you deploy this ?

@nsoranzo nsoranzo deleted the toolshed_2_2 branch December 10, 2025 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/toolshed area/toolshed-2.0 Required features and bugs for the new tool shed area/UI-UX kind/bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants