Skip to content

[wip] added model deployment details tab extension #4426

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

rsun19
Copy link
Contributor

@rsun19 rsun19 commented Jun 27, 2025

Description

How Has This Been Tested?

Test Impact

Request review criteria:

Self checklist (all need to be checked):

  • The developer has manually tested the changes and verified that the changes work
  • Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
  • The developer has added tests or explained why testing cannot be added (unit or cypress tests for related changes)

If you have UI changes:

  • Included any necessary screenshots or gifs if it was a UI change.
  • Included tags to the UX team if it was a UI/UX change.

After the PR is posted & before it merges:

  • The developer has tested their solution on a cluster by using the image produced by the PR to main

Summary by CodeRabbit

  • New Features

    • Introduced extensive type declarations and React component typings across the model registry UI, covering model details, registration, versioning, archives, and settings screens.
    • Added dynamic extension points to enable customizable tabs and actions within model version details, including a new "Deployments" tab.
    • Provided new hooks and utilities for fetching model artifacts, registries, versions, and managing notifications.
    • Added comprehensive API typings and utilities for model registry CRUD operations and state management.
    • Enhanced URL utilities for consistent routing within the model registry.
  • Refactor

    • Replaced static tab rendering in model version details with dynamic extension-based rendering for improved modularity and extensibility.
  • Chores

    • Updated linting scripts to invoke ESLint with increased memory allocation for better performance during code analysis.

@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress This PR is in WIP state label Jun 27, 2025
Copy link
Contributor

coderabbitai bot commented Jun 27, 2025

Walkthrough

This update introduces a comprehensive set of TypeScript declaration files for the model registry frontend, covering all major components, hooks, utilities, and extension points. It also refactors how model version detail tabs are rendered, shifting from hardcoded logic to a dynamic, extension-driven approach. Additionally, package configuration and linting scripts are updated.

Changes

File(s) Change Summary
frontend/@mf-types/@mf/modelRegistry/compiled-types/... (many files) Added new TypeScript declaration files for all model registry components, hooks, utilities, extension points, and types.
frontend/@mf-types/@mf/modelRegistry/api.d.ts, apis.d.ts Added API re-export and type mapping/proxy declaration files.
frontend/packages/model-registry/package.json Added explicit "exports" field for extension-points module.
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx Refactored tab rendering: removed static/conditional deployments tab logic, now uses dynamic extension-based tab rendering.
frontend/packages/modelServing/extensions.ts Added a new extension for the model registry deployments tab and updated the extension type union.
frontend/packages/plugin-core/src/extension-points/index.ts Added export for ./types module.
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/const.ts Added a blank line for formatting after an enum declaration.
frontend/package.json Updated linting scripts to use Node with increased memory allocation.

Sequence Diagram(s)

sequenceDiagram
    participant UI
    participant Extensions
    participant ModelServing

    UI->>Extensions: useExtensions('model-registry.version-details/tab')
    Extensions-->>UI: Return array of tab extensions
    loop For each extension
        UI->>ModelServing: Dynamically import extension component
        ModelServing-->>UI: Render extension tab with props
    end
    UI->>UI: Render all tabs (static + dynamic)
Loading

Possibly related PRs

  • opendatahub-io/odh-dashboard#4357: Introduces dynamic extension discovery and import generation for monorepo packages, closely related to this PR's dynamic extension loading and explicit export path management.

Suggested reviewers

  • manosnoam
  • antowaddle

Poem

In the warren of code, new types take their place,
Declarations abound, in a well-typed embrace.
Tabs now extend with a hop and a bound,
Extensions discovered, not statically found.
With memory for linting and exports anew,
This bunny says, “Ship it!”—the registry grew!
🐇✨

✨ Finishing Touches
  • 📝 Generate Docstrings

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

openshift-ci bot commented Jun 27, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign openshift-cherrypick-robot for approval. For more information see the Code Review Process.

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

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

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (1)

37-39: Consider handling multiple extensions.

The current implementation only uses the first extension (extensions[0]) if multiple deployment tab extensions are registered. Consider whether this limitation is intentional or if multiple tabs should be supported.

frontend/packages/modelServing/src/components/deployments/DeploymentsTab.tsx (2)

4-4: Consider using a shorter import alias for maintainability.

The import path is quite long and fragile. Consider creating a barrel export or alias to make this more maintainable.

-import ModelVersionRegisteredDeploymentsView from '../../../../model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionRegisteredDeploymentsView';
+// Consider creating a barrel export in model-registry package, e.g.:
+// import { ModelVersionRegisteredDeploymentsView } from '@odh-dashboard/model-registry';

12-12: Consider making eventKey configurable.

The eventKey="deployments" is hardcoded. If this extension system is meant to be flexible, consider making the eventKey configurable through the extension properties.

frontend/packages/modelServing/extensions.ts (1)

42-49: Consider whether this extension needs conditional flags.

The new deployment tab extension doesn't have any flags property, unlike other extensions in this file that use required: [PLUGIN_MODEL_SERVING]. Consider whether this extension should also be conditional based on feature flags or plugin availability.

 {
   type: 'model-registry.version-details/tab',
   properties: {
     id: 'model-registry-deployments',
     title: 'Deployments',
     component: () => import('./src/components/deployments/DeploymentsTab'),
   },
+  flags: {
+    required: [PLUGIN_MODEL_SERVING],
+  },
 },
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f9b08ea and 9f44021.

📒 Files selected for processing (5)
  • frontend/packages/model-registry/extension-points/index.ts (1 hunks)
  • frontend/packages/model-registry/package.json (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (4 hunks)
  • frontend/packages/modelServing/extensions.ts (3 hunks)
  • frontend/packages/modelServing/src/components/deployments/DeploymentsTab.tsx (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
frontend/packages/model-registry/package.json (1)
Learnt from: christianvogt
PR: opendatahub-io/odh-dashboard#4381
File: frontend/src/__tests__/cypress/tsconfig.json:9-9
Timestamp: 2025-06-19T20:38:32.485Z
Learning: In the ODH Dashboard project, the `frontend/src/__tests__/cypress/tsconfig.json` file intentionally has an empty `files` array to disable type checking for Cypress test files. This is part of the monorepo structure where Cypress was separated into its own package but type checking is deliberately disabled for it.
🧬 Code Graph Analysis (4)
frontend/packages/modelServing/extensions.ts (1)
frontend/packages/model-registry/extension-points/index.ts (1)
  • ModelRegistryDeploymentsTabExtension (10-17)
frontend/packages/modelServing/src/components/deployments/DeploymentsTab.tsx (2)
frontend/packages/model-registry/extension-points/index.ts (1)
  • ModelVersionRegisteredDeploymentsViewProps (5-8)
frontend/src/__tests__/cypress/cypress/pages/servingRuntimes.ts (1)
  • servingRuntimes (155-155)
frontend/packages/model-registry/extension-points/index.ts (1)
frontend/packages/plugin-core/src/extension-points/types.ts (1)
  • ComponentCodeRef (3-3)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (3)
frontend/packages/plugin-core/src/core/useExtensions.ts (1)
  • useExtensions (1-1)
frontend/packages/model-registry/extension-points/index.ts (1)
  • isModelRegistryDeploymentsTabExtension (19-22)
frontend/packages/plugin-core/src/core/helpers/LazyCodeRefComponent.tsx (1)
  • LazyCodeRefComponent (9-29)
🔇 Additional comments (5)
frontend/packages/model-registry/package.json (1)

35-37: LGTM! Proper module export pattern.

The addition of the exports field follows Node.js standards and correctly exposes the extension-points module for use by other packages.

frontend/packages/model-registry/extension-points/index.ts (1)

1-23: Well-structured extension point definitions.

The type definitions follow TypeScript best practices:

  • Good use of Pick<> utility type to extract only needed props
  • Proper extension type definition with correct generic parameters
  • Standard type guard implementation pattern

The code is clean and maintainable.

frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (1)

65-88: ```shell
#!/bin/bash

Re-run search without relying on ripgrep's type definitions for tsx

echo "Searching for deploymentMode usage across .ts and .tsx files..."
rg -A3 -B3 "deploymentMode.===.DeploymentMode\.(Standalone|ModelMesh)" -g '.ts' -g '.tsx'

echo "Searching for platformMode usage across .ts and .tsx files..."
rg -A3 -B3 "platformMode.!==.PlatformMode\.Kubeflow" -g '.ts' -g '.tsx'

echo "Searching for any deploymentMode or platformMode references..."
rg -A5 "deploymentMode.DeploymentMode|platformMode.PlatformMode" -g '.ts' -g '.tsx'


</details>
<details>
<summary>frontend/packages/modelServing/src/components/deployments/DeploymentsTab.tsx (1)</summary>

`6-25`: **Component implementation follows PatternFly patterns correctly.**

The component structure and prop forwarding are implemented correctly, following established PatternFly patterns.

</details>
<details>
<summary>frontend/packages/modelServing/extensions.ts (1)</summary>

`11-11`: **LGTM! Proper type import.**

The import of `ModelRegistryDeploymentsTabExtension` is correctly added and the type is properly included in the union type.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment on lines 2 to 3
import type ModelVersionDetailsTabs from '../upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs';
import type { ComponentCodeRef } from '../../plugin-core/src/extension-points/types';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yikes. We need a better solution than relative import to upstream. I'll make a note of this for future improvements to working with the upstream code.

For plugin-core use @odh-dashbaord/plugin-core

Comment on lines 5 to 8
export type ModelVersionRegisteredDeploymentsViewProps = Pick<
React.ComponentProps<typeof ModelVersionDetailsTabs>,
'inferenceServices' | 'servingRuntimes' | 'refresh'
>;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer to see the extension defining their own prop types rather that picking from ModelVersionDetailsTabs.

Comment on lines 37 to 34
const extensions = useExtensions(isModelRegistryDeploymentsTabExtension);
const extension = extensions.length ? extensions[0] : null;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'll eventually be creating some reusable extensible components such as tabs. But in the meantime you may as well just do the standard extension thing and loop over all extensions; rendering a tab per extension.

@rsun19 rsun19 force-pushed the deployed-models-section-extension branch 2 times, most recently from 893bd0f to 7098129 Compare June 30, 2025 16:12
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
frontend/packages/modelServing/src/components/deployments/types.ts (3)

26-35: Consider adding JSDoc comments for domain-specific types.

The annotation and label types contain Kubernetes-specific keys that would benefit from documentation explaining their purpose and expected values.

+/**
+ * Annotations specific to KServe InferenceService resources
+ */
 export type InferenceServiceAnnotations = Partial<{
+  /** Enables/disables authentication for the inference service */
   'security.kubeflow.io/enable-auth': string;
 }>;
+
+/**
+ * Labels for controlling network visibility and exposure
+ */
 export type InferenceServiceLabels = Partial<{
+  /** Controls Knative service visibility */
   'networking.knative.dev/visibility': string;
+  /** Exposes the service externally via KServe */
   'networking.kserve.io/visibility': 'exposed';
 }>;

36-113: Consider breaking down the large InferenceServiceKind type for better maintainability.

This type definition is comprehensive but quite large (77 lines). Consider extracting nested types like InferenceServiceSpec, InferenceServiceStatus, and PredictorSpec to improve readability and reusability.

Example refactor:

+export type PredictorSpec = {
+  tolerations?: Toleration[];
+  nodeSelector?: NodeSelector;
+  model?: {
+    // ... model configuration
+  };
+  maxReplicas?: number;
+  minReplicas?: number;
+  imagePullSecrets?: ImagePullSecret[];
+};
+
+export type InferenceServiceSpec = {
+  predictor: PredictorSpec;
+};
+
+export type InferenceServiceStatus = {
+  // ... status fields
+};
+
 export type InferenceServiceKind = K8sResourceCommon & {
   metadata: {
     // ... metadata
   };
-  spec: {
-    predictor: {
-      // ... large nested structure
-    };
-  };
-  status?: {
-    // ... large nested structure
-  };
+  spec: InferenceServiceSpec;
+  status?: InferenceServiceStatus;
 };

171-171: Remove the incorrect source map comment.

The comment references "k8sTypes.d.ts.map" but the current filename is "types.ts". This appears to be a copy-paste artifact that should be removed.

-//# sourceMappingURL=k8sTypes.d.ts.map
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 893bd0f and 7098129.

📒 Files selected for processing (11)
  • frontend/packages/model-registry/extension-points/index.ts (1 hunks)
  • frontend/packages/model-registry/package.json (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (4 hunks)
  • frontend/packages/model-registry/upstream/frontend/tsconfig.json (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/types.ts (1 hunks)
  • frontend/packages/modelServing/extensions.ts (3 hunks)
  • frontend/packages/modelServing/src/components/deployments/DeploymentsTab.tsx (1 hunks)
  • frontend/packages/modelServing/src/components/deployments/EmptyModelRegistryState.tsx (1 hunks)
  • frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsView.tsx (1 hunks)
  • frontend/packages/modelServing/src/components/deployments/types.ts (1 hunks)
  • frontend/packages/plugin-core/src/extension-points/index.ts (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • frontend/packages/modelServing/src/components/deployments/EmptyModelRegistryState.tsx
🚧 Files skipped from review as they are similar to previous changes (9)
  • frontend/packages/model-registry/upstream/frontend/tsconfig.json
  • frontend/packages/model-registry/package.json
  • frontend/packages/plugin-core/src/extension-points/index.ts
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx
  • frontend/packages/model-registry/extension-points/index.ts
  • frontend/packages/model-registry/upstream/frontend/types.ts
  • frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsView.tsx
  • frontend/packages/modelServing/extensions.ts
  • frontend/packages/modelServing/src/components/deployments/DeploymentsTab.tsx
🧰 Additional context used
🧬 Code Graph Analysis (1)
frontend/packages/modelServing/src/components/deployments/types.ts (3)
frontend/packages/model-registry/upstream/frontend/types.ts (1)
  • ModelVersionRegisteredDeploymentsViewProps (4-10)
frontend/src/utilities/useFetch.ts (1)
  • FetchStateObject (37-43)
backend/src/types.ts (1)
  • K8sResourceCommon (139-149)
🔇 Additional comments (3)
frontend/packages/modelServing/src/components/deployments/types.ts (3)

1-11: LGTM! Imports are well-structured and properly typed.

The imports cover all necessary dependencies including internal types, utilities, and Kubernetes SDK types. All imported types are utilized throughout the file.


21-25: LGTM! Enum follows TypeScript best practices.

The ServingDeploymentMode enum uses string values that match the enum keys, which provides good debugging experience and serialization safety.


114-170: LGTM! Supporting types are well-structured and follow Kubernetes patterns.

The Toleration, ServingContainer, and ServingRuntimeKind types properly model Kubernetes resources with appropriate optional fields and nested structures.

Comment on lines 13 to 16
export type ModelVersionRegisteredDeploymentsViewProps = {
id: string;
title: string;
inferenceServices: FetchStateObject<InferenceServiceKind[]>;
servingRuntimes: FetchStateObject<ServingRuntimeKind[]>;
refresh: () => void;
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify type duplication across packages.

The ModelVersionRegisteredDeploymentsViewProps type appears to be duplicated in frontend/packages/model-registry/upstream/frontend/types.ts according to the relevant code snippets. Consider centralizing this shared type to avoid maintenance issues.


🏁 Script executed:

#!/bin/bash
# Description: Check for duplicate type definitions across packages
# Expected: Find identical type definitions that should be centralized

# Search for ModelVersionRegisteredDeploymentsViewProps across the codebase
rg -A 10 "ModelVersionRegisteredDeploymentsViewProps"

Length of output: 12419


Extract and centralize ModelVersionRegisteredDeploymentsViewProps

The ModelVersionRegisteredDeploymentsViewProps type is currently duplicated in multiple packages:

  • frontend/packages/modelServing/src/components/deployments/types.ts
  • frontend/packages/model-registry/upstream/frontend/types.ts

Keeping identical definitions in sync across packages risks drift and increases maintenance overhead. Please:

• Move this shared type into a common module (e.g., frontend/packages/shared/types.ts).
• Update imports in both model-serving and model-registry to reference the centralized definition.

🤖 Prompt for AI Agents
In frontend/packages/modelServing/src/components/deployments/types.ts lines 13
to 19, the ModelVersionRegisteredDeploymentsViewProps type is duplicated across
packages. Move this type definition to a common shared module like
frontend/packages/shared/types.ts, then update the imports in both modelServing
and model-registry packages to import it from this centralized location to avoid
duplication and maintenance issues.

@rsun19 rsun19 force-pushed the deployed-models-section-extension branch 2 times, most recently from 4f00f56 to a51f850 Compare June 30, 2025 17:10
Comment on lines 13 to 26
<Tab
eventKey={id}
title={<TabTitleText>{title}</TabTitleText>}
aria-label="Deployments tab"
data-testid="deployments-tab"
>
<PageSection hasBodyWrapper={false} isFilled data-testid="deployments-tab-content">
<ModelVersionRegisteredDeploymentsView
inferenceServices={inferenceServices}
servingRuntimes={servingRuntimes}
refresh={refresh}
/>
</PageSection>
</Tab>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parent which renders the tabs should be responsible for creating the actual Tab the extension should just worry about the contents of the tab itself.

@rsun19 rsun19 force-pushed the deployed-models-section-extension branch from a51f850 to 44e1584 Compare June 30, 2025 19:05
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
frontend/packages/modelServing/src/components/deployments/types.ts (1)

12-16: Address type duplication as previously identified.

This issue was already flagged in previous reviews. The ModelVersionRegisteredDeploymentsViewProps type should be centralized to avoid maintenance issues.

🧹 Nitpick comments (2)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (2)

74-74: Remove console.log statement from production code.

Debug logging should be removed before merging to production.

-          console.log('extension', extension);

72-95: Remove unnecessary Fragment wrapper and approve the extension rendering logic.

The extension rendering implementation is solid, but the Fragment wrapper is unnecessary as flagged by static analysis.

-      <>
-        {extensions.map((extension) => {
+      {extensions.map((extension) => {
           const tabProps = findProps(extension.properties.id);
           if (!tabProps) {
             return null;
           }
           return (
             <Tab
               key={extension.properties.id}
               eventKey={extension.properties.id}
               aria-label={`${extension.properties.title} tab`}
               data-testid={`${extension.properties.id}-tab`}
               title={<TabTitleText>{extension.properties.title}</TabTitleText>}
             >
               <PageSection hasBodyWrapper={false} isFilled data-testid={`${extension.properties.id}-tab-content`}>
                 <LazyCodeRefComponent
                   component={extension.properties.component}
                   props={tabProps}
                 />
               </PageSection>
             </Tab>
-        )})}
-      </>
+        })}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a51f850 and 44e1584.

📒 Files selected for processing (11)
  • frontend/packages/model-registry/extension-points/index.ts (1 hunks)
  • frontend/packages/model-registry/package.json (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (3 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/const.ts (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.ts (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/tsconfig.json (1 hunks)
  • frontend/packages/modelServing/extensions.ts (3 hunks)
  • frontend/packages/modelServing/src/components/deployments/EmptyModelRegistryState.tsx (1 hunks)
  • frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsView.tsx (1 hunks)
  • frontend/packages/modelServing/src/components/deployments/types.ts (1 hunks)
  • frontend/packages/plugin-core/src/extension-points/index.ts (1 hunks)
✅ Files skipped from review due to trivial changes (3)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/const.ts
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.ts
  • frontend/packages/model-registry/extension-points/index.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • frontend/packages/model-registry/upstream/frontend/tsconfig.json
  • frontend/packages/model-registry/package.json
  • frontend/packages/plugin-core/src/extension-points/index.ts
  • frontend/packages/modelServing/src/components/deployments/EmptyModelRegistryState.tsx
  • frontend/packages/modelServing/extensions.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
frontend/packages/modelServing/src/components/deployments/types.ts (2)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.ts (1)
  • ModelVersionRegisteredDeploymentsViewProps (3-7)
backend/src/types.ts (1)
  • K8sResourceCommon (139-149)
🪛 Biome (1.9.4)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx

[error] 72-95: Avoid using unnecessary Fragment.

A fragment is redundant if it contains only one child, or if it is the child of a html element, and is not a keyed fragment.
Unsafe fix: Remove the Fragment

(lint/complexity/noUselessFragments)

🔇 Additional comments (4)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (2)

12-13: LGTM! Extension system imports are correctly added.

The imports properly bring in the necessary components and type guards for the extension-based tab rendering system.


33-44: LGTM! Extension usage follows the established pattern.

The useExtensions hook usage with the type guard and the findProps mapping function provide a clean, extensible architecture for dynamic tab rendering.

frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsView.tsx (1)

6-27: LGTM! Component structure and empty state handling are well implemented.

The component properly handles the loading state calculation and renders an appropriate empty state when no inference services are available.

frontend/packages/modelServing/src/components/deployments/types.ts (1)

18-174: LGTM! Comprehensive and well-structured type definitions.

The type definitions provide thorough coverage of the model serving domain with proper Kubernetes resource patterns and consistent naming conventions.

Comment on lines 29 to 41
return (
<EmptyModelRegistryState
title="No deployments from model registry"
headerIcon={() => (
<img
src={typedEmptyImage(ProjectObjectType.registeredModels, 'MissingDeployment')}
alt="missing deployment"
/>
)}
description="No deployments initiated from model registry for this model version."
testid="model-version-deployments-empty-state"
/>
);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix unreachable code and implement proper loading state handling.

The return statement on lines 29-41 is unreachable because the previous condition (lines 13-27) will always execute when !isLoading && !inferenceServices.data.length is true. The loading state should be handled properly.

-  return (
-    <EmptyModelRegistryState
-      title="No deployments from model registry"
-      headerIcon={() => (
-        <img
-          src={typedEmptyImage(ProjectObjectType.registeredModels, 'MissingDeployment')}
-          alt="missing deployment"
-        />
-      )}
-      description="No deployments initiated from model registry for this model version."
-      testid="model-version-deployments-empty-state"
-    />
-  );
+  // Show loading state or handle data exists case
+  // TODO: Implement proper loading UI or data rendering when model serving is available
+  return (
+    <EmptyModelRegistryState
+      title="No deployments from model registry"
+      headerIcon={() => (
+        <img
+          src={typedEmptyImage(ProjectObjectType.registeredModels, 'MissingDeployment')}
+          alt="missing deployment"
+        />
+      )}
+      description="No deployments initiated from model registry for this model version."
+      testid="model-version-deployments-empty-state"
+    />
+  );
📝 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.

Suggested change
return (
<EmptyModelRegistryState
title="No deployments from model registry"
headerIcon={() => (
<img
src={typedEmptyImage(ProjectObjectType.registeredModels, 'MissingDeployment')}
alt="missing deployment"
/>
)}
description="No deployments initiated from model registry for this model version."
testid="model-version-deployments-empty-state"
/>
);
// Show loading state or handle data exists case
// TODO: Implement proper loading UI or data rendering when model serving is available
return (
<EmptyModelRegistryState
title="No deployments from model registry"
headerIcon={() => (
<img
src={typedEmptyImage(ProjectObjectType.registeredModels, 'MissingDeployment')}
alt="missing deployment"
/>
)}
description="No deployments initiated from model registry for this model version."
testid="model-version-deployments-empty-state"
/>
);
🤖 Prompt for AI Agents
In
frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsView.tsx
around lines 13 to 41, the return statement rendering EmptyModelRegistryState is
unreachable due to a prior condition that always returns when !isLoading &&
!inferenceServices.data.length is true. To fix this, refactor the component to
properly handle the loading state by adding a conditional check for isLoading
before rendering the empty state, ensuring that the loading UI is shown while
data is being fetched and the empty state only renders when loading is complete
and no data exists.

@rsun19 rsun19 force-pushed the deployed-models-section-extension branch from 44e1584 to 428a17b Compare July 1, 2025 17:47
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
frontend/packages/modelServing/src/components/deployments/types.ts (1)

12-16: Address type duplication across packages.

The ModelVersionRegisteredDeploymentsViewProps type is duplicated in frontend/packages/model-registry/upstream/frontend/types.ts. This creates maintenance overhead and potential drift between definitions.

Consider centralizing this shared type in a common module (e.g., frontend/packages/shared/types.ts) and updating imports in both packages to reference the centralized definition.

🧹 Nitpick comments (1)
frontend/packages/modelServing/src/components/deployments/types.ts (1)

175-175: Remove unnecessary source map comment.

The source map comment appears to be auto-generated and may not be needed in this manually created TypeScript file.

-//# sourceMappingURL=k8sTypes.d.ts.map
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 44e1584 and 428a17b.

📒 Files selected for processing (11)
  • frontend/packages/model-registry/extension-points/index.ts (1 hunks)
  • frontend/packages/model-registry/package.json (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (3 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/const.ts (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.ts (1 hunks)
  • frontend/packages/model-registry/upstream/frontend/tsconfig.json (1 hunks)
  • frontend/packages/modelServing/extensions.ts (3 hunks)
  • frontend/packages/modelServing/src/components/deployments/EmptyModelRegistryState.tsx (1 hunks)
  • frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsView.tsx (1 hunks)
  • frontend/packages/modelServing/src/components/deployments/types.ts (1 hunks)
  • frontend/packages/plugin-core/src/extension-points/index.ts (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • frontend/packages/model-registry/extension-points/index.ts
  • frontend/packages/modelServing/src/components/deployments/EmptyModelRegistryState.tsx
🚧 Files skipped from review as they are similar to previous changes (7)
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/const.ts
  • frontend/packages/model-registry/package.json
  • frontend/packages/model-registry/upstream/frontend/tsconfig.json
  • frontend/packages/plugin-core/src/extension-points/index.ts
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.ts
  • frontend/packages/modelServing/extensions.ts
  • frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsView.tsx
🧰 Additional context used
🧬 Code Graph Analysis (1)
frontend/packages/modelServing/src/components/deployments/types.ts (2)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.ts (1)
  • ModelVersionRegisteredDeploymentsViewProps (3-7)
backend/src/types.ts (1)
  • K8sResourceCommon (139-149)
🪛 Biome (1.9.4)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx

[error] 72-95: Avoid using unnecessary Fragment.

A fragment is redundant if it contains only one child, or if it is the child of a html element, and is not a keyed fragment.
Unsafe fix: Remove the Fragment

(lint/complexity/noUselessFragments)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Lint
  • GitHub Check: Cypress-Setup
🔇 Additional comments (4)
frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx (3)

12-13: LGTM: Clean import additions for extension support.

The new imports properly support the extension-based architecture transition.


33-33: LGTM: Proper extension hook usage.

The useExtensions hook with the type guard follows the standard extension pattern.


35-44: LGTM: Clean props mapping logic.

The findProps function provides a clean way to map extension IDs to their required props.

frontend/packages/modelServing/src/components/deployments/types.ts (1)

25-174: LGTM: Comprehensive type definitions for model serving.

The Kubernetes/OpenShift resource type definitions are comprehensive and well-structured, providing proper typing for inference services, serving runtimes, and related components.

Comment on lines 18 to 23
export type FetchStateObject<T, E = Error> = {
data: T;
loaded: boolean;
error?: E;
refresh: () => void;
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify if FetchStateObject type already exists.

The FetchStateObject type is commonly used across React applications for managing async state. Verify if this type is already defined elsewhere in the codebase to avoid duplication.


🏁 Script executed:

#!/bin/bash
# Description: Check if FetchStateObject type is already defined elsewhere
# Expected: Find existing definitions to avoid duplication

rg -A 5 "FetchStateObject" --type ts

Length of output: 95603


Remove duplicate FetchStateObject definition and import the existing type

The FetchStateObject type is already exported from frontend/src/utilities/useFetch.ts. To avoid duplication, remove your local definition and import it instead.

• File: frontend/packages/modelServing/src/components/deployments/types.ts

  • Delete lines 18–23 where FetchStateObject is redefined.
  • Add at the top:
    import { FetchStateObject } from '#~/utilities/useFetch';

Suggested diff:

--- a/frontend/packages/modelServing/src/components/deployments/types.ts
+++ b/frontend/packages/modelServing/src/components/deployments/types.ts
@@
-import type FetchStateObject<T, E = Error> = {
-  data: T;
-  loaded: boolean;
-  error?: E;
-  refresh: () => void;
-};
+import { FetchStateObject } from '#~/utilities/useFetch';
🤖 Prompt for AI Agents
In frontend/packages/modelServing/src/components/deployments/types.ts at lines
18 to 23, remove the local definition of the FetchStateObject type to avoid
duplication. Then, add an import statement at the top of the file: import {
FetchStateObject } from '#~/utilities/useFetch'; to use the existing type
definition from that module.

@rsun19 rsun19 changed the title [wip] added model deployment details tab extension added model deployment details tab extension Jul 2, 2025
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress This PR is in WIP state label Jul 2, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
frontend/package.json (1)

36-38: Unify memory-limit handling across lint scripts

Hard-coding node --max-old-space-size=8192 in every ESLint invocation solves the OOM issue, but it:

  1. Duplicates the limit in multiple scripts (test:fix, test:lint, but not lint:goal or future scripts).
  2. Couples the command to the explicit path ./node_modules/.bin/eslint, which npm/yarn already resolves.
  3. Becomes harder to tweak globally.

A leaner, portable alternative is to set the limit via NODE_OPTIONS once and keep the script bodies simple, e.g.:

-    "test:fix": "node --max-old-space-size=8192 ./node_modules/.bin/eslint --ext .js,.ts,.jsx,.tsx . --fix",
-    "test:lint": "node --max-old-space-size=8192 ./node_modules/.bin/eslint --max-warnings 0 --ext .js,.ts,.jsx,.tsx .",
+    "test:fix": "cross-env NODE_OPTIONS=--max-old-space-size=8192 eslint --ext .js,.ts,.jsx,.tsx . --fix",
+    "test:lint": "cross-env NODE_OPTIONS=--max-old-space-size=8192 eslint --max-warnings 0 --ext .js,.ts,.jsx,.tsx .",

Benefits:
• Single place (NODE_OPTIONS) to tune memory.
• Avoids path coupling—eslint is resolved via node_modules/.bin automatically.
• Works on all shells/OS when using cross-env (already frequently used in JS projects; tiny dependency).

If you’d rather not add cross-env, at least replicate the memory flag in lint:goal to prevent inconsistent OOM behavior.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 263caf0 and 99d90f5.

📒 Files selected for processing (1)
  • frontend/package.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
frontend/package.json (1)
Learnt from: christianvogt
PR: opendatahub-io/odh-dashboard#4381
File: frontend/src/__tests__/cypress/tsconfig.json:9-9
Timestamp: 2025-06-19T20:38:32.485Z
Learning: In the ODH Dashboard project, the `frontend/src/__tests__/cypress/tsconfig.json` file intentionally has an empty `files` array to disable type checking for Cypress test files. This is part of the monorepo structure where Cypress was separated into its own package but type checking is deliberately disabled for it.
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Cypress-Setup
  • GitHub Check: Lint

@rsun19 rsun19 changed the title added model deployment details tab extension [wip] added model deployment details tab extension Jul 3, 2025
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress This PR is in WIP state label Jul 3, 2025
@rsun19 rsun19 force-pushed the deployed-models-section-extension branch from 9c82516 to 34f9775 Compare July 7, 2025 19:15
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (12)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useNotification.d.ts (2)

1-9: Prefer type-only import and omit unnecessary undefined union

A .d.ts file should avoid value-level imports.

  1. Use a type-only import instead of a default import – this removes the runtime dependency on react and works regardless of esModuleInterop.
  2. In NotificationRemoveProps the parameter can be declared optional (id?: number) instead of number | undefined, which is simpler and idiomatic.
-import React from 'react';
+import type { ReactNode } from 'react';
...
-type NotificationProps = (title: string, message?: React.ReactNode) => void;
-type NotificationRemoveProps = (id: number | undefined) => void;
+type NotificationProps = (title: string, message?: ReactNode) => void;
+type NotificationRemoveProps = (id?: number) => void;

17-17: Remove useless empty export

Biome flags the export {} as redundant because the file already has named exports.
It can be deleted without changing the public API.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveModelVersionModal.d.ts (1)

8-8: Remove the useless empty export.

The empty export statement is unnecessary since there's already a named export of the component.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreModelVersionModal.d.ts (1)

8-8: Remove the useless empty export.

The empty export statement is unnecessary since there's already a named export of the component.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveRegisteredModelModal.d.ts (1)

8-8: Remove the useless empty export.

The empty export statement is unnecessary since there's already a named export of the component.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreRegisteredModel.d.ts (1)

8-8: Remove the useless empty export.

The empty export statement is unnecessary since there's already a named export of the component.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistryAPI.d.ts (1)

6-6: Remove useless empty export.

The empty export is unnecessary since there's already a named export declaration.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/AppContext.d.ts (1)

9-9: Remove useless empty export.

The empty export is unnecessary since there are already named export declarations.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/usePrefillRegisterVersionFields.d.ts (1)

15-15: Remove useless empty export.

The empty export is unnecessary since there's already a named export declaration.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistryContext.d.ts (1)

13-13: Remove useless empty export.

The empty export is unnecessary since there are already named export declarations.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/updateTimestamps.d.ts (1)

6-6: Remove useless empty export.

The empty export is unnecessary since there are already named export declarations.

-export {};
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistrySelectorContext.d.ts (1)

15-15: Remove useless empty export.

The empty export statement is redundant since there are other exports in the file.

-export {};
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 99d90f5 and 34f9775.

📒 Files selected for processing (107)
  • frontend/@mf-types/@mf/modelRegistry/api.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/apis.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/__tests__/unit/testUtils/hooks.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/AppContext.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/k8s.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/service.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/updateTimestamps.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistryContext.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistrySelectorContext.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelArtifactsByVersionId.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistries.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistriesSetting.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistryAPI.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistryAPIState.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelVersionById.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelVersions.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelVersionsByRegisteredModel.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useNotification.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useRegisteredModelById.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useRegisteredModels.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/ModelRegistryCoreLoader.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/ModelRegistryRoutes.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/InvalidModelRegistry.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelPropertiesDescriptionListGroup.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelPropertiesTableRow.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelRegistry.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelRegistrySelector.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelRegistrySelectorNavigator.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetails.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsHeaderActions.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsView.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionSelector.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/const.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelDetailsView.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionListView.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersions.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsHeaderActions.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTable.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTableColumns.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTableRow.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTabs.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/const.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ArchiveModelVersionDetails.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ArchiveModelVersionDetailsBreadcrumb.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionArchiveDetails.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionArchiveDetailsBreadcrumb.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchive.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveListView.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveTable.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/PrefilledModelRegistryField.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModel.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelDetailsFormSection.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelErrors.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterVersion.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisteredModelSelector.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationCommonFormSections.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationFormFooter.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/const.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/usePrefillRegisterVersionFields.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/useRegisterModelData.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/utils.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelListView.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelTable.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelTableRow.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelsTableColumns.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelsTableToolbar.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelArchiveDetails.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelArchiveDetailsBreadcrumb.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchive.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveListView.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveTable.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveModelVersionModal.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveRegisteredModelModal.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/EmptyModelRegistryState.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/FormFieldset.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ModelLabels.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ModelTimestamp.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreModelVersionModal.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreRegisteredModel.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/routeUtils.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/utils.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/DeleteModelRegistryModal.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistriesTable.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistriesTableRow.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryCreateModal.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryCreateModalFooter.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryDatabasePassword.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistrySettings.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistrySettingsRoutes.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryTableRowStatus.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/PasswordInput.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/columns.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/components/ThemeAwareFormGroupWrapper.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/types.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/utilities/const.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/utils.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/concepts/k8s/K8sNameDescriptionField/K8sNameDescriptionField.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/concepts/k8s/K8sNameDescriptionField/ResourceNameField.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/concepts/k8s/ResourceNameDefinitionTootip.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/ModelRegistrySettingsRoutesWrapper.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/ModelRegistryWrapper.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/api.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/extension-points.d.ts (1 hunks)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/extensions.d.ts (1 hunks)
⛔ Files not processed due to max files limit (15)
  • frontend/@mf-types/@mf/modelRegistry/extension-points.d.ts
  • frontend/@mf-types/@mf/modelRegistry/extensions.d.ts
  • frontend/@mf-types/index.d.ts
  • frontend/packages/model-registry/upstream/frontend/config/moduleFederation.js
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetails.tsx
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsHeaderActions.tsx
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.tsx
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ArchiveModelVersionDetails.tsx
  • frontend/packages/model-registry/upstream/frontend/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionArchiveDetails.tsx
  • frontend/packages/model-registry/upstream/frontend/src/odh/api.ts
  • frontend/packages/model-registry/upstream/frontend/src/odh/extension-points.ts
  • frontend/packages/modelServing/extensions.ts
  • frontend/packages/modelServing/src/components/archive/ArchiveButton.tsx
  • frontend/packages/modelServing/src/components/deployments/ModelVersionRegisteredDeploymentsViewWrapper.tsx
  • frontend/packages/modelServing/tsconfig.json
✅ Files skipped from review due to trivial changes (25)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/extensions.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTableColumns.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelVersionsByRegisteredModel.d.ts
  • frontend/@mf-types/@mf/modelRegistry/api.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/InvalidModelRegistry.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistries.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/columns.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchive.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryCreateModal.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelTableRow.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/const.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/EmptyModelRegistryState.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelRegistrySelector.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ThemeAwareSearchInput.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetails.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelArtifactsByVersionId.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTableRow.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelDetailsView.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/components/ThemeAwareFormGroupWrapper.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionArchiveDetails.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/const.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryDatabasePassword.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelErrors.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelPropertiesDescriptionListGroup.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/routeUtils.d.ts
🚧 Files skipped from review as they are similar to previous changes (69)
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/ModelRegistrySettingsRoutesWrapper.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterVersion.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModel.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistrySettings.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/ModelRegistryRoutes.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistrySettingsRoutes.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/ModelRegistryWrapper.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useRegisteredModels.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ArchiveModelVersionDetails.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/concepts/k8s/ResourceNameDefinitionTootip.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelArchiveDetailsBreadcrumb.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistriesSetting.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/PrefilledModelRegistryField.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelVersions.d.ts
  • frontend/@mf-types/@mf/modelRegistry/apis.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/concepts/k8s/K8sNameDescriptionField/ResourceNameField.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useRegisteredModelById.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/ModelRegistryCoreLoader.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ArchiveModelVersionDetailsBreadcrumb.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsHeaderActions.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelsTableToolbar.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ModelTimestamp.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/FormFieldset.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsHeaderActions.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsView.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelVersionById.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/PasswordInput.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionSelector.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryCreateModalFooter.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelsTableColumns.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationFormFooter.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionListView.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveTable.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistriesTableRow.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchiveListView.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelRegistry.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegistrationCommonFormSections.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionArchiveDetailsBreadcrumb.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersions.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/DeleteModelRegistryModal.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/api.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelRegistrySelectorNavigator.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelListView.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/types.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveTable.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/concepts/k8s/K8sNameDescriptionField/K8sNameDescriptionField.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisterModelDetailsFormSection.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/RegisteredModelSelector.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ModelLabels.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistryAPIState.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionDetails/ModelVersionDetailsTabs.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelsArchiveListView.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModelsArchive/RegisteredModelArchiveDetails.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisteredModels/RegisteredModelTable.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTabs.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/utils.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersions/ModelVersionsTable.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelPropertiesTableRow.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistriesTable.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/useRegisterModelData.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/const.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/ModelVersionsArchive/ModelVersionsArchive.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/utils.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/types.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/odh/extension-points.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/utils.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/utilities/const.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/k8s.d.ts
  • frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/service.d.ts
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: christianvogt
PR: opendatahub-io/odh-dashboard#4381
File: frontend/src/__tests__/cypress/tsconfig.json:9-9
Timestamp: 2025-06-19T20:38:32.485Z
Learning: In the ODH Dashboard project, the `frontend/src/__tests__/cypress/tsconfig.json` file intentionally has an empty `files` array to disable type checking for Cypress test files. This is part of the monorepo structure where Cypress was separated into its own package but type checking is deliberately disabled for it.
🧬 Code Graph Analysis (10)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/__tests__/unit/testUtils/hooks.d.ts (1)
frontend/src/__tests__/unit/testUtils/hooks.ts (4)
  • renderHook (59-98)
  • testHook (112-133)
  • standardUseFetchState (149-158)
  • createComparativeValue (201-202)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/AppContext.d.ts (1)
frontend/src/app/AppContext.ts (2)
  • AppContext (14-14)
  • useAppContext (16-16)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/updateTimestamps.d.ts (1)
frontend/src/concepts/modelRegistry/utils/updateTimestamps.ts (3)
  • bumpModelVersionTimestamp (11-45)
  • bumpRegisteredModelTimestamp (47-81)
  • bumpBothTimestamps (83-92)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistrySelectorContext.d.ts (2)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/types.d.ts (1)
  • ModelRegistry (15-20)
frontend/src/__tests__/cypress/cypress/pages/modelRegistry.ts (1)
  • modelRegistry (248-248)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/usePrefillRegisterVersionFields.d.ts (2)
frontend/src/pages/projects/types.ts (1)
  • UpdateObjectAtPropAndValue (8-11)
frontend/src/pages/modelRegistry/screens/RegisterModel/usePrefillRegisterVersionFields.ts (1)
  • usePrefillRegisterVersionFields (25-87)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveModelVersionModal.d.ts (1)
frontend/src/pages/modelRegistry/screens/components/ArchiveModelVersionModal.tsx (1)
  • ArchiveModelVersionModal (25-117)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveRegisteredModelModal.d.ts (1)
frontend/src/pages/modelRegistry/screens/components/ArchiveRegisteredModelModal.tsx (1)
  • ArchiveRegisteredModelModal (25-122)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreModelVersionModal.d.ts (1)
frontend/src/pages/modelRegistry/screens/components/RestoreModelVersionModal.tsx (1)
  • RestoreModelVersionModal (15-77)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreRegisteredModel.d.ts (1)
frontend/src/pages/modelRegistry/screens/components/RestoreRegisteredModel.tsx (1)
  • RestoreRegisteredModelModal (15-83)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryTableRowStatus.d.ts (1)
frontend/src/pages/modelRegistrySettings/ModelRegistryTableRowStatus.tsx (1)
  • ModelRegistryTableRowStatus (36-164)
🪛 Biome (1.9.4)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/__tests__/unit/testUtils/hooks.d.ts

[error] 3-3: Don't use 'Function' as a type.

Prefer explicitly define the function shape. This type accepts any function-like value, which can be a common source of bugs.

(lint/complexity/noBannedTypes)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/AppContext.d.ts

[error] 8-9: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/updateTimestamps.d.ts

[error] 5-6: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistryContext.d.ts

[error] 12-13: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistrySelectorContext.d.ts

[error] 14-15: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistryAPI.d.ts

[error] 5-6: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useNotification.d.ts

[error] 16-17: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/usePrefillRegisterVersionFields.d.ts

[error] 14-15: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveModelVersionModal.d.ts

[error] 7-8: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveRegisteredModelModal.d.ts

[error] 7-8: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreModelVersionModal.d.ts

[error] 7-8: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreRegisteredModel.d.ts

[error] 7-8: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryTableRowStatus.d.ts

[error] 6-7: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Lint
🔇 Additional comments (15)
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveModelVersionModal.d.ts (1)

2-7: Type declarations look correct and match the implementation.

The props interface accurately reflects the component's requirements with proper callback signatures and string parameter.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreModelVersionModal.d.ts (1)

2-7: Type declarations are accurate and consistent.

The props interface correctly matches the component implementation with appropriate callback and string parameter types.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/ArchiveRegisteredModelModal.d.ts (1)

2-7: Type declarations are correct and align with the implementation.

The props interface properly defines the callback functions and registeredModelName parameter as expected by the component.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/components/RestoreRegisteredModel.d.ts (1)

2-7: Type declarations are properly defined and match the implementation.

The props interface correctly specifies the callback functions and registeredModelName parameter consistent with the component's actual implementation.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/hooks/useModelRegistryAPI.d.ts (1)

1-5: Hook declaration looks correct.

The type definition properly extends ModelRegistryAPIState with the refreshAllAPI method and follows standard TypeScript declaration patterns.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/AppContext.d.ts (1)

1-8: Context declaration looks correct.

The type definitions properly define the app context with config and user settings, following standard React context patterns. The imports and type structure are appropriate.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/modelRegistry/screens/RegisterModel/usePrefillRegisterVersionFields.d.ts (1)

1-14: Hook declaration looks correct.

The type definitions properly define the hook arguments and return values, including optional parameters for error handling and data loading states. The structure follows standard React hook patterns.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistryContext.d.ts (1)

1-12: Context declaration looks correct.

The type definitions properly define the model registry context with API state and refresh functionality, following standard React context patterns. The provider props correctly include children and model registry name.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/api/updateTimestamps.d.ts (1)

1-5: API function declarations look correct.

The type definitions properly declare the timestamp update functions with appropriate parameters and return types. The use of MinimalModelRegistryAPI for the registered model function is a good pattern that follows the principle of least privilege.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/context/ModelRegistrySelectorContext.d.ts (3)

1-9: Well-structured context type definition.

The ModelRegistrySelectorContextType is comprehensive and properly typed, including loading state, error handling, registry management, and preference selection capabilities.


10-12: Standard React provider props pattern.

The provider props type correctly follows React patterns with appropriate children typing.


13-14: Proper context and provider declarations.

The context and provider component declarations are correctly typed and follow React/TypeScript patterns.

frontend/@mf-types/@mf/modelRegistry/compiled-types/src/__tests__/unit/testUtils/hooks.d.ts (3)

6-26: Excellent extension of RTL's RenderHookResult.

The RenderHookResultExt interface adds valuable testing capabilities with comprehensive documentation. The additional methods for tracking previous results, update counts, and waiting for updates will be very useful for hook testing.


27-58: Well-designed hook testing API.

Both renderHook and testHook declarations provide clean APIs for testing React hooks with excellent documentation and examples. The type signatures are comprehensive and appropriate.


59-79: Useful testing utility functions.

Both standardUseFetchState and createComparativeValue provide valuable abstractions for common testing patterns with clear documentation and appropriate typing.

@@ -0,0 +1,7 @@
import React from 'react';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Prefer namespace (* as) import in declaration files

import React from 'react'; relies on esModuleInterop and may break consumers that compile with stricter settings (e.g. allowSyntheticDefaultImports: false).
In .d.ts files the idiomatic, interoperable form is:

-import React from 'react';
+import * as React from 'react';
📝 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.

Suggested change
import React from 'react';
import * as React from 'react';
🤖 Prompt for AI Agents
In
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryTableRowStatus.d.ts
at line 1, replace the default import of React with a namespace import using
`import * as React from 'react';` to ensure compatibility with stricter
TypeScript compiler settings and avoid reliance on esModuleInterop.

Comment on lines +6 to +7
export declare const ModelRegistryTableRowStatus: React.FC<ModelRegistryTableRowStatusProps>;
export {};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Remove the redundant export {} to satisfy linter & reduce noise

The file is already a module due to the explicit import/export above, so the empty export is superfluous and triggers Biome’s noUselessEmptyExport error.

-export {};
📝 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.

Suggested change
export declare const ModelRegistryTableRowStatus: React.FC<ModelRegistryTableRowStatusProps>;
export {};
export declare const ModelRegistryTableRowStatus: React.FC<ModelRegistryTableRowStatusProps>;
🧰 Tools
🪛 Biome (1.9.4)

[error] 6-7: This empty export is useless because there's another export or import.

This import makes useless the empty export.

Safe fix: Remove this useless empty export.

(lint/complexity/noUselessEmptyExport)

🤖 Prompt for AI Agents
In
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/app/pages/settings/ModelRegistryTableRowStatus.d.ts
at lines 6 to 7, remove the redundant empty export statement `export {}` since
the file already contains an explicit export and is recognized as a module. This
will satisfy the linter rule `noUselessEmptyExport` and reduce unnecessary code
noise.

Comment on lines +3 to +5
export type BooleanValues<T> = T extends boolean | number | null | undefined | Function ? boolean | undefined : boolean | undefined | {
[K in keyof T]?: BooleanValues<T[K]>;
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Replace generic 'Function' type with more specific function type.

The use of Function in the conditional type is discouraged as it accepts any function-like value, which can be a source of bugs. Use a more specific function type instead.

-export type BooleanValues<T> = T extends boolean | number | null | undefined | Function ? boolean | undefined : boolean | undefined | {
+export type BooleanValues<T> = T extends boolean | number | null | undefined | ((...args: any[]) => any) ? boolean | undefined : boolean | undefined | {
     [K in keyof T]?: BooleanValues<T[K]>;
 };
📝 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.

Suggested change
export type BooleanValues<T> = T extends boolean | number | null | undefined | Function ? boolean | undefined : boolean | undefined | {
[K in keyof T]?: BooleanValues<T[K]>;
};
export type BooleanValues<T> = T extends boolean | number | null | undefined | ((...args: any[]) => any)
? boolean | undefined
: boolean | undefined | {
[K in keyof T]?: BooleanValues<T[K]>;
};
🧰 Tools
🪛 Biome (1.9.4)

[error] 3-3: Don't use 'Function' as a type.

Prefer explicitly define the function shape. This type accepts any function-like value, which can be a common source of bugs.

(lint/complexity/noBannedTypes)

🤖 Prompt for AI Agents
In
frontend/@mf-types/@mf/modelRegistry/compiled-types/src/__tests__/unit/testUtils/hooks.d.ts
around lines 3 to 5, replace the generic 'Function' type in the conditional type
with a more specific function type such as '(...args: any[]) => any'. This
change narrows the function type to actual callable signatures, reducing
potential bugs caused by the overly broad 'Function' type.

Copy link

codecov bot commented Jul 7, 2025

Codecov Report

Attention: Patch coverage is 0% with 15 lines in your changes missing coverage. Please review.

Project coverage is 82.60%. Comparing base (781de2b) to head (98062bb).
Report is 15 commits behind head on main.

Files with missing lines Patch % Lines
...elServing/src/components/archive/ArchiveButton.tsx 0.00% 8 Missing ⚠️
...s/ModelVersionRegisteredDeploymentsViewWrapper.tsx 0.00% 5 Missing ⚠️
frontend/packages/modelServing/extensions.ts 0.00% 2 Missing ⚠️

❌ Your patch check has failed because the patch coverage (0.00%) is below the target coverage (70.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #4426      +/-   ##
==========================================
- Coverage   82.62%   82.60%   -0.02%     
==========================================
  Files        1751     1762      +11     
  Lines       36551    36819     +268     
  Branches    10804    10912     +108     
==========================================
+ Hits        30200    30415     +215     
- Misses       6351     6404      +53     
Files with missing lines Coverage Δ
frontend/packages/modelServing/extensions.ts 28.57% <0.00%> (-11.43%) ⬇️
...s/ModelVersionRegisteredDeploymentsViewWrapper.tsx 0.00% <0.00%> (ø)
...elServing/src/components/archive/ArchiveButton.tsx 0.00% <0.00%> (ø)

... and 87 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 781de2b...98062bb. Read the comment docs.

🚀 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
do-not-merge/work-in-progress This PR is in WIP state
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants