Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .claude/rules/css-patternfly.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,11 @@ Follow the project's BEM-like convention. Custom block-level classes must be nam

| Type | Pattern | Example |
|------|---------|---------|
| Block | `{prefix}-{name}` | `odh-card`, `autorag-leaderboard` |
| Element | `{prefix}-{block}__{element}` | `odh-card__footer`, `autorag-leaderboard__header` |
| Modifier | `m-{modifier}` or `{prefix}-m-{modifier}` | `m-disabled`, `m-is-selected`, `odh-m-doc` |
| Utility | `{prefix}-u-{name}` | `odh-u-spin`, `odh-u-scrollable` |
| Block | `odh-{name}` | `odh-card`, `odh-list-item` |
| Element | `odh-{block}__{element}` | `odh-card__footer`, `odh-list-item__doc-text` |
| Modifier | `m-{modifier}` or `odh-m-{modifier}` | `m-disabled`, `m-is-selected`, `odh-m-doc` |
| Utility | `odh-u-{name}` | `odh-u-scrollable` |
| Shared utility | `ai-u-{name}` | `ai-u-spin` (from mod-arch-shared) |

## PF Component Overrides

Expand Down
2 changes: 1 addition & 1 deletion frontend/src/app/App.scss
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ body,
}
}

.odh-u-spin {
.ai-u-spin {
animation: pf-v6-c-spinner-animation-rotate 3s linear infinite;
}

Expand Down
2 changes: 1 addition & 1 deletion frontend/src/concepts/kueue/__tests__/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ describe('getKueueStatusInfo', () => {
const info = getKueueStatusInfo(KueueWorkloadStatus.Admitted);
expect(info.label).toBe('Starting');
expect(info.color).toBe('blue');
expect(info.iconClassName).toBe('odh-u-spin');
expect(info.iconClassName).toBe('ai-u-spin');
});

it('should return correct info for Complete', () => {
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/concepts/kueue/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ export const getKueueStatusInfo = (status: KueueWorkloadStatus): KueueStatusInfo
label: 'Starting',
color: 'blue',
IconComponent: InProgressIcon,
iconClassName: 'odh-u-spin',
iconClassName: 'ai-u-spin',
};
case KueueWorkloadStatus.Complete:
return {
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/concepts/modelServing/ModelStatusIcon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export const ModelStatusIcon: React.FC<ModelStatusIconProps> = ({
return {
label: 'Stopping',
color: 'grey',
icon: <InProgressIcon className="odh-u-spin" />,
icon: <InProgressIcon className="ai-u-spin" />,
message: 'Model deployment is stopping.',
};
}
Expand All @@ -63,7 +63,7 @@ export const ModelStatusIcon: React.FC<ModelStatusIconProps> = ({
return {
label: 'Starting',
color: 'blue',
icon: <InProgressIcon className="odh-u-spin" />,
icon: <InProgressIcon className="ai-u-spin" />,
message: 'Model deployment is starting.',
};
}
Expand All @@ -81,7 +81,7 @@ export const ModelStatusIcon: React.FC<ModelStatusIconProps> = ({
return {
label: 'Starting',
color: 'blue',
icon: <InProgressIcon className="odh-u-spin" />,
icon: <InProgressIcon className="ai-u-spin" />,
message: 'Model deployment is starting.',
};
case ModelDeploymentState.FAILED_TO_LOAD:
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/concepts/notebooks/NotebookStatusLabel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const NotebookStatusLabel: React.FC<NotebookStateStatusProps> = ({
return {
label: 'Stopping',
color: 'grey',
icon: <InProgressIcon className="odh-u-spin" />,
icon: <InProgressIcon className="ai-u-spin" />,
};
}
if (kueueStatus?.status && KUEUE_STATUSES_OVERRIDE_WORKBENCH.includes(kueueStatus.status)) {
Expand All @@ -70,7 +70,7 @@ const NotebookStatusLabel: React.FC<NotebookStateStatusProps> = ({
return {
label: 'Starting',
color: 'blue',
icon: <InProgressIcon className="odh-u-spin" />,
icon: <InProgressIcon className="ai-u-spin" />,
};
}
if (isRunning) {
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/concepts/notebooks/StartNotebookModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ const StartNotebookModal: React.FC<StartNotebookModalProps> = ({
<Flex gap={{ default: 'gapSm' }}>
{(!spawnStatus || spawnStatus.status === AlertVariant.info) && inProgress ? (
<FlexItem>
<InProgressIcon style={{ color: BrandIconColor.var }} className="odh-u-spin" />
<InProgressIcon style={{ color: BrandIconColor.var }} className="ai-u-spin" />
</FlexItem>
) : null}
<FlexItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const STATUS_CONFIG: Record<StatusType, StatusConfig> = {
},
[StatusType.IN_PROGRESS]: {
icon: InProgressIcon,
className: 'odh-u-spin',
className: 'ai-u-spin',
},
[StatusType.SUCCESS]: {
icon: CheckCircleIcon,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export const ModelRegistryTableRowStatus: React.FC<ModelRegistryTableRowStatusPr
// Degrading
else if (degradedCondition?.status === ConditionStatus.True) {
statusLabel = ModelRegistryStatusLabel.Degrading;
icon = <InProgressIcon className="odh-u-spin" />;
icon = <InProgressIcon className="ai-u-spin" />;
popoverTitle = 'Service is degrading';
}
// Available
Expand All @@ -88,7 +88,7 @@ export const ModelRegistryTableRowStatus: React.FC<ModelRegistryTableRowStatusPr
// Progressing
else if (progressCondition?.status === ConditionStatus.True) {
statusLabel = ModelRegistryStatusLabel.Progressing;
icon = <InProgressIcon className="odh-u-spin" />;
icon = <InProgressIcon className="ai-u-spin" />;
status = 'info';
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ export const NotebookImageDisplayName = ({
<FlexItem>
<Tooltip content="Updating version" data-testid="updating-image-icon-tooltip">
<InProgressIcon
className="odh-u-spin"
className="ai-u-spin"
style={{ cursor: 'pointer' }}
data-testid="updating-image-icon"
/>
Expand Down
2 changes: 1 addition & 1 deletion packages/automl/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
"es-toolkit": "^1.44.0",
"lodash-es": "^4.17.15",
"mod-arch-core": "^1.6.0",
"mod-arch-shared": "^1.5.0",
"mod-arch-shared": "^1.15.4",
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.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the other two packages' mod-arch-shared versions to confirm consistency across the monorepo.
fd -t f 'package.json' | xargs rg -nP '"mod-arch-shared"\s*:\s*"[^"]+"'

Repository: opendatahub-io/odh-dashboard

Length of output: 492


🌐 Web query:

mod-arch-shared changelog 1.6.0 through 1.15.4 breaking changes

💡 Result:

No breaking changes identified in mod-arch-shared from versions 1.6.0 through the latest available (1.10.1 as of 2026-03-04). The project uses semantic versioning with automated minor and patch releases via semantic-release. Major versions (breaking changes) require manual release and are blocked from automation; no major versions in this range. Key changes observed: - Dependency updates (e.g., lodash-es 4.17.21 -> 4.17.23, ajv 6.12.6 -> 6.14.0) - typically non-breaking. - New components added (e.g., FieldGroupHelpLabelIcon, manage columns abstraction). - Bug fixes (e.g., cross-work dependencies, theming scopes). - Release process improvements. Major architectural shift: Split from monolithic 'mod-arch-shared' to separate packages mod-arch-core, mod-arch-shared, mod-arch-kubeflow. Previously: npm install mod-arch-shared. Now: npm install mod-arch-core mod-arch-shared mod-arch-kubeflow. Update imports accordingly (e.g., core providers from mod-arch-core, components from mod-arch-shared). Review individual release notes and compare views for full details: - https://github.com/opendatahub-io/mod-arch-library/releases - opendatahub-io/mod-arch-library@1.6.0...1.8.0 - opendatahub-io/mod-arch-library@1.10.0...1.10.1 No evidence of version 1.15.4; highest found is 1.10.1. Packages published to npm as monorepo.

Citations:


🏁 Script executed:

#!/bin/bash
# Check if 1.15.4 is locked in package-lock.json or yarn.lock
find packages -name "package-lock.json" -o -name "yarn.lock" | head -5 | xargs -I {} sh -c 'echo "=== {} ===" && (grep -A 2 -B 2 "mod-arch-shared" {} | head -20 || echo "not found")'

# Also check root-level lock files
ls -la | grep -E "(package-lock|yarn.lock)" || echo "No lock files in root"

# Search for version 1.15.4 anywhere in the repo
rg "1\.15\.4" --type json -l

Repository: opendatahub-io/odh-dashboard

Length of output: 2361


🏁 Script executed:

#!/bin/bash
# Search for release information or tags about newer versions
rg "1\.(11|12|13|14|15)" --type json | grep -E "(version|release|tag)" | head -20

# Check if there's any npm registry information or changelog in the repo
find . -name "CHANGELOG*" -o -name "releases.json" -o -name "versions.txt" 2>/dev/null | head -10

# Look for any reference to mod-arch-shared version constraints or resolution
rg "mod-arch-shared" -A 3 -B 3 packages/automl/frontend/package-lock.json | head -50

Repository: opendatahub-io/odh-dashboard

Length of output: 1583


🏁 Script executed:

#!/bin/bash
# Check for npm overrides or resolution strategies in root package.json
rg -A 20 "overrides|resolutions" packages/automl/frontend/package.json || echo "No overrides found"

# Check root monorepo package.json for workspace constraints
rg -A 5 "mod-arch-shared" package.json 2>/dev/null || echo "No root reference found"

# Look for any .npmrc or similar configuration
find . -maxdepth 2 -name ".npmrc" -o -name "npm-shrinkwrap.json" 2>/dev/null | xargs cat 2>/dev/null || echo "No npm config found"

# Check actual released versions of mod-arch-shared from GitHub
# Search repo for any comments about version mismatch
rg "1\.15\.4|version.*1\.15" -B 3 -A 3 packages/automl/frontend/

Repository: opendatahub-io/odh-dashboard

Length of output: 12501


Fix mod-arch-shared version specification — 1.15.4 does not exist.

The caret constraint ^1.15.4 points to a non-existent version. The latest released version is 1.10.1 (as of March 2026), with 1.11.0 available in some lock files. npm silently falls back to 1.9.1, creating a mismatch between package.json intent and actual installations. Lock files across packages (automl: 1.9.1, autorag: 1.11.0) confirm inconsistent resolution. Update to a valid version that exists on npm.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/automl/frontend/package.json` at line 116, Replace the invalid
dependency version spec for mod-arch-shared in package.json (currently
"^1.15.4") with a published version (e.g., "1.10.1" or "^1.10.1"); update the
package.json entry for "mod-arch-shared" to a valid npm release and then run
your package manager (npm/pnpm/yarn) to regenerate/update the lockfile so all
workspaces resolve to the same published version.

"react": "^18",
"react-dom": "^18",
"react-hook-form": "^7.71.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/autorag/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
"echarts": "^5.6.0",
"es-toolkit": "^1.44.0",
"mod-arch-core": "^1.6.0",
"mod-arch-shared": "^1.5.0",
"mod-arch-shared": "^1.15.4",
"react": "^18",
"react-dom": "^18",
"react-hook-form": "^7.71.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const statusMap: Record<EvaluationJobState, StatusConfig> = {
stopping: {
label: 'Canceling',
color: 'grey',
icon: <InProgressIcon className="odh-u-spin" />,
icon: <InProgressIcon className="ai-u-spin" />,
},
stopped: {
label: 'Stopped',
Expand Down
2 changes: 1 addition & 1 deletion packages/gen-ai/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
"@patternfly/react-templates": "^6.3.1",
"immer": "^11.1.3",
"mod-arch-core": "^1.2.0",
"mod-arch-shared": "^1.2.0",
"mod-arch-shared": "^1.15.4",
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.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Published metadata for mod-arch-shared@1.15.4 =="
npm view mod-arch-shared@1.15.4 version peerDependencies dependencies --json

echo
echo "== Local gen-ai imports from mod-arch-shared =="
rg -n -C2 --type=ts --type=tsx "from ['\"]mod-arch-shared['\"]|import\\(['\"]mod-arch-shared['\"]\\)" packages/gen-ai/frontend/src || true

echo
echo "== Lockfile/package references to mod-arch-shared =="
fd -t f 'package-lock\.json$|npm-shrinkwrap\.json$|package\.json$' | while read -r file; do
  if rg -q '"mod-arch-shared"|node_modules/mod-arch-shared' "$file"; then
    echo ">>> $file"
    rg -n -C2 '"mod-arch-shared"|node_modules/mod-arch-shared' "$file"
  fi
done

echo
echo "== Inspect published package declarations for expected exports =="
tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

tarball="$(npm pack --silent mod-arch-shared@1.15.4 --pack-destination "$tmpdir")"
tar -xzf "$tmpdir/$tarball" -C "$tmpdir"

rg -n -C2 \
  "DashboardEmptyTableView|useCheckboxTableBase|K8sResourceCommon|ApplicationsPage|EmptyStateErrorMessage|\\bTable\\b" \
  "$tmpdir/package" \
  --glob '*.d.ts' \
  --glob '*.ts' \
  --glob '*.tsx' \
  --glob '*.js' \
  --glob '*.mjs' \
  --glob '*.cjs' || true

Repository: opendatahub-io/odh-dashboard

Length of output: 30740


Peer dependency mismatch will cause install failure.

Line 105 declares mod-arch-shared@^1.15.4, but mod-arch-shared@1.15.4 requires mod-arch-core >=1.15.4 as a peer dependency. The file declares mod-arch-core@^1.2.0 on line 104, which does not satisfy the >=1.15.4 constraint. This incompatibility will fail during npm install/resolution. Additionally, the lockfile (packages/gen-ai/frontend/package-lock.json) still references mod-arch-shared@1.2.0, indicating the lockfile is out of sync and must be regenerated.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/gen-ai/frontend/package.json` at line 105, The package.json declares
mod-arch-shared@^1.15.4 while mod-arch-shared@1.15.4 requires mod-arch-core
>=1.15.4, but package.json currently lists mod-arch-core@^1.2.0—update the
dependency versions to satisfy the peer (either bump mod-arch-core to ^1.15.4 or
align mod-arch-shared to a compatible version), then regenerate the lockfile
(packages/gen-ai/frontend/package-lock.json) by running npm install so the
lockfile no longer references mod-arch-shared@1.2.0 and the dependency graph is
consistent.

"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router": "^7.12.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
"lodash-es": "^4.17.15",
"mod-arch-core": "^1.10.2",
"mod-arch-kubeflow": "^1.10.2",
"mod-arch-shared": "^1.10.2",
"mod-arch-shared": "^1.15.4",
"react": "^18",
"react-dom": "^18",
"react-router": "^7.5.2",
Expand Down
Loading