Skip to content

feat(ai-registry): filter tools by cluster architecture - #1643

Merged
olexii4 merged 8 commits into
mainfrom
CRW-11779
Aug 14, 2026
Merged

feat(ai-registry): filter tools by cluster architecture#1643
olexii4 merged 8 commits into
mainfrom
CRW-11779

Conversation

@olexii4

@olexii4 olexii4 commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Filters AI tools in /dashboard/api/ai-registry by the current cluster architecture so that
tools without a binary for the host platform are never surfaced to users.

Adds an optional arch?: Architecture[] field to AiToolDefinition. When set, a tool is
returned only if the cluster architecture (detected via uname -m, normalised to x86_64 /
arm64 / s390x / ppc64le) appears in the list. Tools with no arch field are returned on
every architecture.

Current state of registry.json in [che-incubator/che-ai-tool-images@CRW-11779](https://github.com/che-incubator/che-ai-tool-images):

Tool arch constraint Reason
Claude Code ["x86_64", "arm64"] Anthropic publishes only linux-x64 and linux-arm64 binaries; no s390x/ppc64le
Gemini CLI ["x86_64", "arm64", "s390x", "ppc64le"] yoga WASM rebuilt with big-endian support for s390x/ppc64le
OpenCode ["x86_64", "arm64"] Anomaly Innovations publishes only linux-x64 and linux-arm64 binaries; no s390x/ppc64le
Знімок екрана 2026-08-05 о 17 05 14

What issues does this PR fix or reference?

fixes https://redhat.atlassian.net/browse/CRW-11779

Is it tested? How?

  1. Deploy Che with the PR images on an x86_64 cluster.
  2. Run curl https://<che-host>/dashboard/api/ai-registry | jq '[.tools[].name]'; verify Claude Code, Gemini CLI, and OpenCode all appear.
  3. Repeat on an arm64 cluster; expect the same four tools.
  4. On a cluster where uname -m reports s390x : run the same curl; verify Claude Code is absent and the remaining three tools are present.
  5. Simulate a uname -m failure (e.g. patch getCurrentArchitecture to throw); verify the endpoint still returns 200 with all tools and a WARN entry appears in the dashboard pod logs.

Release Notes

The AI tool registry endpoint now filters tools by cluster architecture; tools without a supported
binary for the host platform (for example, Claude Code on IBM Z) are automatically excluded.

Docs PR

eclipse-che/che-docs#3185

AI Tool PR

che-incubator/che-ai-tool-images#6

@olexii4
olexii4 requested a review from svor July 31, 2026 03:08
@che-bot

che-bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Click here to review and test in web IDE: Contribute

@github-actions

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

5 similar comments
@github-actions

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@github-actions

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@github-actions

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@tolusha

tolusha commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Hi! I'm che-ai-assistant — I help with your pull requests.

I check for new comments every 10m0s, so there may be a short delay before I respond.

Available commands:

  • /che-ai-assistant generate-che-doc — Generate a documentation PR based on this PR's changes
  • /che-ai-assistant ok-pr-review — Run a comprehensive PR review (summary, code review, deep review, impact analysis)
  • /che-ai-assistant ok-pr-readiness — Ensure PR has validation steps
  • /che-ai-assistant check-pr-test-failures — Analyze failing CI checks, identify root causes, and suggest fixes
  • /che-ai-assistant update-che-e2e-tests — Update Eclipse Che e2e tests
  • /che-ai-assistant claude — Run a free-form instruction on this PR
  • /che-ai-assistant help — Show this help message

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

1 similar comment
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@olexii4

olexii4 commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

/che-ai-assistant generate-che-doc

@olexii4

olexii4 commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

/che-ai-assistant ok-pr-review
/che-ai-assistant generate-che-doc

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@olexii4 olexii4 left a comment

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.

The backend architecture-filtering is clean and well-tested. The blocklist approach for event filtering is a sound default. A few things worth discussing before merge.

Must address before merge:

  • Double-toggle in handleVersionSelect relies on React batching two setState calls in a specific order (see inline). If the parent ever adds async side effects or uses a non-functional setState, both calls silently cancel each other.
  • startsWith(id) prefix check in the event selector can produce false positives when one workspace ID is a prefix of another (see inline).

Worth addressing:

  • componentDidUpdate reference equality causes unnecessary re-renders - groupByProviderId() creates new arrays on every parent render.
  • The type guard in aiRegistryApi.ts asserts AiToolDefinition shape without verifying any of its fields.
  • groupByProviderId is duplicated across three components with inconsistent sort order.

Suggestions (fine as follow-up):

  • No component-level test verifies that WorkspaceEvents correctly filters events from another workspace in the rendered output. Selector-level tests are there, but a regression where the component stops passing workspace.id would go undetected.
  • CSS raw pixel values and inline style objects in JSX should move to CSS modules.
  • The committed PR doc file describes cross-repo work not in this diff.

Comment thread packages/dashboard-frontend/src/components/AiSelector/Gallery/Entry/index.tsx Outdated
Comment thread packages/dashboard-frontend/src/store/Events/selectors.ts Outdated
Comment thread packages/dashboard-frontend/src/components/AiSelector/Gallery/Entry/index.tsx Outdated
Comment thread packages/dashboard-backend/src/devworkspaceClient/services/aiRegistryApi.ts Outdated
Comment thread packages/dashboard-frontend/src/services/helpers/aiTools.ts Outdated
Comment thread packages/dashboard-frontend/src/components/TagLabel/index.module.css Outdated
Comment thread packages/dashboard-frontend/src/components/AiSelector/Gallery/Entry/index.tsx Outdated
olexii4 added a commit that referenced this pull request Aug 7, 2026
- use PatternFly spacing token for padding-top in Entry card title
- use rem value for top offset in TagLabel (replaces raw px)
- move inline style object on badge group span to CSS class
- use non-empty tuple type for toolGroup prop to encode invariant
- add comment explaining why kebab is shown for single-version cards
- add providerId shape check to AiToolDefinition type guard
- extract shared groupToolsByProvider() utility to aiTools.ts with
  deterministic alphabetical ordering; use it in Gallery and SelectorModal
- use lightweight workspace id/name selector in selectEventsFromResourceVersion
  to avoid recomputing on every workspace status update
- fix startsWith(id) false-positive with delimiter-aware id check
- add comment documenting opaque treatment of digest-pinned image versions
- note companion-repo work in PR description doc

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>

@olexii4 olexii4 left a comment

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.

General findings

AiSelector factory flow ignores the user's version choice

AiSelector.handleProviderToggle tracks only selectedProviderIds: string[]. The version dropdown in AiProviderEntry updates local component state (activeTool) but that choice is never surfaced to AiSelector - it only calls onSelect(providerIds). Callers then use addAiToolToWorkspace(workspace, toolId, aiTools) without a tag argument, always picking the first tool matching providerId regardless of what the user selected.

The version dropdown in the factory/create-workspace gallery is effectively cosmetic. SelectorModal (the workspace-details path) correctly propagates versions via onConfirm(selectedVersions), but the AiSelector path does not.

Does it make sense to add a selectedVersions map to AiSelector state and thread it through onSelect(providerIds, selectedVersions) - similar to how AiToolFormGroup handles it?


WorkspaceEvents component test does not verify workspace-scoped filtering

The selectors.spec.ts tests cover the filtering logic well. However, there are no component-level tests in WorkspaceEvents/__tests__/index.spec.tsx that verify events from another workspace are hidden in the rendered output. A regression where the component stops passing workspace.id to eventsFromResourceVersionFn would not be caught at the selector level.

Would it be possible to add one test that renders WorkspaceEvents with two workspaces in the store and checks that events from the other workspace do not appear?

Comment thread packages/dashboard-frontend/src/components/AiSelector/Gallery/Entry/index.tsx Outdated
Comment thread packages/dashboard-frontend/src/components/AiSelector/Gallery/Entry/index.tsx Outdated
Comment thread packages/dashboard-frontend/src/services/helpers/aiTools.ts
Comment thread packages/dashboard-frontend/src/services/helpers/aiTools.ts

@olexii4 olexii4 left a comment

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.

General findings

AiSelector factory flow ignores the user's version choice

AiSelector.handleProviderToggle tracks only selectedProviderIds: string[]. The version dropdown in AiProviderEntry updates local component state (activeTool) but that choice is never surfaced to AiSelector - it only calls onSelect(providerIds). Callers then use addAiToolToWorkspace(workspace, toolId, aiTools) without a tag argument, always picking the first tool matching providerId regardless of what the user selected.

The version dropdown in the factory/create-workspace gallery is effectively cosmetic. SelectorModal (the workspace-details path) correctly propagates versions via onConfirm(selectedVersions), but the AiSelector path does not.

Does it make sense to add a selectedVersions map to AiSelector state and thread it through onSelect(providerIds, selectedVersions) - similar to how AiToolFormGroup handles it?


WorkspaceEvents component test does not verify workspace-scoped filtering

The selectors.spec.ts tests cover the filtering logic well. However, there are no component-level tests in WorkspaceEvents/__tests__/index.spec.tsx that verify events from another workspace are hidden in the rendered output. A regression where the component stops passing workspace.id to eventsFromResourceVersionFn would not be caught at the selector level.

Would it be possible to add one test that renders WorkspaceEvents with two workspaces in the store and checks that events from the other workspace do not appear?

Comment thread packages/dashboard-frontend/src/components/AiSelector/Gallery/Entry/index.tsx Outdated
Comment thread packages/dashboard-frontend/src/components/AiSelector/Gallery/Entry/index.tsx Outdated
Comment thread packages/dashboard-frontend/src/services/helpers/aiTools.ts
Comment thread packages/dashboard-frontend/src/services/helpers/aiTools.ts
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

olexii4 added a commit that referenced this pull request Aug 7, 2026
- add onVersionChange prop to AiProviderEntry and AiProviderGallery so
  version changes are communicated explicitly instead of double-toggling
- use content-based tag comparison in componentDidUpdate to avoid
  unnecessary setState on every parent render
- extract getInjectedAiToolInfo combining getInjectedAiToolIds and
  getInjectedAiToolVersions into a single component pass; update all
  callers in AiToolFormGroup to use the unified function
- use groupToolsByProvider in InfoModal to be consistent with Gallery
  and SelectorModal (no more inline findIndex dedup)
- move SelectorModal checkbox label inline style to SelectorModal.module.css;
  replace raw pixel values on the Label with rem equivalents
- remove redundant cloneDeep in handleConfirmChanges: remove/add functions
  already clone internally so the up-front copy was wasted work
- add tests for addAiToolToWorkspace tag parameter (valid tag, unknown tag
  fallback, undefined tag) and getInjectedAiToolInfo
- add version-selection tests to SelectorModal: dropdown rendering,
  Save enable/disable on version change, auto-select, onConfirm payload

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

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@olexii4

olexii4 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

/retest

@codecov

codecov Bot commented Aug 10, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.09701% with 37 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.56%. Comparing base (ffacb66) to head (9145832).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
...ages/WorkspaceDetails/OverviewTab/AiTool/index.tsx 40.81% 29 Missing ⚠️
...kspaceDetails/OverviewTab/AiTool/SelectorModal.tsx 95.94% 4 Missing and 2 partials ⚠️
...s/dashboard-frontend/src/store/Events/selectors.ts 96.49% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1643      +/-   ##
==========================================
+ Coverage   92.42%   92.56%   +0.13%     
==========================================
  Files         596      596              
  Lines       61391    61880     +489     
  Branches     4782     4872      +90     
==========================================
+ Hits        56741    57277     +536     
+ Misses       4589     4541      -48     
- Partials       61       62       +1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Comment thread packages/dashboard-frontend/src/store/Events/selectors.ts Outdated
Comment thread packages/dashboard-frontend/src/components/AiSelector/index.tsx Outdated
olexii4 added a commit to eclipse-che/che-docs that referenced this pull request Aug 12, 2026
Documents two features shipped in eclipse-che/che-dashboard#1643:

- arch-aware filtering: add the optional `arch` field to the tool
  registry JSON example, document accepted values (x86_64, arm64,
  s390x, ppc64le), and explain that the backend filters the tool list
  by the architectures present in the cluster before sending it to the
  dashboard (a tool is shown if at least one cluster node matches).
  Add a NOTE that OpenCode supports only x86_64 and arm64 because the
  official upstream image does not publish s390x/ppc64le builds.

- version picker: document that when a provider has multiple tool
  entries with different tag values, the AI Selector shows a version
  picker. Update the end-user guide with a dedicated section and
  explain the same picker is available on the workspace Overview tab.
  Update the change-AI-tool procedure to cover selecting a specific
  image variant via the ellipsis menu.

relates to https://redhat.atlassian.net/browse/CRW-11779

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
olexii4 added a commit that referenced this pull request Aug 12, 2026
- selectors.ts: use slice() instead of splice() to avoid mutating the
  throwaway split array (r3759907540)
- AiTool/index.tsx: eliminate redundant third getInjectedAiToolInfo call
  in componentDidUpdate — destructure ids and versions from the first
  call and reuse both in the setState branch (r3759907555)
- AiProviderEntry: only render the version dropdown when onVersionChange
  is provided and toolGroup has more than one entry; removes the
  misleading interactive element in the factory flow where version
  selection was silently dropped (r3759907561)
- AiSelector: drop the no-op onVersionChange prop; the gallery now hides
  the dropdown automatically when no handler is supplied
- Update tests to match new conditional-dropdown contract; fix
  AiTool/index.spec.tsx mock to use getInjectedAiToolInfo (unified API)

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-1643 (linux/amd64, linux/arm64, linux/s390x)

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-1643", name: che-dashboard}]}}]"

olexii4 added a commit to eclipse-che/che-docs that referenced this pull request Aug 13, 2026
Documents two features shipped in eclipse-che/che-dashboard#1643:

- arch-aware filtering: add the optional `arch` field to the tool
  registry JSON example, document accepted values (x86_64, arm64,
  s390x, ppc64le), and explain that the backend filters the tool list
  by the architectures present in the cluster before sending it to the
  dashboard (a tool is shown if at least one cluster node matches).
  Add a NOTE that OpenCode supports only x86_64 and arm64 because the
  official upstream image does not publish s390x/ppc64le builds.

- version picker: document that when a provider has multiple tool
  entries with different tag values, the AI Selector shows a version
  picker. Update the end-user guide with a dedicated section and
  explain the same picker is available on the workspace Overview tab.
  Update the change-AI-tool procedure to cover selecting a specific
  image variant via the ellipsis menu.

relates to https://redhat.atlassian.net/browse/CRW-11779

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
The backend reads the node architecture from DevWorkspace operator server
info and filters the AI tool registry so only tools whose arch list
includes the running architecture are returned. On IBM Z (s390x) and
Power (ppc64le) clusters this prevents tools with no compatible injector
image from appearing in the dashboard.

Hardened the type predicate to require a string providerId so malformed
ConfigMap entries are rejected rather than passed through as typed values.

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
Switches from allowlist (show only current workspace events) to blocklist
(hide events belonging to other workspaces, show everything else). This
preserves generic cluster events and avoids false negatives when event
object names do not carry a workspace ID prefix.

Uses a lightweight selector that extracts only {id, name} pairs from raw
DevWorkspace state to avoid recomputing full Workspace adapter objects on
every status update.

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…rsion tracking

Adds groupToolsByProvider to group tool definitions by providerId into
non-empty sorted arrays, consolidates getInjectedAiToolIds and
getInjectedAiToolVersions into a single getInjectedAiToolInfo call, and
extends addAiToolToWorkspace with an optional tag parameter so callers
can inject a specific image version rather than always picking the first
match.

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…sion providers

When a provider has more than one tool entry (e.g. next vs insiders), the
gallery card shows a kebab version dropdown. Selecting a version updates
the card's active tool display and calls onVersionChange so the parent
can persist the choice. Single-version providers and gallery contexts
that do not supply onVersionChange show no dropdown.

Also adds the version TagLabel to the card header and moves Tech-Preview
badges into the card title so the layout is consistent across providers.

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
The Change AI Tools modal now shows a version dropdown for multi-version
providers and tracks the selected version independently of the checkbox
state. Auto-selects the provider when the user picks a version. Saves
button becomes active when only the version changes with no selection
change.

AiToolFormGroup uses getInjectedAiToolInfo to initialise and sync both
the selected IDs and the selected versions from the workspace, and passes
originVersions to the modal so it can detect version-only changes.
When confirmed, tools whose version changed are removed and re-added with
the new tag using addAiToolToWorkspace.

InfoModal now uses groupToolsByProvider for deduplication to stay in sync
with SelectorModal and Gallery.

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-1643 (linux/amd64, linux/arm64, linux/s390x)

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-1643", name: che-dashboard}]}}]"

1 similar comment
@github-actions

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

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-1643 (linux/amd64, linux/arm64, linux/s390x)

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-1643", name: che-dashboard}]}}]"

Registry entries may use Docker/OCI naming (amd64, aarch64) while the
Architecture type and uname -m use Linux naming (x86_64, arm64). Without
normalization the arch filter never matches OCI-named entries and tools
are silently dropped.

Maps amd64->x86_64 and aarch64->arm64 at read time so registries using
either naming convention are accepted.

Assisted-by: Claude Sonnet 4.6
Signed-off-by: Oleksii Orel <oorel@redhat.com>
…rm64) arch names

Extends the Architecture type to include OCI/Docker aliases amd64 and
aarch64 alongside the existing Linux kernel names x86_64 and arm64.
Registry entries may legitimately use either naming convention; both are
now valid in tool arch lists and as currentArch values.

The filter normalises both sides of the comparison to Linux canonical
names before matching, so amd64==x86_64 and aarch64==arm64 regardless of
which side uses which convention.

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-1643 (linux/amd64, linux/arm64, linux/s390x)

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-1643", name: che-dashboard}]}}]"

1 similar comment
@github-actions

Copy link
Copy Markdown

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

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-1643", name: che-dashboard}]}}]"

@svor svor left a comment

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.

LGTM

Image Image

@openshift-ci

openshift-ci Bot commented Aug 14, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: olexii4, svor

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

@olexii4
olexii4 merged commit 9242ad2 into main Aug 14, 2026
19 of 20 checks passed
@olexii4
olexii4 deleted the CRW-11779 branch August 14, 2026 17:25
olexii4 added a commit to eclipse-che/che-docs that referenced this pull request Aug 14, 2026
…3185)

Documents two features shipped in eclipse-che/che-dashboard#1643:

- arch-aware filtering: add the optional `arch` field to the tool
  registry JSON example, document accepted values (x86_64, arm64,
  s390x, ppc64le), and explain that the backend filters the tool list
  by the architectures present in the cluster before sending it to the
  dashboard (a tool is shown if at least one cluster node matches).
  Add a NOTE that OpenCode supports only x86_64 and arm64 because the
  official upstream image does not publish s390x/ppc64le builds.

- version picker: document that when a provider has multiple tool
  entries with different tag values, the AI Selector shows a version
  picker. Update the end-user guide with a dedicated section and
  explain the same picker is available on the workspace Overview tab.
  Update the change-AI-tool procedure to cover selecting a specific
  image variant via the ellipsis menu.

relates to https://redhat.atlassian.net/browse/CRW-11779

Assisted-by: Claude Sonnet 4.6

Signed-off-by: Oleksii Orel <oorel@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants