From 7b5ab144687f3c6eb2b53baeed94ad6cb1e8f407 Mon Sep 17 00:00:00 2001 From: Ricardo Campos Date: Mon, 8 Jun 2026 17:59:37 -0300 Subject: [PATCH 1/4] chore: bump client dependencies --- client/package-lock.json | 196 +++++++++++++++++++-------------------- client/package.json | 18 ++-- 2 files changed, 107 insertions(+), 107 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index dfe9732..2b0b1cb 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -10,21 +10,21 @@ "license": "GPL-3.0-only", "dependencies": { "@popperjs/core": "^2.11.8", - "@types/node": "^25.9.1", + "@types/node": "^25.9.2", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.2", "bootstrap": "^5.3.8", - "dompurify": "^3.4.7", - "i18next": "^26.3.0", - "react": "^19.2.6", + "dompurify": "^3.4.8", + "i18next": "^26.3.1", + "react": "^19.2.7", "react-bootstrap": "^2.10.10", "react-bootstrap-icons": "^1.11.6", "react-charts": "^3.0.0-beta.57", "react-datepicker": "^9.1.0", - "react-dom": "^19.2.6", + "react-dom": "^19.2.7", "react-i18next": "^17.0.8", "react-markdown": "^10.1.0", - "react-router": "^7.16.0", + "react-router": "^7.17.0", "react-router-bootstrap": "^0.26.3", "remark-gfm": "^4.0.1", "typescript": "^6.0.3", @@ -39,7 +39,7 @@ "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/jest": "^30.0.0", - "@types/react": "^19.2.15", + "@types/react": "^19.2.17", "@types/react-router-bootstrap": "^0.26.8", "@vitest/coverage-v8": "^4.1.8", "cypress": "^15.16.0", @@ -47,7 +47,7 @@ "eslint-config-prettier": "^10.1.8", "eslint-plugin-import-x": "^4.16.2", "eslint-plugin-jsdoc": "^62.9.0", - "eslint-plugin-n": "^18.0.1", + "eslint-plugin-n": "^18.1.0", "eslint-plugin-promise": "^7.3.0", "eslint-plugin-react": "^7.37.5", "globals": "^17.6.0", @@ -55,7 +55,7 @@ "prettier": "^3.8.3", "sass": "^1.100.0", "source-map-support": "^0.5.21", - "typescript-eslint": "^8.60.0", + "typescript-eslint": "^8.61.0", "vitest": "^4.1.8" } }, @@ -1934,9 +1934,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "25.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.2.tgz", + "integrity": "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==", "license": "MIT", "dependencies": { "undici-types": ">=7.24.0 <7.24.7" @@ -1955,9 +1955,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz", - "integrity": "sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==", + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -2062,17 +2062,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.0.tgz", - "integrity": "sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.0.tgz", + "integrity": "sha512-bFNvl9ZczlVb+wR2Akszf3gHfKVj/8WanXaGJ3UstTA7brNKg0cNdk6X1Psu5V7MZ2oQtzZKOEzIUehaoxbDGw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.60.0", - "@typescript-eslint/type-utils": "8.60.0", - "@typescript-eslint/utils": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0", + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/type-utils": "8.61.0", + "@typescript-eslint/utils": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -2085,7 +2085,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.60.0", + "@typescript-eslint/parser": "^8.61.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } @@ -2101,16 +2101,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.0.tgz", - "integrity": "sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.0.tgz", + "integrity": "sha512-5B7PfA2e1NQGCnDHd/0lW7W3gvp3d59Ryw54FYO8Uswxo9f6ikw3AZV+Xj/TvpImmpsiYyUqAfhC6kJID1jF6w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.60.0", - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/typescript-estree": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0", + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "debug": "^4.4.3" }, "engines": { @@ -2126,14 +2126,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.0.tgz", - "integrity": "sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.0.tgz", + "integrity": "sha512-DV42F7MLJO6Rax7SK1yg43tcnEfGUrurSpSxKuVX+a3RCTzBlH3fuxprrOJXKCJGAaw82xXocikJ0uQaqwXgGA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.60.0", - "@typescript-eslint/types": "^8.60.0", + "@typescript-eslint/tsconfig-utils": "^8.61.0", + "@typescript-eslint/types": "^8.61.0", "debug": "^4.4.3" }, "engines": { @@ -2148,14 +2148,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.0.tgz", - "integrity": "sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.0.tgz", + "integrity": "sha512-IWdXFHFSb6mlC3HPc7QsLDm5zYEbUla6trDEHf32D3/dnuUyXd87plScSNXSbm0/RxMvObpI17sv/EDTGrGZkA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0" + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2166,9 +2166,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.0.tgz", - "integrity": "sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.0.tgz", + "integrity": "sha512-O5Amvdv9ztMpxpf+vmFULGG78IE6Qwdr3bCGvqwG4nwc9H2qXkOYJJnRbRHyMkQTjv1d03olqwwwzHLMqpFePQ==", "dev": true, "license": "MIT", "engines": { @@ -2183,15 +2183,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.0.tgz", - "integrity": "sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.0.tgz", + "integrity": "sha512-TuBiQYIkd97yBfInHCTKVYMbX4kvEmpOEuixIuzCU9p8BGT1SfyyO0d0IfDMbPIHcjn/hWnusUX5e8v5Xg+X8A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/typescript-estree": "8.60.0", - "@typescript-eslint/utils": "8.60.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/utils": "8.61.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -2208,9 +2208,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.0.tgz", - "integrity": "sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.0.tgz", + "integrity": "sha512-9QTQpZ5Iin4CdIodfbDQFSeiSJKidgYJYug1P9CC2xWgUTvlmixViqDZNciMjwLBZyJnG4tGmPl97rVAFb1AJg==", "dev": true, "license": "MIT", "engines": { @@ -2222,16 +2222,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.0.tgz", - "integrity": "sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.0.tgz", + "integrity": "sha512-42zatd5qSvvcV1JdDBCLxYRznvP4eIHpPoZXdkPFnAmanA4FuZ5dibSnCBggY8hQnqajPpoGjXFdZ7fIJKQnlA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.60.0", - "@typescript-eslint/tsconfig-utils": "8.60.0", - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/visitor-keys": "8.60.0", + "@typescript-eslint/project-service": "8.61.0", + "@typescript-eslint/tsconfig-utils": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/visitor-keys": "8.61.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -2289,9 +2289,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.3.tgz", + "integrity": "sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg==", "dev": true, "license": "ISC", "bin": { @@ -2302,16 +2302,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.0.tgz", - "integrity": "sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.0.tgz", + "integrity": "sha512-3bzFt7ImFMW/jVYwJamDoe/dMOdFLSC6pom6rRjdh4SZJEYupyMzem8e7vKZLclLfpHjlwSAXOUxtKxGXUiLqA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.60.0", - "@typescript-eslint/types": "8.60.0", - "@typescript-eslint/typescript-estree": "8.60.0" + "@typescript-eslint/scope-manager": "8.61.0", + "@typescript-eslint/types": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2326,13 +2326,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.0.tgz", - "integrity": "sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.0.tgz", + "integrity": "sha512-QVLZu3ZPQEE+HICQyAMZ2yLQhxf0meY/wx6Hx14YcTNj13JB3qHlX3lJ02L3fLGHgERRH71kvYDwiXIguT3AjQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/types": "8.61.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -4203,9 +4203,9 @@ } }, "node_modules/dompurify": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.7.tgz", - "integrity": "sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==", + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.8.tgz", + "integrity": "sha512-yb1cEmaOum7wFvOCSQxyfgVlv5D47Rc30iZWoMpbDIWTnJ6grDDQyu2KFJzB2k7u0pMuJcQ1zphH//fFnw2tjQ==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -4807,9 +4807,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-18.0.1.tgz", - "integrity": "sha512-q3ARhk+eZRc7myR0KHx+R3/GJeOHF+Ir6PK95Pu2tEX8Sl/4BIpmmVLva2kPrjC2gCmn6WHlHm+3yeo6Rxhycw==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-18.1.0.tgz", + "integrity": "sha512-hkUm9EtnFV2h2fE16jNVUfCVUqvPzI7fGLsFdun5lFt/pbmf2kCgDx6ymi9rx+NCUSggBmurJCZOfG20JBs/kg==", "dev": true, "license": "MIT", "dependencies": { @@ -5804,9 +5804,9 @@ } }, "node_modules/i18next": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.0.tgz", - "integrity": "sha512-gHSgGpUXVmuqE2El1W61DmxeyeTlFfZgdJRWMo9jScAn5pu7TuTuiccb1zh3E2J9hEBVGJ23+96x0ieBhfuIHA==", + "version": "26.3.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.1.tgz", + "integrity": "sha512-txQqd5EULsqEh9OJqRH15aCaOuy/nLJyhw5EHCSKLKJE1aBbb3Zve2+uQIxgWhPm1QqUQoWyQBm2kfmmIrzkcQ==", "funding": [ { "type": "individual", @@ -9046,9 +9046,9 @@ } }, "node_modules/react": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", - "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9169,15 +9169,15 @@ } }, "node_modules/react-dom": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", - "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.6" + "react": "^19.2.7" } }, "node_modules/react-i18next": { @@ -9249,9 +9249,9 @@ } }, "node_modules/react-router": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.16.0.tgz", - "integrity": "sha512-wArC8lVyJb3+jM9OpDyW6hLCizACWkvQR/sSGqSs+o5uEXEtGlqdZ4v8hENR3Jad6i+LRkK93q/+bQAcvl6V1A==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.17.0.tgz", + "integrity": "sha512-FDELK7rTMlCHO5+reyXsPlmfr7N1F91lPHsWYfMEGQm/KQ+F4JFM8jGoeQDmDvdTs93Fw9aSilH+uKRb4/jXvQ==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -10751,16 +10751,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.60.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.60.0.tgz", - "integrity": "sha512-9f65qWLZdAW9m1JaxBDUHcqRUfL8bkxxXL7XxEfI+F09q56PkBvIfCjLF3yInsDM/BBmwkqmCQdCZe/RYlIWEw==", + "version": "8.61.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.0.tgz", + "integrity": "sha512-8y31Rd0eGTrDKqhy6vT0HtzhN+YLjQizwX3aA3hPXP/ynSfnrBXcQY5IzsP9/DM7+klX4IUncZZjkchP0z+rUw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.60.0", - "@typescript-eslint/parser": "8.60.0", - "@typescript-eslint/typescript-estree": "8.60.0", - "@typescript-eslint/utils": "8.60.0" + "@typescript-eslint/eslint-plugin": "8.61.0", + "@typescript-eslint/parser": "8.61.0", + "@typescript-eslint/typescript-estree": "8.61.0", + "@typescript-eslint/utils": "8.61.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/client/package.json b/client/package.json index ff7447f..4a2ff71 100644 --- a/client/package.json +++ b/client/package.json @@ -13,21 +13,21 @@ "private": true, "dependencies": { "@popperjs/core": "^2.11.8", - "@types/node": "^25.9.1", + "@types/node": "^25.9.2", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.2", "bootstrap": "^5.3.8", - "dompurify": "^3.4.7", - "i18next": "^26.3.0", - "react": "^19.2.6", + "dompurify": "^3.4.8", + "i18next": "^26.3.1", + "react": "^19.2.7", "react-bootstrap": "^2.10.10", "react-bootstrap-icons": "^1.11.6", "react-charts": "^3.0.0-beta.57", "react-datepicker": "^9.1.0", - "react-dom": "^19.2.6", + "react-dom": "^19.2.7", "react-i18next": "^17.0.8", "react-markdown": "^10.1.0", - "react-router": "^7.16.0", + "react-router": "^7.17.0", "react-router-bootstrap": "^0.26.3", "remark-gfm": "^4.0.1", "typescript": "^6.0.3", @@ -73,7 +73,7 @@ "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/jest": "^30.0.0", - "@types/react": "^19.2.15", + "@types/react": "^19.2.17", "@types/react-router-bootstrap": "^0.26.8", "@vitest/coverage-v8": "^4.1.8", "cypress": "^15.16.0", @@ -81,7 +81,7 @@ "eslint-config-prettier": "^10.1.8", "eslint-plugin-import-x": "^4.16.2", "eslint-plugin-jsdoc": "^62.9.0", - "eslint-plugin-n": "^18.0.1", + "eslint-plugin-n": "^18.1.0", "eslint-plugin-promise": "^7.3.0", "eslint-plugin-react": "^7.37.5", "globals": "^17.6.0", @@ -89,7 +89,7 @@ "prettier": "^3.8.3", "sass": "^1.100.0", "source-map-support": "^0.5.21", - "typescript-eslint": "^8.60.0", + "typescript-eslint": "^8.61.0", "vitest": "^4.1.8" } } From 1080eed8f9f193e81761531c254c2c86ab3bddb9 Mon Sep 17 00:00:00 2001 From: Ricardo Campos Date: Mon, 8 Jun 2026 18:12:55 -0300 Subject: [PATCH 2/4] docs: update changelog file --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ecf6c8..cb49e50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [app-] - 2026-06-08 + +### Added +- Shell Script to confirm new users using docker and sql; + +### Changed +- Bumped frontend dependencies to latest versions; +- Docker composer files for dev and ngrok to run using local users id and group id; + --- ## [app-v2026.06.08.21](https://github.com/RMCampos/tasknote/releases/tag/app-v2026.06.08.21) - 2026-06-08 From 53c679d7fa62b09068325ded9b58b9efd294010f Mon Sep 17 00:00:00 2001 From: Ricardo Campos Date: Mon, 8 Jun 2026 18:20:54 -0300 Subject: [PATCH 3/4] docs: update changelog --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb49e50..cdfb6cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Bumped frontend dependencies to latest versions; -- Docker composer files for dev and ngrok to run using local users id and group id; + - `@types/node` from `25.9.1` to `25.9.2` + - `dompurify` from `3.4.7` to `3.4.8` + - `i18next` from `26.3.0` to `26.3.1` + - `react` from `19.2.6` to `19.2.7` + - `react-dom` from `19.2.6` to `19.2.7` + - `react-router` from `7.16.0` to `7.17.0` + - `@types/react` from `19.2.15` to `19.2.17` + - `eslint-plugin-n` from `18.0.1` to `18.1.0` + - `typescript-eslint` from `8.60.0` to `8.61.0` +- Ngrok and Dev Docker composer files to run using local users id and group id (`UID` and `GID`); --- From ed2d65e9af6643dc6f6d700b6197212fd2dbcaaa Mon Sep 17 00:00:00 2001 From: Ricardo Campos Date: Mon, 8 Jun 2026 18:54:48 -0300 Subject: [PATCH 4/4] feat: craete separate changelog files --- .github/workflows/ci-main-backend.yml | 4 +- .github/workflows/ci-main-frontend.yml | 22 +++++++++ CHANGELOG.md => CHANGELOG-client.md | 6 +-- CHANGELOG-server.md | 12 +++++ tools/promote-changelog.py | 64 ++++++++++++++++++++++++++ 5 files changed, 103 insertions(+), 5 deletions(-) rename CHANGELOG.md => CHANGELOG-client.md (98%) create mode 100644 CHANGELOG-server.md create mode 100644 tools/promote-changelog.py diff --git a/.github/workflows/ci-main-backend.yml b/.github/workflows/ci-main-backend.yml index a96c526..92316c5 100644 --- a/.github/workflows/ci-main-backend.yml +++ b/.github/workflows/ci-main-backend.yml @@ -58,7 +58,9 @@ jobs: run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git add server/pom.xml + DATE=$(date +'%Y-%m-%d') + python3 tools/promote-changelog.py "api-v${{ steps.version.outputs.version }}" "${DATE}" CHANGELOG-server.md + git add server/pom.xml CHANGELOG-server.md git commit -m "chore: bump api version to ${{ steps.version.outputs.version }} [skip ci]" git push diff --git a/.github/workflows/ci-main-frontend.yml b/.github/workflows/ci-main-frontend.yml index d7855ad..ce85e0e 100644 --- a/.github/workflows/ci-main-frontend.yml +++ b/.github/workflows/ci-main-frontend.yml @@ -81,3 +81,25 @@ jobs: git tag -a ${{ steps.version.outputs.tag }} -m "Release ${{ steps.version.outputs.tag }}" git push origin ${{ steps.version.outputs.tag }} + - name: Promote changelog + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + DATE=$(date +'%Y-%m-%d') + TAG="${{ steps.version.outputs.tag }}" + for i in 1 2 3; do + git pull --rebase origin main + python3 tools/promote-changelog.py "${TAG}" "${DATE}" CHANGELOG-client.md + if git diff --quiet CHANGELOG-client.md; then + echo "No changelog changes to commit" + exit 0 + fi + git add CHANGELOG-client.md + git commit -m "docs: promote [Unreleased] to ${TAG} [skip ci]" + git push && exit 0 + git reset HEAD~1 + sleep 5 + done + echo "ERROR: Failed to push changelog after 3 attempts" + exit 1 + diff --git a/CHANGELOG.md b/CHANGELOG-client.md similarity index 98% rename from CHANGELOG.md rename to CHANGELOG-client.md index cdfb6cf..b58b85d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG-client.md @@ -1,6 +1,6 @@ -# Changelog +# Changelog — Client (App) -All notable changes to this project will be documented in this file. +All notable changes to the client (app) will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). @@ -9,8 +9,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [app-] - 2026-06-08 - ### Added - Shell Script to confirm new users using docker and sql; diff --git a/CHANGELOG-server.md b/CHANGELOG-server.md new file mode 100644 index 0000000..87420fd --- /dev/null +++ b/CHANGELOG-server.md @@ -0,0 +1,12 @@ +# Changelog — Server (API) + +All notable changes to the server (API) will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +--- + +## [Unreleased] + +--- diff --git a/tools/promote-changelog.py b/tools/promote-changelog.py new file mode 100644 index 0000000..50a30db --- /dev/null +++ b/tools/promote-changelog.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +""" +Promote the [Unreleased] section in CHANGELOG.md to a named release. + +Usage: + python3 promote-changelog.py [changelog_path] + +Example: + python3 tools/promote-changelog.py app-v2026.06.08.22 2026-06-08 + python3 tools/promote-changelog.py api-v23 2026-06-08 CHANGELOG.md +""" + +import re +import sys + +REPO_URL = "https://github.com/RMCampos/tasknote" + + +def promote(tag: str, date: str, path: str = "CHANGELOG.md") -> bool: + """ + Promote [Unreleased] content to a versioned release entry. + + Returns True if the changelog was updated, False if skipped (empty section). + Exits with code 1 if the [Unreleased] section cannot be found. + """ + with open(path, "r") as f: + content = f.read() + + # Match from "## [Unreleased]\n" through the first "\n---\n" separator + pattern = r"(## \[Unreleased\]\n)(.*?)(\n---\n)" + match = re.search(pattern, content, re.DOTALL) + + if not match: + print("ERROR: [Unreleased] section not found in changelog", file=sys.stderr) + sys.exit(1) + + body = match.group(2).strip() + + if not body: + print("INFO: [Unreleased] is empty — nothing to promote, skipping") + return False + + version_header = f"## [{tag}]({REPO_URL}/releases/tag/{tag}) - {date}" + replacement = ( + f"## [Unreleased]\n\n---\n\n" + f"{version_header}\n\n{body}\n\n---\n" + ) + + new_content = content[: match.start()] + replacement + content[match.end():] + + with open(path, "w") as f: + f.write(new_content) + + print(f"SUCCESS: Promoted [Unreleased] to [{tag}]") + return True + + +if __name__ == "__main__": + if len(sys.argv) < 3: + print("Usage: promote-changelog.py [changelog_path]") + sys.exit(1) + + changelog_path = sys.argv[3] if len(sys.argv) > 3 else "CHANGELOG.md" + promote(sys.argv[1], sys.argv[2], changelog_path)