Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9b9d650
Update @odh-dashboard/model-registry: fix a11y from model catalog det…
ppadti Apr 27, 2026
948022c
Update @odh-dashboard/model-registry: hide cat toogle in case only on…
ppadti Apr 27, 2026
f70e6d3
Update @odh-dashboard/model-registry: truncate error msg from transfe…
ppadti Apr 27, 2026
f7cbc60
Update @odh-dashboard/model-registry tracking to 075e42fdc4e295c65608…
ppadti Apr 27, 2026
8218fcd
Update @odh-dashboard/model-registry tracking to 97cee7c006a823732b20…
ppadti Apr 27, 2026
0f34227
Update @odh-dashboard/model-registry tracking to b526fc0c6e543b7ba824…
ppadti Apr 27, 2026
4056b7e
Update @odh-dashboard/model-registry tracking to b84ea22f301bc1ddd3d5…
ppadti Apr 27, 2026
26d0831
Update @odh-dashboard/model-registry tracking to 3d61dc5ef2291efcec4e…
ppadti Apr 27, 2026
a33a25f
Update @odh-dashboard/model-registry tracking to aebe8f8632f103865c9e…
ppadti Apr 27, 2026
3182a39
Update @odh-dashboard/model-registry tracking to 3b96a3a4f168168f0a44…
ppadti Apr 27, 2026
b905e4c
Update @odh-dashboard/model-registry tracking to 271393c425c9633e132d…
ppadti Apr 27, 2026
c5b8665
Update @odh-dashboard/model-registry: chore: rename container images …
ppadti Apr 27, 2026
a6f9d42
Update @odh-dashboard/model-registry: chore: rename go modules (#2635…
ppadti Apr 27, 2026
9415e9f
Update @odh-dashboard/model-registry tracking to bfec5187afa2c7dd7e2e…
ppadti Apr 27, 2026
c86810f
Update @odh-dashboard/model-registry tracking to dbc071847614c3d37f72…
ppadti Apr 27, 2026
e5e631b
Update @odh-dashboard/model-registry tracking to 038dd049f0e41ef41a10…
ppadti Apr 27, 2026
593cc12
Update @odh-dashboard/model-registry tracking to 4409e1350327ef1699b2…
ppadti Apr 27, 2026
4876f80
Update @odh-dashboard/model-registry: Update project name and repo li…
ppadti Apr 27, 2026
d3e510c
Update @odh-dashboard/model-registry tracking to 5f890cd761f09f5800c5…
ppadti Apr 27, 2026
1110c04
Update @odh-dashboard/model-registry: fix(ui): forward incoming auth …
ppadti Apr 27, 2026
dab7d60
Update @odh-dashboard/model-registry: build(deps-dev): bump postcss f…
ppadti Apr 27, 2026
11adb5a
Fix downstream Go imports after module rename to kubeflow/hub
ppadti Apr 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/model-registry/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"branch": "main",
"src": "clients/ui",
"target": "upstream",
"commit": "6e18d5aca6de378c66794ae581b9c42d0767aff7"
"commit": "6eb25cfb3ce76cd0f87438ea7de60b414dd6e25a"
},
"module-federation": {
"name": "modelRegistry",
Expand Down
6 changes: 3 additions & 3 deletions packages/model-registry/upstream/.env
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

############### Default settings ###############
CONTAINER_TOOL=docker
IMG_UI=ghcr.io/kubeflow/model-registry/ui:latest
IMG_UI_STANDALONE=ghcr.io/kubeflow/model-registry/ui-standalone:latest
IMG_UI_FEDERATED=ghcr.io/kubeflow/model-registry/ui-federated:latest
IMG_UI=ghcr.io/kubeflow/hub/ui:latest
IMG_UI_STANDALONE=ghcr.io/kubeflow/hub/ui-standalone:latest
IMG_UI_FEDERATED=ghcr.io/kubeflow/hub/ui-federated:latest
PLATFORM=linux/amd64
STYLE_THEME=mui-theme
DEPLOYMENT_MODE=kubeflow
10 changes: 5 additions & 5 deletions packages/model-registry/upstream/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
[BFF requirements]: ./bff/README.md#pre-requisites
[frontend dev setup]: ./frontend/docs/dev-setup.md#development
[BFF dev setup]: ./bff/README.md#development
[issue]: https://github.com/kubeflow/model-registry/issues/new/choose
[contributing guidelines]: https://github.com/kubeflow/model-registry/blob/main/CONTRIBUTING.md
[issue]: https://github.com/kubeflow/hub/issues/new/choose
[contributing guidelines]: https://github.com/kubeflow/hub/blob/main/CONTRIBUTING.md
# Contributing

Individual bug fixes are welcome. Please open an [issue] to track the fix you are planning to implement. If you are unsure how best to solve it, start by opening the issue and note your desire to contribute.
Expand All @@ -28,14 +28,14 @@ To run the mocked development environment you can either:

### Kubernetes Deployment

For an in-depth guide on how to deploy the Model Registry UI, please refer to the [local kubernetes deployment](./docs/local-deployment-guide.md) documentation.
For an in-depth guide on how to deploy the Kubeflow Hub UI, please refer to the [local kubernetes deployment](./docs/local-deployment-guide.md) documentation.

To quickly enable the Model Registry UI in your Kind cluster, you can use the following command:
To quickly enable the Kubeflow Hub UI in your Kind cluster, you can use the following command:

```shell
make kind-deployment
```

## Debugging and Testing

See [frontend testing guidelines](frontend/docs/testing.md) for testing the frontend.
See [frontend testing guidelines](frontend/docs/testing.md) for testing the frontend.
30 changes: 15 additions & 15 deletions packages/model-registry/upstream/README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
[frontend requirements]: ./frontend/docs/dev-setup.md#requirements
[BFF requirements]: ./bff/README.md#pre-requisites
[Model registry UI]: ./docs/README.md
[Kubeflow Hub UI]: ./docs/README.md
[contributing guidelines]: ./CONTRIBUTING.md

# Model Registry UI
# Kubeflow Hub UI

## Overview

The Model Registry UI is a standalone web app for Kubeflow Model Registry. In this repository, you will find the frontend and backend for the Model Registry UI.
The Kubeflow Hub UI is a standalone web app for Kubeflow Kubeflow Hub. In this repository, you will find the frontend and backend for the Kubeflow Hub UI.

## Contributing

You can check the [contributing guidelines] for more information on how to contribute to the Model Registry UI.
You can check the [contributing guidelines] for more information on how to contribute to the Kubeflow Hub UI.

## OpenAPI Specification

You can find the OpenAPI specification for the Model Registry UI in the [openapi](./api/openapi) directory.
A live version of the OpenAPI specification can be found [here](https://editor.swagger.io/?url=https://raw.githubusercontent.com/kubeflow/model-registry/main/clients/ui/api/openapi/mod-arch.yaml).
You can find the OpenAPI specification for the Kubeflow Hub UI in the [openapi](./api/openapi) directory.
A live version of the OpenAPI specification can be found [here](https://editor.swagger.io/?url=https://raw.githubusercontent.com/kubeflow/hub/main/clients/ui/api/openapi/mod-arch.yaml).

## Targeted environments

There's two main environments that the Model Registry UI is targeted for:
There's two main environments that the Kubeflow Hub UI is targeted for:

1. **Standalone**: This is the default environment for local development. The UI is served by the BFF and the BFF is responsible for serving the API requests. The BFF exposes a `/namespace` endpoint that returns all the namespaces in the cluster and the UI sends a user header `kubeflow-user` to authenticate the calls.

2. **Kubeflow**: This is the environment where the UI is served by the Kubeflow Ingress and the BFF is served by the Kubeflow API Gateway. The BFF is responsible for serving the API requests and namespace selection is leveraged from Kubeflow.

## Environment Variables

The following environment variables are used to configure the deployment and development environment for the Model Registry UI. These variables should be defined in a `.env.local` file in the `clients/ui` directory of the project. **This values will affect the build and push commands**.
The following environment variables are used to configure the deployment and development environment for the Kubeflow Hub UI. These variables should be defined in a `.env.local` file in the `clients/ui` directory of the project. **This values will affect the build and push commands**.

### `CONTAINER_TOOL`

Expand All @@ -40,20 +40,20 @@ The following environment variables are used to configure the deployment and dev
### `IMG_UI`

* **Description**: Specifies the image name and tag for the UI (with BFF).
* **Default Value**: `ghcr.io/kubeflow/model-registry/ui:latest`
* **Example**: `IMG_UI=ghcr.io/kubeflow/model-registry/ui:latest`
* **Default Value**: `ghcr.io/kubeflow/hub/ui:latest`
* **Example**: `IMG_UI=ghcr.io/kubeflow/hub/ui:latest`

### `IMG_UI_STANDALONE`

* **Description**: Specifies the image name and tag for the UI (with BFF) in **standalone mode**, used for local kind deployment.
* **Default Value**: `ghcr.io/kubeflow/model-registry/ui-standalone:latest`
* **Example**: `IMG_UI_STANDALONE=ghcr.io/kubeflow/model-registry/ui-standalone:latest`
* **Default Value**: `ghcr.io/kubeflow/hub/ui-standalone:latest`
* **Example**: `IMG_UI_STANDALONE=ghcr.io/kubeflow/hub/ui-standalone:latest`

### `IMG_UI_FEDERATED`

* **Description**: Specifies the image name and tag for the UI (with BFF) in **federated mode**, used for federated mode outside kubeflow.
* **Default Value**: `ghcr.io/kubeflow/model-registry/ui-federated:latest`
* **Example**: `IMG_UI_FEDERATED=ghcr.io/kubeflow/model-registry/ui-federated:latest`
* **Default Value**: `ghcr.io/kubeflow/hub/ui-federated:latest`
* **Example**: `IMG_UI_FEDERATED=ghcr.io/kubeflow/hub/ui-federated:latest`

### `PLATFORM`

Expand Down Expand Up @@ -130,4 +130,4 @@ The standalone image includes K8s test binaries to support the `--mock-k8s-clien

## Deployments

For more information on how to deploy the Model Registry UI, please refer to the [Model registry UI] documentation.
For more information on how to deploy the Kubeflow Hub UI, please refer to the [Kubeflow Hub UI] documentation.
2 changes: 1 addition & 1 deletion packages/model-registry/upstream/api/openapi/mod-arch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3361,7 +3361,7 @@ components:
message:
type: string
description: Human-readable description of the event.
example: "Successfully pulled image \"ghcr.io/kubeflow/model-registry/job/async-upload:latest\""
example: "Successfully pulled image \"ghcr.io/kubeflow/hub/job/async-upload:latest\""
ModelTransferJobList:
description: List of ModelTransferJob entities.
type: object
Expand Down
8 changes: 4 additions & 4 deletions packages/model-registry/upstream/bff/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kubeflow Model Registry UI BFF
# Kubeflow Hub UI BFF

The Kubeflow Model Registry UI BFF is the _backend for frontend_ (BFF) used by the Kubeflow Model Registry UI.
The Kubeflow Hub UI BFF is the _backend for frontend_ (BFF) used by the Kubeflow Hub UI.

## Pre-requisites:

Expand All @@ -14,7 +14,7 @@ To be operational, our BFF needs the Model Registry backend running.

> **NOTE:** Docker compose must be installed in your environment.

There are two `docker-compose` files located at the [root](https://github.com/kubeflow/model-registry) of Model Registry repository that make the startup of both model registry easier by simply running:
There are two `docker-compose` files located at the [root](https://github.com/kubeflow/hub) of Model Registry repository that make the startup of both model registry easier by simply running:

```shell
docker compose -f docker-compose[-local].yaml up
Expand Down Expand Up @@ -567,7 +567,7 @@ labels:
#...
```

You can view the complete Model Registry service manifest [here](https://github.com/kubeflow/model-registry/blob/main/manifests/kustomize/base/model-registry-service.yaml#L10).
You can view the complete Model Registry service manifest [here](https://github.com/kubeflow/hub/blob/main/manifests/kustomize/base/model-registry-service.yaml#L10).

#### 2. What is the structure of the mock Kubernetes environment?

Expand Down
6 changes: 3 additions & 3 deletions packages/model-registry/upstream/bff/cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import (
"os/signal"
"syscall"

"github.com/kubeflow/model-registry/ui/bff/internal/api"
"github.com/kubeflow/model-registry/ui/bff/internal/config"
"github.com/kubeflow/hub/ui/bff/internal/api"
"github.com/kubeflow/hub/ui/bff/internal/config"

// Import redhat handlers to register handler overrides via init()
_ "github.com/kubeflow/model-registry/ui/bff/internal/redhat/handlers"
_ "github.com/kubeflow/hub/ui/bff/internal/redhat/handlers"

"log/slog"
"net/http"
Expand Down
42 changes: 21 additions & 21 deletions packages/model-registry/upstream/bff/docs/extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ import (
// ... other imports ...

// Import downstream handlers to register overrides via init()
_ "github.com/kubeflow/model-registry/ui/bff/internal/redhat/handlers"
_ "github.com/kubeflow/hub/ui/bff/internal/redhat/handlers"
)
```

Expand Down Expand Up @@ -98,8 +98,8 @@ import (

"github.com/julienschmidt/httprouter"

"github.com/kubeflow/model-registry/ui/bff/internal/api"
"github.com/kubeflow/model-registry/ui/bff/internal/constants"
"github.com/kubeflow/hub/ui/bff/internal/api"
"github.com/kubeflow/hub/ui/bff/internal/constants"
)

// Mirror the upstream handler ID string
Expand Down Expand Up @@ -180,8 +180,8 @@ import (
"net/http"

"github.com/julienschmidt/httprouter"
"github.com/kubeflow/model-registry/ui/bff/internal/api"
"github.com/kubeflow/model-registry/ui/bff/internal/constants"
"github.com/kubeflow/hub/ui/bff/internal/api"
"github.com/kubeflow/hub/ui/bff/internal/constants"
)

const kubernetesServicesListHandlerID = api.HandlerID("kubernetes:services:list")
Expand Down Expand Up @@ -252,14 +252,14 @@ func myHandler(app *api.App) httprouter.Handle {
// Use the client to interact with Kubernetes
// The client interface is defined in internal/integrations/kubernetes
namespace := r.Context().Value(constants.NamespaceHeaderParameterKey).(string)

// Example: Get service details
services, err := client.GetServiceDetails(r.Context(), namespace)
if err != nil {
app.ServerError(w, r, err)
return
}

// Process services...
})
}
Expand All @@ -276,23 +276,23 @@ When building downstream handlers, you'll commonly import these packages:
```go
import (
// Core API types and App
"github.com/kubeflow/model-registry/ui/bff/internal/api"
"github.com/kubeflow/hub/ui/bff/internal/api"

// Configuration types
"github.com/kubeflow/model-registry/ui/bff/internal/config"
"github.com/kubeflow/hub/ui/bff/internal/config"

// Context keys for namespace, identity, etc.
"github.com/kubeflow/model-registry/ui/bff/internal/constants"
"github.com/kubeflow/hub/ui/bff/internal/constants"

// Kubernetes client interface
k8s "github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes"
k8s "github.com/kubeflow/hub/ui/bff/internal/integrations/kubernetes"

// Data models
"github.com/kubeflow/model-registry/ui/bff/internal/models"
"github.com/kubeflow/hub/ui/bff/internal/models"

// Upstream repositories (if needed)
"github.com/kubeflow/model-registry/ui/bff/internal/repositories"
"github.com/kubeflow/hub/ui/bff/internal/repositories"

// Router
"github.com/julienschmidt/httprouter"
)
Expand Down Expand Up @@ -322,7 +322,7 @@ func TestMyHandler_MockMode(t *testing.T) {
cfg := config.EnvConfig{
MockK8Client: true,
}

// Your handler factory should return buildDefault() or mock behavior
// when app.Config().MockK8Client is true
}
Expand All @@ -344,7 +344,7 @@ func myOverrideFactory(app *api.App, buildDefault func() httprouter.Handle) http
if !shouldUseDownstreamOverrides(app) {
return buildDefault()
}

// Real implementation
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
// ...
Expand Down
2 changes: 1 addition & 1 deletion packages/model-registry/upstream/bff/go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/kubeflow/model-registry/ui/bff
module github.com/kubeflow/hub/ui/bff

go 1.25.0

Expand Down
12 changes: 6 additions & 6 deletions packages/model-registry/upstream/bff/internal/api/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ import (
"path"
"strings"

k8s "github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes"
k8mocks "github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes/k8mocks"
k8s "github.com/kubeflow/hub/ui/bff/internal/integrations/kubernetes"
k8mocks "github.com/kubeflow/hub/ui/bff/internal/integrations/kubernetes/k8mocks"
"k8s.io/client-go/kubernetes"
"sigs.k8s.io/controller-runtime/pkg/envtest"

helper "github.com/kubeflow/model-registry/ui/bff/internal/helpers"
helper "github.com/kubeflow/hub/ui/bff/internal/helpers"

"github.com/kubeflow/model-registry/ui/bff/internal/config"
"github.com/kubeflow/model-registry/ui/bff/internal/repositories"
"github.com/kubeflow/hub/ui/bff/internal/config"
"github.com/kubeflow/hub/ui/bff/internal/repositories"

"github.com/julienschmidt/httprouter"
"github.com/kubeflow/model-registry/ui/bff/internal/mocks"
"github.com/kubeflow/hub/ui/bff/internal/mocks"
)

const (
Expand Down
4 changes: 2 additions & 2 deletions packages/model-registry/upstream/bff/internal/api/app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"net/http"
httptest "net/http/httptest"

"github.com/kubeflow/model-registry/ui/bff/internal/config"
"github.com/kubeflow/model-registry/ui/bff/internal/repositories"
"github.com/kubeflow/hub/ui/bff/internal/config"
"github.com/kubeflow/hub/ui/bff/internal/repositories"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import (
"fmt"
"net/http"

"github.com/kubeflow/model-registry/ui/bff/internal/integrations/httpclient"
"github.com/kubeflow/hub/ui/bff/internal/integrations/httpclient"

"github.com/julienschmidt/httprouter"
"github.com/kubeflow/hub/ui/bff/internal/constants"
"github.com/kubeflow/model-registry/pkg/openapi"
"github.com/kubeflow/model-registry/ui/bff/internal/constants"
)

type ArtifactListEnvelope Envelope[*openapi.ArtifactList, None]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package api

import (
"github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes"
"net/http"

"github.com/kubeflow/hub/ui/bff/internal/integrations/kubernetes"

"github.com/brianvoe/gofakeit/v7"
"github.com/kubeflow/model-registry/ui/bff/internal/mocks"
"github.com/kubeflow/hub/ui/bff/internal/mocks"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import (
"net/http"

"github.com/julienschmidt/httprouter"
"github.com/kubeflow/model-registry/ui/bff/internal/constants"
"github.com/kubeflow/model-registry/ui/bff/internal/integrations/httpclient"
"github.com/kubeflow/model-registry/ui/bff/internal/models"
"github.com/kubeflow/hub/ui/bff/internal/constants"
"github.com/kubeflow/hub/ui/bff/internal/integrations/httpclient"
"github.com/kubeflow/hub/ui/bff/internal/models"
)

type CatalogFilterOptionsListEnvelope Envelope[*models.FilterOptionsList, None]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package api
import (
"net/http"

"github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes"
"github.com/kubeflow/model-registry/ui/bff/internal/mocks"
"github.com/kubeflow/hub/ui/bff/internal/integrations/kubernetes"
"github.com/kubeflow/hub/ui/bff/internal/mocks"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import (
"net/http"

"github.com/julienschmidt/httprouter"
"github.com/kubeflow/model-registry/ui/bff/internal/constants"
"github.com/kubeflow/model-registry/ui/bff/internal/integrations/httpclient"
"github.com/kubeflow/model-registry/ui/bff/internal/models"
"github.com/kubeflow/hub/ui/bff/internal/constants"
"github.com/kubeflow/hub/ui/bff/internal/integrations/httpclient"
"github.com/kubeflow/hub/ui/bff/internal/models"
)

type CatalogModelListEnvelope Envelope[*models.CatalogModelList, None]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package api
import (
"net/http"

"github.com/kubeflow/model-registry/ui/bff/internal/integrations/kubernetes"
"github.com/kubeflow/model-registry/ui/bff/internal/mocks"
"github.com/kubeflow/hub/ui/bff/internal/integrations/kubernetes"
"github.com/kubeflow/hub/ui/bff/internal/mocks"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
Expand Down
Loading
Loading