Skip to content

Small UI improvements and accessibility fixes#1504

Open
olexii4 wants to merge 30 commits intomainfrom
quick_fixes
Open

Small UI improvements and accessibility fixes#1504
olexii4 wants to merge 30 commits intomainfrom
quick_fixes

Conversation

@olexii4
Copy link
Copy Markdown
Contributor

@olexii4 olexii4 commented Mar 28, 2026

What does this PR do?

Bundles several independent UI polish and accessibility improvements to the Dashboard:

  1. Update copyright year to 2026 across all source files (2018-20252018-2026).

  2. Bump transitive/direct dependencies to address known CVEs and keep versions current:

    • handlebars 4.7.8 → 4.7.9
    • yaml 2.8.2 → 2.8.3
    • picomatch 2.3.1 → 2.3.2
    • fastify 5.7.4 → 5.8.3
    • undici 7.22.0 → 7.24.5
    • svgo 3.0.2 → 3.3.3
  3. Upgrade base Docker image from ubi8/nodejs-18 to ubi9/nodejs-20 in build/dockerfiles/rhel.Dockerfile.

  4. Improve keyboard accessibility and icon hover styles for toolbar switches and the bulk-selector:

    • TemporaryStorageSwitch and CreateNewIfExistSwitch can now be toggled with Tab + Enter.
    • BulkSelector dropdown is fully keyboard-navigable.
  5. Fix ErrorReporter full-screen overlay so it always covers the sidebar.

  6. Add "Sign out" button to the error rendered by IssueComponent (if preload data fail).

  7. Add "OpenShift console" link to the error rendered by IssueComponent (if preload data fail).
    The link is invisible on non-OpenShift deployments.

  8. Fix tooltip link colours in CheTooltip.

Screenshot/screencast of this PR

Знімок екрана 2026-03-27 о 23 27 58 Знімок екрана 2026-03-28 о 02 17 32

What issues does this PR fix or reference?

Is it tested? How?

Deploy Eclipse Che with the image built from this PR, then verify each point below.

Keyboard accessibility — recent workspace items:

  1. Open the Dashboard. In the left navigation panel, hover over a recent workspace item to confirm the kebab (⋮) menu button appears.
  2. Tab to a recent workspace item. Confirm the kebab button becomes visible when the item is focused.
  3. Tab again to move focus onto the kebab button. Press Enter — confirm the actions dropdown opens (and the workspace does not open in a new tab).
  4. Use the arrow keys to navigate the dropdown options and press Enter to select one.

Keyboard accessibility — toolbar switches and BulkSelector:

  1. Open the Create Workspace page and choose "Select a Sample". Tab to the "Temporary Storage" and "Create New if Exists" switches — confirm they toggle with Enter or Space.
  2. Tab to the "Filter by tags" / "Filter by languages" BulkSelector dropdowns. Press Enter/Space to open, use arrow keys to navigate options, and press Enter to select — confirm the filter applies.

ErrorReporter overlay:

  1. Open the OpenShift console → Project eclipse-che → Deployments → che → scale pods to 0. Wait until the pod is gone.
  2. Return to the Dashboard and refresh. Confirm the ErrorReporter widget is centered and covers the sidebar completely.
  3. Confirm the "Sign out" button is visible at the bottom of the error widget.
  4. Confirm the "OpenShift console" link is visible and navigates to the console. (On non-OpenShift deployments this link should not appear.)

Release Notes

Docs PR

@che-bot
Copy link
Copy Markdown
Contributor

che-bot commented Mar 28, 2026

Click here to review and test in web IDE: Contribute

@olexii4 olexii4 requested a review from svor March 28, 2026 00:47
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 28, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: olexii4

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@github-actions
Copy link
Copy Markdown

Docker image build succeeded: quay.io/eclipse/che-dashboard:pr-1504 (linux/amd64, linux/arm64)

kubectl patch command
kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{"op": "replace", "path": "/spec/components/dashboard/deployment", "value": {containers: [{image: "quay.io/eclipse/che-dashboard:pr-1504", name: che-dashboard}]}}]"

olexii4 added 23 commits March 29, 2026 00:05
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
- handlebars: 4.7.8 -> 4.7.9
- yaml: 2.8.2 -> 2.8.3
- picomatch: 2.3.1 -> 2.3.2
- fastify: 5.7.4 -> 5.8.4
- undici: 7.22.0 -> 7.24.6
- svgo: 3.0.2 -> 3.3.3

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Node.js 18 lacks the File global required by undici >=7.22.

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…nd BulkSelector

- Add Enter key toggle support to TemporaryStorageSwitch and CreateNewIfExistSwitch
- Add icon hover color via PatternFly CSS tokens
- Fix BulkSelector onSelect type to accept keyboard events

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Remove hardcoded black/white backgrounds from ErrorReporter; use
PatternFly's default page background. Center content via flexbox
on the PageSection instead of a Stack.

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Replace Page wrapper in ErrorReporter with a position:fixed div
so it always covers the full viewport, including any sidebar rendered
by PatternFly's internal sidebar state management.

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…port

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…ter-info on error

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…ainer

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…ction buttons

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
… contrast issues

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Remove custom onKeyDown from SelectOption — it caused a double-call to
onSelect (once from our handler, once from PF6's Enter→click→onChange
path), resulting in add→remove with net zero change. PF6 Menu handles
Enter natively via document.activeElement.click() on the focused label.

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
The gitbranches API calls git ls-remote in the backend process.
Without git installed in the runtime container, this fails with
spawn git ENOENT (500 Internal Server Error).

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
The gitbranches API calls git ls-remote in the backend process.
Add git to skaffold.Dockerfile (Alpine-based dev image) and update
copyright year to 2026.

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
olexii4 added 2 commits March 29, 2026 00:05
Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
- Update 3 failing snapshot tests after ErrorReporter and Toolbar changes
- Fix "Logout" → "Sign out" label in IssueComponent
- Set MIT license for fastify@5.8.4 in .deps/prod.md
- Add flatted@3.4.2, tar@7.5.11, @types/stream-buffers@3.0.8 to .deps/EXCLUDED/dev.md
- Add fastify@5.8.4, undici@7.24.6 to .deps/EXCLUDED/prod.md; remove cron-parser@5.5.0

Assisted-by: Cursor
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Claude Sonnet 4.6 (1M context)
Signed-off-by: Oleksii Orel <oorel@redhat.com>
@github-actions
Copy link
Copy Markdown

Docker image build succeeded: quay.io/eclipse/che-dashboard:pr-1504 (linux/amd64, linux/arm64)

kubectl patch command
kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{"op": "replace", "path": "/spec/components/dashboard/deployment", "value": {containers: [{image: "quay.io/eclipse/che-dashboard:pr-1504", name: che-dashboard}]}}]"

@github-actions
Copy link
Copy Markdown

Docker image build succeeded: quay.io/eclipse/che-dashboard:pr-1504 (linux/amd64, linux/arm64)

kubectl patch command
kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{"op": "replace", "path": "/spec/components/dashboard/deployment", "value": {containers: [{image: "quay.io/eclipse/che-dashboard:pr-1504", name: che-dashboard}]}}]"

olexii4 added 2 commits March 29, 2026 02:34
Assisted-by: Claude Sonnet 4.6 (1M context)
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Assisted-by: Claude Sonnet 4.6 (1M context)
Signed-off-by: Oleksii Orel <oorel@redhat.com>
@github-actions
Copy link
Copy Markdown

Docker image build succeeded: quay.io/eclipse/che-dashboard:pr-1504 (linux/amd64, linux/arm64)

kubectl patch command
kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{"op": "replace", "path": "/spec/components/dashboard/deployment", "value": {containers: [{image: "quay.io/eclipse/che-dashboard:pr-1504", name: che-dashboard}]}}]"

1 similar comment
@github-actions
Copy link
Copy Markdown

Docker image build succeeded: quay.io/eclipse/che-dashboard:pr-1504 (linux/amd64, linux/arm64)

kubectl patch command
kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{"op": "replace", "path": "/spec/components/dashboard/deployment", "value": {containers: [{image: "quay.io/eclipse/che-dashboard:pr-1504", name: che-dashboard}]}}]"

…om child

Assisted-by: Claude Sonnet 4.6 (1M context)
Signed-off-by: Oleksii Orel <oorel@redhat.com>
@github-actions
Copy link
Copy Markdown

Docker image build succeeded: quay.io/eclipse/che-dashboard:pr-1504 (linux/amd64, linux/arm64)

kubectl patch command
kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{"op": "replace", "path": "/spec/components/dashboard/deployment", "value": {containers: [{image: "quay.io/eclipse/che-dashboard:pr-1504", name: che-dashboard}]}}]"

…ecentItem

- Add test suite for findApi helper covering all branches (with/without version)
- Add test suite for getServiceAccountToken covering local run, file read, and missing file paths
- Add Space key, bubbled-Enter, and mouse hover tests to NavigationRecentItem

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
@github-actions
Copy link
Copy Markdown

Docker image build succeeded: quay.io/eclipse/che-dashboard:pr-1504 (linux/amd64, linux/arm64)

kubectl patch command
kubectl patch -n eclipse-che "checluster/eclipse-che" --type=json -p="[{"op": "replace", "path": "/spec/components/dashboard/deployment", "value": {containers: [{image: "quay.io/eclipse/che-dashboard:pr-1504", name: che-dashboard}]}}]"

@eclipse-che eclipse-che deleted a comment from codecov bot Mar 29, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 29, 2026

@olexii4: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/v19-dashboard-happy-path b502489 link true /test v19-dashboard-happy-path

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants