From 1cb84ed253697f8149dd8f631addd94ad9c51c1b Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Wed, 1 Apr 2026 15:45:50 +0530 Subject: [PATCH 01/14] feat: add redirectToAppDetails prop to NameCellComponent and update routing logic --- src/components/app/list/DevtronAppListContainer.tsx | 1 + src/components/app/list/NameCellComponent.tsx | 6 +++--- src/components/app/list/types.tsx | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/app/list/DevtronAppListContainer.tsx b/src/components/app/list/DevtronAppListContainer.tsx index 1cafb920b0..9d2039dc76 100644 --- a/src/components/app/list/DevtronAppListContainer.tsx +++ b/src/components/app/list/DevtronAppListContainer.tsx @@ -229,6 +229,7 @@ const DevtronAppList = ({ filterConfig, noRows, isSearchOrFilterApplied, + redirectToAppDetails, }} additionalFilterProps={{ initialSortKey: AppListSortableKeys.APP_NAME, diff --git a/src/components/app/list/NameCellComponent.tsx b/src/components/app/list/NameCellComponent.tsx index 3a105d9135..026d2755d1 100644 --- a/src/components/app/list/NameCellComponent.tsx +++ b/src/components/app/list/NameCellComponent.tsx @@ -9,7 +9,6 @@ import { stopPropagation, TableCellComponentProps, Tooltip, - URLS, } from '@devtron-labs/devtron-fe-common-lib' import { App, Environment, TableAdditionalPropsType } from './types' @@ -17,6 +16,7 @@ import { App, Environment, TableAdditionalPropsType } from './types' export const NameCellComponent = ({ row: { data }, filterConfig: { searchKey: searchText }, + redirectToAppDetails, isExpandedRow, }: TableCellComponentProps) => { if (isExpandedRow) { @@ -34,7 +34,7 @@ export const NameCellComponent = ({ const app = data as App - const { name, id } = app + const { name } = app return (
@@ -42,7 +42,7 @@ export const NameCellComponent = ({ { noRows: boolean isSearchOrFilterApplied: boolean + redirectToAppDetails: (app: App, envId: number) => string } From 34627ea2de0d173d9fa4de2d854afedafdadcceb Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Tue, 7 Apr 2026 13:26:29 +0530 Subject: [PATCH 02/14] fix: improve error handling and logging in resource creation and SSE worker --- .../ResourceList/CreateResource.tsx | 14 +++++++++++++- src/components/app/grepSSEworker.ts | 2 +- .../NodeDetailTabs/Manifest.component.tsx | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/ResourceBrowser/ResourceList/CreateResource.tsx b/src/components/ResourceBrowser/ResourceList/CreateResource.tsx index 7f4d286968..5ba3a1489a 100644 --- a/src/components/ResourceBrowser/ResourceList/CreateResource.tsx +++ b/src/components/ResourceBrowser/ResourceList/CreateResource.tsx @@ -17,6 +17,7 @@ import React, { useEffect, useState } from 'react' import { + API_STATUS_CODES, Button, ButtonStyleType, ButtonVariantType, @@ -27,7 +28,11 @@ import { GenericEmptyState, handleAnalyticsEvent, InfoBlock, + ServerErrors, showError, + TOAST_ACCESS_DENIED, + ToastManager, + ToastVariantType, useRegisterShortcut, } from '@devtron-labs/devtron-fe-common-lib' @@ -89,7 +94,14 @@ export const CreateResource: React.FC = ({ closePopup, clust setNeedsUpdate(true) } } catch (err) { - showError(err) + if ((err as ServerErrors).code === API_STATUS_CODES.PERMISSION_DENIED) { + ToastManager.showToast({ + variant: ToastVariantType.notAuthorized, + description: (err as ServerErrors).errors?.[0]?.userMessage || TOAST_ACCESS_DENIED.SUBTITLE, + }) + } else { + showError(err) + } } finally { setLoader(false) } diff --git a/src/components/app/grepSSEworker.ts b/src/components/app/grepSSEworker.ts index 7fac9c9434..811e651b91 100644 --- a/src/components/app/grepSSEworker.ts +++ b/src/components/app/grepSSEworker.ts @@ -34,7 +34,7 @@ export default () => { eventListener(ev) { let log try { - log = JSON.parse(ev.data).result.content + log = JSON.parse(ev.data).result.content ?? ev.data } catch (e) { log = ev.data } diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx index a5016682be..9067309ffc 100644 --- a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Manifest.component.tsx @@ -462,7 +462,7 @@ const ManifestComponent = ({ if (err.code === 403) { ToastManager.showToast({ variant: ToastVariantType.notAuthorized, - description: TOAST_ACCESS_DENIED.SUBTITLE, + description: (err as ServerErrors).errors?.[0]?.userMessage || TOAST_ACCESS_DENIED.SUBTITLE, }) } else if (err.code === 400 || err.code === 409 || err.code === 422) { const er = err.errors && err.errors[0] From a37c3dbbbfd98e18404ab3ca50a360fdee651d8d Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Tue, 7 Apr 2026 14:57:39 +0530 Subject: [PATCH 03/14] feat: add support for init containers in NodeComponent and update rendering logic --- .../k8Resource/nodeType/Node.component.tsx | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx index 9b4ced5067..8ed48af206 100644 --- a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx @@ -19,6 +19,7 @@ import { useHistory, useLocation, useParams, useRouteMatch } from 'react-router- import { followCursor } from 'tippy.js' import { + Badge, ClipboardButton, ComponentSizeType, getAIAnalyticsEvents, @@ -371,6 +372,23 @@ const NodeComponent = ({ } as MainContext['debugAgentContext']) : null + const initContainerNodes: iNode[] = + node.kind === NodeType.Pod + ? (podMetaData?.find((p) => p.name === node.name)?.initContainers || []).map( + (containerName: string): iNode => { + // Same pattern used in the common lib to build lightweight + // display-only child nodes (see IndexStore) in common-lib: src/Shared/Store/IndexStore.tsx + const initNode = {} as iNode + initNode.kind = NodeType.Containers + initNode.name = containerName + initNode.pNode = node + initNode.isInitContainer = true + return initNode + }, + ) + : [] + const expandedChildNodes = [...initContainerNodes, ...(node.childNodes || [])] + return ( // eslint-disable-next-line react/no-array-index-key @@ -388,7 +406,7 @@ const NodeComponent = ({
)}
- {node.childNodes?.length > 0 && ( + {expandedChildNodes.length > 0 && (
+ {(node as any).isInitContainer && ( + + )} {nodeStatus && ( )}
- {node.childNodes?.length > 0 && _isSelected && ( + {expandedChildNodes.length > 0 && _isSelected && (
-
{makeNodeTree(node.childNodes, true)}
+
{makeNodeTree(expandedChildNodes, true)}
)} From ed7649ea4adaaa134743d99a953ed987ffe864a2 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Tue, 7 Apr 2026 15:51:32 +0530 Subject: [PATCH 04/14] fix: refactor NodeComponent to simplify child node handling and remove init container logic --- .../k8Resource/nodeType/Node.component.tsx | 27 ++++--------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx index 8ed48af206..f90d3a568e 100644 --- a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx @@ -372,23 +372,6 @@ const NodeComponent = ({ } as MainContext['debugAgentContext']) : null - const initContainerNodes: iNode[] = - node.kind === NodeType.Pod - ? (podMetaData?.find((p) => p.name === node.name)?.initContainers || []).map( - (containerName: string): iNode => { - // Same pattern used in the common lib to build lightweight - // display-only child nodes (see IndexStore) in common-lib: src/Shared/Store/IndexStore.tsx - const initNode = {} as iNode - initNode.kind = NodeType.Containers - initNode.name = containerName - initNode.pNode = node - initNode.isInitContainer = true - return initNode - }, - ) - : [] - const expandedChildNodes = [...initContainerNodes, ...(node.childNodes || [])] - return ( // eslint-disable-next-line react/no-array-index-key @@ -406,7 +389,7 @@ const NodeComponent = ({
)}
- {expandedChildNodes.length > 0 && ( + {node.childNodes?.length > 0 && (
- {(node as any).isInitContainer && ( + {node.isInitContainer && ( )} {nodeStatus && ( @@ -585,9 +568,9 @@ const NodeComponent = ({ /> )}
- {expandedChildNodes.length > 0 && _isSelected && ( + {node.childNodes?.length > 0 && _isSelected && (
-
{makeNodeTree(expandedChildNodes, true)}
+
{makeNodeTree(node.childNodes, true)}
)} From b0c695183c7826abde381efa6674802a828a0ec8 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Tue, 7 Apr 2026 17:11:02 +0530 Subject: [PATCH 05/14] feat: enhance NodeComponent to render init and regular containers separately with improved headers --- .../k8Resource/nodeType/Node.component.tsx | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx index f90d3a568e..63f6503469 100644 --- a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx @@ -19,7 +19,6 @@ import { useHistory, useLocation, useParams, useRouteMatch } from 'react-router- import { followCursor } from 'tippy.js' import { - Badge, ClipboardButton, ComponentSizeType, getAIAnalyticsEvents, @@ -249,6 +248,19 @@ const NodeComponent = ({ .catch(noop) } + const renderGroupHeader = (title: string, showLinksHeader: boolean = false) => ( +
+
+ +
+ {showLinksHeader && ( +
+ +
+ )} +
+ ) + const makeNodeTree = (nodes: Array, showHeader?: boolean) => { const additionalTippyContent = (node) => { const portList = [...new Set(node?.port)] @@ -347,6 +359,9 @@ const NodeComponent = ({ return _classname } + const initChildren = (node.childNodes || []).filter((c) => c.isInitContainer) + const regularChildren = (node.childNodes || []).filter((c) => !c.isInitContainer) + const intelligenceConfig: MainContext['intelligenceConfig'] = { metadata: { object: `${node.kind}/${node.name}`, @@ -375,19 +390,12 @@ const NodeComponent = ({ return ( // eslint-disable-next-line react/no-array-index-key - {showNodeHeader && ( -
-
- -
- {((node.kind === NodeType.Pod && podLevelExternalLinks.length > 0) || - (node.kind === NodeType.Containers && containerLevelExternalLinks.length > 0)) && ( -
- -
- )} -
- )} + {showNodeHeader && + renderGroupHeader( + node.kind, + (node.kind === NodeType.Pod && podLevelExternalLinks.length > 0) || + (node.kind === NodeType.Containers && containerLevelExternalLinks.length > 0), + )}
@@ -460,9 +468,6 @@ const NodeComponent = ({
- {node.isInitContainer && ( - - )} {nodeStatus && ( {node.childNodes?.length > 0 && _isSelected && (
-
{makeNodeTree(node.childNodes, true)}
+ {initChildren.length > 0 ? ( + <> + {renderGroupHeader('Init Containers', containerLevelExternalLinks.length > 0)} + {makeNodeTree(initChildren, false)} + {regularChildren.length > 0 && ( + <> + {renderGroupHeader('Containers', containerLevelExternalLinks.length > 0)} + {makeNodeTree(regularChildren, false)} + + )} + + ) : ( + makeNodeTree(node.childNodes, true) + )}
)} From 08ab9b236b6aa9ed3b02cfdf9155d89d0a02a20f Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Tue, 7 Apr 2026 17:21:42 +0530 Subject: [PATCH 06/14] fix: improve variable naming for clarity in NodeComponent's child node filtering --- .../v2/appDetails/k8Resource/nodeType/Node.component.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx index 63f6503469..9fb7f597f8 100644 --- a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx @@ -359,8 +359,8 @@ const NodeComponent = ({ return _classname } - const initChildren = (node.childNodes || []).filter((c) => c.isInitContainer) - const regularChildren = (node.childNodes || []).filter((c) => !c.isInitContainer) + const initChildren = (node.childNodes || []).filter((child) => child.isInitContainer) + const regularChildren = (node.childNodes || []).filter((child) => !child.isInitContainer) const intelligenceConfig: MainContext['intelligenceConfig'] = { metadata: { From 40dce27cf6423bf9ca1b4d2a1e071f0acd37baf1 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Tue, 7 Apr 2026 18:03:35 +0530 Subject: [PATCH 07/14] fix: update devtron-fe-common-lib dependency to version 1.23.5 --- package.json | 2 +- .../appDetails/k8Resource/nodeType/Node.component.tsx | 4 ++-- yarn.lock | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 2da04a40cb..0b18b1745d 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "homepage": "/dashboard", "dependencies": { - "@devtron-labs/devtron-fe-common-lib": "1.23.4", + "@devtron-labs/devtron-fe-common-lib": "1.23.5", "@esbuild-plugins/node-globals-polyfill": "0.2.3", "@rjsf/core": "^5.13.3", "@rjsf/utils": "^5.13.3", diff --git a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx index 9fb7f597f8..afd9238a63 100644 --- a/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeType/Node.component.tsx @@ -577,14 +577,14 @@ const NodeComponent = ({
{initChildren.length > 0 ? ( <> - {renderGroupHeader('Init Containers', containerLevelExternalLinks.length > 0)} - {makeNodeTree(initChildren, false)} {regularChildren.length > 0 && ( <> {renderGroupHeader('Containers', containerLevelExternalLinks.length > 0)} {makeNodeTree(regularChildren, false)} )} + {renderGroupHeader('Init Containers', containerLevelExternalLinks.length > 0)} + {makeNodeTree(initChildren, false)} ) : ( makeNodeTree(node.childNodes, true) diff --git a/yarn.lock b/yarn.lock index e639284c11..e524d2f338 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1729,9 +1729,9 @@ __metadata: languageName: node linkType: hard -"@devtron-labs/devtron-fe-common-lib@npm:1.23.4": - version: 1.23.4 - resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.23.4" +"@devtron-labs/devtron-fe-common-lib@npm:1.23.5": + version: 1.23.5 + resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.23.5" dependencies: "@codemirror/autocomplete": "npm:6.18.6" "@codemirror/lang-json": "npm:6.0.1" @@ -1785,7 +1785,7 @@ __metadata: react-select: 5.8.0 rxjs: ^7.8.1 yaml: ^2.4.1 - checksum: 10c0/a2c1ce6ff7d6042d0dce67421722c300c4c53012bdc710b8898514b449ab6dd0ed81f0652298a31b4aa6ee3b67a420f7150f12d99fba15ea097a70c2a2784c2e + checksum: 10c0/2b3793ea426d1f72247c0579c2290cadbf4b104cd058dd15c6a60be5557d987844885bc79f983e823bbeb28851fe6f409de7ab8d2beeaff37fbb62112b4ffd0c languageName: node linkType: hard @@ -5599,7 +5599,7 @@ __metadata: version: 0.0.0-use.local resolution: "dashboard@workspace:." dependencies: - "@devtron-labs/devtron-fe-common-lib": "npm:1.23.4" + "@devtron-labs/devtron-fe-common-lib": "npm:1.23.5" "@esbuild-plugins/node-globals-polyfill": "npm:0.2.3" "@playwright/test": "npm:^1.32.1" "@rjsf/core": "npm:^5.13.3" From a2ac05a1f372afb301bdee4eab2e1736fe8d85dd Mon Sep 17 00:00:00 2001 From: Arun Jain Date: Thu, 9 Apr 2026 13:18:08 +0530 Subject: [PATCH 08/14] fix: helm app hibernate --- .eslintignore | 2 -- src/components/__mocks__/xterm-webfont.js | 19 ------------------- .../EnvironmentSelector.component.tsx | 11 ++--------- .../ScaleWorkloadsModal.component.tsx | 7 +++++-- .../scaleWorkloadsModal.type.ts | 1 - 5 files changed, 7 insertions(+), 33 deletions(-) delete mode 100644 src/components/__mocks__/xterm-webfont.js diff --git a/.eslintignore b/.eslintignore index b44bc8c5be..4c62c958c8 100755 --- a/.eslintignore +++ b/.eslintignore @@ -40,14 +40,12 @@ src/components/ClusterNodes/ClusterEvents.tsx src/components/ClusterNodes/ClusterManifest.tsx src/components/ClusterNodes/ClusterNodeEmptyStates.tsx src/components/ClusterNodes/NodeDetails.tsx -src/components/Hotjar/Hotjar.tsx src/components/Jobs/ExpandedRow/ExpandedRow.tsx src/components/Jobs/JobDetails/JobDetails.tsx src/components/Jobs/JobsEmptyState.tsx src/components/Jobs/Service.ts src/components/Jobs/Utils.ts src/components/LogViewer/LogViewer.tsx -src/components/__mocks__/xterm-webfont.js src/components/app/LogFilter.ts src/components/app/Overview/EnvironmentList.tsx src/components/app/Overview/Overview.tsx diff --git a/src/components/__mocks__/xterm-webfont.js b/src/components/__mocks__/xterm-webfont.js deleted file mode 100644 index a0882cfa71..0000000000 --- a/src/components/__mocks__/xterm-webfont.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2024. Devtron Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export default jest.fn().mockImplementation(() => { - return Promise.resolve() -}) diff --git a/src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx b/src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx index 0b0db90235..49b0de37c2 100644 --- a/src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx +++ b/src/components/v2/appDetails/sourceInfo/EnvironmentSelector.component.tsx @@ -287,10 +287,7 @@ const EnvironmentSelectorComponent = ({ isExternalFlux || isExternalArgo ) && ( -
+
)} {showWorkloadsModal && ( - setShowWorkloadsModal(false)} - history={history} - /> + setShowWorkloadsModal(false)} /> )}
) diff --git a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx b/src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx index cbbfde3f0d..8ba094ee38 100644 --- a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx +++ b/src/components/v2/appDetails/sourceInfo/scaleWorkloads/ScaleWorkloadsModal.component.tsx @@ -44,8 +44,11 @@ import { useSharedState } from '../../../utils/useSharedState' import IndexStore from '../../index.store' import { AppType } from '../../appDetails.type' import { getInstalledChartDetailWithResourceTree } from '../../appDetails.api' +import { useLocation, useNavigate } from 'react-router-dom' -export default function ScaleWorkloadsModal({ appId, onClose, history }: ScaleWorkloadsModalProps) { +export default function ScaleWorkloadsModal({ appId, onClose }: ScaleWorkloadsModalProps) { + const navigate = useNavigate() + const { pathname } = useLocation() const [nameSelection, setNameSelection] = useState>({ scaleDown: { isChecked: false, @@ -331,7 +334,7 @@ export default function ScaleWorkloadsModal({ appId, onClose, history }: ScaleWo setFetchingLatestDetails(true) _setWorkloadsList(_workloadsList) - history.push(`${history.location.pathname}?refetchData=true`) + navigate(`${pathname}?refetchData=true`) } await _getAndSetAppDetail() } catch (e) { diff --git a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts b/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts index 0c6594dd0f..555f3b1415 100644 --- a/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts +++ b/src/components/v2/appDetails/sourceInfo/scaleWorkloads/scaleWorkloadsModal.type.ts @@ -28,7 +28,6 @@ export interface ScaleWorkloadsType extends HibernateTargetObject, WorkloadCheck export interface ScaleWorkloadsModalProps { appId: string onClose: () => void - history: any } export interface HibernateTargetObject { From 40517d2c321106b95e905ccccd94e8e73a066a76 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Thu, 9 Apr 2026 14:37:14 +0530 Subject: [PATCH 09/14] chore: update base image to node:24-alpine in Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7a2d96a844..ca8cc97c8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-alpine AS builder +FROM node:24-alpine AS builder WORKDIR /app From 7ec24b5f69dafefbcaae97c3ef37652acfaacff1 Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Thu, 9 Apr 2026 15:38:33 +0530 Subject: [PATCH 10/14] fix: update vite to version 8.0.8 and roll back dependencies in yarn.lock --- package.json | 4 +- yarn.lock | 230 ++++++++++++++++++++++++++------------------------- 2 files changed, 119 insertions(+), 115 deletions(-) diff --git a/package.json b/package.json index 8c29ed6c12..4e87d21bc6 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "svgo": "^3.3.2", "ts-node": "10.9.2", "typescript": "5.5.4", - "vite": "8.0.0", + "vite": "8.0.8", "vite-plugin-compression2": "2.4.0", "vite-plugin-pwa": "1.2.0", "vite-plugin-require-transform": "1.0.21", @@ -112,7 +112,7 @@ "packageManager": "yarn@4.9.2", "overrides": { "vite-plugin-svgr": { - "vite": "8.0.0" + "vite": "8.0.8" } } } diff --git a/yarn.lock b/yarn.lock index 3ddef16765..792c070820 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1836,17 +1836,26 @@ __metadata: languageName: node linkType: hard -"@emnapi/core@npm:^1.7.1": - version: 1.9.1 - resolution: "@emnapi/core@npm:1.9.1" +"@emnapi/core@npm:1.9.2": + version: 1.9.2 + resolution: "@emnapi/core@npm:1.9.2" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.1" + tslib: "npm:^2.4.0" + checksum: 10c0/5500393f953951bad0768fafaa9191f2d938956b20c6d6a79e5ab696a613a25ce6ad23422bc18e86e6ce8deb147619d8d0d7d413a69f84adc01a6633cc353cd9 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:1.9.2": + version: 1.9.2 + resolution: "@emnapi/runtime@npm:1.9.2" dependencies: - "@emnapi/wasi-threads": "npm:1.2.0" tslib: "npm:^2.4.0" - checksum: 10c0/00e7a99a2bc3ad908ca8272ba861a934da87dffa8797a41316c4a3b571a1e4d2743e2fa14b1a0f131fa4a3c2018ddb601cd2a8cb7f574fa940af696df3c2fe8d + checksum: 10c0/61c3a59e0c36784558b8d58eb02bd04815aa5fb0dbfbaf84d1b3050a78aa0cc63ea129ae806bd1e48062bfeb7fc36eb0e5431740d62f64ea51bdf426404b8caa languageName: node linkType: hard -"@emnapi/runtime@npm:^1.2.0, @emnapi/runtime@npm:^1.7.1": +"@emnapi/runtime@npm:^1.2.0": version: 1.9.1 resolution: "@emnapi/runtime@npm:1.9.1" dependencies: @@ -1855,12 +1864,12 @@ __metadata: languageName: node linkType: hard -"@emnapi/wasi-threads@npm:1.2.0": - version: 1.2.0 - resolution: "@emnapi/wasi-threads@npm:1.2.0" +"@emnapi/wasi-threads@npm:1.2.1": + version: 1.2.1 + resolution: "@emnapi/wasi-threads@npm:1.2.1" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/1e3724b5814b06c14782fda87eee9b9aa68af01576c81ffeaefdf621ddb74386e419d5b3b1027b6a8172397729d95a92f814fc4b8d3c224376428faa07a6a01a + checksum: 10c0/32fcfa81ab396533b2ec1f4082b1ff779a05d9c836bbbd3f4398405b0e6814c0d9503b7993130e37bc6941dbc1ded49f55e9700ae9ca4e803bab2b5bc5deb331 languageName: node linkType: hard @@ -2458,14 +2467,15 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^1.1.1": - version: 1.1.1 - resolution: "@napi-rs/wasm-runtime@npm:1.1.1" +"@napi-rs/wasm-runtime@npm:^1.1.3": + version: 1.1.3 + resolution: "@napi-rs/wasm-runtime@npm:1.1.3" dependencies: - "@emnapi/core": "npm:^1.7.1" - "@emnapi/runtime": "npm:^1.7.1" "@tybys/wasm-util": "npm:^0.10.1" - checksum: 10c0/04d57b67e80736e41fe44674a011878db0a8ad893f4d44abb9d3608debb7c174224cba2796ed5b0c1d367368159f3ca6be45f1c59222f70e32ddc880f803d447 + peerDependencies: + "@emnapi/core": ^1.7.1 + "@emnapi/runtime": ^1.7.1 + checksum: 10c0/745bb32a023b95095a18d93658bf4564403c2283ca0500a043afcf566ac6082bd0611792f14636276bab07dc2ce6d862591c8aabddae02ec697245b05bc6f144 languageName: node linkType: hard @@ -2518,17 +2528,10 @@ __metadata: languageName: node linkType: hard -"@oxc-project/runtime@npm:0.115.0": - version: 0.115.0 - resolution: "@oxc-project/runtime@npm:0.115.0" - checksum: 10c0/88905181724fcad06d2852969e706a25a7b6c4fadac22dd6aece24b882a947eda7487451e0824781c9dc87b40b2c6ee582790e47fec5a9ba5d27c6e8c6c35bc1 - languageName: node - linkType: hard - -"@oxc-project/types@npm:=0.115.0": - version: 0.115.0 - resolution: "@oxc-project/types@npm:0.115.0" - checksum: 10c0/47fc31eb3fb3fcf4119955339f92ba2003f9b445834c1a28ed945cd6b9cd833c7ba66fca88aa5277336c2c55df300a593bc67970e544691eceaa486ebe12cb58 +"@oxc-project/types@npm:=0.124.0": + version: 0.124.0 + resolution: "@oxc-project/types@npm:0.124.0" + checksum: 10c0/9564ee3ce41f4b87802ffd0d62a7602d27f4503fbd39c1bedab98d54fde06e2ac254a8f85d8f679af1281a26e8fc7aa053fadbb3e09e786b38178eb38a8e2fb3 languageName: node linkType: hard @@ -2642,113 +2645,122 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-android-arm64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.9" +"@rolldown/binding-android-arm64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.15" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9" +"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.15" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.9" +"@rolldown/binding-darwin-x64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.15" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9" +"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.15" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9" +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.15" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9" +"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.15" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9" +"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.15" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9" +"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.15" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9" +"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.15" dependencies: - "@napi-rs/wasm-runtime": "npm:^1.1.1" + "@emnapi/core": "npm:1.9.2" + "@emnapi/runtime": "npm:1.9.2" + "@napi-rs/wasm-runtime": "npm:^1.1.3" conditions: cpu=wasm32 languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9" +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.15" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9" +"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.15" conditions: os=win32 & cpu=x64 languageName: node linkType: hard +"@rolldown/pluginutils@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.15" + checksum: 10c0/15eef6a65ee6b2d07405c16999c2333c40d8aeea60bbc35e04957992fe6477c7b278d3f02679688bb928ad2ef3fbd3a6149c116d7dc9928ebf8d1434a0591674 + languageName: node + linkType: hard + "@rolldown/pluginutils@npm:1.0.0-rc.7": version: 1.0.0-rc.7 resolution: "@rolldown/pluginutils@npm:1.0.0-rc.7" @@ -2756,13 +2768,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.9" - checksum: 10c0/fca488fb96b134ccf95b42632b6112b4abb8b3a9688f166fbd627410def2538ee201953717d234ddecbff62dfe4edc4e72c657b01a9d0750134608d767eea5fd - languageName: node - linkType: hard - "@rollup/plugin-babel@npm:^5.2.0": version: 5.3.1 resolution: "@rollup/plugin-babel@npm:5.3.1" @@ -5600,7 +5605,7 @@ __metadata: tippy.js: "npm:^6.3.7" ts-node: "npm:10.9.2" typescript: "npm:5.5.4" - vite: "npm:8.0.0" + vite: "npm:8.0.8" vite-plugin-compression2: "npm:2.4.0" vite-plugin-pwa: "npm:1.2.0" vite-plugin-require-transform: "npm:1.0.21" @@ -10287,7 +10292,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3": +"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": version: 4.0.4 resolution: "picomatch@npm:4.0.4" checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0 @@ -11292,27 +11297,27 @@ __metadata: languageName: node linkType: hard -"rolldown@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "rolldown@npm:1.0.0-rc.9" - dependencies: - "@oxc-project/types": "npm:=0.115.0" - "@rolldown/binding-android-arm64": "npm:1.0.0-rc.9" - "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.9" - "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.9" - "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.9" - "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.9" - "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.9" - "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.9" - "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.9" - "@rolldown/pluginutils": "npm:1.0.0-rc.9" +"rolldown@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "rolldown@npm:1.0.0-rc.15" + dependencies: + "@oxc-project/types": "npm:=0.124.0" + "@rolldown/binding-android-arm64": "npm:1.0.0-rc.15" + "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.15" + "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.15" + "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.15" + "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.15" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.15" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.15" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.15" + "@rolldown/pluginutils": "npm:1.0.0-rc.15" dependenciesMeta: "@rolldown/binding-android-arm64": optional: true @@ -11346,7 +11351,7 @@ __metadata: optional: true bin: rolldown: bin/cli.mjs - checksum: 10c0/d19af14dccf569dc25c0c3c2f1142b7a6f7cec291d55bba80cea71099f89c6d634145bb1b6487626ddd41d578f183f7065ed68067e49d2b964ad6242693b0f79 + checksum: 10c0/95df21125dafd2a0ce6ae9a89d926540e47900684023126c84632e18123371020da8f6b3235a188c45af0e4f9a5b963235de33bd9658ee5db9f3ff5862200eed languageName: node linkType: hard @@ -13091,21 +13096,20 @@ __metadata: languageName: node linkType: hard -"vite@npm:8.0.0": - version: 8.0.0 - resolution: "vite@npm:8.0.0" +"vite@npm:8.0.8": + version: 8.0.8 + resolution: "vite@npm:8.0.8" dependencies: - "@oxc-project/runtime": "npm:0.115.0" fsevents: "npm:~2.3.3" lightningcss: "npm:^1.32.0" - picomatch: "npm:^4.0.3" + picomatch: "npm:^4.0.4" postcss: "npm:^8.5.8" - rolldown: "npm:1.0.0-rc.9" + rolldown: "npm:1.0.0-rc.15" tinyglobby: "npm:^0.2.15" peerDependencies: "@types/node": ^20.19.0 || >=22.12.0 - "@vitejs/devtools": ^0.0.0-alpha.31 - esbuild: ^0.27.0 + "@vitejs/devtools": ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 jiti: ">=1.21.0" less: ^4.0.0 sass: ^1.70.0 @@ -13145,7 +13149,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/2246d3d54788dcd53c39da82da3f934a760756642ba9a575c84c5ef9f310bc47697f7f9fde6721fa566675e93e408736b4ac068008d2ddbd75b0ed99c7fd4c67 + checksum: 10c0/63474b399612ccf087d0aa025d7eb5c0d675012b6257b7f64332ff39579d4af4d5d7f0ac330906fc99b101abbf592c756adf143bb5748a02aec08f7d3639054d languageName: node linkType: hard From aa3e9206720b247eb3dae0fc2d96b1b81c0ae0ff Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Thu, 9 Apr 2026 16:06:14 +0530 Subject: [PATCH 11/14] fix: revert devtron-fe-common-lib to version 1.23.5-beta-0 and update dompurify and yaml dependencies --- package.json | 6 +++--- yarn.lock | 34 +++++++++++++++++----------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 4e87d21bc6..92029162be 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "homepage": "/dashboard", "dependencies": { - "@devtron-labs/devtron-fe-common-lib": "1.23.5-pre-1", + "@devtron-labs/devtron-fe-common-lib": "1.23.5-beta-0", "@esbuild-plugins/node-globals-polyfill": "0.2.3", "@sentry/browser": "7.119.1", "@sentry/integrations": "7.50.0", @@ -14,7 +14,7 @@ "command-line-parser": "^0.2.10", "compute-histogram": "^0.9.11", "dayjs": "^1.11.13", - "dompurify": "^3.2.4", + "dompurify": "^3.3.3", "fast-json-patch": "^3.1.1", "jsonpath-plus": "^10.3.0", "moment": "^2.29.4", @@ -34,7 +34,7 @@ "xterm-addon-fit": "^0.5.0", "xterm-addon-search": "^0.9.0", "xterm-webfont": "^2.0.0", - "yaml": "^2.4.1" + "yaml": "^2.8.3" }, "scripts": { "prepare": "husky install", diff --git a/yarn.lock b/yarn.lock index 792c070820..0565dc0a22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1777,9 +1777,9 @@ __metadata: languageName: node linkType: hard -"@devtron-labs/devtron-fe-common-lib@npm:1.23.5-pre-1": - version: 1.23.5-pre-1 - resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.23.5-pre-1" +"@devtron-labs/devtron-fe-common-lib@npm:1.23.5-beta-0": + version: 1.23.5-beta-0 + resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.23.5-beta-0" dependencies: "@codemirror/autocomplete": "npm:6.18.6" "@codemirror/lang-json": "npm:6.0.1" @@ -1824,15 +1824,15 @@ __metadata: tslib: "npm:2.7.0" peerDependencies: "@typeform/embed-react": 2.20.0 - dompurify: ^3.2.4 + dompurify: ^3.3.3 patch-package: ^8.0.0 react: ^19.2.4 react-dom: ^19.2.4 react-router-dom: ^6.30.3 react-select: 5.8.0 rxjs: ^7.8.1 - yaml: ^2.4.1 - checksum: 10c0/13fb40331814ccd6897908e0743c5e90f071501d81eca91dbff06c380200e914b36b53551060d063845fcf0ff4878a1c9076d8d7c276760b3fd133ce126af91d + yaml: ^2.8.3 + checksum: 10c0/1a4bc067ad02c234244fdffedda7b048c3370a6b0be4b850970881b97f23cb5b8144f3e94ee02d53c42292d8954696234333b2d2b8073f890f47e3bf01d6b8e8 languageName: node linkType: hard @@ -5544,7 +5544,7 @@ __metadata: version: 0.0.0-use.local resolution: "dashboard@workspace:." dependencies: - "@devtron-labs/devtron-fe-common-lib": "npm:1.23.5-pre-1" + "@devtron-labs/devtron-fe-common-lib": "npm:1.23.5-beta-0" "@esbuild-plugins/node-globals-polyfill": "npm:0.2.3" "@playwright/test": "npm:^1.32.1" "@sentry/browser": "npm:7.119.1" @@ -5565,7 +5565,7 @@ __metadata: command-line-parser: "npm:^0.2.10" compute-histogram: "npm:^0.9.11" dayjs: "npm:^1.11.13" - dompurify: "npm:^3.2.4" + dompurify: "npm:^3.3.3" env-cmd: "npm:10.1.0" eslint: "npm:^8.57.1" eslint-config-airbnb: "npm:^19.0.4" @@ -5614,7 +5614,7 @@ __metadata: xterm-addon-fit: "npm:^0.5.0" xterm-addon-search: "npm:^0.9.0" xterm-webfont: "npm:^2.0.0" - yaml: "npm:^2.4.1" + yaml: "npm:^2.8.3" languageName: unknown linkType: soft @@ -5891,15 +5891,15 @@ __metadata: languageName: node linkType: hard -"dompurify@npm:^3.2.4": - version: 3.2.4 - resolution: "dompurify@npm:3.2.4" +"dompurify@npm:^3.3.3": + version: 3.3.3 + resolution: "dompurify@npm:3.3.3" dependencies: "@types/trusted-types": "npm:^2.0.7" dependenciesMeta: "@types/trusted-types": optional: true - checksum: 10c0/6be56810fb7ad2776155c8fc2967af5056783c030094362c7d0cf1ad13f2129cf922d8eefab528a34bdebfb98e2f44b306a983ab93aefb9d6f24c18a3d027a05 + checksum: 10c0/097c14a21a3f6cb95beded9ecd255f7c3512c42767b048390c747b0fe35736f6a71e02320fc50a9ac2be645834b463e4760915d595d502a56452daf339d0ea9c languageName: node linkType: hard @@ -13646,12 +13646,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.4.1": - version: 2.4.5 - resolution: "yaml@npm:2.4.5" +"yaml@npm:^2.8.3": + version: 2.8.3 + resolution: "yaml@npm:2.8.3" bin: yaml: bin.mjs - checksum: 10c0/e1ee78b381e5c710f715cc4082fd10fc82f7f5c92bd6f075771d20559e175616f56abf1c411f545ea0e9e16e4f84a83a50b42764af5f16ec006328ba9476bb31 + checksum: 10c0/ddff0e11c1b467728d7eb4633db61c5f5de3d8e9373cf84d08fb0cdee03e1f58f02b9f1c51a4a8a865751695addbd465a77f73f1079be91fe5493b29c305fd77 languageName: node linkType: hard From f36b94936f3e0cef64422ac82276ef0fce2e6baa Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Mon, 13 Apr 2026 15:08:21 +0530 Subject: [PATCH 12/14] feat: upgrade xterm to version 6.0.0 and add new addons for enhanced terminal functionality --- package.json | 6 +- .../nodeDetail/NodeDetailTabs/CopyToast.tsx | 2 +- .../NodeDetailTabs/LogViewer.component.tsx | 86 ++++--------------- .../NodeDetailTabs/Logs.component.tsx | 11 +-- .../NodeDetailTabs/terminal/Terminal.tsx | 37 ++++---- .../NodeDetailTabs/terminal/terminal.type.ts | 11 ++- src/css/base.scss | 28 ++++++ yarn.lock | 61 ++++--------- 8 files changed, 88 insertions(+), 154 deletions(-) diff --git a/package.json b/package.json index 92029162be..6bfb2594f9 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,8 @@ "@sentry/tracing": "7.50.0", "@tippyjs/react": "4.2.6", "@typeform/embed-react": "2.20.0", + "@xterm/addon-fit": "^0.11.0", + "@xterm/xterm": "^6.0.0", "command-line-parser": "^0.2.10", "compute-histogram": "^0.9.11", "dayjs": "^1.11.13", @@ -30,10 +32,6 @@ "rxjs": "^7.8.1", "sockjs-client": "1.6.1", "tippy.js": "^6.3.7", - "xterm": "^4.19.0", - "xterm-addon-fit": "^0.5.0", - "xterm-addon-search": "^0.9.0", - "xterm-webfont": "^2.0.0", "yaml": "^2.8.3" }, "scripts": { diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx index 7858ce9b55..2555b2f007 100644 --- a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/CopyToast.tsx @@ -18,7 +18,7 @@ import { copyToClipboard, noop } from '@devtron-labs/devtron-fe-common-lib' import CheckIcon from '../../../../assets/icons/ic-check.svg?react' -import 'xterm/css/xterm.css' +import '@xterm/xterm/css/xterm.css' import './nodeDetailTab.scss' interface toastType { diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx index 31ea7e7aae..5fef8f6ec8 100644 --- a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/LogViewer.component.tsx @@ -16,35 +16,28 @@ import React, { useEffect, useRef, useState } from 'react' import { AutoSizer } from 'react-virtualized' -import { Terminal } from 'xterm' -import { FitAddon } from 'xterm-addon-fit' -import { SearchAddon } from 'xterm-addon-search' -import * as XtermWebfont from 'xterm-webfont' +import { FitAddon } from '@xterm/addon-fit' +import { Terminal } from '@xterm/xterm' import { Scroller } from '@devtron-labs/devtron-fe-common-lib' import { Subject } from '../../../../../../util/Subject' import CopyToast, { handleSelectionChange } from './CopyToast' -import 'xterm/css/xterm.css' +import '@xterm/xterm/css/xterm.css' import './nodeDetailTab.scss' interface logViewerInterface { - highlightString?: string subject: Subject reset?: boolean } -const LogViewerComponent: React.FunctionComponent = ({ - subject, - highlightString = '', - reset = false, -}) => { +const LogViewerComponent: React.FunctionComponent = ({ subject, reset = false }) => { let unsubscribe: () => boolean = null + + const xtermContainerRef = useRef(null) const terminal = useRef(null) const fitAddon = useRef(null) - const searchAddon = useRef(null) - const webFontAddon = useRef(null) const [popupText, setPopupText] = useState(false) @@ -55,44 +48,12 @@ const LogViewerComponent: React.FunctionComponent = ({ setTimeout(() => setPopupText(false), 2000) }, [popupText]) - function handleKeyPress(e): boolean { - switch (e.key) { - case 'n': - e.stopPropagation() - e.preventDefault() - if (e.type === 'keydown' && highlightString && searchAddon.current) { - searchAddon.current.findNext(highlightString) - } - return false - case 'N': - e.stopPropagation() - e.preventDefault() - if (e.type === 'keydown' && highlightString && searchAddon.current) { - if (e.shiftKey) { - searchAddon.current.findPrevious(highlightString) - } else { - searchAddon.current.findNext(highlightString) - } - } - return false - case 'Enter': - terminal.current.writeln('') - return false - default: - return false - } - } - const scrollToTop = () => { - if (terminal.current) { - terminal.current.scrollToTop() - } + terminal.current?.scrollToTop() } const scrollToBottom = () => { - if (terminal.current) { - terminal.current.scrollToBottom() - } + terminal.current?.scrollToBottom() } useEffect(() => { @@ -100,54 +61,43 @@ const LogViewerComponent: React.FunctionComponent = ({ scrollback: 99999, fontSize: 14, lineHeight: 1.4, - fontFamily: 'Inconsolata', - // disableStdin: true, + fontFamily: 'Inconsolata, monospace', cursorStyle: 'bar', cursorWidth: 1, // Cannot use variables here theme: { - // Using hex code for --terminal-bg background: '#181920', foreground: '#FFFFFF', - // selection: '#0066cc4d', }, }) - terminal.current.attachCustomKeyEventHandler(handleKeyPress) + handleSelectionChange(terminal.current, setPopupText) - fitAddon.current = new FitAddon() - /** - * Adding default check due to vite build changing the export - * for production the value will be `webFontAddon.current = new XtermWebfont.default()` - * for local the value will be `webFontAddon.current = new XtermWebfont()` - */ - // eslint-disable-next-line new-cap - webFontAddon.current = XtermWebfont.default ? new XtermWebfont.default() : new XtermWebfont() + fitAddon.current = new FitAddon() terminal.current.loadAddon(fitAddon.current) - terminal.current.loadAddon(webFontAddon.current) - searchAddon.current = new SearchAddon() - terminal.current.loadAddon(searchAddon.current) - searchAddon.current.activate(terminal.current) - ;(terminal.current as any).loadWebfontAndOpen(document.getElementById('xterm-logs')) + + const container = xtermContainerRef.current + terminal.current.open(container) fitAddon.current.fit() terminal.current.reset() + if (unsubscribe !== null) { unsubscribe() } + const [, unsub] = subject.subscribe((log: string) => { fitAddon.current.fit() terminal.current.writeln(log.toString()) }) unsubscribe = unsub + return () => { if (unsubscribe !== null) { unsubscribe() } terminal.current.dispose() fitAddon.current = null - searchAddon.current = null terminal.current = null - webFontAddon.current = null } }, []) @@ -161,7 +111,7 @@ const LogViewerComponent: React.FunctionComponent = ({ <> {({ height, width }) => ( -
+
)} diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx index 8cb7b8eb0d..5886508981 100644 --- a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/Logs.component.tsx @@ -104,7 +104,6 @@ const LogsComponent = ({ const { isDownloading, handleDownload } = useDownload() const [logsPaused, setLogsPaused] = useState(false) const [tempSearch, setTempSearch] = useState('') - const [highlightString, setHighlightString] = useState('') const [logsCleared, setLogsCleared] = useState(false) const [readyState, setReadyState] = useState(null) const showStreamErrorRef = useRef(false) @@ -401,8 +400,6 @@ const LogsComponent = ({ setTempSearch(_searchText) const str = replaceLastOddBackslash(_searchText) handleSearchTextChange(str) - const { length, [length - 1]: highlightStringLocal } = str.split(' ') - setHighlightString(highlightStringLocal) handleCurrentSearchTerm(str) } @@ -458,8 +455,6 @@ const LogsComponent = ({ if (currentSearchTerm) { setTempSearch(currentSearchTerm) handleSearchTextChange(currentSearchTerm) - const { length, [length - 1]: highlightStringLocal } = currentSearchTerm.split(' ') - setHighlightString(highlightStringLocal) } } // TODO: reset pauseLog and grepToken @@ -822,11 +817,7 @@ const LogsComponent = ({ className={`flexbox-col flex-grow-1 w-100 h-100 ${getComponentSpecificThemeClass(AppThemeType.dark)}`} >
- +
)} diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx index 125a997229..12d5ddb92a 100644 --- a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx @@ -14,11 +14,10 @@ * limitations under the License. */ import React, { useEffect, useRef, useState } from 'react' +import { FitAddon } from '@xterm/addon-fit' +import { Terminal } from '@xterm/xterm' import moment from 'moment' import SockJS from 'sockjs-client' -import { Terminal } from 'xterm' -import { FitAddon } from 'xterm-addon-fit' -import * as XtermWebfont from 'xterm-webfont' import { AppThemeType, @@ -39,6 +38,7 @@ import { TERMINAL_STATUS } from './constants' import { TerminalViewType } from './terminal.type' import { restrictXtermAccessibilityWidth } from './terminal.utils' +import '@xterm/xterm/css/xterm.css' import './terminal.scss' const TerminalView = ({ @@ -61,7 +61,7 @@ const TerminalView = ({ const [isReconnection, setIsReconnection] = useState(false) const [fullScreenView, setFullScreenView] = useState(false) const [popupText, setPopupText] = useState(false) - const fitAddon = useRef(null) + const fitAddon = useRef(null) const resizeSocket = () => { if (terminalRef.current && fitAddon.current && isTerminalTab) { @@ -102,29 +102,23 @@ const TerminalView = ({ foreground: '#ffffff', }, }) + handleSelectionChange(terminalRef.current, setPopupText) + fitAddon.current = new FitAddon() - /** - * Adding default check due to vite build changing the export - * for production the value will be `webFontAddon.current = new XtermWebfont.default()` - * for local the value will be `webFontAddon.current = new XtermWebfont()` - */ - // eslint-disable-next-line new-cap - const webFontAddon = XtermWebfont.default ? new XtermWebfont.default() : new XtermWebfont() terminalRef.current.loadAddon(fitAddon.current) - terminalRef.current.loadAddon(webFontAddon) + if (typeof registerLinkMatcher === 'function') { registerLinkMatcher(terminalRef.current) } - terminalRef.current.loadWebfontAndOpen(document.getElementById('terminal-id')) - // terminalRef.current.open(document.getElementById('terminal-id')) + terminalRef.current.open(document.getElementById('terminal-id')) fitAddon.current?.fit() terminalRef.current.reset() + terminalRef.current.attachCustomKeyEventHandler((event) => { if ((event.metaKey && event.key === 'k') || event.key === 'K') { terminalRef.current?.clear() } - return true }) } @@ -147,14 +141,14 @@ const TerminalView = ({ const _fitAddon = fitAddon.current const disableInput = (): void => { - _terminal.setOption('cursorBlink', false) - _terminal.setOption('disableStdin', true) + _terminal.options.cursorBlink = false + _terminal.options.disableStdin = true setFirstMessageReceived(false) } const enableInput = (): void => { - _terminal.setOption('cursorBlink', true) - _terminal.setOption('disableStdin', false) + _terminal.options.cursorBlink = true + _terminal.options.disableStdin = false } _terminal.onData((data) => { @@ -247,7 +241,8 @@ const TerminalView = ({ if (isTerminalTab) { fitAddon.current?.fit() } - terminalRef.current.setOption('cursorBlink', true) + // eslint-disable-next-line no-param-reassign + terminalRef.current.options.cursorBlink = true setSocketConnection(SocketConnectionType.CONNECTED) } }, [firstMessageReceived, isTerminalTab]) @@ -280,8 +275,6 @@ const TerminalView = ({ socket.current = undefined // eslint-disable-next-line no-param-reassign terminalRef.current = undefined - // eslint-disable-next-line no-param-reassign - terminalRef.current = undefined fitAddon.current = null } }, []) diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts index fcf9252f49..f12deee3d0 100644 --- a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts +++ b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/terminal.type.ts @@ -14,12 +14,15 @@ * limitations under the License. */ -import type { JSX } from 'react' -import { OptionsOrGroups, GroupBase, ActionMeta, StylesConfig } from 'react-select' +import type { JSX, RefObject } from 'react' +import { ActionMeta, GroupBase, OptionsOrGroups, StylesConfig } from 'react-select' import { SelectComponents } from 'react-select/dist/declarations/src/components' +import { Terminal } from '@xterm/xterm' + +import { AppDetails } from '@devtron-labs/devtron-fe-common-lib' + import { SocketConnectionType } from '../../../../../../ClusterNodes/constants' import { EditModeType, TerminalWrapperType } from './constants' -import { AppDetails } from '@devtron-labs/devtron-fe-common-lib' export interface TerminalWrapperComponentType { type: TerminalWrapperType @@ -84,7 +87,7 @@ export interface TerminalWrapperProps { } export interface TerminalViewType extends Pick { - terminalRef: any + terminalRef: RefObject sessionId: string socketConnection: SocketConnectionType setSocketConnection: (type: SocketConnectionType) => void diff --git a/src/css/base.scss b/src/css/base.scss index 1e44797d66..4125a07dc3 100644 --- a/src/css/base.scss +++ b/src/css/base.scss @@ -2301,6 +2301,34 @@ button.anchor { .xterm .xterm-viewport { width: initial !important; + background-color: var(--terminal-bg) !important; +} + +.xterm { + + .xterm-scrollable-element { + >.scrollbar.vertical { + width: 12px !important; + + .slider { + border-radius: 10px !important; // pill shape + background: rgba(255, 255, 255, 0.2) !important; + + &:hover { + background: rgba(255, 255, 255, 0.4) !important; + } + } + } + + >.scrollbar.horizontal { + height: 6px !important; + + .slider { + border-radius: 10px !important; + background: rgba(255, 255, 255, 0.2) !important; + } + } + } } // Radius diff --git a/yarn.lock b/yarn.lock index 86988ee479..dfcc29df48 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4167,6 +4167,20 @@ __metadata: languageName: node linkType: hard +"@xterm/addon-fit@npm:^0.11.0": + version: 0.11.0 + resolution: "@xterm/addon-fit@npm:0.11.0" + checksum: 10c0/c0ce94f7e877d07e7197d15d041cc629ce2e853016400aadddc9810838ea8a26e836f87f325eba36df88c03feb72d9f13cd8c3bb41ee31e701f1058edb8553c3 + languageName: node + linkType: hard + +"@xterm/xterm@npm:^6.0.0": + version: 6.0.0 + resolution: "@xterm/xterm@npm:6.0.0" + checksum: 10c0/b99122553f323a65b708e5eba9903d4c5a1bcb59fe576d29d6e91a33002bccfd1b99403e1e839e1942f4952039db6d3d74ca9d65ed0399b4e9a0a5f35b8c12d9 + languageName: node + linkType: hard + "@xyflow/react@npm:12.4.2": version: 12.4.2 resolution: "@xyflow/react@npm:12.4.2" @@ -5513,6 +5527,8 @@ __metadata: "@typescript-eslint/eslint-plugin": "npm:8.3.0" "@typescript-eslint/parser": "npm:8.3.0" "@vitejs/plugin-react": "npm:6.0.1" + "@xterm/addon-fit": "npm:^0.11.0" + "@xterm/xterm": "npm:^6.0.0" command-line-parser: "npm:^0.2.10" compute-histogram: "npm:^0.9.11" dayjs: "npm:^1.11.13" @@ -5561,10 +5577,6 @@ __metadata: vite-plugin-pwa: "npm:1.2.0" vite-plugin-require-transform: "npm:1.0.21" vite-plugin-svgr: "npm:4.5.0" - xterm: "npm:^4.19.0" - xterm-addon-fit: "npm:^0.5.0" - xterm-addon-search: "npm:^0.9.0" - xterm-webfont: "npm:^2.0.0" yaml: "npm:^2.8.3" languageName: unknown linkType: soft @@ -6872,13 +6884,6 @@ __metadata: languageName: node linkType: hard -"fontfaceobserver@npm:2.*": - version: 2.3.0 - resolution: "fontfaceobserver@npm:2.3.0" - checksum: 10c0/9b539d5021757d3ed73c355bdb839296d6654de473a992aa98993ef46d951f0361545323de68f6d70c5334d7e3e9f409c1ae7a03c168b00cb0f6c5dea6c77bfa - languageName: node - linkType: hard - "for-each@npm:^0.3.3, for-each@npm:^0.3.5": version: 0.3.5 resolution: "for-each@npm:0.3.5" @@ -13469,40 +13474,6 @@ __metadata: languageName: node linkType: hard -"xterm-addon-fit@npm:^0.5.0": - version: 0.5.0 - resolution: "xterm-addon-fit@npm:0.5.0" - peerDependencies: - xterm: ^4.0.0 - checksum: 10c0/17a08fe935c4b435fd912ba373a065c86c6ca804dcc5475136894944c2faebd438ee26e1edb75e4ae3dcd140f4fe4509f6f125a798e06c0e9678c446100e8fb4 - languageName: node - linkType: hard - -"xterm-addon-search@npm:^0.9.0": - version: 0.9.0 - resolution: "xterm-addon-search@npm:0.9.0" - peerDependencies: - xterm: ^4.0.0 - checksum: 10c0/a3219e37697f75b2fe126b645e1f2999716f19db6d6b41765a8dc04ec6e9d59a442a0a717468c0b707678b753178620e1183d762b78286d75de6da05b9714246 - languageName: node - linkType: hard - -"xterm-webfont@npm:^2.0.0": - version: 2.0.0 - resolution: "xterm-webfont@npm:2.0.0" - dependencies: - fontfaceobserver: "npm:2.*" - checksum: 10c0/409db911d778c3f1778b6229a8b963d7a606e641fdce700f62f06edd3208b40cadca07804537f3a1995da2e9bbfa9df9000e64c1d72f51d03a59163afddb2b09 - languageName: node - linkType: hard - -"xterm@npm:^4.19.0": - version: 4.19.0 - resolution: "xterm@npm:4.19.0" - checksum: 10c0/539f422321f3b3cc4ea5d228f576f79cfc70968a261605c9c9c2decddb6b15043530f9500bafc860d5734ad0e0d93c59af259d4883f3381506611f6523747b5b - languageName: node - linkType: hard - "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" From 7c3e322d1b1ad5eaf2d538a3957d1711a3f3e89d Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Wed, 15 Apr 2026 12:06:14 +0530 Subject: [PATCH 13/14] feat: enhance terminal link handling and fix styling issues in ContentCard --- .../ClusterNodes/ClusterTerminal.tsx | 45 ++++++++++++++----- .../common/ContentCard/ContentCard.scss | 1 - .../NodeDetailTabs/terminal/Terminal.tsx | 1 + 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/components/ClusterNodes/ClusterTerminal.tsx b/src/components/ClusterNodes/ClusterTerminal.tsx index 0e1f64d5c4..a0c0c22088 100644 --- a/src/components/ClusterNodes/ClusterTerminal.tsx +++ b/src/components/ClusterNodes/ClusterTerminal.tsx @@ -16,6 +16,7 @@ import { type JSX, useEffect, useRef, useState } from 'react' import { generatePath, useLocation, useNavigate } from 'react-router-dom' +import { ILink, Terminal } from '@xterm/xterm' import { Checkbox, @@ -139,7 +140,7 @@ const ClusterTerminal = ({ const [hideManagedFields, setHideManagedFields] = useState(true) const isShellSwitched = useRef(false) const autoSelectNodeRef = useRef(null) - const terminalRef = useRef(null) + const terminalRef = useRef(null) const prevNodeRef = useRef('') const currNodeRef = useRef('') const containerRef = useRef(null) @@ -671,14 +672,38 @@ const ClusterTerminal = ({ setHideManagedFields(!hideManagedFields) } - const renderRegisterLinkMatcher = (terminal) => { - const linkMatcherRegex = new RegExp(`${POD_LINKS.POD_MANIFEST}|${POD_LINKS.POD_EVENTS}`) - terminal.registerLinkMatcher(linkMatcherRegex, (_event, text) => { - if (text === POD_LINKS.POD_EVENTS) { - selectEventsTab() - } else if (text === POD_LINKS.POD_MANIFEST) { - selectManifestTab() - } + const registerLinkMatcher = (terminal: Terminal) => { + const podLinkTexts = [POD_LINKS.POD_MANIFEST, POD_LINKS.POD_EVENTS] + terminal.registerLinkProvider({ + provideLinks: (bufferLineNumber, callback) => { + const line = terminal.buffer.active.getLine(bufferLineNumber - 1) + if (!line) { + callback(undefined) + return + } + const lineText = line.translateToString() + const links: ILink[] = [] + podLinkTexts.forEach((linkText) => { + const index = lineText.indexOf(linkText) + if (index !== -1) { + links.push({ + range: { + start: { x: index + 1, y: bufferLineNumber }, + end: { x: index + 1 + linkText.length, y: bufferLineNumber }, + }, + text: linkText, + activate: (_event, text) => { + if (text === POD_LINKS.POD_EVENTS) { + selectEventsTab() + } else if (text === POD_LINKS.POD_MANIFEST) { + selectManifestTab() + } + }, + }) + } + }) + callback(links.length > 0 ? links : undefined) + }, }) } @@ -1042,7 +1067,7 @@ const ClusterTerminal = ({ socketConnection, isTerminalTab: selectedTabIndex === 0 && isAdminTerminalVisible, sessionId, - registerLinkMatcher: renderRegisterLinkMatcher, + registerLinkMatcher, }, }, metadata: { diff --git a/src/components/common/ContentCard/ContentCard.scss b/src/components/common/ContentCard/ContentCard.scss index 86223e8852..1c177a99ff 100644 --- a/src/components/common/ContentCard/ContentCard.scss +++ b/src/components/common/ContentCard/ContentCard.scss @@ -19,7 +19,6 @@ box-shadow: 0 8px 12px 0 rgba(30, 35, 96, 0.1), 0 1px 4px 0 rgba(0, 0, 0, 0.1); - border-radius: 400; } .horizontal { diff --git a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx index 12d5ddb92a..da73a16d33 100644 --- a/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx +++ b/src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetailTabs/terminal/Terminal.tsx @@ -111,6 +111,7 @@ const TerminalView = ({ if (typeof registerLinkMatcher === 'function') { registerLinkMatcher(terminalRef.current) } + terminalRef.current.open(document.getElementById('terminal-id')) fitAddon.current?.fit() terminalRef.current.reset() From 30f4881c8b87539c1d4644ce997a0ad8d456dc2f Mon Sep 17 00:00:00 2001 From: AbhishekA1509 Date: Wed, 15 Apr 2026 14:42:50 +0530 Subject: [PATCH 14/14] chore: update @devtron-labs/devtron-fe-common-lib to version 1.23.5-pre-3 in package.json and yarn.lock --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 443a65d335..2686f9cf17 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "homepage": "/dashboard", "dependencies": { - "@devtron-labs/devtron-fe-common-lib": "1.23.5-pre-2", + "@devtron-labs/devtron-fe-common-lib": "1.23.5-pre-3", "@esbuild-plugins/node-globals-polyfill": "0.2.3", "@sentry/browser": "7.119.1", "@sentry/integrations": "7.50.0", diff --git a/yarn.lock b/yarn.lock index 4be733cbed..baea5904cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1738,9 +1738,9 @@ __metadata: languageName: node linkType: hard -"@devtron-labs/devtron-fe-common-lib@npm:1.23.5-pre-2": - version: 1.23.5-pre-2 - resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.23.5-pre-2" +"@devtron-labs/devtron-fe-common-lib@npm:1.23.5-pre-3": + version: 1.23.5-pre-3 + resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.23.5-pre-3" dependencies: "@codemirror/autocomplete": "npm:6.18.6" "@codemirror/lang-json": "npm:6.0.1" @@ -1792,8 +1792,8 @@ __metadata: react-router-dom: ^6.30.3 react-select: 5.8.0 rxjs: ^7.8.1 - yaml: ^2.4.1 - checksum: 10c0/671b156fd91e3ae1ac0577be9b1ffbcbbec0cae3c8d1ca0e1536eb259c9af46df6fb8a94b27f422dd46cb3b9a9aaeab37ad75b99bf3d91e318c3a88ef6db2cb4 + yaml: ^2.8.3 + checksum: 10c0/f6e6a9f55c63bc49ef2c56c50f52848f6f297de503c5bf0560fe8adaf2494c56e9ec47ef3f0d5478910b544aac8cd86d6e6572dd9966f26d4fd52a6deda8f10a languageName: node linkType: hard @@ -5509,7 +5509,7 @@ __metadata: version: 0.0.0-use.local resolution: "dashboard@workspace:." dependencies: - "@devtron-labs/devtron-fe-common-lib": "npm:1.23.5-pre-2" + "@devtron-labs/devtron-fe-common-lib": "npm:1.23.5-pre-3" "@esbuild-plugins/node-globals-polyfill": "npm:0.2.3" "@playwright/test": "npm:^1.32.1" "@sentry/browser": "npm:7.119.1"