Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
1cb84ed
feat: add redirectToAppDetails prop to NameCellComponent and update r…
arunjaindev Apr 1, 2026
dfc0f5f
Merge pull request #3087 from devtron-labs/fix/app-list-redirect
arunjaindev Apr 1, 2026
34627ea
fix: improve error handling and logging in resource creation and SSE …
AbhishekA1509 Apr 7, 2026
7ad0296
Merge branch 'main' of https://github.com/devtron-labs/dashboard into…
AbhishekA1509 Apr 7, 2026
a37c3db
feat: add support for init containers in NodeComponent and update ren…
AbhishekA1509 Apr 7, 2026
ed7649e
fix: refactor NodeComponent to simplify child node handling and remov…
AbhishekA1509 Apr 7, 2026
b0c6951
feat: enhance NodeComponent to render init and regular containers sep…
AbhishekA1509 Apr 7, 2026
08ab9b2
fix: improve variable naming for clarity in NodeComponent's child nod…
AbhishekA1509 Apr 7, 2026
40dce27
fix: update devtron-fe-common-lib dependency to version 1.23.5
AbhishekA1509 Apr 7, 2026
1a0ff2f
Merge pull request #3090 from devtron-labs/fix/list-init-container
AbhishekA1509 Apr 7, 2026
a2ac05a
fix: helm app hibernate
arunjaindev Apr 9, 2026
07cae6a
chore: update dependencies and improve error handling in resource cre…
AbhishekA1509 Apr 9, 2026
40517d2
chore: update base image to node:24-alpine in Dockerfile
AbhishekA1509 Apr 9, 2026
7ec24b5
fix: update vite to version 8.0.8 and roll back dependencies in yarn.…
AbhishekA1509 Apr 9, 2026
aa3e920
fix: revert devtron-fe-common-lib to version 1.23.5-beta-0 and update…
AbhishekA1509 Apr 9, 2026
1a57e07
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
AbhishekA1509 Apr 10, 2026
9b49760
Merge pull request #3093 from devtron-labs/fix/dep-issues
AbhishekA1509 Apr 10, 2026
0d23f73
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
arunjaindev Apr 10, 2026
71bebf0
Merge pull request #3091 from devtron-labs/fix/helm-hibernate-error
arunjaindev Apr 13, 2026
f36b949
feat: upgrade xterm to version 6.0.0 and add new addons for enhanced …
AbhishekA1509 Apr 13, 2026
a6108e2
Merge pull request #3094 from devtron-labs/feat/upgrade-xterm
AbhishekA1509 Apr 13, 2026
2b97183
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
AbhishekA1509 Apr 14, 2026
7c3e322
feat: enhance terminal link handling and fix styling issues in Conten…
AbhishekA1509 Apr 15, 2026
30f4881
chore: update @devtron-labs/devtron-fe-common-lib to version 1.23.5-p…
AbhishekA1509 Apr 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v22
v24.14.1
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:22-alpine AS builder
FROM node:24-alpine AS builder

WORKDIR /app

Expand Down
16 changes: 7 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,19 @@
"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",
"@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",
"dompurify": "^3.2.4",
"dompurify": "^3.3.3",
"fast-json-patch": "^3.1.1",
"jsonpath-plus": "^10.3.0",
"moment": "^2.29.4",
Expand All @@ -30,11 +32,7 @@
"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.4.1"
"yaml": "^2.8.3"
},
"scripts": {
"prepare": "husky install",
Expand Down Expand Up @@ -94,7 +92,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",
Expand All @@ -112,7 +110,7 @@
"packageManager": "yarn@4.9.2",
"overrides": {
"vite-plugin-svgr": {
"vite": "8.0.0"
"vite": "8.0.8"
}
}
}
45 changes: 35 additions & 10 deletions src/components/ClusterNodes/ClusterTerminal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -139,7 +140,7 @@
const [hideManagedFields, setHideManagedFields] = useState<boolean>(true)
const isShellSwitched = useRef<boolean>(false)
const autoSelectNodeRef = useRef(null)
const terminalRef = useRef(null)
const terminalRef = useRef<Terminal>(null)
const prevNodeRef = useRef('')
const currNodeRef = useRef('')
const containerRef = useRef(null)
Expand Down Expand Up @@ -671,14 +672,38 @@
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) => {

Check failure on line 695 in src/components/ClusterNodes/ClusterTerminal.tsx

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Refactor this code to not nest functions more than 4 levels deep.

See more on https://sonarcloud.io/project/issues?id=devtron-labs_dashboard&issues=AZ2P3EGgHf8LmOHbtjVF&open=AZ2P3EGgHf8LmOHbtjVF&pullRequest=3092
if (text === POD_LINKS.POD_EVENTS) {
selectEventsTab()
} else if (text === POD_LINKS.POD_MANIFEST) {
selectManifestTab()
}
},
})
}
})
callback(links.length > 0 ? links : undefined)
},
})
}

Expand Down Expand Up @@ -1042,7 +1067,7 @@
socketConnection,
isTerminalTab: selectedTabIndex === 0 && isAdminTerminalVisible,
sessionId,
registerLinkMatcher: renderRegisterLinkMatcher,
registerLinkMatcher,
},
},
metadata: {
Expand Down
14 changes: 13 additions & 1 deletion src/components/ResourceBrowser/ResourceList/CreateResource.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import React, { type JSX, useEffect, useState } from 'react'

import {
API_STATUS_CODES,
Button,
ButtonStyleType,
ButtonVariantType,
Expand All @@ -27,7 +28,11 @@ import {
GenericEmptyState,
handleAnalyticsEvent,
InfoBlock,
ServerErrors,
showError,
TOAST_ACCESS_DENIED,
ToastManager,
ToastVariantType,
useRegisterShortcut,
} from '@devtron-labs/devtron-fe-common-lib'

Expand Down Expand Up @@ -89,7 +94,14 @@ export const CreateResource: React.FC<CreateResourceType> = ({ 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)
}
Expand Down
19 changes: 0 additions & 19 deletions src/components/__mocks__/xterm-webfont.js

This file was deleted.

2 changes: 1 addition & 1 deletion src/components/app/grepSSEworker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
1 change: 1 addition & 0 deletions src/components/app/list/DevtronAppListContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ const DevtronAppList = ({
filterConfig,
noRows,
isSearchOrFilterApplied,
redirectToAppDetails,
}}
additionalFilterProps={{
initialSortKey: AppListSortableKeys.APP_NAME,
Expand Down
6 changes: 3 additions & 3 deletions src/components/app/list/NameCellComponent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ import {
stopPropagation,
TableCellComponentProps,
Tooltip,
URLS,
} from '@devtron-labs/devtron-fe-common-lib'

import { App, Environment, TableAdditionalPropsType } from './types'

export const NameCellComponent = ({
row: { data },
filterConfig: { searchKey: searchText },
redirectToAppDetails,
isExpandedRow,
}: TableCellComponentProps<App | Environment, FiltersTypeEnum.URL, TableAdditionalPropsType>) => {
if (isExpandedRow) {
Expand All @@ -34,15 +34,15 @@ export const NameCellComponent = ({

const app = data as App

const { name, id } = app
const { name } = app

return (
<div className="flex left dc__gap-4 dc__visible-hover dc__visible-hover--parent">
{/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}
<Tooltip content={name}>
<Link
className="dc__link cursor dc__truncate"
to={`${URLS.APPLICATION_MANAGEMENT_APP}/${id}/trigger`}
to={redirectToAppDetails(app, app.defaultEnv.id)}
onClick={stopPropagation}
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{
Expand Down
1 change: 1 addition & 0 deletions src/components/app/list/types.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,5 @@ export interface GetEnvironmentsFromClusterNamespaceProps {
export interface TableAdditionalPropsType extends Pick<DevtronAppListProps, 'filterConfig'> {
noRows: boolean
isSearchOrFilterApplied: boolean
redirectToAppDetails: (app: App, envId: number) => string
}
1 change: 0 additions & 1 deletion src/components/common/ContentCard/ContentCard.scss
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Loading
Loading