Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited) Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughThis pull request adds a PatternFly Theme Testing Widget (React component, SCSS, App wiring) that persists theme/contrast choices in localStorage, updates webpack production config to set Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Security & Logic Issues
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Hi @evwilkin. Thanks for your PR. I'm waiting for a opendatahub-io member to verify that this patch is reasonable to test. If it is, they should reply with Regular contributors should join the org to skip this step. Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions 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. |
46d2ace to
5406ead
Compare
5406ead to
5ce7f7e
Compare
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (5)
packages/feature-store/src/apiHooks/__tests__/useFeatureStoreObject.spec.tsx (1)
44-44: Extract a shared mock-location builder for repeatedLocationliterals.Line 44, Line 60, Line 76, Line 90, and Line 106 duplicate the same location shape and repeated lint suppression. Centralize this in one helper to reduce drift and maintenance noise.
Proposed refactor
+const createMockLocation = (pathname: string, key = 'test') => ({ + pathname, + search: '', + hash: '', + state: null, + key, + unstable_mask: undefined, // eslint-disable-line camelcase +}); + it('should return entities when location pathname contains entities', () => { - useLocationMock.mockReturnValue({ - pathname: '/develop-train/feature-store/entities/project1', - search: '', - hash: '', - state: null, - key: 'test', - unstable_mask: undefined, // eslint-disable-line camelcase - }); + useLocationMock.mockReturnValue( + createMockLocation('/develop-train/feature-store/entities/project1'), + );Also applies to: 60-60, 76-76, 90-90, 106-106
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/feature-store/src/apiHooks/__tests__/useFeatureStoreObject.spec.tsx` at line 44, Extract the repeated Location literal into a single helper (e.g., makeMockLocation or mockLocation) inside the test file and return the object including unstable_mask: undefined (preserving the eslint-disable-line camelcase semantics inside the helper), then replace all duplicate inline Location objects used in useFeatureStoreObject.spec.tsx with calls to that helper (or a shallow clone of it when mutating in individual tests) so the same shape is centralized and the eslint suppression is no longer duplicated.frontend/src/app/ThemeSelectorWidget.scss (1)
1-6:z-index: 9999may conflict with PatternFly modal/dropdown layers.PatternFly modals and popovers typically use z-index values in the 2000-9999 range. This widget could appear above or interact unexpectedly with those components. Given this is a temporary preview widget per PR description, acceptable for now but ensure removal before merge.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@frontend/src/app/ThemeSelectorWidget.scss` around lines 1 - 6, The .odh-theme-selector-widget currently sets z-index: 9999 which may overlap PatternFly modals/popovers; change the z-index in ThemeSelectorWidget.scss for the .odh-theme-selector-widget selector to a value below PatternFly modal/popover layers (e.g., ~1999) or use a PatternFly z-index CSS variable if available (instead of 9999), and add a short comment noting this is a temporary preview widget to be removed before merge.PF-TESTING.md (2)
35-38: Verify localStorage keys match implementation.The documented keys should match those in
ThemeSelectorWidget.tsx. Cross-reference:
odh.dashboard.ui.contrast✓odh.dashboard.ui.pftheme✓odh.dashboard.ui.systemTheme✓The existing
odh.dashboard.ui.themekey (managed byThemeContext.tsx) is not listed here but persists the light/dark selection. Consider adding it for completeness.📝 Suggested addition
Users can also clear the localStorage keys if desired: - `odh.dashboard.ui.contrast` - `odh.dashboard.ui.pftheme` - `odh.dashboard.ui.systemTheme` +- `odh.dashboard.ui.theme` (existing key for light/dark mode)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@PF-TESTING.md` around lines 35 - 38, The PF-TESTING.md localStorage keys list is missing the `odh.dashboard.ui.theme` key used by ThemeContext.tsx to persist light/dark selection; update the list to include `odh.dashboard.ui.theme` so it matches the implementation in ThemeSelectorWidget.tsx and ThemeContext.tsx and ensure the README explicitly lists all four keys (`odh.dashboard.ui.contrast`, `odh.dashboard.ui.pftheme`, `odh.dashboard.ui.systemTheme`, `odh.dashboard.ui.theme`).
46-48: Add language specification to fenced code block.The error message block at line 46 should specify a language (e.g.,
textorplaintext) for consistency with markdown linting rules.📝 Suggested fix
-``` +```text Target module of reexport from '...' is not part of the concatenation</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@PF-TESTING.mdaround lines 46 - 48, The fenced code block containing the
error message "Target module of reexport from '...' is not part of the
concatenation" lacks a language specifier; update that triple-backtick block
(...) to include a language identifier such as "text" or "plaintext"
(e.g., ```text) so the markdown linter recognizes it correctly and preserves the
message formatting.</details> </blockquote></details> <details> <summary>frontend/src/app/ThemeSelectorWidget.tsx (1)</summary><blockquote> `77-98`: **Wrap `handleSelect` in `useCallback` — it's passed as a prop to `Select`.** Per coding guidelines: "Only use useCallback when the function is passed as a prop." `handleSelect` is passed to `<Select onSelect={handleSelect}>`, so it should be memoized to prevent unnecessary re-renders of the Select component. <details> <summary>♻️ Proposed fix</summary> ```diff - const handleSelect = (_e: React.MouseEvent | undefined, itemId: string | number | undefined) => { + const handleSelect = React.useCallback((_e: React.MouseEvent | undefined, itemId: string | number | undefined) => { const id = String(itemId); if (id === 'color-light') { setUseSystemTheme(false); setAllThemes('light'); } else if (id === 'color-dark') { setUseSystemTheme(false); setAllThemes('dark'); } else if (id === 'color-system') { setUseSystemTheme(true); } else if (id.startsWith('contrast-')) { const mode = id.replace('contrast-', ''); if (isContrastMode(mode)) { setContrast(mode); } } else if (id.startsWith('theme-')) { const variant = id.replace('theme-', ''); if (isPfThemeVariant(variant)) { setPfTheme(variant); } } - }; + }, [setUseSystemTheme, setAllThemes, setContrast, setPfTheme]); ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against the current code and only fix it if needed. In `@frontend/src/app/ThemeSelectorWidget.tsx` around lines 77 - 98, handleSelect is passed as a prop to Select and should be memoized with useCallback to avoid unnecessary re-renders; wrap the existing handleSelect implementation in React.useCallback and return the same logic, and include all referenced values/functions in its dependency array (setUseSystemTheme, setAllThemes, setContrast, setPfTheme, isContrastMode, isPfThemeVariant) so the callback updates when those change. Ensure the variable name remains handleSelect and that the Select uses onSelect={handleSelect}. ``` </details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Inline comments:
In@frontend/config/webpack.prod.js:
- Around line 42-46: The optimization setting concatenateModules: false in the
webpack production config causes dev/prod parity issues and larger bundles;
update this by adding the same concatenateModules: false into the optimization
block of webpack.dev.js so dev and prod match, add an inline comment in both
webpack.prod.js and webpack.dev.js explaining this is a temporary workaround
referencing the PatternFly prerelease issue/version (e.g., PatternFly 6.5
prerelease) and why scope hoisting is disabled, create a tech-debt ticket in
your tracker with a target fix date tied to the PatternFly 6.5 stable release,
and run/attach results from webpack-bundle-analyzer to the PR to show bundle
size impact before merging (also leave a TODO in the configs to remove the
workaround once the PatternFly issue is resolved).In
@frontend/package.json:
- Around line 245-247: The package.json contains duplicate overrides for
@patternfly/react-topologycausing the latter ("^6.5.0-prerelease.4") to
overwrite the earlier object that pins react to "^18.2.0"; locate the
@patternfly/react-topologyoverride and merge the constraints so a single
override includes both the package version and the react singleton entry (e.g.,
combine the version string with a nested "react": "^18.2.0" override) or, if
your npm version doesn't support that syntax, remove the duplicate override and
keep only the single override that enforces the React singleton while depending
on the direct dependency for the package version.In
@frontend/src/images/icons/EnabledApplicationsIcon.ts:
- Around line 3-13: The createIcon call for EnabledApplicationsIcon uses a
nested icon object and svgPathData, but the createIcon API expects properties at
the top level and the path key named svgPath; update the EnabledApplicationsIcon
initialization to remove the icon wrapper and move width, height, xOffset,
yOffset and the path string into the top-level object and rename svgPathData to
svgPath when calling createIcon.In
@frontend/src/images/icons/ServingRuntimeIcon.ts:
- Around line 3-13: The project uses a new icon API shape (an
iconobject with
svgPathData,width,height,xOffset,yOffset) as shown by
ServingRuntimeIcon; migrate AutoragIcon and AutomlIcon to that shape by
replacing their top-level properties (svgPath,width,height,xOffset,
yOffset) with a singleiconobject containingsvgPathData(move the value
fromsvgPath),width,height,xOffset, andyOffset, keeping the same
call to createIcon and the same exported constant names (AutoragIcon,
AutomlIcon) so the API and usage remain unchanged.In
@package.json:
- Around line 109-122: The package.json contains duplicate keys for
"@patternfly/react-topology" (one as an object overriding the peer "react" and
one as a version string), so merge the intent into a single entry: either remove
the first peer override if you only intend to pin the package version, or
combine the intents by keeping one "@patternfly/react-topology" key and
consolidating both the version pin and the peer override (i.e., make a single
overrides entry that preserves the react peer override or the version pin as
required). Update the "@patternfly/react-topology" entry accordingly and delete
the other duplicate key.In
@packages/eval-hub/frontend/src/app/icons/SupportIcon.ts:
- Line 9: Prettier is failing because the long SVG path string inside the
SupportIcon component (the string starting "M11.6668 22.3691H10.1113...") is
mis-indented on that line; fix by reformatting that line to match the file's
indentation (or run Prettier on the file) so the path string aligns with the
surrounding JSX/TS code and trailing comma/quotes remain unchanged, targeting
the SupportIcon component's SVG path literal.In
@packages/eval-hub/frontend/src/odh/ModArchNavIcon.ts:
- Around line 8-9: The svgPathData value in ModArchNavIcon.ts has its
continuation line mis-indented; adjust the string line for the svgPathData
property so it has two leading spaces to match the surrounding indentation
(i.e., align the line that begins with 'M2,2h10v10H2V2ZM4,4v6h6V4H4...') so the
linter no longer flags the missing indentation.
Nitpick comments:
In@frontend/src/app/ThemeSelectorWidget.scss:
- Around line 1-6: The .odh-theme-selector-widget currently sets z-index: 9999
which may overlap PatternFly modals/popovers; change the z-index in
ThemeSelectorWidget.scss for the .odh-theme-selector-widget selector to a value
below PatternFly modal/popover layers (e.g., ~1999) or use a PatternFly z-index
CSS variable if available (instead of 9999), and add a short comment noting this
is a temporary preview widget to be removed before merge.In
@frontend/src/app/ThemeSelectorWidget.tsx:
- Around line 77-98: handleSelect is passed as a prop to Select and should be
memoized with useCallback to avoid unnecessary re-renders; wrap the existing
handleSelect implementation in React.useCallback and return the same logic, and
include all referenced values/functions in its dependency array
(setUseSystemTheme, setAllThemes, setContrast, setPfTheme, isContrastMode,
isPfThemeVariant) so the callback updates when those change. Ensure the variable
name remains handleSelect and that the Select uses onSelect={handleSelect}.In
@packages/feature-store/src/apiHooks/__tests__/useFeatureStoreObject.spec.tsx:
- Line 44: Extract the repeated Location literal into a single helper (e.g.,
makeMockLocation or mockLocation) inside the test file and return the object
including unstable_mask: undefined (preserving the eslint-disable-line camelcase
semantics inside the helper), then replace all duplicate inline Location objects
used in useFeatureStoreObject.spec.tsx with calls to that helper (or a shallow
clone of it when mutating in individual tests) so the same shape is centralized
and the eslint suppression is no longer duplicated.In
@PF-TESTING.md:
- Around line 35-38: The PF-TESTING.md localStorage keys list is missing the
odh.dashboard.ui.themekey used by ThemeContext.tsx to persist light/dark
selection; update the list to includeodh.dashboard.ui.themeso it matches the
implementation in ThemeSelectorWidget.tsx and ThemeContext.tsx and ensure the
README explicitly lists all four keys (odh.dashboard.ui.contrast,
odh.dashboard.ui.pftheme,odh.dashboard.ui.systemTheme,
odh.dashboard.ui.theme).- Around line 46-48: The fenced code block containing the error message "Target
module of reexport from '...' is not part of the concatenation" lacks a language
specifier; update that triple-backtick block (...) to include a language
identifier such as "text" or "plaintext" (e.g., ```text) so the markdown linter
recognizes it correctly and preserves the message formatting.</details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: Repository YAML (base), Central YAML (inherited), Organization UI (inherited) **Review profile**: CHILL **Plan**: Pro **Run ID**: `81cdecd2-f5a1-4c55-9284-245f33d35439` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 406d9caf5796bb5ce56cb7ddd8877f3c0e66fba1 and 5ce7f7ef95a099a5a8c5d6f86ee92d01dbc498d1. </details> <details> <summary>⛔ Files ignored due to path filters (1)</summary> * `package-lock.json` is excluded by `!**/package-lock.json`, `!package-lock.json` </details> <details> <summary>📒 Files selected for processing (80)</summary> * `PF-TESTING.md` * `frontend/config/webpack.prod.js` * `frontend/package.json` * `frontend/src/app/App.tsx` * `frontend/src/app/ThemeSelectorWidget.scss` * `frontend/src/app/ThemeSelectorWidget.tsx` * `frontend/src/components/__tests__/NavigationBlockerModal.spec.tsx` * `frontend/src/images/icons/AiExperienceIcon.ts` * `frontend/src/images/icons/AiHubNavIcon.ts` * `frontend/src/images/icons/ApplicationsNavIcon.ts` * `frontend/src/images/icons/ArtifactIcon.ts` * `frontend/src/images/icons/BuildIcon.ts` * `frontend/src/images/icons/CheckmarkIcon.ts` * `frontend/src/images/icons/ClusterSettingsIcon.ts` * `frontend/src/images/icons/ConfigurationIcon.ts` * `frontend/src/images/icons/CreateAndTrainIcon.ts` * `frontend/src/images/icons/DataConnectionIcon.ts` * `frontend/src/images/icons/DeployedModelIcon.ts` * `frontend/src/images/icons/DevelopAndTrainNavIcon.ts` * `frontend/src/images/icons/DistributedWorkloadIcon.ts` * `frontend/src/images/icons/EnabledApplicationsIcon.ts` * `frontend/src/images/icons/ExperimentIcon.ts` * `frontend/src/images/icons/ExploreApplicationsIcon.ts` * `frontend/src/images/icons/GlobalIcon.ts` * `frontend/src/images/icons/GroupIcon.ts` * `frontend/src/images/icons/HardwareProfileIcon.ts` * `frontend/src/images/icons/HomeNavIcon.ts` * `frontend/src/images/icons/LabTuningIcon.ts` * `frontend/src/images/icons/LearningResourcesNavIcon.ts` * `frontend/src/images/icons/ModelCatalogIcon.ts` * `frontend/src/images/icons/ModelConnectionRocketIcon.ts` * `frontend/src/images/icons/ModelEvaluationIcon.ts` * `frontend/src/images/icons/ModelIcon.ts` * `frontend/src/images/icons/ModelRegistryIcon.ts` * `frontend/src/images/icons/ModelRegistrySelectIcon.ts` * `frontend/src/images/icons/ModelServerIcon.ts` * `frontend/src/images/icons/MultiModelIcon.ts` * `frontend/src/images/icons/NotebookIcon.ts` * `frontend/src/images/icons/NotebookImageIcon.ts` * `frontend/src/images/icons/ObserveAndMonitorNavIcon.ts` * `frontend/src/images/icons/PermissionsIcon.ts` * `frontend/src/images/icons/PipelineIcon.ts` * `frontend/src/images/icons/PipelineRunIcon.ts` * `frontend/src/images/icons/ProjectIcon.ts` * `frontend/src/images/icons/ProjectsNavIcon.ts` * `frontend/src/images/icons/PromptManagementIcon.ts` * `frontend/src/images/icons/RegisteredModelIcon.ts` * `frontend/src/images/icons/ResourcesIcon.ts` * `frontend/src/images/icons/RhUiControlsIcon.ts` * `frontend/src/images/icons/RhUiTagIcon.ts` * `frontend/src/images/icons/ScrewWrenchIcon.ts` * `frontend/src/images/icons/ServingRuntimeIcon.ts` * `frontend/src/images/icons/SettingsNavIcon.ts` * `frontend/src/images/icons/SingleModelIcon.ts` * `frontend/src/images/icons/StorageClassIcon.ts` * `frontend/src/images/icons/StorageIcon.ts` * `frontend/src/images/icons/UserIcon.ts` * `frontend/src/utilities/__tests__/v2Redirect.spec.tsx` * `package.json` * `packages/eval-hub/frontend/src/app/icons/SupportIcon.ts` * `packages/eval-hub/frontend/src/odh/ModArchNavIcon.ts` * `packages/feature-store/src/apiHooks/__tests__/useFeatureStoreObject.spec.tsx` * `packages/feature-store/src/icons/header-icons/DataSetIcon.ts` * `packages/feature-store/src/icons/header-icons/DataSourceIcon.ts` * `packages/feature-store/src/icons/header-icons/EntityIcon.ts` * `packages/feature-store/src/icons/header-icons/FeatureIcon.ts` * `packages/feature-store/src/icons/header-icons/FeatureServiceIcon.ts` * `packages/feature-store/src/icons/header-icons/FeatureStoreIcon.ts` * `packages/feature-store/src/icons/header-icons/FeatureViewIcon.ts` * `packages/feature-store/src/icons/header-icons/SupportIcon.ts` * `packages/feature-store/src/icons/lineage-icons/DataSourceIcon.ts` * `packages/feature-store/src/icons/lineage-icons/EntityIcon.ts` * `packages/feature-store/src/icons/lineage-icons/FeatureServiceIcon.ts` * `packages/feature-store/src/icons/lineage-icons/FeatureStoreIcon.ts` * `packages/feature-store/src/icons/lineage-icons/FeatureViewIcon.ts` * `packages/gen-ai/frontend/src/app/images/icons/AiAssetEndpointsIcon.ts` * `packages/gen-ai/frontend/src/app/images/icons/PlaygroundIcon.ts` * `packages/gen-ai/frontend/src/odh/GenAiStudioNavIcon.ts` * `packages/maas/frontend/src/odh/odhExtensions/GenAiStudioNavIcon.ts` * `packages/mlflow/frontend/src/odh/MlflowNavIcon.ts` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
| optimization: { | ||
| minimize: true, | ||
| minimizer: [new TerserJSPlugin(), new CssMinimizerPlugin()], | ||
| concatenateModules: false, | ||
| }, |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if dev webpack config has concatenateModules setting
rg -n "concatenateModules" frontend/config/Repository: opendatahub-io/odh-dashboard
Length of output: 139
🏁 Script executed:
cd frontend/config && ls -la webpack.*Repository: opendatahub-io/odh-dashboard
Length of output: 270
🏁 Script executed:
cat -n frontend/config/webpack.dev.js | head -80Repository: opendatahub-io/odh-dashboard
Length of output: 3414
🏁 Script executed:
if [ -f frontend/config/webpack.common.js ]; then cat -n frontend/config/webpack.common.js | head -100; else echo "webpack.common.js not found"; fiRepository: opendatahub-io/odh-dashboard
Length of output: 4535
🏁 Script executed:
grep -n "optimization" frontend/config/webpack.common.jsRepository: opendatahub-io/odh-dashboard
Length of output: 93
🏁 Script executed:
cat -n frontend/config/webpack.prod.jsRepository: opendatahub-io/odh-dashboard
Length of output: 2557
🏁 Script executed:
sed -n '226,250p' frontend/config/webpack.common.jsRepository: opendatahub-io/odh-dashboard
Length of output: 836
Disabling concatenateModules creates dev/prod parity violation and increases production bundle size.
Scope hoisting optimization is disabled only in production (line 45), not in development. This masks potential module concatenation issues during development that would manifest in production, violating the dev/prod parity guideline. Additionally, disabling scope hoisting increases bundle size and load times in production.
This is a workaround for the Module Federation + PatternFly prerelease issue. Require:
- Document why this override is necessary (reference PatternFly issue/version)
- Track as tech debt with target fix date (when PatternFly 6.5 stable releases)
- Add the same
concatenateModules: falseto webpack.dev.js to maintain parity until the underlying issue is resolved - Measure bundle size impact with
webpack-bundle-analyzerbefore merge
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/config/webpack.prod.js` around lines 42 - 46, The optimization
setting concatenateModules: false in the webpack production config causes
dev/prod parity issues and larger bundles; update this by adding the same
concatenateModules: false into the optimization block of webpack.dev.js so dev
and prod match, add an inline comment in both webpack.prod.js and webpack.dev.js
explaining this is a temporary workaround referencing the PatternFly prerelease
issue/version (e.g., PatternFly 6.5 prerelease) and why scope hoisting is
disabled, create a tech-debt ticket in your tracker with a target fix date tied
to the PatternFly 6.5 stable release, and run/attach results from
webpack-bundle-analyzer to the PR to show bundle size impact before merging
(also leave a TODO in the configs to remove the workaround once the PatternFly
issue is resolved).
| "@patternfly/react-topology": { | ||
| "react": "^18.2.0" | ||
| }, |
There was a problem hiding this comment.
Duplicate @patternfly/react-topology override key — second entry overwrites first.
Lines 245-247 define an override for @patternfly/react-topology to pin react: "^18.2.0". Line 258 redefines the same key with just the version string "^6.5.0-prerelease.4". The second definition silently overwrites the first, losing the React singleton override.
This can cause Module Federation shared singleton conflicts if react-topology resolves a different React version.
🔧 Proposed fix: merge both constraints
"@patternfly/react-topology": {
- "react": "^18.2.0"
+ "react": "^18.2.0",
+ ".": "^6.5.0-prerelease.4"
},
"@patternfly/patternfly": "^6.5.0-prerelease.64",
...
- "@patternfly/react-topology": "^6.5.0-prerelease.4",Alternatively, if npm overrides don't support the . self-reference syntax in your npm version, remove the duplicate and rely on the direct dependency declaration at line 85 for the version, keeping only the React override:
"@patternfly/react-topology": {
"react": "^18.2.0"
},
...
- "@patternfly/react-topology": "^6.5.0-prerelease.4",Also applies to: 258-258
🧰 Tools
🪛 Biome (2.4.10)
[error] 245-245: The key @patternfly/react-topology was already declared.
(lint/suspicious/noDuplicateObjectKeys)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/package.json` around lines 245 - 247, The package.json contains
duplicate overrides for `@patternfly/react-topology` causing the latter
("^6.5.0-prerelease.4") to overwrite the earlier object that pins react to
"^18.2.0"; locate the `@patternfly/react-topology` override and merge the
constraints so a single override includes both the package version and the react
singleton entry (e.g., combine the version string with a nested "react":
"^18.2.0" override) or, if your npm version doesn't support that syntax, remove
the duplicate override and keep only the single override that enforces the React
singleton while depending on the direct dependency for the package version.
| const EnabledApplicationsIcon = createIcon({ | ||
| name: 'EnabledApplicationsIcon', | ||
| width: 36, | ||
| height: 36, | ||
| svgPath: | ||
| 'm 14.558,23.442 a 0.625,0.625 0 0 0 0.884,0 l 10.5,-10.5 A 0.62508239,0.62508239 0 0 0 25.058,12.058 L 15,22.116 11.442,18.558 a 0.62508239,0.62508239 0 0 0 -0.884,0.884 z M 31,4.375 H 5 A 0.625,0.625 0 0 0 4.375,5 V 31 A 0.625,0.625 0 0 0 5,31.625 H 31 A 0.625,0.625 0 0 0 31.625,31 V 5 A 0.625,0.625 0 0 0 31,4.375 Z m -0.625,26 H 5.625 V 5.625 h 24.75 z', | ||
| xOffset: 0, | ||
| yOffset: 0, | ||
| icon: { | ||
| width: 36, | ||
| height: 36, | ||
| svgPathData: | ||
| 'm 14.558,23.442 a 0.625,0.625 0 0 0 0.884,0 l 10.5,-10.5 A 0.62508239,0.62508239 0 0 0 25.058,12.058 L 15,22.116 11.442,18.558 a 0.62508239,0.62508239 0 0 0 -0.884,0.884 z M 31,4.375 H 5 A 0.625,0.625 0 0 0 4.375,5 V 31 A 0.625,0.625 0 0 0 5,31.625 H 31 A 0.625,0.625 0 0 0 31.625,31 V 5 A 0.625,0.625 0 0 0 31,4.375 Z m -0.625,26 H 5.625 V 5.625 h 24.75 z', | ||
| xOffset: 0, | ||
| yOffset: 0, | ||
| }, | ||
| }); |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What is the createIcon function signature in @patternfly/react-icons version 6.5?
💡 Result:
I couldn’t find a published stable @patternfly/react-icons 6.5.x release to verify against (Snyk lists latest stable as 6.4.0, and references 6.5.0-prerelease builds). [2]
In the latest 6.x createIcon.d.ts I could retrieve (from @patternfly/react-icons@6.1.0), the function signature is: [1]
export declare function createIcon(
{ name, xOffset, yOffset, width, height, svgPath }: IconDefinition
): React.ComponentClass<SVGIconProps>;Fix createIcon API usage: structure does not match documented signature.
The code nests properties under an icon object and uses svgPathData, but the createIcon function expects these properties at the top level with the property named svgPath:
Corrected structure
const EnabledApplicationsIcon = createIcon({
name: 'EnabledApplicationsIcon',
width: 36,
height: 36,
svgPath: 'm 14.558,23.442 a 0.625,0.625 0 0 0 0.884,0 l 10.5,-10.5 A 0.62508239,0.62508239 0 0 0 25.058,12.058 L 15,22.116 11.442,18.558 a 0.62508239,0.62508239 0 0 0 -0.884,0.884 z M 31,4.375 H 5 A 0.625,0.625 0 0 0 4.375,5 V 31 A 0.625,0.625 0 0 0 5,31.625 H 31 A 0.625,0.625 0 0 0 31.625,31 V 5 A 0.625,0.625 0 0 0 31,4.375 Z m -0.625,26 H 5.625 V 5.625 h 24.75 z',
xOffset: 0,
yOffset: 0,
});🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/src/images/icons/EnabledApplicationsIcon.ts` around lines 3 - 13,
The createIcon call for EnabledApplicationsIcon uses a nested icon object and
svgPathData, but the createIcon API expects properties at the top level and the
path key named svgPath; update the EnabledApplicationsIcon initialization to
remove the icon wrapper and move width, height, xOffset, yOffset and the path
string into the top-level object and rename svgPathData to svgPath when calling
createIcon.
| const ServingRuntimeIcon = createIcon({ | ||
| name: 'ServingRuntimeIcon', | ||
| width: 36, | ||
| height: 36, | ||
| svgPath: | ||
| 'm 24,10.38 h -7.46 a 2.62,2.62 0 1 0 0,1.24 h 2.84 V 13 a 0.62,0.62 0 1 0 1.24,0 v -1.38 h 0.76 V 13 a 0.62,0.62 0 1 0 1.24,0 v -1.38 h 0.76 V 12 a 0.62,0.62 0 1 0 1.24,0 V 11 A 0.61,0.61 0 0 0 24,10.38 Z m -10,2 A 1.38,1.38 0 1 1 15.38,11 1.38,1.38 0 0 1 14,12.38 Z M 9,23.62 h 6 a 0.62,0.62 0 0 0 0,-1.24 H 9 a 0.62,0.62 0 0 0 0,1.24 z M 31,17.38 H 5 A 0.61,0.61 0 0 0 4.38,18 V 28 A 0.61,0.61 0 0 0 5,28.62 H 31 A 0.61,0.61 0 0 0 31.62,28 V 18 A 0.61,0.61 0 0 0 31,17.38 Z m -0.62,10 H 5.62 V 18.62 H 30.38 Z M 27.62,22.99 A 0.62,0.62 0 0 1 27,23.61 0.62,0.62 0 0 1 26.38,22.99 0.62,0.62 0 0 1 27,22.37 a 0.62,0.62 0 0 1 0.62,0.62 z', | ||
| xOffset: 0, | ||
| yOffset: 0, | ||
| icon: { | ||
| width: 36, | ||
| height: 36, | ||
| svgPathData: | ||
| 'm 24,10.38 h -7.46 a 2.62,2.62 0 1 0 0,1.24 h 2.84 V 13 a 0.62,0.62 0 1 0 1.24,0 v -1.38 h 0.76 V 13 a 0.62,0.62 0 1 0 1.24,0 v -1.38 h 0.76 V 12 a 0.62,0.62 0 1 0 1.24,0 V 11 A 0.61,0.61 0 0 0 24,10.38 Z m -10,2 A 1.38,1.38 0 1 1 15.38,11 1.38,1.38 0 0 1 14,12.38 Z M 9,23.62 h 6 a 0.62,0.62 0 0 0 0,-1.24 H 9 a 0.62,0.62 0 0 0 0,1.24 z M 31,17.38 H 5 A 0.61,0.61 0 0 0 4.38,18 V 28 A 0.61,0.61 0 0 0 5,28.62 H 31 A 0.61,0.61 0 0 0 31.62,28 V 18 A 0.61,0.61 0 0 0 31,17.38 Z m -0.62,10 H 5.62 V 18.62 H 30.38 Z M 27.62,22.99 A 0.62,0.62 0 0 1 27,23.61 0.62,0.62 0 0 1 26.38,22.99 0.62,0.62 0 0 1 27,22.37 a 0.62,0.62 0 0 1 0.62,0.62 z', | ||
| xOffset: 0, | ||
| yOffset: 0, | ||
| }, | ||
| }); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Find icon files still using the old flat createIcon API pattern (svgPath at top level)
rg -l 'svgPath:' --type ts --glob '**/icons/**' | head -20Repository: opendatahub-io/odh-dashboard
Length of output: 193
🏁 Script executed:
#!/bin/bash
# Examine the AutoragIcon.ts file structure
echo "=== AutoragIcon.ts ==="
cat -n "packages/autorag/frontend/src/app/images/icons/AutoragIcon.ts"
echo ""
echo "=== AutomlIcon.ts ==="
cat -n "packages/automl/frontend/src/app/images/icons/AutomlIcon.ts"
echo ""
echo "=== ServingRuntimeIcon.ts (file under review) ==="
cat -n "frontend/src/images/icons/ServingRuntimeIcon.ts"Repository: opendatahub-io/odh-dashboard
Length of output: 7336
Migrate AutoragIcon.ts and AutomlIcon.ts to the nested icon object structure.
Files packages/autorag/frontend/src/app/images/icons/AutoragIcon.ts and packages/automl/frontend/src/app/images/icons/AutomlIcon.ts still use the old flat API with top-level svgPath, width, height, xOffset, yOffset. ServingRuntimeIcon.ts demonstrates the new nested structure with an icon object and svgPathData property. Migrate all icon files to the new pattern to maintain consistency and avoid build failures when the API is finalized.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@frontend/src/images/icons/ServingRuntimeIcon.ts` around lines 3 - 13, The
project uses a new icon API shape (an `icon` object with `svgPathData`, `width`,
`height`, `xOffset`, `yOffset`) as shown by ServingRuntimeIcon; migrate
AutoragIcon and AutomlIcon to that shape by replacing their top-level properties
(`svgPath`, `width`, `height`, `xOffset`, `yOffset`) with a single `icon` object
containing `svgPathData` (move the value from `svgPath`), `width`, `height`,
`xOffset`, and `yOffset`, keeping the same call to createIcon and the same
exported constant names (AutoragIcon, AutomlIcon) so the API and usage remain
unchanged.
| "@patternfly/react-topology": { | ||
| "react": "^18.2.0" | ||
| }, | ||
| "@patternfly/patternfly": "^6.5.0-prerelease.64", | ||
| "@patternfly/react-core": "^6.5.0-prerelease.48", | ||
| "@patternfly/react-icons": "^6.5.0-prerelease.19", | ||
| "@patternfly/react-styles": "^6.5.0-prerelease.15", | ||
| "@patternfly/react-table": "^6.5.0-prerelease.49", | ||
| "@patternfly/react-tokens": "^6.5.0-prerelease.14", | ||
| "@patternfly/react-code-editor": "^6.5.0-prerelease.51", | ||
| "@patternfly/react-charts": "^8.5.0-prerelease.18", | ||
| "@patternfly/react-drag-drop": "^6.5.0-prerelease.49", | ||
| "@patternfly/react-templates": "^6.5.0-prerelease.48", | ||
| "@patternfly/react-topology": "^6.5.0-prerelease.4", |
There was a problem hiding this comment.
Duplicate override key @patternfly/react-topology causes first entry to be silently discarded.
Lines 109-111 set "@patternfly/react-topology": { "react": "^18.2.0" } while line 122 sets "@patternfly/react-topology": "^6.5.0-prerelease.4". JSON object keys must be unique—the second wins, losing the react peer dependency override.
Merge both intents into a single entry:
Proposed fix
- "@patternfly/react-topology": {
- "react": "^18.2.0"
- },
"@patternfly/patternfly": "^6.5.0-prerelease.64",
...
- "@patternfly/react-topology": "^6.5.0-prerelease.4",
+ "@patternfly/react-topology": {
+ ".": "^6.5.0-prerelease.4",
+ "react": "^18.2.0"
+ },Alternatively, if the version override alone is intended and react override is no longer needed, remove the first block entirely.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "@patternfly/react-topology": { | |
| "react": "^18.2.0" | |
| }, | |
| "@patternfly/patternfly": "^6.5.0-prerelease.64", | |
| "@patternfly/react-core": "^6.5.0-prerelease.48", | |
| "@patternfly/react-icons": "^6.5.0-prerelease.19", | |
| "@patternfly/react-styles": "^6.5.0-prerelease.15", | |
| "@patternfly/react-table": "^6.5.0-prerelease.49", | |
| "@patternfly/react-tokens": "^6.5.0-prerelease.14", | |
| "@patternfly/react-code-editor": "^6.5.0-prerelease.51", | |
| "@patternfly/react-charts": "^8.5.0-prerelease.18", | |
| "@patternfly/react-drag-drop": "^6.5.0-prerelease.49", | |
| "@patternfly/react-templates": "^6.5.0-prerelease.48", | |
| "@patternfly/react-topology": "^6.5.0-prerelease.4", | |
| "@patternfly/patternfly": "^6.5.0-prerelease.64", | |
| "@patternfly/react-core": "^6.5.0-prerelease.48", | |
| "@patternfly/react-icons": "^6.5.0-prerelease.19", | |
| "@patternfly/react-styles": "^6.5.0-prerelease.15", | |
| "@patternfly/react-table": "^6.5.0-prerelease.49", | |
| "@patternfly/react-tokens": "^6.5.0-prerelease.14", | |
| "@patternfly/react-code-editor": "^6.5.0-prerelease.51", | |
| "@patternfly/react-charts": "^8.5.0-prerelease.18", | |
| "@patternfly/react-drag-drop": "^6.5.0-prerelease.49", | |
| "@patternfly/react-templates": "^6.5.0-prerelease.48", | |
| "@patternfly/react-topology": { | |
| ".": "^6.5.0-prerelease.4", | |
| "react": "^18.2.0" | |
| }, |
🧰 Tools
🪛 Biome (2.4.10)
[error] 109-109: The key @patternfly/react-topology was already declared.
(lint/suspicious/noDuplicateObjectKeys)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@package.json` around lines 109 - 122, The package.json contains duplicate
keys for "@patternfly/react-topology" (one as an object overriding the peer
"react" and one as a version string), so merge the intent into a single entry:
either remove the first peer override if you only intend to pin the package
version, or combine the intents by keeping one "@patternfly/react-topology" key
and consolidating both the version pin and the peer override (i.e., make a
single overrides entry that preserves the react peer override or the version pin
as required). Update the "@patternfly/react-topology" entry accordingly and
delete the other duplicate key.
| width: 56, | ||
| height: 56, | ||
| svgPathData: | ||
| 'M11.6668 22.3691H10.1113C9.23663 22.3691 8.39783 22.7166 7.77937 23.335C7.16092 23.9535 6.81348 24.7923 6.81348 25.6669V33.4447C6.81348 34.3193 7.16092 35.1581 7.77937 35.7766C8.39783 36.395 9.23663 36.7425 10.1113 36.7425H11.6668C12.5414 36.7425 13.3802 36.395 13.9987 35.7766C14.6171 35.1581 14.9646 34.3193 14.9646 33.4447V25.6669C14.9646 24.7923 14.6171 23.9535 13.9987 23.335C13.3802 22.7166 12.5414 22.3691 11.6668 22.3691ZM13.0357 33.4447C13.0317 33.8065 12.8861 34.1523 12.6303 34.4082C12.3744 34.664 12.0286 34.8095 11.6668 34.8136H10.1113C9.74946 34.8095 9.40362 34.664 9.14777 34.4082C8.89193 34.1523 8.74641 33.8065 8.74237 33.4447V25.6669C8.74641 25.3051 8.89193 24.9593 9.14777 24.7034C9.40362 24.4476 9.74946 24.3021 10.1113 24.298H11.6668C12.0286 24.3021 12.3744 24.4476 12.6303 24.7034C12.8861 24.9593 13.0317 25.3051 13.0357 25.6669V33.4447Z M45.8891 22.3691H44.3336C43.459 22.3691 42.6202 22.7166 42.0017 23.335C41.3833 23.9535 41.0358 24.7923 41.0358 25.6669V33.4447C41.0347 34.2863 41.3569 35.0963 41.9359 35.7071C42.5149 36.318 43.3064 36.683 44.1469 36.7269V40.4447C44.1428 41.4253 43.7515 42.3646 43.058 43.058C42.3646 43.7515 41.4253 44.1428 40.4447 44.1469H31.9514C31.7155 43.1784 31.1328 42.33 30.3137 41.762C29.4945 41.1941 28.4956 40.9461 27.5059 41.0648C26.5162 41.1836 25.6043 41.661 24.9428 42.4067C24.2813 43.1523 23.916 44.1146 23.916 45.1114C23.916 46.1082 24.2813 47.0704 24.9428 47.8161C25.6043 48.5617 26.5162 49.0391 27.5059 49.1579C28.4956 49.2767 29.4945 49.0286 30.3137 48.4607C31.1328 47.8928 31.7155 47.0443 31.9514 46.0758H40.4447C41.9382 46.0758 43.3705 45.4825 44.4265 44.4265C45.4825 43.3705 46.0758 41.9382 46.0758 40.4447V36.7269C46.9163 36.683 47.7078 36.318 48.2868 35.7071C48.8658 35.0963 49.1881 34.2863 49.1869 33.4447V25.6669C49.1869 25.2338 49.1016 24.805 48.9359 24.4049C48.7702 24.0048 48.5273 23.6413 48.221 23.335C47.9148 23.0288 47.5513 22.7859 47.1511 22.6202C46.751 22.4544 46.3222 22.3691 45.8891 22.3691ZM28.0003 47.258C27.4645 47.2123 26.9654 46.9672 26.6017 46.5711C26.238 46.175 26.0362 45.6569 26.0362 45.1191C26.0362 44.5814 26.238 44.0633 26.6017 43.6672C26.9654 43.2711 27.4645 43.026 28.0003 42.9803C28.536 43.026 29.0351 43.2711 29.3988 43.6672C29.7625 44.0633 29.9644 44.5814 29.9644 45.1191C29.9644 45.6569 29.7625 46.175 29.3988 46.5711C29.0351 46.9672 28.536 47.2123 28.0003 47.258ZM47.258 33.4447C47.254 33.8065 47.1085 34.1523 46.8526 34.4082C46.5968 34.664 46.2509 34.8095 45.8891 34.8136H44.3336C43.9718 34.8095 43.626 34.664 43.3701 34.4082C43.1143 34.1523 42.9687 33.8065 42.9647 33.4447V25.6669C42.9687 25.3051 43.1143 24.9593 43.3701 24.7034C43.626 24.4476 43.9718 24.3021 44.3336 24.298H45.8891C46.2509 24.3021 46.5968 24.4476 46.8526 24.7034C47.1085 24.9593 47.254 25.3051 47.258 25.6669V33.4447Z M43.5555 20.4871C43.6392 20.7205 43.8083 20.9135 44.0287 21.0271C44.2491 21.1408 44.5043 21.1667 44.743 21.0996C44.9817 21.0325 45.1861 20.8775 45.315 20.6657C45.444 20.4539 45.4878 20.2011 45.4377 19.9582C40.2888 2.52046 15.7111 2.53602 10.5933 19.9582C10.5729 20.1853 10.6323 20.4124 10.7613 20.6004C10.8904 20.7884 11.0809 20.9255 11.3001 20.9882C11.5194 21.0508 11.7536 21.035 11.9624 20.9436C12.1713 20.8521 12.3417 20.6907 12.4444 20.4871C13.38 17.0792 15.4089 14.0727 18.2192 11.9299C21.0296 9.78714 24.4659 8.62655 27.9999 8.62655C31.534 8.62655 34.9703 9.78714 37.7807 11.9299C40.591 14.0727 42.6199 17.0792 43.5555 20.4871Z', |
There was a problem hiding this comment.
Fix CI-blocking Prettier indentation on Line 9.
Line 9 is under-indented and currently fails prettier/prettier in CI. Reformat this line (or run Prettier on the file) to unblock the pipeline.
Suggested minimal fix
- 'M11.6668 22.3691H10.1113C9.23663 ...
+ 'M11.6668 22.3691H10.1113C9.23663 ...📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'M11.6668 22.3691H10.1113C9.23663 22.3691 8.39783 22.7166 7.77937 23.335C7.16092 23.9535 6.81348 24.7923 6.81348 25.6669V33.4447C6.81348 34.3193 7.16092 35.1581 7.77937 35.7766C8.39783 36.395 9.23663 36.7425 10.1113 36.7425H11.6668C12.5414 36.7425 13.3802 36.395 13.9987 35.7766C14.6171 35.1581 14.9646 34.3193 14.9646 33.4447V25.6669C14.9646 24.7923 14.6171 23.9535 13.9987 23.335C13.3802 22.7166 12.5414 22.3691 11.6668 22.3691ZM13.0357 33.4447C13.0317 33.8065 12.8861 34.1523 12.6303 34.4082C12.3744 34.664 12.0286 34.8095 11.6668 34.8136H10.1113C9.74946 34.8095 9.40362 34.664 9.14777 34.4082C8.89193 34.1523 8.74641 33.8065 8.74237 33.4447V25.6669C8.74641 25.3051 8.89193 24.9593 9.14777 24.7034C9.40362 24.4476 9.74946 24.3021 10.1113 24.298H11.6668C12.0286 24.3021 12.3744 24.4476 12.6303 24.7034C12.8861 24.9593 13.0317 25.3051 13.0357 25.6669V33.4447Z M45.8891 22.3691H44.3336C43.459 22.3691 42.6202 22.7166 42.0017 23.335C41.3833 23.9535 41.0358 24.7923 41.0358 25.6669V33.4447C41.0347 34.2863 41.3569 35.0963 41.9359 35.7071C42.5149 36.318 43.3064 36.683 44.1469 36.7269V40.4447C44.1428 41.4253 43.7515 42.3646 43.058 43.058C42.3646 43.7515 41.4253 44.1428 40.4447 44.1469H31.9514C31.7155 43.1784 31.1328 42.33 30.3137 41.762C29.4945 41.1941 28.4956 40.9461 27.5059 41.0648C26.5162 41.1836 25.6043 41.661 24.9428 42.4067C24.2813 43.1523 23.916 44.1146 23.916 45.1114C23.916 46.1082 24.2813 47.0704 24.9428 47.8161C25.6043 48.5617 26.5162 49.0391 27.5059 49.1579C28.4956 49.2767 29.4945 49.0286 30.3137 48.4607C31.1328 47.8928 31.7155 47.0443 31.9514 46.0758H40.4447C41.9382 46.0758 43.3705 45.4825 44.4265 44.4265C45.4825 43.3705 46.0758 41.9382 46.0758 40.4447V36.7269C46.9163 36.683 47.7078 36.318 48.2868 35.7071C48.8658 35.0963 49.1881 34.2863 49.1869 33.4447V25.6669C49.1869 25.2338 49.1016 24.805 48.9359 24.4049C48.7702 24.0048 48.5273 23.6413 48.221 23.335C47.9148 23.0288 47.5513 22.7859 47.1511 22.6202C46.751 22.4544 46.3222 22.3691 45.8891 22.3691ZM28.0003 47.258C27.4645 47.2123 26.9654 46.9672 26.6017 46.5711C26.238 46.175 26.0362 45.6569 26.0362 45.1191C26.0362 44.5814 26.238 44.0633 26.6017 43.6672C26.9654 43.2711 27.4645 43.026 28.0003 42.9803C28.536 43.026 29.0351 43.2711 29.3988 43.6672C29.7625 44.0633 29.9644 44.5814 29.9644 45.1191C29.9644 45.6569 29.7625 46.175 29.3988 46.5711C29.0351 46.9672 28.536 47.2123 28.0003 47.258ZM47.258 33.4447C47.254 33.8065 47.1085 34.1523 46.8526 34.4082C46.5968 34.664 46.2509 34.8095 45.8891 34.8136H44.3336C43.9718 34.8095 43.626 34.664 43.3701 34.4082C43.1143 34.1523 42.9687 33.8065 42.9647 33.4447V25.6669C42.9687 25.3051 43.1143 24.9593 43.3701 24.7034C43.626 24.4476 43.9718 24.3021 44.3336 24.298H45.8891C46.2509 24.3021 46.5968 24.4476 46.8526 24.7034C47.1085 24.9593 47.254 25.3051 47.258 25.6669V33.4447Z M43.5555 20.4871C43.6392 20.7205 43.8083 20.9135 44.0287 21.0271C44.2491 21.1408 44.5043 21.1667 44.743 21.0996C44.9817 21.0325 45.1861 20.8775 45.315 20.6657C45.444 20.4539 45.4878 20.2011 45.4377 19.9582C40.2888 2.52046 15.7111 2.53602 10.5933 19.9582C10.5729 20.1853 10.6323 20.4124 10.7613 20.6004C10.8904 20.7884 11.0809 20.9255 11.3001 20.9882C11.5194 21.0508 11.7536 21.035 11.9624 20.9436C12.1713 20.8521 12.3417 20.6907 12.4444 20.4871C13.38 17.0792 15.4089 14.0727 18.2192 11.9299C21.0296 9.78714 24.4659 8.62655 27.9999 8.62655C31.534 8.62655 34.9703 9.78714 37.7807 11.9299C40.591 14.0727 42.6199 17.0792 43.5555 20.4871Z', | |
| 'M11.6668 22.3691H10.1113C9.23663 22.7166 8.39783 22.3691 7.77937 23.335C7.16092 23.9535 6.81348 24.7923 6.81348 25.6669V33.4447C6.81348 34.3193 7.16092 35.1581 7.77937 35.7766C8.39783 36.395 9.23663 36.7425 10.1113 36.7425H11.6668C12.5414 36.7425 13.3802 36.395 13.9987 35.7766C14.6171 35.1581 14.9646 34.3193 14.9646 33.4447V25.6669C14.9646 24.7923 14.6171 23.9535 13.9987 23.335C13.3802 22.7166 12.5414 22.3691 11.6668 22.3691ZM13.0357 33.4447C13.0317 33.8065 12.8861 34.1523 12.6303 34.4082C12.3744 34.664 12.0286 34.8095 11.6668 34.8136H10.1113C9.74946 34.8095 9.40362 34.664 9.14777 34.4082C8.89193 34.1523 8.74641 33.8065 8.74237 33.4447V25.6669C8.74641 25.3051 8.89193 24.9593 9.14777 24.7034C9.40362 24.4476 9.74946 24.3021 10.1113 24.298H11.6668C12.0286 24.3021 12.3744 24.4476 12.6303 24.7034C12.8861 24.9593 13.0317 25.3051 13.0357 25.6669V33.4447Z M45.8891 22.3691H44.3336C43.459 22.3691 42.6202 22.7166 42.0017 23.335C41.3833 23.9535 41.0358 24.7923 41.0358 25.6669V33.4447C41.0347 34.2863 41.3569 35.0963 41.9359 35.7071C42.5149 36.318 43.3064 36.683 44.1469 36.7269V40.4447C44.1428 41.4253 43.7515 42.3646 43.058 43.058C42.3646 43.7515 41.4253 44.1428 40.4447 44.1469H31.9514C31.7155 43.1784 31.1328 42.33 30.3137 41.762C29.4945 41.1941 28.4956 40.9461 27.5059 41.0648C26.5162 41.1836 25.6043 41.661 24.9428 42.4067C24.2813 43.1523 23.916 44.1146 23.916 45.1114C23.916 46.1082 24.2813 47.0704 24.9428 47.8161C25.6043 48.5617 26.5162 49.0391 27.5059 49.1579C28.4956 49.2767 29.4945 49.0286 30.3137 48.4607C31.1328 47.8928 31.7155 47.0443 31.9514 46.0758H40.4447C41.9382 46.0758 43.3705 45.4825 44.4265 44.4265C45.4825 43.3705 46.0758 41.9382 46.0758 40.4447V36.7269C46.9163 36.683 47.7078 36.318 48.2868 35.7071C48.8658 35.0963 49.1881 34.2863 49.1869 33.4447V25.6669C49.1869 25.2338 49.1016 24.805 48.9359 24.4049C48.7702 24.0048 48.5273 23.6413 48.221 23.335C47.9148 23.0288 47.5513 22.7859 47.1511 22.6202C46.751 22.4544 46.3222 22.3691 45.8891 22.3691ZM28.0003 47.258C27.4645 47.2123 26.9654 46.9672 26.6017 46.5711C26.238 46.175 26.0362 45.6569 26.0362 45.1191C26.0362 44.5814 26.238 44.0633 26.6017 43.6672C26.9654 43.2711 27.4645 43.026 28.0003 42.9803C28.536 43.026 29.0351 43.2711 29.3988 43.6672C29.7625 44.0633 29.9644 44.5814 29.9644 45.1191C29.9644 45.6569 29.7625 46.175 29.3988 46.5711C29.0351 46.9672 28.536 47.2123 28.0003 47.258ZM47.258 33.4447C47.254 33.8065 47.1085 34.1523 46.8526 34.4082C46.5968 34.664 46.2509 34.8095 45.8891 34.8136H44.3336C43.9718 34.8095 43.626 34.664 43.3701 34.4082C43.1143 34.1523 42.9687 33.8065 42.9647 33.4447V25.6669C42.9687 25.3051 43.1143 24.9593 43.3701 24.7034C43.626 24.4476 43.9718 24.3021 44.3336 24.298H45.8891C46.2509 24.3021 46.5968 24.4476 46.8526 24.7034C47.1085 24.9593 47.254 25.3051 47.258 25.6669V33.4447Z M43.5555 20.4871C43.6392 20.7205 43.8083 20.9135 44.0287 21.0271C44.2491 21.1408 44.5043 21.1667 44.743 21.0996C44.9817 21.0325 45.1861 20.8775 45.315 20.6657C45.444 20.4539 45.4878 20.2011 45.4377 19.9582C40.2888 2.52046 15.7111 2.53602 10.5933 19.9582C10.5729 20.1853 10.6323 20.4124 10.7613 20.6004C10.8904 20.7884 11.0809 20.9255 11.3001 20.9882C11.5194 21.0508 11.7536 21.035 11.9624 20.9436C12.1713 20.8521 12.3417 20.6907 12.4444 20.4871C13.38 17.0792 15.4089 14.0727 18.2192 11.9299C21.0296 9.78714 24.4659 8.62655 27.9999 8.62655C31.534 8.62655 34.9703 9.78714 37.7807 11.9299C40.591 14.0727 42.6199 17.0792 43.5555 20.4871Z', |
🧰 Tools
🪛 GitHub Actions: Test / EvalHub Frontend Tests
[error] 9-9: ESLint/Prettier failed with rule "prettier/prettier": Prettier formatting error at 9:5. Insert "··".
🪛 GitHub Check: test
[failure] 9-9:
Insert ··
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@packages/eval-hub/frontend/src/app/icons/SupportIcon.ts` at line 9, Prettier
is failing because the long SVG path string inside the SupportIcon component
(the string starting "M11.6668 22.3691H10.1113...") is mis-indented on that
line; fix by reformatting that line to match the file's indentation (or run
Prettier on the file) so the path string aligns with the surrounding JSX/TS code
and trailing comma/quotes remain unchanged, targeting the SupportIcon
component's SVG path literal.
| svgPathData: | ||
| 'M2,2h10v10H2V2ZM4,4v6h6V4H4ZM20,2h10v10H20V2ZM22,4v6h6V4h-6ZM2,20h10v10H2V20ZM4,22v6h6v-6H4ZM20,20h10v10H20V20ZM22,22v6h6v-6h-6ZM12,6h8v2h-8V6ZM12,24h8v2h-8v-2ZM6,12h2v8H6v-8ZM24,12h2v8h-2v-8ZM14,14h4v4h-4v-4Z', |
There was a problem hiding this comment.
Fix lint indentation in svgPathData continuation.
Line 9 is missing two leading spaces and is currently failing static analysis.
Patch
icon: {
width: 32,
height: 32,
svgPathData:
- 'M2,2h10v10H2V2ZM4,4v6h6V4H4ZM20,2h10v10H20V2ZM22,4v6h6V4h-6ZM2,20h10v10H2V20ZM4,22v6h6v-6H4ZM20,20h10v10H20V20ZM22,22v6h6v-6h-6ZM12,6h8v2h-8V6ZM12,24h8v2h-8v-2ZM6,12h2v8H6v-8ZM24,12h2v8h-2v-8ZM14,14h4v4h-4v-4Z',
+ 'M2,2h10v10H2V2ZM4,4v6h6V4H4ZM20,2h10v10H20V2ZM22,4v6h6V4h-6ZM2,20h10v10H2V20ZM4,22v6h6v-6H4ZM20,20h10v10H20V20ZM22,22v6h6v-6h-6ZM12,6h8v2h-8V6ZM12,24h8v2h-8v-2ZM6,12h2v8H6v-8ZM24,12h2v8h-2v-8ZM14,14h4v4h-4v-4Z',
xOffset: 0,
yOffset: 0,
},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| svgPathData: | |
| 'M2,2h10v10H2V2ZM4,4v6h6V4H4ZM20,2h10v10H20V2ZM22,4v6h6V4h-6ZM2,20h10v10H2V20ZM4,22v6h6v-6H4ZM20,20h10v10H20V20ZM22,22v6h6v-6h-6ZM12,6h8v2h-8V6ZM12,24h8v2h-8v-2ZM6,12h2v8H6v-8ZM24,12h2v8h-2v-8ZM14,14h4v4h-4v-4Z', | |
| svgPathData: | |
| 'M2,2h10v10H2V2ZM4,4v6h6V4H4ZM20,2h10v10H20V2ZM22,4v6h6V4h-6ZM2,20h10v10H2V20ZM4,22v6h6v-6H4ZM20,20h10v10H20V20ZM22,22v6h6v-6h-6ZM12,6h8v2h-8V6ZM12,24h8v2h-8v-2ZM6,12h2v8H6v-8ZM24,12h2v8h-2v-8ZM14,14h4v4h-4v-4Z', |
🧰 Tools
🪛 GitHub Check: test
[failure] 9-9:
Insert ··
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@packages/eval-hub/frontend/src/odh/ModArchNavIcon.ts` around lines 8 - 9, The
svgPathData value in ModArchNavIcon.ts has its continuation line mis-indented;
adjust the string line for the svgPathData property so it has two leading spaces
to match the surrounding indentation (i.e., align the line that begins with
'M2,2h10v10H2V2ZM4,4v6h6V4H4...') so the linter no longer flags the missing
indentation.
|
/ok-to-test |
The PF prerelease overrides changed npm hoisting, causing webpack to fail resolving transitive dependencies in the Docker build. Explicitly add @tanstack/query-core, reselect, and serialize-query-params. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
/ok-to-test |
|
PR needs rebase. DetailsInstructions 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. |
|
This PR is stale because it has been open 21 days with no activity. Remove stale label or comment or this will be closed in 7 days. |
Description
This is a TEST PR to demonstrate PatternFly 6.5 prerelease versions for design review of glass & high contrast themes, among other updates. This included:
createIconfunction which now expects icon details passed as an objectunstable_mask: undefinedproperty in 2 test files as now required by react-routerLocationmonaco-editordependency from^0.50.0to^0.54.0concatenateModules: falseinfrontend/config/webpack.prod.jsto verify build due to external shared singletons (seePF-TESTING.mdfor full details)How Has This Been Tested?
No testing complete yet
Test Impact
No testing updates addressed in this draft PR
Request review criteria:
DO NOT MERGE
Self checklist (all need to be checked):
If you have UI changes:
After the PR is posted & before it merges:
mainSummary by CodeRabbit
New Features
Bug Fixes
Chores