Skip to content

[dashboard] sync with upstream & enhancements - #1603

Merged
Andrei Kvapil (kvaps) merged 1 commit into
mainfrom
dashboard-enhancements
Nov 6, 2025
Merged

[dashboard] sync with upstream & enhancements#1603
Andrei Kvapil (kvaps) merged 1 commit into
mainfrom
dashboard-enhancements

Conversation

@kvaps

@kvaps Andrei Kvapil (kvaps) commented Nov 5, 2025

Copy link
Copy Markdown
Member

Signed-off-by: Andrei Kvapil kvapss@gmail.com

What this PR does

  • Move patches to upstream: namespaces and hide inside
  • Introduce flatMap logic
  • Remove tenantsecretstables resource
  • Extend dashboard-controller to specify multilineString for any string without enum in spec (previusly it was for all strings)

Release note

[dashboard] sync with upstream & enhancements

Summary by CodeRabbit

  • New Features

    • Enhanced OpenAPI form handling: string fields now better support multiline input.
  • Improvements

    • Secrets UI and API alignment: secrets display and data keys updated for consistency.
    • Form generation improved for nested objects and arrays.
    • Deployment defaults adjusted (logger flags normalized; inside feature hidden via env).
  • Removed

    • Removed the "Inside" header menu item and the legacy secrets-table API/resource.

@dosubot dosubot Bot added the size/XXL This PR changes 1000+ lines, ignoring generated files label Nov 5, 2025
@coderabbitai

coderabbitai Bot commented Nov 5, 2025

Copy link
Copy Markdown
Contributor

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

This PR removes the TenantSecretsTable API type and REST storage, updates apiserver registration and RBAC, adds OpenAPI-derived multilineString schema generation for custom forms (with tests), updates dashboard UI/resource names from tenantsecretstables to tenantsecrets, adjusts UI patches and Dockerfile build refs, and refreshes dashboard configuration and images.

Changes

Cohort / File(s) Summary
Custom Forms Schema Generation
internal/controller/dashboard/customformsoverride.go, internal/controller/dashboard/customformsoverride_test.go
Add buildMultilineStringSchema() and processSpecProperties() to parse OpenAPI JSON and convert eligible string fields to multilineString; log parse errors and fall back to empty schema. Add tests for valid, empty, and invalid inputs.
Dashboard API Resource Updates
internal/controller/dashboard/factory.go, internal/controller/dashboard/static_helpers.go, internal/controller/dashboard/static_refactored.go
Replace tenantsecretstables references with tenantsecrets; introduce createFlatMapColumn() and change secret data extraction/column structure to flatMap-based fields.
RBAC Role Permissions
packages/apps/tenant/templates/tenant.yaml
Remove tenantsecretstables resource entries from default, use, admin, and super-admin Roles.
TenantSecretsTable API Type Removal
pkg/apis/core/v1alpha1/tenantsecretstable_types.go, pkg/apis/core/v1alpha1/register.go, pkg/apis/core/v1alpha1/zz_generated.deepcopy.go
Delete TenantSecretEntry, TenantSecretsTable, TenantSecretsTableList types, their deepcopy implementations, and static registration entries.
TenantSecretsTable REST Storage Removal
pkg/registry/core/tenantsecretstable/rest.go, pkg/apiserver/apiserver.go
Remove the entire TenantSecretsTable REST storage implementation and its registration in apiserver core v1alpha1 storage map.
Dashboard Container Images / Build
packages/system/dashboard/images/openapi-ui-k8s-bff/Dockerfile, packages/system/dashboard/images/openapi-ui/Dockerfile
Update COMMIT/COMMIT_REF build args; switch source tarball for openapi-ui and disable patch application steps in openapi-ui build.
UI Patch Changes
packages/system/dashboard/images/openapi-ui/openapi-k8s-toolkit/patches/additional-properties-types.diff, .../openapi-ui/patches/namespaces.diff, .../openapi-ui/patches/remove-inside-link.diff
Enhance additionalProperties handling and value-based type inference, update namespace/resource imports and backlinks to api-table endpoints, and remove the "Inside" menu item.
Dashboard Configuration
packages/system/dashboard/templates/web.yaml, packages/system/dashboard/values.yaml
Change LOGGER/HLOGGER_WITH_HEADERS values to lowercase booleans, add HIDE_INSIDE env var, and update image digests.

Sequence Diagram(s)

sequenceDiagram
    participant UI as Dashboard UI
    participant Ctrl as customformsoverride Controller
    participant OpenAPI as OpenAPI JSON
    participant K8s as Kubernetes API

    UI->>Ctrl: ensureCustomFormsOverride()
    Ctrl->>OpenAPI: parse openAPISchema (string)
    alt parse OK
        OpenAPI-->>Ctrl: properties map
        Ctrl->>Ctrl: processSpecProperties() (recursive)
        Ctrl-->>Ctrl: convert eligible "string" -> "multilineString"
        Ctrl->>K8s: CreateOrUpdate with generated schema
        K8s-->>Ctrl: success
    else parse error / empty
        OpenAPI-->>Ctrl: error/empty
        Ctrl->>K8s: CreateOrUpdate with empty schema (fallback)
        K8s-->>Ctrl: success
    end
    Ctrl-->>UI: override applied
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

  • Attention areas:
    • Recursive schema transformation logic in buildMultilineStringSchema / processSpecProperties (edge cases for arrays, additionalProperties, enums).
    • Complete removal of TenantSecretsTable: ensure no remaining registrations, REST wiring, or references.
    • UI patch and Dockerfile changes that alter build sources and disable patches — validate patching rationale and build outputs.
    • RBAC changes removing tenantsecretstables resource — confirm role correctness for deployments.

Possibly related PRs

Suggested labels

size:XL

Suggested reviewers

  • lllamnyp
  • nbykov0

Poem

🐰 I parsed the schema, line by line,
Strings grew long and fields did shine,
Old tables hopped away, discreet,
Secrets now tidy, UI neat,
A rabbit cheers — the dashboard's fine! 🥕

Pre-merge checks and finishing touches

✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title '[dashboard] sync with upstream & enhancements' is directly related to the changeset. The PR includes dashboard patches moved upstream, dashboard controller enhancements for multilineString logic, and removal of tenantsecretstables, all of which align with the described changes.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dashboard-enhancements

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 897d85f and b45f4a6.

⛔ Files ignored due to path filters (1)
  • pkg/generated/openapi/zz_generated.openapi.go is excluded by !**/generated/**
📒 Files selected for processing (18)
  • internal/controller/dashboard/customformsoverride.go (3 hunks)
  • internal/controller/dashboard/customformsoverride_test.go (1 hunks)
  • internal/controller/dashboard/factory.go (1 hunks)
  • internal/controller/dashboard/static_helpers.go (2 hunks)
  • internal/controller/dashboard/static_refactored.go (1 hunks)
  • packages/apps/tenant/templates/tenant.yaml (0 hunks)
  • packages/system/dashboard/images/openapi-ui-k8s-bff/Dockerfile (1 hunks)
  • packages/system/dashboard/images/openapi-ui/Dockerfile (2 hunks)
  • packages/system/dashboard/images/openapi-ui/openapi-k8s-toolkit/patches/additional-properties-types.diff (0 hunks)
  • packages/system/dashboard/images/openapi-ui/openapi-ui/patches/namespaces.diff (0 hunks)
  • packages/system/dashboard/images/openapi-ui/openapi-ui/patches/remove-inside-link.diff (0 hunks)
  • packages/system/dashboard/templates/web.yaml (2 hunks)
  • packages/system/dashboard/values.yaml (1 hunks)
  • pkg/apis/core/v1alpha1/register.go (1 hunks)
  • pkg/apis/core/v1alpha1/tenantsecretstable_types.go (0 hunks)
  • pkg/apis/core/v1alpha1/zz_generated.deepcopy.go (0 hunks)
  • pkg/apiserver/apiserver.go (0 hunks)
  • pkg/registry/core/tenantsecretstable/rest.go (0 hunks)
💤 Files with no reviewable changes (8)
  • pkg/apiserver/apiserver.go
  • packages/apps/tenant/templates/tenant.yaml
  • packages/system/dashboard/images/openapi-ui/openapi-ui/patches/namespaces.diff
  • packages/system/dashboard/images/openapi-ui/openapi-ui/patches/remove-inside-link.diff
  • packages/system/dashboard/images/openapi-ui/openapi-k8s-toolkit/patches/additional-properties-types.diff
  • pkg/apis/core/v1alpha1/zz_generated.deepcopy.go
  • pkg/registry/core/tenantsecretstable/rest.go
  • pkg/apis/core/v1alpha1/tenantsecretstable_types.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • internal/controller/dashboard/static_helpers.go
  • packages/system/dashboard/images/openapi-ui-k8s-bff/Dockerfile
  • pkg/apis/core/v1alpha1/register.go
  • packages/system/dashboard/templates/web.yaml
🔇 Additional comments (6)
packages/system/dashboard/values.yaml (1)

2-2: Verify image digests match upstream Dockerfile builds.

The updated digests for openapiUI and openapiUIK8sBff should correspond to builds from the updated Dockerfile sources (including the fork change to PRO-Robotech/openapi-ui and COMMIT updates). Ensure these digests were generated from the committed Dockerfile changes and not from stale build artifacts.

Also applies to: 4-4

packages/system/dashboard/images/openapi-ui/Dockerfile (3)

8-8: Verify COMMIT and COMMIT_REF updates align with upstream changes.

The COMMIT for openapi-k8s-toolkit (line 8) and COMMIT_REF for openapi-ui (line 25) have been updated. Confirm:

  1. These commits exist in their respective repositories.
  2. The commits include the necessary patches or features expected by this PR (e.g., multilineString schema handling, flatMap logic mentioned in PR objectives).
  3. Any regressions or breaking changes in these commits are understood and compatible with the current codebase.

Also applies to: 25-25


22-22: Line 22: Git removal is consistent with patch changes.

Commenting out RUN apk add git on line 22 is safe since the builder stage no longer applies patches (lines 28–29 are commented out). The first stage (openapi-k8s-toolkit-builder, line 6) still installs and uses git for its own patches, so the build should succeed. However, ensure this change is intentional and not a side effect of the patch migration.


26-26: Verify fork migration and confirm patches are available in upstream.

Line 26 switches from cozystack/openapi-ui to PRO-Robotech/openapi-ui, with lines 28–29 intentionally commented out. Git history shows this aligns with commit 723eefe: "Migrate patches to upstream project."

While this appears deliberate per git history, verification is still needed:

  1. Fork approval: Confirm PRO-Robotech/openapi-ui is an approved upstream source and actively maintained.
  2. Patch availability: Verify that the patches previously applied in this stage are now included in the PRO-Robotech fork or original upstream repository. The patch file previously applied here should be traceable to the fork's codebase.
  3. Maintenance risk: Document the long-term maintenance plan for this external fork to mitigate divergence risk.

Please confirm in the PR description or commit message that these requirements have been met.

Also applies to: 28-29

internal/controller/dashboard/factory.go (1)

296-299: LGTM! Resource rename is correct and consistent.

The fetchUrl and customizationId have been properly updated to reference the renamed tenantsecrets resource. The customizationId matches the override defined in static_refactored.go (line 177), ensuring proper column customization will be applied.

internal/controller/dashboard/static_refactored.go (1)

176-183: Resource rename and flatMap implementation verified and correct.

The changes properly update the resource reference from tenantsecretstables to tenantsecrets. The createFlatMapColumn helper function exists and is correctly implemented in static_helpers.go (lines 1050-1056), returning a properly structured map with the flatMap type. All old references to tenantsecretstables have been successfully cleaned up throughout the codebase. The new flatMap approach with derived columns _flatMapData_Key and _flatMapData_Value is a clean and proper implementation.


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

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello Andrei Kvapil (@kvaps), I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on synchronizing the dashboard components with upstream changes and enhancing the user interface's interaction with OpenAPI schemas. It streamlines resource management by removing the TenantSecretsTable custom resource and improves form generation by dynamically adjusting input types for multiline strings. The update also incorporates the latest versions of UI dependencies and refines dashboard configuration.

Highlights

  • Removal of TenantSecretsTable CRD: The TenantSecretsTable custom resource definition, along with its associated types, API server storage, and RBAC rules, has been completely removed. This simplifies the API and resource management by consolidating secret handling.
  • Dynamic Multiline String Schema Generation: A new Go function, buildMultilineStringSchema, has been introduced to dynamically modify OpenAPI schemas. It identifies string fields without an enum and marks them as multilineString, enhancing UI forms by providing appropriate input fields for multiline text.
  • Dashboard UI Updates and Upstream Sync: The dashboard's UI components have been updated to reflect the removal of TenantSecretsTable and now reference tenantsecrets. Dependencies for openapi-ui-k8s-bff and openapi-ui have been synchronized with newer upstream commits, and related patches have been removed. New environment variables for logging and UI visibility have also been configured.
  • New Test Coverage: A new test file, customformsoverride_test.go, has been added to ensure the correctness and robustness of the buildMultilineStringSchema function across various OpenAPI schema structures, including edge cases like empty input and invalid JSON.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment Gemini (@gemini-code-assist) Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on Gemini (@gemini-code-assist) comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@dosubot dosubot Bot added the kind/feature Categorizes issue or PR as related to a new feature label Nov 5, 2025

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces several enhancements and refactorings for the dashboard. Key changes include replacing the virtual TenantSecretsTable resource with a flatMap column on TenantSecret for a better UI experience, and adding a feature to automatically render string fields in forms as multiline text areas. The PR also includes updates to sync with upstream dependencies.
My review has identified a critical merge conflict in a patch file that must be resolved. I've also included several suggestions to improve code clarity, robustness, and adherence to Go best practices.

Comment thread packages/system/dashboard/images/openapi-ui/openapi-ui/patches/namespaces.diff Outdated
Comment thread internal/controller/dashboard/customformsoverride.go
Comment thread internal/controller/dashboard/customformsoverride.go Outdated
Comment thread internal/controller/dashboard/customformsoverride.go Outdated
Comment thread internal/controller/dashboard/customformsoverride_test.go

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5b96190 and 897d85f.

⛔ Files ignored due to path filters (1)
  • pkg/generated/openapi/zz_generated.openapi.go is excluded by !**/generated/**
📒 Files selected for processing (18)
  • internal/controller/dashboard/customformsoverride.go (2 hunks)
  • internal/controller/dashboard/customformsoverride_test.go (1 hunks)
  • internal/controller/dashboard/factory.go (1 hunks)
  • internal/controller/dashboard/static_helpers.go (2 hunks)
  • internal/controller/dashboard/static_refactored.go (1 hunks)
  • packages/apps/tenant/templates/tenant.yaml (0 hunks)
  • packages/system/dashboard/images/openapi-ui-k8s-bff/Dockerfile (1 hunks)
  • packages/system/dashboard/images/openapi-ui/Dockerfile (2 hunks)
  • packages/system/dashboard/images/openapi-ui/openapi-k8s-toolkit/patches/additional-properties-types.diff (0 hunks)
  • packages/system/dashboard/images/openapi-ui/openapi-ui/patches/namespaces.diff (2 hunks)
  • packages/system/dashboard/images/openapi-ui/openapi-ui/patches/remove-inside-link.diff (0 hunks)
  • packages/system/dashboard/templates/web.yaml (2 hunks)
  • packages/system/dashboard/values.yaml (1 hunks)
  • pkg/apis/core/v1alpha1/register.go (1 hunks)
  • pkg/apis/core/v1alpha1/tenantsecretstable_types.go (0 hunks)
  • pkg/apis/core/v1alpha1/zz_generated.deepcopy.go (0 hunks)
  • pkg/apiserver/apiserver.go (0 hunks)
  • pkg/registry/core/tenantsecretstable/rest.go (0 hunks)
💤 Files with no reviewable changes (7)
  • pkg/apiserver/apiserver.go
  • packages/system/dashboard/images/openapi-ui/openapi-ui/patches/remove-inside-link.diff
  • packages/apps/tenant/templates/tenant.yaml
  • pkg/apis/core/v1alpha1/zz_generated.deepcopy.go
  • pkg/apis/core/v1alpha1/tenantsecretstable_types.go
  • pkg/registry/core/tenantsecretstable/rest.go
  • packages/system/dashboard/images/openapi-ui/openapi-k8s-toolkit/patches/additional-properties-types.diff
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-05-14T16:58:01.478Z
Learnt from: nbykov0
Repo: cozystack/cozystack PR: 932
File: packages/system/dashboard/images/kubeapps-apis/Dockerfile:15-17
Timestamp: 2025-05-14T16:58:01.478Z
Learning: When working with Dockerfiles for cross-architecture builds in the kubeapps-apis component, the `TARGETOS` and `TARGETARCH` build arguments should be declared without default values so that Docker's buildx system can automatically set these variables based on the specified target platform.

Applied to files:

  • packages/system/dashboard/images/openapi-ui/Dockerfile
  • packages/system/dashboard/images/openapi-ui-k8s-bff/Dockerfile
📚 Learning: 2025-05-14T16:54:50.368Z
Learnt from: nbykov0
Repo: cozystack/cozystack PR: 932
File: packages/apps/kubernetes/images/cluster-autoscaler/Dockerfile:3-4
Timestamp: 2025-05-14T16:54:50.368Z
Learning: In Dockerfiles for the cozystack project, ARG ordering where a variable like ${TARGETARCH} is referenced before being declared can still work correctly in practice because Docker's BuildKit may evaluate the variable only when it's actually used in a FROM statement.

Applied to files:

  • packages/system/dashboard/images/openapi-ui-k8s-bff/Dockerfile
⏰ 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: Build
🔇 Additional comments (11)
pkg/apis/core/v1alpha1/register.go (1)

66-66: LGTM!

The log message accurately reflects the removal of TenantSecretsTable and correctly lists the remaining static kinds being registered.

packages/system/dashboard/images/openapi-ui-k8s-bff/Dockerfile (1)

6-6: LGTM!

The commit reference update aligns with the upstream sync in PR objectives. The build structure and process remain sound.

packages/system/dashboard/images/openapi-ui/Dockerfile (2)

20-20: Update the comment to reflect the actual source repository.

Line 20 states the import is from cozystack/openapi-ui, but line 26 uses PRO-Robotech/openapi-ui. Update the comment for clarity, or confirm whether this repository change is intentional.

Also applies to: 26-26


22-22: Verify that disabling patch application is correct and won't break the build.

Patches for the openapi-ui stage are now commented out (lines 28–29), and git is no longer installed in the builder stage (line 22). This change aligns with the source repository change but could break the build if the patches are still required. Confirm that the new openapi-ui source from PRO-Robotech does not require these patches or that they are no longer compatible.

Also applies to: 28-29

packages/system/dashboard/templates/web.yaml (2)

97-98: Verify HIDE_INSIDE is a documented and supported configuration option.

A new environment variable HIDE_INSIDE with value "true" is being added to the OpenAPI UI web container. This appears to be a new feature or configuration flag.

Ensure that:

  1. The OpenAPI UI image ({{ .Values.openapiUI.image | quote }}) supports this environment variable
  2. The intended behavior of HIDE_INSIDE=true is documented and aligns with the PR's dashboard enhancement objectives

47-50: Original review comment is based on incorrect assumptions about environment variable formats.

The changes follow standard Kubernetes and OpenAPI UI conventions. Kubernetes env vars are strings—pass the boolean as the literal string "true" or "false" (lowercase) and the app should parse it as a boolean. The lowercase format ("true" and "false") is correct and standard; no case sensitivity handling issues exist.

No consuming code in the codebase references these variables—they are container environment variables. The LOGGER_WITH_HEADERS change to "false" is an intentional configuration adjustment to disable header logging, not a breaking change requiring verification. HIDE_INSIDE is a recognized OpenAPI UI configuration option.

Likely an incorrect or invalid review comment.

packages/system/dashboard/values.yaml (1)

2-2: Image digests for OpenAPI UI components are properly formatted and configured.

All three image references have been validated: SHA256 digests are correctly formatted (64 hexadecimal characters), YAML syntax is valid, and corresponding Dockerfiles exist in the repository. The digest pinning follows security best practices for reproducible deployments.

internal/controller/dashboard/static_helpers.go (2)

125-138: LGTM - Resource rename aligned with API consolidation.

The resource name update from tenantsecretstables to tenantsecrets is consistent with the broader API refactor described in the PR summary. The existing column configuration logic is preserved correctly.


1049-1056: Manual verification needed: Confirm frontend dashboard supports flatMap column type.

The createFlatMapColumn helper is implemented correctly and follows the established pattern. However, the frontend code that processes the "flatMap" column type could not be located in the codebase searches. The usage at line 179 of static_refactored.go shows explicit column declarations with synthetic field names (_flatMapData_Key, _flatMapData_Value) alongside the flatMap column, but without access to the frontend dashboard processing logic, we cannot confirm:

  • The dashboard correctly handles the "flatMap" column type
  • The synthetic fields are properly expanded and rendered

Please verify that the dashboard frontend (likely in a separate frontend repository or compiled assets) correctly processes flatMap columns and generates the expected field expansion for the tenant secrets data table.

internal/controller/dashboard/factory.go (1)

287-310: LGTM - API endpoint and customization ID updated consistently.

The secretsTab function correctly updates both the fetchUrl and customizationId to reference tenantsecrets instead of tenantsecretstables, aligning with the API resource consolidation across the codebase.

internal/controller/dashboard/static_refactored.go (1)

176-183: No issues found; flatMap implementation is properly integrated.

The createFlatMapColumn function is correctly implemented and the changes to tenantsecrets display follow the established codebase patterns. The customizationId references match between factory.go and static_refactored.go, and the configuration properly expands secret data objects into separate rows via the flatMap column with synthetic field references _flatMapData_Key and _flatMapData_Value. This is backend dashboard configuration code; the original verification request for frontend-dependent components does not apply to this codebase structure.

Comment thread internal/controller/dashboard/customformsoverride.go
Comment thread packages/system/dashboard/images/openapi-ui/openapi-ui/patches/namespaces.diff Outdated
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
@kvaps Andrei Kvapil (kvaps) added the backport Should change be backported on previous release label Nov 6, 2025
@kvaps
Andrei Kvapil (kvaps) merged commit 369384f into main Nov 6, 2025
22 checks passed
@kvaps
Andrei Kvapil (kvaps) deleted the dashboard-enhancements branch November 6, 2025 15:23
@github-actions

github-actions Bot commented Nov 6, 2025

Copy link
Copy Markdown

Backport failed for release-0.37, because it was unable to cherry-pick the commit(s).

Please cherry-pick the changes locally and resolve any conflicts.

git fetch origin release-0.37
git worktree add -d .worktree/backport-1603-to-release-0.37 origin/release-0.37
cd .worktree/backport-1603-to-release-0.37
git switch --create backport-1603-to-release-0.37
git cherry-pick -x b45f4a6545b7835c9521c8e0f6904ce450b95eae

Andrei Kvapil (kvaps) added a commit that referenced this pull request Nov 7, 2025
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>

<!-- Thank you for making a contribution! Here are some tips for you:
- Start the PR title with the [label] of Cozystack component:
- For system components: [platform], [system], [linstor], [cilium],
[kube-ovn], [dashboard], [cluster-api], etc.
- For managed apps: [apps], [tenant], [kubernetes], [postgres],
[virtual-machine] etc.
- For development and maintenance: [tests], [ci], [docs], [maintenance].
- If it's a work in progress, consider creating this PR as a draft.
- Don't hesistate to ask for opinion and review in the community chats,
even if it's still a draft.
- Add the label `backport` if it's a bugfix that needs to be backported
to a previous version.
-->

- Move patches to upstream: `namespaces` and `hide inside`
- Introduce flatMap logic
- Remove `tenantsecretstables` resource
- Extend dashboard-controller to specify `multilineString` for any
string without enum in spec (previusly it was for all strings)

<!--  Write a release note:
- Explain what has changed internally and for users.
- Start with the same [label] as in the PR title
- Follow the guidelines at
https://github.com/kubernetes/community/blob/master/contributors/guide/release-notes.md.
-->

```release-note
[dashboard] sync with upstream & enhancements
```

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

* **New Features**
* Enhanced OpenAPI form handling: string fields now better support
multiline input.

* **Improvements**
* Secrets UI and API alignment: secrets display and data keys updated
for consistency.
  * Form generation improved for nested objects and arrays.
* Deployment defaults adjusted (logger flags normalized; inside feature
hidden via env).

* **Removed**
* Removed the "Inside" header menu item and the legacy secrets-table
API/resource.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport Should change be backported on previous release kind/feature Categorizes issue or PR as related to a new feature size/XXL This PR changes 1000+ lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant