From c1fd38ac39f6f61bedfffba128ea72938c1c67c1 Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Thu, 5 Jun 2025 15:48:37 -0400 Subject: [PATCH 01/14] fix typo --- src/components/ContainersSelector.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ContainersSelector.tsx b/src/components/ContainersSelector.tsx index 7e5dfd6f..1cd8389b 100644 --- a/src/components/ContainersSelector.tsx +++ b/src/components/ContainersSelector.tsx @@ -95,7 +95,7 @@ export const ContainersSelector: FC = ({ Containers in {site.name} Select any container to use as a hostname for this - target. Click a port to use select a port. + target. Click a port to use a port. From c135b5e3cf2eb8f8816cb66716256a53fb3c38cc Mon Sep 17 00:00:00 2001 From: Owen Date: Fri, 6 Jun 2025 12:15:15 -0400 Subject: [PATCH 02/14] Dont request unless its a newt --- src/hooks/useDockerSocket.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hooks/useDockerSocket.ts b/src/hooks/useDockerSocket.ts index 3cab4b55..dc4f08f4 100644 --- a/src/hooks/useDockerSocket.ts +++ b/src/hooks/useDockerSocket.ts @@ -21,7 +21,8 @@ export function useDockerSocket(site: Site) { const api = createApiClient(useEnvContext()); - const { dockerSocketEnabled: isEnabled = true } = site || {}; + const { dockerSocketEnabled: rawIsEnabled = true, type: siteType } = site || {}; + const isEnabled = rawIsEnabled && siteType === "newt"; const { isAvailable = false, socketPath } = dockerSocket || {}; const checkDockerSocket = useCallback(async () => { From 3ed681e2778386c02e655a8fc51e6c57f804037b Mon Sep 17 00:00:00 2001 From: Owen Date: Fri, 6 Jun 2025 12:16:58 -0400 Subject: [PATCH 03/14] Bump temp version --- server/lib/consts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/lib/consts.ts b/server/lib/consts.ts index ea50af6d..1dc46d2b 100644 --- a/server/lib/consts.ts +++ b/server/lib/consts.ts @@ -2,7 +2,7 @@ import path from "path"; import { fileURLToPath } from "url"; // This is a placeholder value replaced by the build process -export const APP_VERSION = "1.5.0"; +export const APP_VERSION = "1.5.1"; export const __FILENAME = fileURLToPath(import.meta.url); export const __DIRNAME = path.dirname(__FILENAME); From 26207bd9511691c6bb9551eb8bc22fec0f060600 Mon Sep 17 00:00:00 2001 From: Thijs van Loef Date: Sun, 8 Jun 2025 00:07:49 +0200 Subject: [PATCH 04/14] add datasize helper and add correct sorting to sitestable --- src/app/[orgId]/settings/sites/SitesTable.tsx | 15 +++++++++++++-- src/lib/dataSize.ts | 11 +++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/lib/dataSize.ts diff --git a/src/app/[orgId]/settings/sites/SitesTable.tsx b/src/app/[orgId]/settings/sites/SitesTable.tsx index c032800f..e2fba418 100644 --- a/src/app/[orgId]/settings/sites/SitesTable.tsx +++ b/src/app/[orgId]/settings/sites/SitesTable.tsx @@ -27,6 +27,7 @@ import { formatAxiosError } from "@app/lib/api"; import { createApiClient } from "@app/lib/api"; import { useEnvContext } from "@app/hooks/useEnvContext"; import CreateSiteFormModal from "./CreateSiteModal"; +import { parseDataSize } from '@app/lib/dataSize'; export type SiteRow = { id: number; @@ -197,7 +198,12 @@ export default function SitesTable({ sites, orgId }: SitesTableProps) { ); - } + }, + sortingFn: (rowA, rowB) => { + const a = parseDataSize(rowA.original.mbIn); + const b = parseDataSize(rowB.original.mbIn); + return a > b ? 1 : a < b ? -1 : 0; + }, }, { accessorKey: "mbOut", @@ -213,7 +219,12 @@ export default function SitesTable({ sites, orgId }: SitesTableProps) { ); - } + }, + sortingFn: (rowA, rowB) => { + const a = parseDataSize(rowA.original.mbOut); + const b = parseDataSize(rowB.original.mbOut); + return a > b ? 1 : a < b ? -1 : 0; + }, }, { accessorKey: "type", diff --git a/src/lib/dataSize.ts b/src/lib/dataSize.ts new file mode 100644 index 00000000..5ac4e4ae --- /dev/null +++ b/src/lib/dataSize.ts @@ -0,0 +1,11 @@ +export function parseDataSize(sizeStr: string): number { + if (!sizeStr) return 0; + const match = sizeStr.trim().toUpperCase().match(/^([\d.]+)\s*([KMGT]?B)$/); + if (!match) return 0; + const [, numStr, unit] = match; + const num = parseFloat(numStr) || 0; + const multipliers: Record = { + B: 1, KB: 1024, MB: 1024**2, GB: 1024**3, TB: 1024**4, + }; + return num * (multipliers[unit] || 1); +} \ No newline at end of file From f2e461a1ee2827de148083bec21015281daaa70b Mon Sep 17 00:00:00 2001 From: Thijs van Loef Date: Mon, 9 Jun 2025 13:06:08 +0200 Subject: [PATCH 05/14] improve readability --- src/app/[orgId]/settings/sites/SitesTable.tsx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/app/[orgId]/settings/sites/SitesTable.tsx b/src/app/[orgId]/settings/sites/SitesTable.tsx index e2fba418..b266b162 100644 --- a/src/app/[orgId]/settings/sites/SitesTable.tsx +++ b/src/app/[orgId]/settings/sites/SitesTable.tsx @@ -199,11 +199,8 @@ export default function SitesTable({ sites, orgId }: SitesTableProps) { ); }, - sortingFn: (rowA, rowB) => { - const a = parseDataSize(rowA.original.mbIn); - const b = parseDataSize(rowB.original.mbIn); - return a > b ? 1 : a < b ? -1 : 0; - }, + sortingFn: (rowA, rowB) => + parseDataSize(rowA.original.mbIn) - parseDataSize(rowB.original.mbIn) }, { accessorKey: "mbOut", @@ -220,11 +217,8 @@ export default function SitesTable({ sites, orgId }: SitesTableProps) { ); }, - sortingFn: (rowA, rowB) => { - const a = parseDataSize(rowA.original.mbOut); - const b = parseDataSize(rowB.original.mbOut); - return a > b ? 1 : a < b ? -1 : 0; - }, + sortingFn: (rowA, rowB) => + parseDataSize(rowA.original.mbOut) - parseDataSize(rowB.original.mbOut), }, { accessorKey: "type", From 96151de814459a420e0c94a81226190f48767c0e Mon Sep 17 00:00:00 2001 From: Thijs van Loef Date: Mon, 9 Jun 2025 13:18:22 +0200 Subject: [PATCH 06/14] improve readability --- src/lib/dataSize.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/lib/dataSize.ts b/src/lib/dataSize.ts index 5ac4e4ae..67439d31 100644 --- a/src/lib/dataSize.ts +++ b/src/lib/dataSize.ts @@ -1,11 +1,21 @@ export function parseDataSize(sizeStr: string): number { - if (!sizeStr) return 0; - const match = sizeStr.trim().toUpperCase().match(/^([\d.]+)\s*([KMGT]?B)$/); + if (typeof sizeStr !== 'string') return 0; + + const match = /^\s*([\d.]+)\s*([KMGT]?B)\s*$/i.exec(sizeStr); if (!match) return 0; - const [, numStr, unit] = match; - const num = parseFloat(numStr) || 0; - const multipliers: Record = { - B: 1, KB: 1024, MB: 1024**2, GB: 1024**3, TB: 1024**4, - }; - return num * (multipliers[unit] || 1); + + const [ , numStr, unitRaw ] = match; + const num = parseFloat(numStr); + if (isNaN(num)) return 0; + + const unit = unitRaw.toUpperCase(); + const multipliers = { + B: 1, + KB: 1024, + MB: 1024 ** 2, + GB: 1024 ** 3, + TB: 1024 ** 4, + } as const; + + return num * (multipliers[unit as keyof typeof multipliers] ?? 1); } \ No newline at end of file From c4092669547c170135093328a55170e8aa730b6a Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 9 Jun 2025 11:13:58 -0400 Subject: [PATCH 07/14] Fix #860 --- src/app/setup/page.tsx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/app/setup/page.tsx b/src/app/setup/page.tsx index 5420748c..68e78cbc 100644 --- a/src/app/setup/page.tsx +++ b/src/app/setup/page.tsx @@ -82,7 +82,14 @@ export default function StepperForm() { ); const generateId = (name: string) => { - return name.toLowerCase().replace(/\s+/g, "-"); + // Replace any character that is not a letter, number, space, or hyphen with a hyphen + // Also collapse multiple hyphens and trim + return name + .toLowerCase() + .replace(/[^a-z0-9\s-]/g, "-") + .replace(/\s+/g, "-") + .replace(/-+/g, "-") + .replace(/^-+|-+$/g, ""); }; async function orgSubmit(values: z.infer) { @@ -207,23 +214,22 @@ export default function StepperForm() { type="text" {...field} onChange={(e) => { - const orgId = - generateId( - e.target - .value - ); + // Prevent "/" in orgName input + const sanitizedValue = e.target.value.replace(/\//g, "-"); + const orgId = generateId(sanitizedValue); orgForm.setValue( "orgId", orgId ); orgForm.setValue( "orgName", - e.target.value + sanitizedValue ); debouncedCheckOrgIdAvailability( orgId ); }} + value={field.value.replace(/\//g, "-")} /> From cd54e7dd387cffd89d3cb151242e8079a5265e3a Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Mon, 9 Jun 2025 13:01:53 -0400 Subject: [PATCH 08/14] pick first port on select container --- src/components/ContainersSelector.tsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/components/ContainersSelector.tsx b/src/components/ContainersSelector.tsx index 1cd8389b..edc6b77c 100644 --- a/src/components/ContainersSelector.tsx +++ b/src/components/ContainersSelector.tsx @@ -346,16 +346,19 @@ const DockerContainersTable: FC<{ { id: "actions", header: "Actions", - cell: ({ row }) => ( - - ) + cell: ({ row }) => { + const ports = getExposedPorts(row.original); + return ( + + ); + } } ]; From 3257edc2a062852eda23a1766296b1c7cbeaef79 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 9 Jun 2025 14:23:16 -0400 Subject: [PATCH 09/14] Add link to docs for newt --- .../settings/sites/[niceId]/general/page.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx b/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx index 8fd15ddc..6501889d 100644 --- a/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx +++ b/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx @@ -32,6 +32,8 @@ import { createApiClient } from "@app/lib/api"; import { useEnvContext } from "@app/hooks/useEnvContext"; import { useState } from "react"; import { SwitchInput } from "@app/components/SwitchInput"; +import Link from "next/link"; +import { ArrowRight } from "lucide-react"; const GeneralFormSchema = z.object({ name: z.string().nonempty("Name is required"), @@ -153,6 +155,20 @@ export default function GeneralPage() { discovery for populating container information, useful in resource targets. + + + {" "} + Docker socket path + must be provided to + Newt in order to use + this feature. + + )} From 3b10453af3afc5f91371f06a5aafc27156f9d961 Mon Sep 17 00:00:00 2001 From: Thijs van Loef Date: Mon, 9 Jun 2025 22:18:38 +0200 Subject: [PATCH 10/14] define files in eslint --- eslint.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.js b/eslint.config.js index 71dc862c..de201044 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,6 +1,7 @@ // eslint.config.js export default [ { + files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"], rules: { semi: "error", "prefer-const": "error" From 2047aa30e13daed36ac0db13b9ccbe6e654adb42 Mon Sep 17 00:00:00 2001 From: Thijs van Loef Date: Mon, 9 Jun 2025 22:25:27 +0200 Subject: [PATCH 11/14] add typescript specific linting --- eslint.config.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index de201044..32a7f598 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,5 +1,7 @@ -// eslint.config.js -export default [ +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + tseslint.configs.recommended, { files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"], rules: { @@ -7,4 +9,4 @@ export default [ "prefer-const": "error" } } -]; +); From a575bace39f475cf546330de067fff1f29025f89 Mon Sep 17 00:00:00 2001 From: Thijs van Loef Date: Mon, 9 Jun 2025 22:32:38 +0200 Subject: [PATCH 12/14] add typescript eslint --- package-lock.json | 133 ++++++++++++++++++++++++++++------------------ package.json | 1 + 2 files changed, 81 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e8e6f08..f4260fea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,6 +119,7 @@ "tsc-alias": "1.8.16", "tsx": "4.19.4", "typescript": "^5", + "typescript-eslint": "^8.34.0", "yargs": "18.0.0" } }, @@ -2943,16 +2944,16 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.0.tgz", - "integrity": "sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz", + "integrity": "sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==", "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.33.0", - "@typescript-eslint/type-utils": "8.33.0", - "@typescript-eslint/utils": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0", + "@typescript-eslint/scope-manager": "8.34.0", + "@typescript-eslint/type-utils": "8.34.0", + "@typescript-eslint/utils": "8.34.0", + "@typescript-eslint/visitor-keys": "8.34.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -2966,7 +2967,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.33.0", + "@typescript-eslint/parser": "^8.34.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } @@ -2981,15 +2982,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.0.tgz", - "integrity": "sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.0.tgz", + "integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==", "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/typescript-estree": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0", + "@typescript-eslint/scope-manager": "8.34.0", + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/typescript-estree": "8.34.0", + "@typescript-eslint/visitor-keys": "8.34.0", "debug": "^4.3.4" }, "engines": { @@ -3005,13 +3006,13 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.0.tgz", - "integrity": "sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz", + "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==", "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.33.0", - "@typescript-eslint/types": "^8.33.0", + "@typescript-eslint/tsconfig-utils": "^8.34.0", + "@typescript-eslint/types": "^8.34.0", "debug": "^4.3.4" }, "engines": { @@ -3020,16 +3021,19 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz", - "integrity": "sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz", + "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0" + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/visitor-keys": "8.34.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3040,9 +3044,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz", - "integrity": "sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz", + "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3056,13 +3060,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.0.tgz", - "integrity": "sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz", + "integrity": "sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==", "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.33.0", - "@typescript-eslint/utils": "8.33.0", + "@typescript-eslint/typescript-estree": "8.34.0", + "@typescript-eslint/utils": "8.34.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -3079,9 +3083,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz", - "integrity": "sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz", + "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3092,15 +3096,15 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz", - "integrity": "sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz", + "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==", "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.33.0", - "@typescript-eslint/tsconfig-utils": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0", + "@typescript-eslint/project-service": "8.34.0", + "@typescript-eslint/tsconfig-utils": "8.34.0", + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/visitor-keys": "8.34.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3172,15 +3176,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.0.tgz", - "integrity": "sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz", + "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==", "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/typescript-estree": "8.33.0" + "@typescript-eslint/scope-manager": "8.34.0", + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/typescript-estree": "8.34.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3195,12 +3199,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz", - "integrity": "sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz", + "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.0", + "@typescript-eslint/types": "8.34.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -13214,6 +13218,29 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.0.tgz", + "integrity": "sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.34.0", + "@typescript-eslint/parser": "8.34.0", + "@typescript-eslint/utils": "8.34.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", diff --git a/package.json b/package.json index 0e6ecc91..c1a570c4 100644 --- a/package.json +++ b/package.json @@ -136,6 +136,7 @@ "tsc-alias": "1.8.16", "tsx": "4.19.4", "typescript": "^5", + "typescript-eslint": "^8.34.0", "yargs": "18.0.0" }, "overrides": { From 3d59556bcd4d98f9c60e84228689d95ab100aa8f Mon Sep 17 00:00:00 2001 From: Thijs van Loef <58031337+thijsvanloef@users.noreply.github.com> Date: Mon, 9 Jun 2025 22:38:38 +0200 Subject: [PATCH 13/14] readd accidentally removed line --- package-lock.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package-lock.json b/package-lock.json index 821f2239..10240a4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4880,6 +4880,7 @@ "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz", + "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" From e41eafd4976109745cf53e40f241da2ecb04252a Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Mon, 9 Jun 2025 17:38:18 -0400 Subject: [PATCH 14/14] enhance link styling and bump traefik version --- install/config/docker-compose.yml | 4 ++-- .../settings/sites/[niceId]/general/page.tsx | 22 ++++++++----------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/install/config/docker-compose.yml b/install/config/docker-compose.yml index ca2890b5..90349b7a 100644 --- a/install/config/docker-compose.yml +++ b/install/config/docker-compose.yml @@ -35,7 +35,7 @@ services: - 80:80 # Port for traefik because of the network_mode {{end}} traefik: - image: traefik:v3.4.0 + image: traefik:v3.4.1 container_name: traefik restart: unless-stopped {{if .InstallGerbil}} @@ -58,4 +58,4 @@ services: networks: default: driver: bridge - name: pangolin \ No newline at end of file + name: pangolin diff --git a/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx b/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx index 6501889d..ae9de83d 100644 --- a/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx +++ b/src/app/[orgId]/settings/sites/[niceId]/general/page.tsx @@ -33,7 +33,7 @@ import { useEnvContext } from "@app/hooks/useEnvContext"; import { useState } from "react"; import { SwitchInput } from "@app/components/SwitchInput"; import Link from "next/link"; -import { ArrowRight } from "lucide-react"; +import { ArrowRight, ExternalLink } from "lucide-react"; const GeneralFormSchema = z.object({ name: z.string().nonempty("Name is required"), @@ -153,22 +153,18 @@ export default function GeneralPage() { Enable Docker Socket discovery for populating - container information, - useful in resource targets. - - - {" "} - Docker socket path - must be provided to - Newt in order to use - this feature. - - + Learn more + + )}