From 3169a14a4d63a0a11a5288f4f3a674c0a0edb972 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 21 Feb 2026 12:11:50 -0500 Subject: [PATCH 01/55] fix: always show separators and encoding list in the CSV viewer (#5774) --- frontend/src/components/files/CsvViewer.vue | 72 ++++++++++----------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/frontend/src/components/files/CsvViewer.vue b/frontend/src/components/files/CsvViewer.vue index fdcaaed9f4..38c2de5922 100644 --- a/frontend/src/components/files/CsvViewer.vue +++ b/frontend/src/components/files/CsvViewer.vue @@ -1,5 +1,41 @@ diff --git a/frontend/src/css/base.css b/frontend/src/css/base.css index f0b8ef0cee..cdb3319bf8 100644 --- a/frontend/src/css/base.css +++ b/frontend/src/css/base.css @@ -182,10 +182,11 @@ html[dir="rtl"] .breadcrumbs a { background: var(--textSecondary) !important; } -.vfm-modal { - z-index: 9999999 !important; -} - body > div[style*="z-index: 9990"] { z-index: 10000 !important; } + +#modal-background .button:focus { + outline: 1px solid #2195f32d; + outline-offset: 1px; +} diff --git a/frontend/src/css/styles.css b/frontend/src/css/styles.css index 5ac7d8d516..bab7cd192d 100644 --- a/frontend/src/css/styles.css +++ b/frontend/src/css/styles.css @@ -1,6 +1,5 @@ @import "normalize.css/normalize.css"; @import "vue-toastification/dist/index.css"; -@import "vue-final-modal/style.css"; @import "./_variables.css"; @import "./_buttons.css"; @import "./_inputs.css"; diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 42f4420564..f6b7ac78c5 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -2,7 +2,6 @@ import { disableExternal } from "@/utils/constants"; import { createApp } from "vue"; import VueNumberInput from "@chenfengyuan/vue-number-input"; import VueLazyload from "vue-lazyload"; -import { createVfm } from "vue-final-modal"; import Toast, { POSITION, useToast } from "vue-toastification"; import type { ToastOptions, @@ -27,7 +26,6 @@ dayjs.extend(relativeTime); dayjs.extend(duration); const pinia = createPinia(router); -const vfm = createVfm(); const app = createApp(App); @@ -39,7 +37,6 @@ app.use(Toast, { newestOnTop: true, } satisfies PluginOptions); -app.use(vfm); app.use(i18n); app.use(pinia); app.use(router); diff --git a/frontend/src/stores/layout.ts b/frontend/src/stores/layout.ts index 372fca06e8..fbd6d99f6a 100644 --- a/frontend/src/stores/layout.ts +++ b/frontend/src/stores/layout.ts @@ -76,7 +76,7 @@ export const useLayoutStore = defineStore("layout", { }); }, closeHovers() { - this.prompts.shift()?.close?.(); + this.prompts.pop()?.close?.(); }, // easily reset state using `$reset` clearLayout() { diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index dbde609e29..2b2852d37b 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -121,7 +121,7 @@ const isMarkdownFile = fileStore.req?.name.endsWith(".markdown"); const katexOptions = { output: "mathml" as const, - throwOnError: false + throwOnError: false, }; marked.use(markedKatex(katexOptions)); @@ -233,6 +233,11 @@ const initEditor = (fileContent: string) => { editor.value.setFontSize(fontSize.value); editor.value.focus(); + + const selection = editor.value?.getSelection(); + selection.on("changeSelection", function () { + isSelectionEmpty.value = selection.isEmpty(); + }); }; const keyEvent = (event: KeyboardEvent) => { @@ -296,6 +301,7 @@ const close = () => { prompt: "discardEditorChanges", confirm: (event: Event) => { event.preventDefault(); + editor.value?.session.getUndoManager().reset(); finishClose(); }, saveAction: async () => { From 9940bdd663ff5141110778524b8a22c957036e78 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:12:43 +0100 Subject: [PATCH 03/55] feat: Updates for project File Browser (#5764) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/de.json | 2 +- frontend/src/i18n/ko.json | 2 +- frontend/src/i18n/nl.json | 2 +- frontend/src/i18n/pl.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index 0cd29ba839..d7519c8bb3 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -42,7 +42,7 @@ "update": "Aktualisieren", "upload": "Hochladen", "openFile": "Datei öffnen", - "openDirect": "View raw", + "openDirect": "Original anzeigen", "discardChanges": "Verwerfen", "stopSearch": "Suche beenden", "saveChanges": "Änderungen speichern", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 9c1cd76491..cd9252c2d6 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -42,7 +42,7 @@ "update": "업데이트", "upload": "업로드", "openFile": "파일 열기", - "openDirect": "View raw", + "openDirect": "원본 보기", "discardChanges": "변경 사항 취소", "stopSearch": "검색 중단", "saveChanges": "변경사항 저장", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 70e9b2446c..4701af98c4 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -42,7 +42,7 @@ "update": "Bijwerken", "upload": "Uploaden", "openFile": "Bestand openen", - "openDirect": "View raw", + "openDirect": "Raw weergeven", "discardChanges": "Weggooien", "stopSearch": "Stoppen met zoeken", "saveChanges": "Wijzigingen opslaan", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 9f9d3a29d7..7956e22bc0 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -42,7 +42,7 @@ "update": "Aktualizuj", "upload": "Wyślij", "openFile": "Otwórz plik", - "openDirect": "View raw", + "openDirect": "Otwórz bezpośrednio", "discardChanges": "Odrzuć", "stopSearch": "Zatrzymaj wyszukiwanie", "saveChanges": "Zapisz zmiany", From 2470b9eb69f183a4b4f1e948ad4fab47a97ef382 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:17:51 +0100 Subject: [PATCH 04/55] chore(deps): update all non-major dependencies (#5780) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 439 +++++++++++++++++++--------------------- go.mod | 3 +- go.sum | 11 +- 4 files changed, 224 insertions(+), 231 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 1ebaaaa15c..e98566b976 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,5 +72,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.29.3+sha512.498e1fb4cca5aa06c1dcf2611e6fafc50972ffe7189998c409e90de74566444298ffe43e6cd2acdc775ba1aa7cc5e092a8b7054c811ba8c5770f84693d33d2dc" + "packageManager": "pnpm@10.30.1+sha512.3590e550d5384caa39bd5c7c739f72270234b2f6059e13018f975c313b1eb9fefcc09714048765d4d9efe961382c312e624572c0420762bdc5d5940cdf9be73a" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index cc488cd3ab..7ec45c7af3 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -46,10 +46,10 @@ importers: version: 4.17.23 marked: specifier: ^17.0.0 - version: 17.0.2 + version: 17.0.3 marked-katex-extension: specifier: ^5.1.6 - version: 5.1.6(katex@0.16.28)(marked@17.0.2) + version: 5.1.7(katex@0.16.28)(marked@17.0.3) material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -94,14 +94,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.2(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 version: 2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.3(@vue/compiler-dom@3.5.28)(eslint@10.0.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,7 +113,7 @@ importers: version: 24.10.13 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) + version: 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2)) @@ -122,10 +122,10 @@ importers: version: 6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.0)(prettier@3.8.1) + version: 10.2.0(eslint@10.0.1)(prettier@3.8.1) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)))(eslint@10.0.0)(typescript@5.9.3) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) @@ -134,16 +134,16 @@ importers: version: 10.4.24(postcss@8.5.6) eslint: specifier: ^10.0.0 - version: 10.0.0 + version: 10.0.1 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.0) + version: 10.1.8(eslint@10.0.1) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)) + version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -164,7 +164,7 @@ importers: version: 2.4.0(rollup@4.57.1) vue-tsc: specifier: ^3.1.3 - version: 3.2.4(typescript@5.9.3) + version: 3.2.5(typescript@5.9.3) packages: @@ -990,8 +990,8 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.1': - resolution: {integrity: sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==} + '@eslint/config-array@0.23.2': + resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/config-helpers@0.5.2': @@ -1002,8 +1002,8 @@ packages: resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@3.0.1': - resolution: {integrity: sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==} + '@eslint/object-schema@3.0.2': + resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/plugin-kit@0.6.0': @@ -1026,8 +1026,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@intlify/bundle-utils@11.0.3': - resolution: {integrity: sha512-dURCDz1rQXwAb1+Hv4NDit6aZSRaAt4zUYBPEeaDCe3FSs8dMtdF6kEvgd9JwsYFSTAHcvbTs2CqwBjjt9Ltsw==} + '@intlify/bundle-utils@11.0.7': + resolution: {integrity: sha512-fEO3CJGPymxieGh8BHox7d6stgajDQae7wgpH6YYw7WX+cdW6jTTXyljZqz7OV3JcwlS9M9UHSoO+YwiO56IhA==} engines: {node: '>= 20'} peerDependencies: petite-vue-i18n: '*' @@ -1050,8 +1050,8 @@ packages: resolution: {integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==} engines: {node: '>= 16'} - '@intlify/unplugin-vue-i18n@11.0.3': - resolution: {integrity: sha512-iQuik0nXfdVZ5ab+IEyBFEuvMQ213zfbUpBXaEdHPk8DV+qB2CT/SdFuDhfUDRRBZc/e0qoLlfmc9urhnRYVWw==} + '@intlify/unplugin-vue-i18n@11.0.7': + resolution: {integrity: sha512-wswKprS1D8VfnxxVhKxug5wa3MbDSOcCoXOBjnzhMK+6NfP6h6UI8pFqSBIvcW8nPDuzweTc0Sk3PeBCcubfoQ==} engines: {node: '>= 20'} peerDependencies: petite-vue-i18n: '*' @@ -1081,10 +1081,6 @@ packages: vue-i18n: optional: true - '@isaacs/cliui@9.0.0': - resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} - engines: {node: '>=18'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1301,63 +1297,63 @@ packages: '@types/web-bluetooth@0.0.21': resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} - '@typescript-eslint/eslint-plugin@8.55.0': - resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} + '@typescript-eslint/eslint-plugin@8.56.0': + resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.55.0 - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/parser': ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.55.0': - resolution: {integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==} + '@typescript-eslint/parser@8.56.0': + resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.55.0': - resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} + '@typescript-eslint/project-service@8.56.0': + resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.55.0': - resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} + '@typescript-eslint/scope-manager@8.56.0': + resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.55.0': - resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} + '@typescript-eslint/tsconfig-utils@8.56.0': + resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.55.0': - resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} + '@typescript-eslint/type-utils@8.56.0': + resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.55.0': - resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} + '@typescript-eslint/types@8.56.0': + resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.55.0': - resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} + '@typescript-eslint/typescript-estree@8.56.0': + resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.55.0': - resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} + '@typescript-eslint/utils@8.56.0': + resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.55.0': - resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} + '@typescript-eslint/visitor-keys@8.56.0': + resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.4': @@ -1387,14 +1383,14 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.2.25 - '@volar/language-core@2.4.27': - resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - '@volar/source-map@2.4.27': - resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==} + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} - '@volar/typescript@2.4.27': - resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} '@vue-macros/common@3.1.2': resolution: {integrity: sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==} @@ -1444,19 +1440,19 @@ packages: eslint: '>= 8.21.0' prettier: '>= 3.0.0' - '@vue/eslint-config-typescript@14.6.0': - resolution: {integrity: sha512-UpiRY/7go4Yps4mYCjkvlIbVWmn9YvPGQDxTAlcKLphyaD77LjIu3plH4Y9zNT0GB4f3K5tMmhhtRhPOgrQ/bQ==} + '@vue/eslint-config-typescript@14.7.0': + resolution: {integrity: sha512-iegbMINVc+seZ/QxtzWiOBozctrHiF2WvGedruu2EbLujg9VuU0FQiNcN2z1ycuaoKKpF4m2qzB5HDEMKbxtIg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.10.0 + eslint: ^9.10.0 || ^10.0.0 eslint-plugin-vue: ^9.28.0 || ^10.0.0 typescript: '>=4.8.4' peerDependenciesMeta: typescript: optional: true - '@vue/language-core@3.2.4': - resolution: {integrity: sha512-bqBGuSG4KZM45KKTXzGtoCl9cWju5jsaBKaJJe3h5hRAAWpZUuj5G+L+eI01sPIkm4H6setKRlw7E85wLdDNew==} + '@vue/language-core@3.2.5': + resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} '@vue/reactivity@3.5.28': resolution: {integrity: sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==} @@ -1563,11 +1559,16 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + aes-decrypter@4.0.2: resolution: {integrity: sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==} - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} alien-signals@3.1.2: resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} @@ -1610,8 +1611,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.2: - resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} + balanced-match@4.0.3: + resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} engines: {node: 20 || >=22} baseline-browser-mapping@2.9.19: @@ -1810,24 +1811,20 @@ packages: '@typescript-eslint/parser': optional: true - eslint-scope@9.1.0: - resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} + eslint-scope@9.1.1: + resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@5.0.0: - resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.0: - resolution: {integrity: sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==} + eslint@10.0.1: + resolution: {integrity: sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1840,8 +1837,8 @@ packages: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} - espree@11.1.0: - resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} + espree@11.1.1: + resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} espree@9.6.1: @@ -2022,10 +2019,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@4.2.3: - resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} - engines: {node: 20 || >=22} - js-base64@3.7.8: resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} @@ -2136,14 +2129,14 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - marked-katex-extension@5.1.6: - resolution: {integrity: sha512-vYpLXwmlIDKILIhJtiRTgdyZRn5sEYdFBuTmbpjD7lbCIzg0/DWyK3HXIntN3Tp8zV6hvOUgpZNLWRCgWVc24A==} + marked-katex-extension@5.1.7: + resolution: {integrity: sha512-CVFzrqwpXGVaHByqcVvO/JfzW/OMWrAF3pEfNYNIruzBzM64moANSHapCg1qbzEN+NGf5unHwkMfwJIXHzyDAw==} peerDependencies: katex: '>=0.16 <0.17' marked: '>=4 <18' - marked@17.0.2: - resolution: {integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==} + marked@17.0.3: + resolution: {integrity: sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==} engines: {node: '>= 20'} hasBin: true @@ -2168,9 +2161,9 @@ packages: min-document@2.19.2: resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} - minimatch@10.2.0: - resolution: {integrity: sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==} - engines: {node: 20 || >=22} + minimatch@10.2.2: + resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} + engines: {node: 18 || 20 || >=22} minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} @@ -2497,11 +2490,11 @@ packages: type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - typescript-eslint@8.55.0: - resolution: {integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==} + typescript-eslint@8.56.0: + resolution: {integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: @@ -2649,8 +2642,8 @@ packages: vue-reader@1.3.4: resolution: {integrity: sha512-QYTX9hlrV71gL/1vMejcBLLS9Ool29XMZcLQwvL0Ep1F//o0ymzYbKX2Lre+4BUBkVq49/GmmGCmAJACsJL9tw==} - vue-router@5.0.2: - resolution: {integrity: sha512-YFhwaE5c5JcJpNB1arpkl4/GnO32wiUWRB+OEj1T0DlDxEZoOfbltl2xEwktNU/9o1sGcGburIXSpbLpPFe/6w==} + vue-router@5.0.3: + resolution: {integrity: sha512-nG1c7aAFac7NYj8Hluo68WyWfc41xkEjaR0ViLHCa3oDvTQ/nIuLJlXJX1NUPw/DXzx/8+OKMng045HHQKQKWw==} peerDependencies: '@pinia/colada': '>=0.21.2' '@vue/compiler-sfc': ^3.5.17 @@ -2669,8 +2662,8 @@ packages: peerDependencies: vue: ^3.0.2 - vue-tsc@3.2.4: - resolution: {integrity: sha512-xj3YCvSLNDKt1iF9OcImWHhmYcihVu9p4b9s4PGR/qp6yhW+tZJaypGxHScRyOrdnHvaOeF+YkZOdKwbgGvp5g==} + vue-tsc@3.2.5: + resolution: {integrity: sha512-/htfTCMluQ+P2FISGAooul8kO4JMheOTCbCy4M6dYnYYjqLe3BExZudAua6MSIKSFYQtFOYAll7XobYwcpokGA==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -3531,18 +3524,18 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.1)': dependencies: - eslint: 10.0.0 + eslint: 10.0.1 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.1': + '@eslint/config-array@0.23.2': dependencies: - '@eslint/object-schema': 3.0.1 + '@eslint/object-schema': 3.0.2 debug: 4.4.3 - minimatch: 10.2.0 + minimatch: 10.2.2 transitivePeerDependencies: - supports-color @@ -3554,7 +3547,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/object-schema@3.0.1': {} + '@eslint/object-schema@3.0.2': {} '@eslint/plugin-kit@0.6.0': dependencies: @@ -3572,11 +3565,11 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 '@intlify/shared': 11.2.8 - acorn: 8.15.0 + acorn: 8.16.0 esbuild: 0.25.12 escodegen: 2.1.0 estree-walker: 2.0.2 @@ -3598,15 +3591,15 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.28)(eslint@10.0.0)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3))) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3))) '@intlify/shared': 11.2.8 '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) debug: 4.4.3 fast-glob: 3.3.3 pathe: 2.0.3 @@ -3631,8 +3624,6 @@ snapshots: vue: 3.5.28(typescript@5.9.3) vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) - '@isaacs/cliui@9.0.0': {} - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3783,15 +3774,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/type-utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 - eslint: 10.0.0 + '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.0 + eslint: 10.0.1 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3799,56 +3790,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 - eslint: 10.0.0 + eslint: 10.0.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.55.0': + '@typescript-eslint/scope-manager@8.56.0': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.0 + eslint: 10.0.1 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.55.0': {} + '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/visitor-keys': 8.55.0 + '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.9.3) + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.4 @@ -3858,21 +3849,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.55.0(eslint@10.0.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - '@typescript-eslint/scope-manager': 8.55.0 - '@typescript-eslint/types': 8.55.0 - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - eslint: 10.0.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@typescript-eslint/scope-manager': 8.56.0 + '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + eslint: 10.0.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.55.0': + '@typescript-eslint/visitor-keys@8.56.0': dependencies: - '@typescript-eslint/types': 8.55.0 - eslint-visitor-keys: 4.2.1 + '@typescript-eslint/types': 8.56.0 + eslint-visitor-keys: 5.0.1 '@videojs/http-streaming@3.17.4(video.js@8.23.7)': dependencies: @@ -3921,15 +3912,15 @@ snapshots: vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.28(typescript@5.9.3) - '@volar/language-core@2.4.27': + '@volar/language-core@2.4.28': dependencies: - '@volar/source-map': 2.4.27 + '@volar/source-map': 2.4.28 - '@volar/source-map@2.4.27': {} + '@volar/source-map@2.4.28': {} - '@volar/typescript@2.4.27': + '@volar/typescript@2.4.28': dependencies: - '@volar/language-core': 2.4.27 + '@volar/language-core': 2.4.28 path-browserify: 1.0.1 vscode-uri: 3.1.0 @@ -4011,31 +4002,31 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.0)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.0.1)(prettier@3.8.1)': dependencies: - eslint: 10.0.0 - eslint-config-prettier: 10.1.8(eslint@10.0.0) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1) + eslint: 10.0.1 + eslint-config-prettier: 10.1.8(eslint@10.0.1) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) prettier: 3.8.1 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)))(eslint@10.0.0)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - eslint: 10.0.0 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + eslint: 10.0.1 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) fast-glob: 3.3.3 - typescript-eslint: 8.55.0(eslint@10.0.0)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.0.0) + typescript-eslint: 8.56.0(eslint@10.0.1)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.0.1) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@vue/language-core@3.2.4': + '@vue/language-core@3.2.5': dependencies: - '@volar/language-core': 2.4.27 + '@volar/language-core': 2.4.28 '@vue/compiler-dom': 3.5.28 '@vue/shared': 3.5.28 alien-signals: 3.1.2 @@ -4100,12 +4091,14 @@ snapshots: ace-builds@1.43.6: {} - acorn-jsx@5.3.2(acorn@8.15.0): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn@8.15.0: {} + acorn@8.16.0: {} + aes-decrypter@4.0.2: dependencies: '@babel/runtime': 7.28.6 @@ -4113,7 +4106,7 @@ snapshots: global: 4.4.0 pkcs7: 1.0.4 - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -4175,9 +4168,7 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@4.0.2: - dependencies: - jackspeak: 4.2.3 + balanced-match@4.0.3: {} baseline-browser-mapping@2.9.19: {} @@ -4191,7 +4182,7 @@ snapshots: brace-expansion@5.0.2: dependencies: - balanced-match: 4.0.2 + balanced-match: 4.0.3 braces@3.0.3: dependencies: @@ -4382,33 +4373,33 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.0.0): + eslint-config-prettier@10.1.8(eslint@10.0.1): dependencies: - eslint: 10.0.0 + eslint: 10.0.1 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.0))(eslint@10.0.0)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1): dependencies: - eslint: 10.0.0 + eslint: 10.0.1 prettier: 3.8.1 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.0.0) + eslint-config-prettier: 10.1.8(eslint@10.0.1) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(vue-eslint-parser@10.4.0(eslint@10.0.0)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) - eslint: 10.0.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + eslint: 10.0.1 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 semver: 7.7.4 - vue-eslint-parser: 10.4.0(eslint@10.0.0) + vue-eslint-parser: 10.4.0(eslint@10.0.1) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint-scope@9.1.0: + eslint-scope@9.1.1: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 @@ -4417,15 +4408,13 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} - - eslint-visitor-keys@5.0.0: {} + eslint-visitor-keys@5.0.1: {} - eslint@10.0.0: + eslint@10.0.1: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.1 + '@eslint/config-array': 0.23.2 '@eslint/config-helpers': 0.5.2 '@eslint/core': 1.1.0 '@eslint/plugin-kit': 0.6.0 @@ -4433,13 +4422,13 @@ snapshots: '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - ajv: 6.12.6 + ajv: 6.14.0 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 9.1.0 - eslint-visitor-keys: 5.0.0 - espree: 11.1.0 + eslint-scope: 9.1.1 + eslint-visitor-keys: 5.0.1 + espree: 11.1.1 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4450,7 +4439,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.0 + minimatch: 10.2.2 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -4463,16 +4452,16 @@ snapshots: event-emitter: 0.3.5 type: 2.7.3 - espree@11.1.0: + espree@11.1.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 5.0.0 + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 espree@9.6.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -4615,10 +4604,6 @@ snapshots: isexe@2.0.0: {} - jackspeak@4.2.3: - dependencies: - '@isaacs/cliui': 9.0.0 - js-base64@3.7.8: {} js-tokens@4.0.0: {} @@ -4635,7 +4620,7 @@ snapshots: jsonc-eslint-parser@2.4.2: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.7.4 @@ -4734,12 +4719,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - marked-katex-extension@5.1.6(katex@0.16.28)(marked@17.0.2): + marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.3): dependencies: katex: 0.16.28 - marked: 17.0.2 + marked: 17.0.3 - marked@17.0.2: {} + marked@17.0.3: {} marks-pane@1.0.9: {} @@ -4758,7 +4743,7 @@ snapshots: dependencies: dom-walk: 0.1.2 - minimatch@10.2.0: + minimatch@10.2.2: dependencies: brace-expansion: 5.0.2 @@ -4770,7 +4755,7 @@ snapshots: mlly@1.8.0: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.3 @@ -5084,13 +5069,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.55.0(eslint@10.0.0)(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.0.1)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0)(typescript@5.9.3))(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.55.0(eslint@10.0.0)(typescript@5.9.3) - eslint: 10.0.0 + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + eslint: 10.0.1 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5120,7 +5105,7 @@ snapshots: unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 + acorn: 8.16.0 picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 @@ -5207,13 +5192,13 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.0.0): + vue-eslint-parser@10.4.0(eslint@10.0.1): dependencies: debug: 4.4.3 - eslint: 10.0.0 - eslint-scope: 9.1.0 - eslint-visitor-keys: 5.0.0 - espree: 11.1.0 + eslint: 10.0.1 + eslint-scope: 9.1.1 + eslint-visitor-keys: 5.0.1 + espree: 11.1.1 esquery: 1.7.0 semver: 7.7.4 transitivePeerDependencies: @@ -5232,7 +5217,7 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.2(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): + vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.1 '@vue-macros/common': 3.1.2(vue@3.5.28(typescript@5.9.3)) @@ -5260,10 +5245,10 @@ snapshots: dependencies: vue: 3.5.28(typescript@5.9.3) - vue-tsc@3.2.4(typescript@5.9.3): + vue-tsc@3.2.5(typescript@5.9.3): dependencies: - '@volar/typescript': 2.4.27 - '@vue/language-core': 3.2.4 + '@volar/typescript': 2.4.28 + '@vue/language-core': 3.2.5 typescript: 5.9.3 vue@3.5.28(typescript@5.9.3): diff --git a/go.mod b/go.mod index 8e0f0f1025..13fb76c920 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/marusama/semaphore/v2 v2.5.0 github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 - github.com/redis/go-redis/v9 v9.17.3 + github.com/redis/go-redis/v9 v9.18.0 github.com/samber/lo v1.52.0 github.com/shirou/gopsutil/v4 v4.26.1 github.com/spf13/afero v1.15.0 @@ -74,6 +74,7 @@ require ( github.com/ulikunitz/xz v0.5.15 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.etcd.io/bbolt v1.4.3 // indirect + go.uber.org/atomic v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect golang.org/x/net v0.49.0 // indirect diff --git a/go.sum b/go.sum index 262a280c87..8a83f6ec41 100644 --- a/go.sum +++ b/go.sum @@ -166,7 +166,10 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -202,8 +205,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/redis/go-redis/v9 v9.17.3 h1:fN29NdNrE17KttK5Ndf20buqfDZwGNgoUr9qjl1DQx4= -github.com/redis/go-redis/v9 v9.17.3/go.mod h1:u410H11HMLoB+TP67dz8rL9s6QW2j76l0//kSOd3370= +github.com/redis/go-redis/v9 v9.18.0 h1:pMkxYPkEbMPwRdenAzUNyFNrDgHx9U+DrBabWNfSRQs= +github.com/redis/go-redis/v9 v9.18.0/go.mod h1:k3ufPphLU5YXwNTUcCRXGxUoF1fqxnhFQmscfkCoDA0= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -257,6 +260,8 @@ github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3i github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= @@ -264,6 +269,8 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= From 7b16e2de903228cc463188483c2f976e1131209b Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 21 Feb 2026 18:18:55 +0100 Subject: [PATCH 05/55] chore(release): 2.60.0 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c3c05eeb1..6a55edba6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.60.0](https://github.com/filebrowser/filebrowser/compare/v2.59.0...v2.60.0) (2026-02-21) + + +### Features + +* Updates for project File Browser ([#5764](https://github.com/filebrowser/filebrowser/issues/5764)) ([9940bdd](https://github.com/filebrowser/filebrowser/commit/9940bdd663ff5141110778524b8a22c957036e78)) + + +### Bug Fixes + +* always show separators and encoding list in the CSV viewer ([#5774](https://github.com/filebrowser/filebrowser/issues/5774)) ([3169a14](https://github.com/filebrowser/filebrowser/commit/3169a14a4d63a0a11a5288f4f3a674c0a0edb972)) +* modal lifecycle issues, multiple modals, new directory creation and discard changes behavior ([#5773](https://github.com/filebrowser/filebrowser/issues/5773)) ([200d501](https://github.com/filebrowser/filebrowser/commit/200d5015472c79d5caa683ea291ebf500356a39f)) + ## [2.59.0](https://github.com/filebrowser/filebrowser/compare/v2.58.0...v2.59.0) (2026-02-15) From e3d00d591b567a8bfe3b02e42ba586859002c77d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 07:12:45 +0100 Subject: [PATCH 06/55] chore(deps): update goreleaser/goreleaser-action action to v7 (#5782) --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b3b3ab3f45..ddbb8962a4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -104,7 +104,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v6 + uses: goreleaser/goreleaser-action@v7 with: version: latest args: release --clean From aa809096eb35fdfbdeb6784b1ebfe2ca1e42f52b Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 27 Feb 2026 08:55:49 -0500 Subject: [PATCH 07/55] feat: improved conflict resolution when uploading/copying/moving files (#5765) --- frontend/src/api/files.ts | 5 +- frontend/src/components/files/ListingItem.vue | 37 ++- frontend/src/components/prompts/Copy.vue | 45 ++- frontend/src/components/prompts/Move.vue | 39 ++- frontend/src/components/prompts/Prompts.vue | 4 +- .../src/components/prompts/ReplaceRename.vue | 57 ---- .../components/prompts/ResolveConflict.vue | 307 ++++++++++++++++++ frontend/src/components/prompts/Upload.vue | 27 +- frontend/src/i18n/en.json | 18 +- frontend/src/types/file.d.ts | 15 + frontend/src/types/upload.d.ts | 1 + frontend/src/utils/upload.ts | 41 ++- frontend/src/views/files/FileListing.vue | 108 +++--- 13 files changed, 550 insertions(+), 154 deletions(-) delete mode 100644 frontend/src/components/prompts/ReplaceRename.vue create mode 100644 frontend/src/components/prompts/ResolveConflict.vue diff --git a/frontend/src/api/files.ts b/frontend/src/api/files.ts index e16b75cd80..ed2de8ee9c 100644 --- a/frontend/src/api/files.ts +++ b/frontend/src/api/files.ts @@ -177,9 +177,12 @@ function moveCopy( for (const item of items) { const from = item.from; const to = encodeURIComponent(removePrefix(item.to ?? "")); + const finalOverwrite = + item.overwrite == undefined ? overwrite : item.overwrite; + const finalRename = item.rename == undefined ? rename : item.rename; const url = `${from}?action=${ copy ? "copy" : "rename" - }&destination=${to}&override=${overwrite}&rename=${rename}`; + }&destination=${to}&override=${finalOverwrite}&rename=${finalRename}`; promises.push(resourceAction(url, "PATCH")); } layoutStore.closeHovers(); diff --git a/frontend/src/components/files/ListingItem.vue b/frontend/src/components/files/ListingItem.vue index d75c2f9816..ce23c482ec 100644 --- a/frontend/src/components/files/ListingItem.vue +++ b/frontend/src/components/files/ListingItem.vue @@ -178,6 +178,10 @@ const drop = async (event: Event) => { from: fileStore.req?.items[i].url, to: props.url + encodeURIComponent(fileStore.req?.items[i].name), name: fileStore.req?.items[i].name, + size: fileStore.req?.items[i].size, + modified: fileStore.req?.items[i].modified, + overwrite: false, + rename: false, }); } } @@ -189,7 +193,7 @@ const drop = async (event: Event) => { const path = el.__vue__.url; const baseItems = (await api.fetch(path)).items; - const action = (overwrite: boolean, rename: boolean) => { + const action = (overwrite?: boolean, rename?: boolean) => { api .move(items, overwrite, rename) .then(() => { @@ -200,26 +204,35 @@ const drop = async (event: Event) => { const conflict = upload.checkConflict(items, baseItems); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace-rename", - confirm: (event: Event, option: any) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + }, + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }; const itemClick = (event: Event | KeyboardEvent) => { diff --git a/frontend/src/components/prompts/Copy.vue b/frontend/src/components/prompts/Copy.vue index 09040e0a44..85810f30b3 100644 --- a/frontend/src/components/prompts/Copy.vue +++ b/frontend/src/components/prompts/Copy.vue @@ -91,6 +91,10 @@ export default { from: this.req.items[item].url, to: this.dest + encodeURIComponent(this.req.items[item].name), name: this.req.items[item].name, + size: this.req.items[item].size, + modified: this.req.items[item].modified, + overwrite: false, + rename: this.$route.path === this.dest, }); } @@ -118,36 +122,41 @@ export default { }); }; - if (this.$route.path === this.dest) { - this.closeHovers(); - action(false, true); - - return; - } - const dstItems = (await api.fetch(this.dest)).items; const conflict = upload.checkConflict(items, dstItems); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { this.showHover({ - prompt: "replace-rename", - confirm: (event, option) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + }, + confirm: (event, result) => { event.preventDefault(); this.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if ( + item.checked.length == 1 && + item.checked[0] == "origin" + ) { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }, }, }; diff --git a/frontend/src/components/prompts/Move.vue b/frontend/src/components/prompts/Move.vue index 0fec867962..36a92469bd 100644 --- a/frontend/src/components/prompts/Move.vue +++ b/frontend/src/components/prompts/Move.vue @@ -97,6 +97,10 @@ export default { from: this.req.items[item].url, to: this.dest + encodeURIComponent(this.req.items[item].name), name: this.req.items[item].name, + size: this.req.items[item].size, + modified: this.req.items[item].modified, + overwrite: false, + rename: false, }); } @@ -121,26 +125,39 @@ export default { const dstItems = (await api.fetch(this.dest)).items; const conflict = upload.checkConflict(items, dstItems); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { this.showHover({ - prompt: "replace-rename", - confirm: (event, option) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + files: items, + }, + confirm: (event, result) => { event.preventDefault(); this.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if ( + item.checked.length == 1 && + item.checked[0] == "origin" + ) { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }, }, }; diff --git a/frontend/src/components/prompts/Prompts.vue b/frontend/src/components/prompts/Prompts.vue index 1cfdbfb2c5..791d3ca910 100644 --- a/frontend/src/components/prompts/Prompts.vue +++ b/frontend/src/components/prompts/Prompts.vue @@ -23,11 +23,11 @@ import Copy from "./Copy.vue"; import NewFile from "./NewFile.vue"; import NewDir from "./NewDir.vue"; import Replace from "./Replace.vue"; -import ReplaceRename from "./ReplaceRename.vue"; import Share from "./Share.vue"; import ShareDelete from "./ShareDelete.vue"; import Upload from "./Upload.vue"; import DiscardEditorChanges from "./DiscardEditorChanges.vue"; +import ResolveConflict from "./ResolveConflict.vue"; const layoutStore = useLayoutStore(); @@ -44,12 +44,12 @@ const components = new Map([ ["newDir", NewDir], ["download", Download], ["replace", Replace], - ["replace-rename", ReplaceRename], ["share", Share], ["upload", Upload], ["share-delete", ShareDelete], ["deleteUser", DeleteUser], ["discardEditorChanges", DiscardEditorChanges], + ["resolve-conflict", ResolveConflict], ]); const modal = computed(() => { diff --git a/frontend/src/components/prompts/ReplaceRename.vue b/frontend/src/components/prompts/ReplaceRename.vue deleted file mode 100644 index 1d49d735bd..0000000000 --- a/frontend/src/components/prompts/ReplaceRename.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - diff --git a/frontend/src/components/prompts/ResolveConflict.vue b/frontend/src/components/prompts/ResolveConflict.vue new file mode 100644 index 0000000000..e7bf9c7462 --- /dev/null +++ b/frontend/src/components/prompts/ResolveConflict.vue @@ -0,0 +1,307 @@ + + + + diff --git a/frontend/src/components/prompts/Upload.vue b/frontend/src/components/prompts/Upload.vue index 75f7951f26..19b1fbb175 100644 --- a/frontend/src/components/prompts/Upload.vue +++ b/frontend/src/components/prompts/Upload.vue @@ -69,18 +69,29 @@ const uploadInput = (event: Event) => { const path = route.path.endsWith("/") ? route.path : route.path + "/"; const conflict = upload.checkConflict(uploadFiles, fileStore.req!.items); - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace", - action: (event: Event) => { - event.preventDefault(); - layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, false); + prompt: "resolve-conflict", + props: { + conflict: conflict, + isUploadAction: true, }, - confirm: (event: Event) => { + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, true); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + continue; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + uploadFiles[item.index].overwrite = true; + } else { + uploadFiles.splice(item.index, 1); + } + } + if (uploadFiles.length > 0) { + upload.handleFiles(uploadFiles, path); + } }, }); diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 54b30b22ef..77d74d9f3f 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Download File", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Images", diff --git a/frontend/src/types/file.d.ts b/frontend/src/types/file.d.ts index 6b9b6372cd..e6511b3919 100644 --- a/frontend/src/types/file.d.ts +++ b/frontend/src/types/file.d.ts @@ -52,6 +52,8 @@ type DownloadFormat = interface ClipItem { from: string; name: string; + size?: number; + modified?: string; } interface BreadCrumb { @@ -59,6 +61,19 @@ interface BreadCrumb { url: string; } +interface ConflictingItem { + lastModified: number | string | undefined; + size: number | undefined; +} + +interface ConflictingResource { + index: number; + name: string; + origin: ConflictingItem; + dest: ConflictingItem; + checked: Array<"origin" | "dest">; +} + interface CsvData { headers: string[]; rows: string[][]; diff --git a/frontend/src/types/upload.d.ts b/frontend/src/types/upload.d.ts index 4bad9e0650..5e5716acb1 100644 --- a/frontend/src/types/upload.d.ts +++ b/frontend/src/types/upload.d.ts @@ -17,6 +17,7 @@ interface UploadEntry { isDir: boolean; fullPath?: string; file?: File; + overwrite?: boolean; } type UploadList = UploadEntry[]; diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts index e951cb43cb..a5a62b1dfc 100644 --- a/frontend/src/utils/upload.ts +++ b/frontend/src/utils/upload.ts @@ -3,16 +3,24 @@ import { useUploadStore } from "@/stores/upload"; import url from "@/utils/url"; export function checkConflict( - files: UploadList, + files: UploadList | Array, dest: ResourceItem[] -): boolean { +): ConflictingResource[] { if (typeof dest === "undefined" || dest === null) { dest = []; } + const conflictingFiles: ConflictingResource[] = []; const folder_upload = files[0].fullPath !== undefined; - const names = new Set(); + function getFile(name: string): ResourceItem | null { + for (const item of dest) { + if (item.name == name) return item; + } + + return null; + } + for (let i = 0; i < files.length; i++) { const file = files[i]; let name = file.name; @@ -24,10 +32,25 @@ export function checkConflict( } } - names.add(name); + const item = getFile(name); + if (item != null) { + conflictingFiles.push({ + index: i, + name: item.path, + origin: { + lastModified: file.modified || file.file?.lastModified, + size: file.size, + }, + dest: { + lastModified: item.modified, + size: item.size, + }, + checked: ["origin"], + }); + } } - return dest.some((d) => names.has(d.name)); + return conflictingFiles; } export function scanFiles(dt: DataTransfer): Promise { @@ -146,6 +169,12 @@ export function handleFiles( const type = file.isDir ? "dir" : detectType((file.file as File).type); - uploadStore.upload(path, file.name, file.file ?? null, overwrite, type); + uploadStore.upload( + path, + file.name, + file.file ?? null, + file.overwrite || overwrite, + type + ); } } diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue index 0a86b359ee..f612ab1d16 100644 --- a/frontend/src/views/files/FileListing.vue +++ b/frontend/src/views/files/FileListing.vue @@ -628,6 +628,8 @@ const copyCut = (event: Event | KeyboardEvent): void => { items.push({ from: fileStore.req.items[i].url, name: fileStore.req.items[i].name, + size: fileStore.req.items[i].size, + modified: fileStore.req.items[i].modified, }); } @@ -651,7 +653,15 @@ const paste = (event: Event) => { for (const item of clipboardStore.items) { const from = item.from.endsWith("/") ? item.from.slice(0, -1) : item.from; const to = route.path + encodeURIComponent(item.name); - items.push({ from, to, name: item.name }); + items.push({ + from, + to, + name: item.name, + size: item.size, + modified: item.modified, + overwrite: false, + rename: clipboardStore.path == route.path, + }); } if (items.length === 0) { @@ -660,7 +670,7 @@ const paste = (event: Event) => { const preselect = removePrefix(route.path) + items[0].name; - let action = (overwrite: boolean, rename: boolean) => { + let action = (overwrite?: boolean, rename?: boolean) => { api .copy(items, overwrite, rename) .then(() => { @@ -683,34 +693,37 @@ const paste = (event: Event) => { }; } - if (clipboardStore.path == route.path) { - action(false, true); - - return; - } - const conflict = upload.checkConflict(items, fileStore.req!.items); - let overwrite = false; - let rename = false; - - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace-rename", - confirm: (event: Event, option: string) => { - overwrite = option == "overwrite"; - rename = option == "rename"; - + prompt: "resolve-conflict", + props: { + conflict: conflict, + }, + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - action(overwrite, rename); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + items[item.index].rename = true; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + items[item.index].overwrite = true; + } else { + items.splice(item.index, 1); + } + } + if (items.length > 0) { + action(); + } }, }); return; } - action(overwrite, rename); + action(false, false); }; const columnsResize = () => { @@ -806,20 +819,30 @@ const drop = async (event: DragEvent) => { const preselect = removePrefix(path) + (files[0].fullPath || files[0].name); - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace", - action: (event: Event) => { - event.preventDefault(); - layoutStore.closeHovers(); - upload.handleFiles(files, path, false); - fileStore.preselect = preselect; + prompt: "resolve-conflict", + props: { + conflict: conflict, + isUploadAction: true, }, - confirm: (event: Event) => { + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - upload.handleFiles(files, path, true); - fileStore.preselect = preselect; + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + continue; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + files[item.index].overwrite = true; + } else { + files.splice(item.index, 1); + } + } + if (files.length > 0) { + upload.handleFiles(files, path, true); + fileStore.preselect = preselect; + } }, }); @@ -852,18 +875,29 @@ const uploadInput = (event: Event) => { const path = route.path.endsWith("/") ? route.path : route.path + "/"; const conflict = upload.checkConflict(uploadFiles, fileStore.req!.items); - if (conflict) { + if (conflict.length > 0) { layoutStore.showHover({ - prompt: "replace", - action: (event: Event) => { - event.preventDefault(); - layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, false); + prompt: "resolve-conflict", + props: { + conflict: conflict, + isUploadAction: true, }, - confirm: (event: Event) => { + confirm: (event: Event, result: Array) => { event.preventDefault(); layoutStore.closeHovers(); - upload.handleFiles(uploadFiles, path, true); + for (let i = result.length - 1; i >= 0; i--) { + const item = result[i]; + if (item.checked.length == 2) { + continue; + } else if (item.checked.length == 1 && item.checked[0] == "origin") { + uploadFiles[item.index].overwrite = true; + } else { + uploadFiles.splice(item.index, 1); + } + } + if (uploadFiles.length > 0) { + upload.handleFiles(uploadFiles, path, true); + } }, }); From 31194fb57a5b92e7155219d7ec7273028fcb2e83 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Feb 2026 10:31:09 +0100 Subject: [PATCH 08/55] fix: correctly clean path --- http/public.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http/public.go b/http/public.go index 6dcdaff1a5..596a03c972 100644 --- a/http/public.go +++ b/http/public.go @@ -56,7 +56,7 @@ var withHashFile = func(fn handleFunc) handleFunc { filePath := "" if file.IsDir { - basePath = filepath.Dir(basePath) + basePath = filepath.Clean(link.Path) filePath = ifPath } From 8dc618a24bfea3ea5ee9a03e77985cb9bd467608 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:44:24 +0100 Subject: [PATCH 09/55] chore: update translations (#5790) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 18 ++++++++++++++++-- frontend/src/i18n/bg.json | 18 ++++++++++++++++-- frontend/src/i18n/ca.json | 18 ++++++++++++++++-- frontend/src/i18n/cs.json | 18 ++++++++++++++++-- frontend/src/i18n/de.json | 18 ++++++++++++++++-- frontend/src/i18n/el.json | 18 ++++++++++++++++-- frontend/src/i18n/es.json | 18 ++++++++++++++++-- frontend/src/i18n/fa.json | 18 ++++++++++++++++-- frontend/src/i18n/fr.json | 18 ++++++++++++++++-- frontend/src/i18n/he.json | 18 ++++++++++++++++-- frontend/src/i18n/hr.json | 18 ++++++++++++++++-- frontend/src/i18n/hu.json | 18 ++++++++++++++++-- frontend/src/i18n/is.json | 18 ++++++++++++++++-- frontend/src/i18n/it.json | 18 ++++++++++++++++-- frontend/src/i18n/ja.json | 18 ++++++++++++++++-- frontend/src/i18n/ko.json | 18 ++++++++++++++++-- frontend/src/i18n/lv.json | 18 ++++++++++++++++-- frontend/src/i18n/lv_LV.json | 18 ++++++++++++++++-- frontend/src/i18n/nl-be.json | 18 ++++++++++++++++-- frontend/src/i18n/nl.json | 18 ++++++++++++++++-- frontend/src/i18n/no.json | 18 ++++++++++++++++-- frontend/src/i18n/pl.json | 18 ++++++++++++++++-- frontend/src/i18n/pt-br.json | 18 ++++++++++++++++-- frontend/src/i18n/pt.json | 18 ++++++++++++++++-- frontend/src/i18n/ro.json | 18 ++++++++++++++++-- frontend/src/i18n/ru.json | 18 ++++++++++++++++-- frontend/src/i18n/sk.json | 18 ++++++++++++++++-- frontend/src/i18n/sv-se.json | 18 ++++++++++++++++-- frontend/src/i18n/tr.json | 18 ++++++++++++++++-- frontend/src/i18n/uk.json | 18 ++++++++++++++++-- frontend/src/i18n/vi.json | 18 ++++++++++++++++-- frontend/src/i18n/zh-cn.json | 18 ++++++++++++++++-- frontend/src/i18n/zh-tw.json | 18 ++++++++++++++++-- 33 files changed, 528 insertions(+), 66 deletions(-) diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index cf600a381b..5df31c3ff4 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -48,7 +48,11 @@ "saveChanges": "حفظ التغييرات", "editAsText": "تعديل على شكل نص", "increaseFontSize": "زيادة حجم الخط", - "decreaseFontSize": "تصغير حجم الخط" + "decreaseFontSize": "تصغير حجم الخط", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "تحميل الملف", @@ -161,7 +165,17 @@ "uploadMessage": "إختر الملفات التي تريد رفعها.", "optionalPassword": "كلمة مرور إختيارية", "resolution": "الدقة", - "discardEditorChanges": "هل تريد بالتأكيد إلغاء التغييرات؟" + "discardEditorChanges": "هل تريد بالتأكيد إلغاء التغييرات؟", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "الصور", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index db4ece315a..582c1059e3 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -48,7 +48,11 @@ "saveChanges": "Запиши промените", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Свали файл", @@ -161,7 +165,17 @@ "uploadMessage": "Изберете опция за качване.", "optionalPassword": "Опционална парола", "resolution": "Резолюция", - "discardEditorChanges": "Сигурни ли сте, че искате да откажете направените промени?" + "discardEditorChanges": "Сигурни ли сте, че искате да откажете направените промени?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index da6dfcc99a..c9e64b0f2d 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descarregar fitxer", @@ -161,7 +165,17 @@ "uploadMessage": "Seleccioneu una opció per pujar.", "optionalPassword": "Contrasenya opcional", "resolution": "Resolució", - "discardEditorChanges": "Esteu segur que voleu descartar els canvis que heu fet?" + "discardEditorChanges": "Esteu segur que voleu descartar els canvis que heu fet?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imatges", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 560e015c91..5d08768ac6 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Stáhnout soubor", @@ -161,7 +165,17 @@ "uploadMessage": "Vyberte možnost pro nahrání.", "optionalPassword": "Volitelné heslo", "resolution": "Rozlišení", - "discardEditorChanges": "Opravdu chcete zrušit provedené změny?" + "discardEditorChanges": "Opravdu chcete zrušit provedené změny?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index d7519c8bb3..bacaf0fa96 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -48,7 +48,11 @@ "saveChanges": "Änderungen speichern", "editAsText": "Als Text bearbeiten", "increaseFontSize": "Schrift vergrößern", - "decreaseFontSize": "Schrift verkleinern" + "decreaseFontSize": "Schrift verkleinern", + "overrideAll": "Alle Dateien im Zielordner ersetzen", + "skipAll": "Alle in Konflikt stehenden Dateien überspringen", + "renameAll": "Alle Dateien umbenennen (Kopie erstellen)", + "singleDecision": "Bei jeder Datei mit Konflikt entscheiden" }, "download": { "downloadFile": "Datei herunterladen", @@ -161,7 +165,17 @@ "uploadMessage": "Wähle eine Upload-Option.", "optionalPassword": "Optionales Passwort", "resolution": "Auflösung", - "discardEditorChanges": "Möchtest du deine Änderungen wirklich verwerfen?" + "discardEditorChanges": "Möchtest du deine Änderungen wirklich verwerfen?", + "replaceOrSkip": "Dateien ersetzen oder überspringen", + "resolveConflict": "Welche Dateien möchtest du behalten?", + "singleConflictResolve": "Wenn du beide Versionen auswählst, wird dem Namen der kopierten Datei eine Nummer hinzugefügt.", + "fastConflictResolve": "Der Zielordner enthält {count} Dateien mit demselben Namen.", + "uploadingFiles": "Dateien werden hochgeladen", + "filesInOrigin": "Dateien im Ursprungsordner", + "filesInDest": "Dateien im Zielordner", + "override": "Überschreiben", + "skip": "Überspringen", + "forbiddenError": "Zugriff verweigert" }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index ab0e0914f5..0ab2b58971 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Λήψη αρχείου", @@ -161,7 +165,17 @@ "uploadMessage": "Επιλέξτε μια επιλογή για τη μεταφόρτωση.", "optionalPassword": "Προαιρετικός κωδικός πρόσβασης", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Εικόνες", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 94b77c490c..9f06513755 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -48,7 +48,11 @@ "saveChanges": "Guardar cambios", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descargar fichero", @@ -161,7 +165,17 @@ "uploadMessage": "Seleccione una opción para subir.", "optionalPassword": "Contraseña opcional", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imágenes", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 53fef115dd..9f4504bd09 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "دانلود فایل", @@ -161,7 +165,17 @@ "uploadMessage": "یک گزینه برای آپلود انتخاب کنید.", "optionalPassword": "رمز عبور اختیاری", "resolution": "وضوح تصویر", - "discardEditorChanges": "آیا مطمئن هستید که می‌خواهید تغییراتی را که ایجاد کرده‌اید، لغو کنید؟" + "discardEditorChanges": "آیا مطمئن هستید که می‌خواهید تغییراتی را که ایجاد کرده‌اید، لغو کنید؟", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "تصاویر", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 3f9a36e889..5d39372c1c 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -48,7 +48,11 @@ "saveChanges": "Enregistrer changements", "editAsText": "Editer comme Texte", "increaseFontSize": "Augmenter taille police", - "decreaseFontSize": "Réduire taille police" + "decreaseFontSize": "Réduire taille police", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Télécharger le fichier", @@ -161,7 +165,17 @@ "uploadMessage": "Sélectionnez une option d'import.", "optionalPassword": "Mot de passe optionnel", "resolution": "Résolution", - "discardEditorChanges": "Êtes-vous sûr de vouloir annuler les modifications apportées ?" + "discardEditorChanges": "Êtes-vous sûr de vouloir annuler les modifications apportées ?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Images", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index a9aed87d45..dbb3263cc2 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "הורד קובץ", @@ -161,7 +165,17 @@ "uploadMessage": "בחר אפשרות העלאה.", "optionalPassword": "סיסמא אופציונלית", "resolution": "Resolution", - "discardEditorChanges": "האם אתה בטוח שברצונך לבטל את השינויים שביצעת?" + "discardEditorChanges": "האם אתה בטוח שברצונך לבטל את השינויים שביצעת?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "תמונות", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index df1fb6da7c..1cb4368f0d 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -48,7 +48,11 @@ "saveChanges": "Spremi promjene", "editAsText": "Uredi kao tekst", "increaseFontSize": "Povećaj veličinu fonta", - "decreaseFontSize": "Smanji veličinu fonta" + "decreaseFontSize": "Smanji veličinu fonta", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Preuzmi Datoteku", @@ -161,7 +165,17 @@ "uploadMessage": "Odaberite opciju za prijenos.", "optionalPassword": "Opcionalna lozinka", "resolution": "Rezolucija", - "discardEditorChanges": "Jeste li sigurni da želite odbaciti promjene koje ste napravili?" + "discardEditorChanges": "Jeste li sigurni da želite odbaciti promjene koje ste napravili?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Slike", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index 38732646ae..bdcb33ba00 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Fájl letöltése", @@ -161,7 +165,17 @@ "uploadMessage": "Válasszon egy feltöltési módot.", "optionalPassword": "Választható jelszó", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Képek", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 6b7d8abbd5..3825849218 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Sækja skjal", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Myndir", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index a17eb7461e..f3e7478abf 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Scarica file", @@ -161,7 +165,17 @@ "uploadMessage": "Seleziona un'opzione per il caricamento.", "optionalPassword": "Password opzionale", "resolution": "Risoluzione", - "discardEditorChanges": "Sei sicuro di voler scartare le modifiche apportate?" + "discardEditorChanges": "Sei sicuro di voler scartare le modifiche apportate?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Immagini", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index 853fe8d8ab..bf623ec224 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "ファイルのダウンロード", @@ -161,7 +165,17 @@ "uploadMessage": "アップロードするオプションを選択してください。", "optionalPassword": "パスワード(オプション)", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "画像", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index cd9252c2d6..7ff52dfc76 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -48,7 +48,11 @@ "saveChanges": "변경사항 저장", "editAsText": "텍스트로 편집", "increaseFontSize": "글꼴 크기 증가", - "decreaseFontSize": "글꼴 크기 감소" + "decreaseFontSize": "글꼴 크기 감소", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "파일 다운로드", @@ -161,7 +165,17 @@ "uploadMessage": "업로드 옵션을 선택하세요.", "optionalPassword": "비밀번호 (선택)", "resolution": "해상도", - "discardEditorChanges": "변경 사항을 취소하시겠습니까?" + "discardEditorChanges": "변경 사항을 취소하시겠습니까?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "이미지", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index 2d55756691..e852b17026 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -48,7 +48,11 @@ "saveChanges": "Saglabāt izmaiņas", "editAsText": "Rediģēt kā tekstu", "increaseFontSize": "Palieliniet fonta lielumu", - "decreaseFontSize": "Samaziniet fonta lielumu" + "decreaseFontSize": "Samaziniet fonta lielumu", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Lejupielādēt failu", @@ -161,7 +165,17 @@ "uploadMessage": "Atlasiet augšupielādes opciju.", "optionalPassword": "Izvēles parole", "resolution": "Izšķirtspēja", - "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?" + "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index 67fbdb8e0e..748614d600 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -48,7 +48,11 @@ "saveChanges": "Saglabāt izmaiņas", "editAsText": "Rediģēt kā tekstu", "increaseFontSize": "Palieliniet fonta lielumu", - "decreaseFontSize": "Samaziniet fonta lielumu" + "decreaseFontSize": "Samaziniet fonta lielumu", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Lejupielādēt failu", @@ -161,7 +165,17 @@ "uploadMessage": "Atlasiet augšupielādes opciju.", "optionalPassword": "Izvēles parole", "resolution": "Izšķirtspēja", - "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?" + "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index d9f76406c7..ee27329e97 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Bestand downloaden", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 4701af98c4..5d507a5535 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -48,7 +48,11 @@ "saveChanges": "Wijzigingen opslaan", "editAsText": "Als tekst bewerken", "increaseFontSize": "Lettertype vergroten", - "decreaseFontSize": "Lettertype verkleinen" + "decreaseFontSize": "Lettertype verkleinen", + "overrideAll": "Alle bestanden in doelmap vervangen", + "skipAll": "Alle conflicterende bestanden overslaan", + "renameAll": "Alle bestanden hernoemen (een kopie maken)", + "singleDecision": "Voor elk conflicterend bestand besluiten" }, "download": { "downloadFile": "Bestand downloaden", @@ -161,7 +165,17 @@ "uploadMessage": "Kies een optie bij de upload.", "optionalPassword": "Optioneel wachtwoord", "resolution": "Resolutie", - "discardEditorChanges": "Weet u zeker dat u de door u aangebrachte wijzigingen wilt weggooien?" + "discardEditorChanges": "Weet u zeker dat u de door u aangebrachte wijzigingen wilt weggooien?", + "replaceOrSkip": "Bestanden vervangen of overslaan", + "resolveConflict": "Welke bestanden wilt u behouden?", + "singleConflictResolve": "Als u beide versies selecteert, wordt er een nummer toegevoegd aan de naam van het gekopieerde bestand.", + "fastConflictResolve": "De doelmap daar bevat {count} bestanden met dezelfde naam.", + "uploadingFiles": "Bestanden uploaden", + "filesInOrigin": "Bestanden in origineel", + "filesInDest": "Bestanden in bestemming", + "override": "Overschrijven", + "skip": "Overslaan", + "forbiddenError": "Verboden Fout" }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index 4c9fb225ee..dd82ee85f8 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -48,7 +48,11 @@ "saveChanges": "Lagre Endringane ", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Nedlast filen", @@ -161,7 +165,17 @@ "uploadMessage": "Velg et alternativ for opplasting.", "optionalPassword": "Valgfritt passord", "resolution": "Oppløysning", - "discardEditorChanges": "Er du sikker på at du vil forkaste endringene du har gjort?" + "discardEditorChanges": "Er du sikker på at du vil forkaste endringene du har gjort?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Bilde", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 7956e22bc0..2a46352892 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -48,7 +48,11 @@ "saveChanges": "Zapisz zmiany", "editAsText": "Edytuj jako tekst", "increaseFontSize": "Zwiększ rozmiar czcionki", - "decreaseFontSize": "Zmniejsz rozmiar czcionki" + "decreaseFontSize": "Zmniejsz rozmiar czcionki", + "overrideAll": "Zastąp wszystkie pliki w folderze docelowym", + "skipAll": "Pomiń wszystkie pliki powodujące konflikty", + "renameAll": "Zmień nazwy wszystkich plików (utwórz kopię)", + "singleDecision": "Podejmij decyzję dla każdego pliku powodującego konflikt" }, "download": { "downloadFile": "Pobierz plik", @@ -161,7 +165,17 @@ "uploadMessage": "Wybierz opcję przesyłania.", "optionalPassword": "Opcjonalne hasło", "resolution": "Rozdzielczość", - "discardEditorChanges": "Czy na pewno chcesz odrzucić wprowadzone zmiany?" + "discardEditorChanges": "Czy na pewno chcesz odrzucić wprowadzone zmiany?", + "replaceOrSkip": "Zastąp lub pomiń pliki", + "resolveConflict": "Które pliki chcesz zachować?", + "singleConflictResolve": "Jeśli wybierzesz obie wersje, do nazwy kopiowanego pliku zostanie dodany numer.", + "fastConflictResolve": "W folderze docelowym liczba plików o tej samej nazwie to {count}.", + "uploadingFiles": "Wysyłanie plików", + "filesInOrigin": "Pliki w miejscu pochodzenia", + "filesInDest": "Pliki w miejscu docelowym", + "override": "Zastąp", + "skip": "Pomiń", + "forbiddenError": "Błąd zabronionego dostępu" }, "search": { "images": "Obrazy", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 5f36c337ea..9b9122c65b 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Baixar arquivo", @@ -161,7 +165,17 @@ "uploadMessage": "Selecione uma opção para enviar.", "optionalPassword": "Senha opcional", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index 0e50052255..8f5e852455 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descarregar ficheiro", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index 5495e884d8..b36436ea1b 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Descarcă fișier", @@ -161,7 +165,17 @@ "uploadMessage": "Select an option to upload.", "optionalPassword": "Optional password", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Imagini", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 05514e4a64..6cd70e1317 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -48,7 +48,11 @@ "saveChanges": "Сохранить", "editAsText": "Редактировать как текст", "increaseFontSize": "Увеличить размер шрифта", - "decreaseFontSize": "Уменьшить размер шрифта" + "decreaseFontSize": "Уменьшить размер шрифта", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Скачать файл", @@ -161,7 +165,17 @@ "uploadMessage": "Выберите вариант для загрузки.", "optionalPassword": "Необязательный пароль", "resolution": "Разрешение", - "discardEditorChanges": "Вы действительно желаете отменить ваши правки?" + "discardEditorChanges": "Вы действительно желаете отменить ваши правки?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 225a4f748e..82089d7ba2 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -48,7 +48,11 @@ "saveChanges": "Uložiť zmeny", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Stiahnuť súbor", @@ -161,7 +165,17 @@ "uploadMessage": "Zvoľte možnosť nahrávania.", "optionalPassword": "Voliteľné heslo", "resolution": "Rozlíšenie", - "discardEditorChanges": "Naozaj chcete zahodiť vykonané zmeny?" + "discardEditorChanges": "Naozaj chcete zahodiť vykonané zmeny?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index 5542c7159f..a7cf261a2d 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -48,7 +48,11 @@ "saveChanges": "Spara ändringar", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Ladda ner fil", @@ -161,7 +165,17 @@ "uploadMessage": "Välj ett alternativ att ladda upp.", "optionalPassword": "Valfritt lösenord", "resolution": "Upplösning", - "discardEditorChanges": "Är du säker på att du vill förkasta ändringarna du gjort?" + "discardEditorChanges": "Är du säker på att du vill förkasta ändringarna du gjort?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index 5ff72853e6..800c9e6493 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Dosyayı indir", @@ -161,7 +165,17 @@ "uploadMessage": "Yüklemek için bir seçenek belirleyin.", "optionalPassword": "İsteğe bağlı şifre", "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "discardEditorChanges": "Are you sure you wish to discard the changes you've made?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Görseller", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index ccaf9a41f0..d9aa3fb4f1 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Завантажити файл", @@ -161,7 +165,17 @@ "uploadMessage": "Виберіть варіант для вивантаження.", "optionalPassword": "Необов'язковий пароль", "resolution": "Розширення", - "discardEditorChanges": "Чи дійсно ви хочете скасувати поточні зміни?" + "discardEditorChanges": "Чи дійсно ви хочете скасувати поточні зміни?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Зображення", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index ef3aeab580..ab73c0cb27 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "Tải xuống tệp tin", @@ -161,7 +165,17 @@ "uploadMessage": "Chọn một tùy chọn để tải lên.", "optionalPassword": "Mật khẩu tùy chọn", "resolution": "Độ phân giải", - "discardEditorChanges": "Bạn có chắc chắn muốn hủy bỏ các thay đổi đã thực hiện không?" + "discardEditorChanges": "Bạn có chắc chắn muốn hủy bỏ các thay đổi đã thực hiện không?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "Hình ảnh", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 4a16eef972..816e1d8d82 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -48,7 +48,11 @@ "saveChanges": "保存更改", "editAsText": "以文本形式编辑", "increaseFontSize": "增大字体大小", - "decreaseFontSize": "减小字体大小" + "decreaseFontSize": "减小字体大小", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "下载文件", @@ -161,7 +165,17 @@ "uploadMessage": "选择上传选项。", "optionalPassword": "密码(选填,不填即无密码)", "resolution": "分辨率", - "discardEditorChanges": "你确定要放弃所做的更改吗?" + "discardEditorChanges": "你确定要放弃所做的更改吗?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "图像", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 61f264f38e..986b1d3b03 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -48,7 +48,11 @@ "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "decreaseFontSize": "Decrease font size", + "overrideAll": "Replace all files in destination folder", + "skipAll": "Skip all conflicting files", + "renameAll": "Rename all files (create a copy)", + "singleDecision": "Decide for each conflicting file" }, "download": { "downloadFile": "下載檔案", @@ -161,7 +165,17 @@ "uploadMessage": "選擇上傳項。", "optionalPassword": "密碼(選填,不填即無密碼)", "resolution": "解析度", - "discardEditorChanges": "你確定要放棄所做的變更嗎?" + "discardEditorChanges": "你確定要放棄所做的變更嗎?", + "replaceOrSkip": "Replace or skip files", + "resolveConflict": "Which files do you want to keep?", + "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", + "fastConflictResolve": "The destination folder there are {count} files with same name.", + "uploadingFiles": "Uploading files", + "filesInOrigin": "Files in origin", + "filesInDest": "Files in destination", + "override": "Overwrite", + "skip": "Skip", + "forbiddenError": "Forbidden Error" }, "search": { "images": "影像", From a40f80672d9875bfb891f54d8629ad12bfeaa886 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:44:31 +0100 Subject: [PATCH 10/55] chore(deps): update all non-major dependencies (#5791) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 527 +++++++++++++++++++++++++++------------- go.mod | 2 +- go.sum | 4 +- 4 files changed, 359 insertions(+), 176 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index e98566b976..6f12769a7d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,5 +72,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.30.1+sha512.3590e550d5384caa39bd5c7c739f72270234b2f6059e13018f975c313b1eb9fefcc09714048765d4d9efe961382c312e624572c0420762bdc5d5940cdf9be73a" + "packageManager": "pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 7ec45c7af3..8107bb98a8 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@chenfengyuan/vue-number-input': specifier: ^2.0.1 - version: 2.0.1(vue@3.5.28(typescript@5.9.3)) + version: 2.0.1(vue@3.5.29(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.2.1(vue@3.5.28(typescript@5.9.3)) + version: 14.2.1(vue@3.5.29(typescript@5.9.3)) '@vueuse/integrations': specifier: ^14.0.0 - version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3)) + version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.29(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 @@ -58,13 +58,13 @@ importers: version: 8.0.1 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) pretty-bytes: specifier: ^7.1.0 version: 7.1.0 qrcode.vue: specifier: ^3.6.0 - version: 3.8.0(vue@3.5.28(typescript@5.9.3)) + version: 3.8.0(vue@3.5.29(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -79,13 +79,13 @@ importers: version: 0.2.30 videojs-mobile-ui: specifier: ^1.1.1 - version: 1.2.1(video.js@8.23.7) + version: 1.2.2(video.js@8.23.7) vue: specifier: ^3.5.17 - version: 3.5.28(typescript@5.9.3) + version: 3.5.29(typescript@5.9.3) vue-i18n: specifier: ^11.1.10 - version: 11.2.8(vue@3.5.28(typescript@5.9.3)) + version: 11.2.8(vue@3.5.29(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 @@ -94,14 +94,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)) + version: 2.0.0-rc.5(vue@3.5.29(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -110,40 +110,40 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.10.13 + version: 24.11.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) + version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.1)(prettier@3.8.1) + version: 10.2.0(eslint@10.0.2)(prettier@3.8.1) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 - version: 0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + version: 0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 - version: 10.4.24(postcss@8.5.6) + version: 10.4.27(postcss@8.5.6) eslint: specifier: ^10.0.0 - version: 10.0.1 + version: 10.0.2 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.1) + version: 10.1.8(eslint@10.0.2) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) + version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) postcss: specifier: ^8.5.6 version: 8.5.6 @@ -158,7 +158,7 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.4.0(rollup@4.57.1) @@ -1288,8 +1288,8 @@ packages: '@types/lodash@4.17.23': resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} - '@types/node@24.10.13': - resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} + '@types/node@24.11.0': + resolution: {integrity: sha512-fPxQqz4VTgPI/IQ+lj9r0h+fDR66bzoeMGHp8ASee+32OSGIkeASsoZuJixsQoVef1QJbeubcPBxKk22QVoWdw==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1305,6 +1305,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.56.1': + resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.56.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.56.0': resolution: {integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1318,16 +1326,32 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.56.1': + resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.56.0': resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.56.1': + resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.56.0': resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.56.1': + resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.56.0': resolution: {integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1335,16 +1359,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.56.1': + resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@8.56.0': resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.56.1': + resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.56.0': resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.56.1': + resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.56.0': resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1352,10 +1393,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.56.1': + resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.56.0': resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.56.1': + resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@videojs/http-streaming@3.17.4': resolution: {integrity: sha512-XAvdG2dolBuV2Fx8bu1kjmQ2D4TonGzZH68Pgv/O9xMSFWdZtITSMFismeQLEAtMmGwze8qNJp3RgV+jStrJqg==} engines: {node: '>=8', npm: '>=5'} @@ -1404,15 +1456,27 @@ packages: '@vue/compiler-core@3.5.28': resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} + '@vue/compiler-core@3.5.29': + resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + '@vue/compiler-dom@3.5.28': resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} + '@vue/compiler-dom@3.5.29': + resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + '@vue/compiler-sfc@3.5.28': resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} + '@vue/compiler-sfc@3.5.29': + resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==} + '@vue/compiler-ssr@3.5.28': resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} + '@vue/compiler-ssr@3.5.29': + resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==} + '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -1454,23 +1518,26 @@ packages: '@vue/language-core@3.2.5': resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} - '@vue/reactivity@3.5.28': - resolution: {integrity: sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==} + '@vue/reactivity@3.5.29': + resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} - '@vue/runtime-core@3.5.28': - resolution: {integrity: sha512-POVHTdbgnrBBIpnbYU4y7pOMNlPn2QVxVzkvEA2pEgvzbelQq4ZOUxbp2oiyo+BOtiYlm8Q44wShHJoBvDPAjQ==} + '@vue/runtime-core@3.5.29': + resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==} - '@vue/runtime-dom@3.5.28': - resolution: {integrity: sha512-4SXxSF8SXYMuhAIkT+eBRqOkWEfPu6nhccrzrkioA6l0boiq7sp18HCOov9qWJA5HML61kW8p/cB4MmBiG9dSA==} + '@vue/runtime-dom@3.5.29': + resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==} - '@vue/server-renderer@3.5.28': - resolution: {integrity: sha512-pf+5ECKGj8fX95bNincbzJ6yp6nyzuLDhYZCeFxUNp8EBrQpPpQaLX3nNCp49+UbgbPun3CeVE+5CXVV1Xydfg==} + '@vue/server-renderer@3.5.29': + resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==} peerDependencies: - vue: 3.5.28 + vue: 3.5.29 '@vue/shared@3.5.28': resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} + '@vue/shared@3.5.29': + resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + '@vue/tsconfig@0.8.1': resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} peerDependencies: @@ -1581,8 +1648,8 @@ packages: resolution: {integrity: sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==} engines: {node: '>=20.19.0'} - autoprefixer@10.4.24: - resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} + autoprefixer@10.4.27: + resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -1611,9 +1678,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@4.0.3: - resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==} - engines: {node: 20 || >=22} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} @@ -1628,9 +1695,9 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - brace-expansion@5.0.2: - resolution: {integrity: sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==} - engines: {node: 20 || >=22} + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1654,6 +1721,9 @@ packages: caniuse-lite@1.0.30001769: resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + caniuse-lite@1.0.30001774: + resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} + chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} @@ -1823,8 +1893,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.1: - resolution: {integrity: sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==} + eslint@10.0.2: + resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2161,8 +2231,8 @@ packages: min-document@2.19.2: resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} - minimatch@10.2.2: - resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} minimatch@9.0.5: @@ -2569,8 +2639,8 @@ packages: videojs-hotkeys@0.2.30: resolution: {integrity: sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q==} - videojs-mobile-ui@1.2.1: - resolution: {integrity: sha512-XlATK+ptFbynuZLFkTE1lJBXD21h4yFD4YFxrBweCnmbdja0+aHJduGZf0i3b6I/KquRX7S+gra2S5ZCdgE74A==} + videojs-mobile-ui@1.2.2: + resolution: {integrity: sha512-XPGgfQac4UhCRK4EJdJ6ODrQwj+ui0oGWzi+g5GFoIdzh4NcCk8PxwhvraSId6lSmMSOhazrrxY9Y/p30OKkjQ==} engines: {node: '>=14', npm: '>=6'} peerDependencies: video.js: ^8 @@ -2668,8 +2738,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.28: - resolution: {integrity: sha512-BRdrNfeoccSoIZeIhyPBfvWSLFP4q8J3u8Ju8Ug5vu3LdD+yTM13Sg4sKtljxozbnuMu1NB1X5HBHRYUzFocKg==} + vue@3.5.29: + resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3364,9 +3434,9 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.28(typescript@5.9.3))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.29(typescript@5.9.3))': dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) '@esbuild/aix-ppc64@0.25.12': optional: true @@ -3524,9 +3594,9 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2)': dependencies: - eslint: 10.0.1 + eslint: 10.0.2 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3535,7 +3605,7 @@ snapshots: dependencies: '@eslint/object-schema': 3.0.2 debug: 4.4.3 - minimatch: 10.2.2 + minimatch: 10.2.4 transitivePeerDependencies: - supports-color @@ -3565,7 +3635,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 '@intlify/shared': 11.2.8 @@ -3577,7 +3647,7 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.2 optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) + vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) '@intlify/core-base@11.2.8': dependencies: @@ -3591,12 +3661,12 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.28)(eslint@10.0.1)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3))) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3))) '@intlify/shared': 11.2.8 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) @@ -3605,9 +3675,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) + vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -3615,14 +3685,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.28)(vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': dependencies: '@babel/parser': 7.29.0 optionalDependencies: '@intlify/shared': 11.2.8 - '@vue/compiler-dom': 3.5.28 - vue: 3.5.28(typescript@5.9.3) - vue-i18n: 11.2.8(vue@3.5.28(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.29 + vue: 3.5.29(typescript@5.9.3) + vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -3765,7 +3835,7 @@ snapshots: '@types/lodash@4.17.23': {} - '@types/node@24.10.13': + '@types/node@24.11.0': dependencies: undici-types: 7.16.0 @@ -3774,15 +3844,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 10.0.1 + eslint: 10.0.2 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3790,14 +3860,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 + eslint: 10.0.2 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/types': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 - eslint: 10.0.1 + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3811,22 +3897,52 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.56.0': dependencies: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 + '@typescript-eslint/scope-manager@8.56.1': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.56.0(eslint@10.0.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.1 + eslint: 10.0.2 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + debug: 4.4.3 + eslint: 10.0.2 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -3834,6 +3950,8 @@ snapshots: '@typescript-eslint/types@8.56.0': {} + '@typescript-eslint/types@8.56.1': {} + '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.56.0(typescript@5.9.3) @@ -3849,13 +3967,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@10.0.1)(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 + debug: 4.4.3 + minimatch: 10.2.4 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.56.0(eslint@10.0.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/types': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - eslint: 10.0.1 + eslint: 10.0.2 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3865,6 +4009,11 @@ snapshots: '@typescript-eslint/types': 8.56.0 eslint-visitor-keys: 5.0.1 + '@typescript-eslint/visitor-keys@8.56.1': + dependencies: + '@typescript-eslint/types': 8.56.1 + eslint-visitor-keys: 5.0.1 + '@videojs/http-streaming@3.17.4(video.js@8.23.7)': dependencies: '@babel/runtime': 7.28.6 @@ -3887,7 +4036,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) @@ -3902,15 +4051,15 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.28(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2) - vue: 3.5.28(typescript@5.9.3) + vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + vue: 3.5.29(typescript@5.9.3) '@volar/language-core@2.4.28': dependencies: @@ -3924,7 +4073,7 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.28(typescript@5.9.3))': + '@vue-macros/common@3.1.2(vue@3.5.29(typescript@5.9.3))': dependencies: '@vue/compiler-sfc': 3.5.28 ast-kit: 2.2.0 @@ -3932,7 +4081,7 @@ snapshots: magic-string-ast: 1.0.3 unplugin-utils: 0.3.1 optionalDependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) '@vue/compiler-core@3.5.28': dependencies: @@ -3942,11 +4091,24 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 + '@vue/compiler-core@3.5.29': + dependencies: + '@babel/parser': 7.29.0 + '@vue/shared': 3.5.29 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + '@vue/compiler-dom@3.5.28': dependencies: '@vue/compiler-core': 3.5.28 '@vue/shared': 3.5.28 + '@vue/compiler-dom@3.5.29': + dependencies: + '@vue/compiler-core': 3.5.29 + '@vue/shared': 3.5.29 + '@vue/compiler-sfc@3.5.28': dependencies: '@babel/parser': 7.29.0 @@ -3959,11 +4121,28 @@ snapshots: postcss: 8.5.6 source-map-js: 1.2.1 + '@vue/compiler-sfc@3.5.29': + dependencies: + '@babel/parser': 7.29.0 + '@vue/compiler-core': 3.5.29 + '@vue/compiler-dom': 3.5.29 + '@vue/compiler-ssr': 3.5.29 + '@vue/shared': 3.5.29 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 + '@vue/compiler-ssr@3.5.28': dependencies: '@vue/compiler-dom': 3.5.28 '@vue/shared': 3.5.28 + '@vue/compiler-ssr@3.5.29': + dependencies: + '@vue/compiler-dom': 3.5.29 + '@vue/shared': 3.5.29 + '@vue/devtools-api@6.6.4': {} '@vue/devtools-api@7.7.9': @@ -4002,23 +4181,23 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.1)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.0.2)(prettier@3.8.1)': dependencies: - eslint: 10.0.1 - eslint-config-prettier: 10.1.8(eslint@10.0.1) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1) + eslint: 10.0.2 + eslint-config-prettier: 10.1.8(eslint@10.0.2) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1) prettier: 3.8.1 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)))(eslint@10.0.1)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint: 10.0.1 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + eslint: 10.0.2 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) fast-glob: 3.3.3 - typescript-eslint: 8.56.0(eslint@10.0.1)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.0.1) + typescript-eslint: 8.56.0(eslint@10.0.2)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.0.2) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4034,56 +4213,58 @@ snapshots: path-browserify: 1.0.1 picomatch: 4.0.3 - '@vue/reactivity@3.5.28': + '@vue/reactivity@3.5.29': dependencies: - '@vue/shared': 3.5.28 + '@vue/shared': 3.5.29 - '@vue/runtime-core@3.5.28': + '@vue/runtime-core@3.5.29': dependencies: - '@vue/reactivity': 3.5.28 - '@vue/shared': 3.5.28 + '@vue/reactivity': 3.5.29 + '@vue/shared': 3.5.29 - '@vue/runtime-dom@3.5.28': + '@vue/runtime-dom@3.5.29': dependencies: - '@vue/reactivity': 3.5.28 - '@vue/runtime-core': 3.5.28 - '@vue/shared': 3.5.28 + '@vue/reactivity': 3.5.29 + '@vue/runtime-core': 3.5.29 + '@vue/shared': 3.5.29 csstype: 3.2.3 - '@vue/server-renderer@3.5.28(vue@3.5.28(typescript@5.9.3))': + '@vue/server-renderer@3.5.29(vue@3.5.29(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.28 - '@vue/shared': 3.5.28 - vue: 3.5.28(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.29 + '@vue/shared': 3.5.29 + vue: 3.5.29(typescript@5.9.3) '@vue/shared@3.5.28': {} - '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3))': + '@vue/shared@3.5.29': {} + + '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) - '@vueuse/core@14.2.1(vue@3.5.28(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.29(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) - vue: 3.5.28(typescript@5.9.3) + '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) + vue: 3.5.29(typescript@5.9.3) - '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.28(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.29(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.2.1(vue@3.5.28(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.28(typescript@5.9.3)) - vue: 3.5.28(typescript@5.9.3) + '@vueuse/core': 14.2.1(vue@3.5.29(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) + vue: 3.5.29(typescript@5.9.3) optionalDependencies: focus-trap: 8.0.0 jwt-decode: 4.0.0 '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@14.2.1(vue@3.5.28(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.29(typescript@5.9.3))': dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4125,10 +4306,10 @@ snapshots: '@babel/parser': 7.29.0 ast-kit: 2.2.0 - autoprefixer@10.4.24(postcss@8.5.6): + autoprefixer@10.4.27(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001769 + caniuse-lite: 1.0.30001774 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -4168,7 +4349,7 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@4.0.3: {} + balanced-match@4.0.4: {} baseline-browser-mapping@2.9.19: {} @@ -4180,9 +4361,9 @@ snapshots: dependencies: balanced-match: 1.0.2 - brace-expansion@5.0.2: + brace-expansion@5.0.4: dependencies: - balanced-match: 4.0.3 + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -4205,6 +4386,8 @@ snapshots: caniuse-lite@1.0.30001769: {} + caniuse-lite@1.0.30001774: {} + chokidar@5.0.0: dependencies: readdirp: 5.0.0 @@ -4373,31 +4556,31 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.0.1): + eslint-config-prettier@10.1.8(eslint@10.0.2): dependencies: - eslint: 10.0.1 + eslint: 10.0.2 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.1))(eslint@10.0.1)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1): dependencies: - eslint: 10.0.1 + eslint: 10.0.2 prettier: 3.8.1 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.0.1) + eslint-config-prettier: 10.1.8(eslint@10.0.2) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(vue-eslint-parser@10.4.0(eslint@10.0.1)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) - eslint: 10.0.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + eslint: 10.0.2 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 semver: 7.7.4 - vue-eslint-parser: 10.4.0(eslint@10.0.1) + vue-eslint-parser: 10.4.0(eslint@10.0.2) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) eslint-scope@9.1.1: dependencies: @@ -4410,9 +4593,9 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.1: + eslint@10.0.2: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.2 '@eslint/config-helpers': 0.5.2 @@ -4439,7 +4622,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.2 + minimatch: 10.2.4 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: @@ -4743,9 +4926,9 @@ snapshots: dependencies: dom-walk: 0.1.2 - minimatch@10.2.2: + minimatch@10.2.4: dependencies: - brace-expansion: 5.0.2 + brace-expansion: 5.0.4 minimatch@9.0.5: dependencies: @@ -4831,10 +5014,10 @@ snapshots: picomatch@4.0.3: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)): + pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.9 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -4889,9 +5072,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.8.0(vue@3.5.28(typescript@5.9.3)): + qrcode.vue@3.8.0(vue@3.5.29(typescript@5.9.3)): dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) quansync@0.2.11: {} @@ -5069,13 +5252,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.56.0(eslint@10.0.1)(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.0.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.1)(typescript@5.9.3))(eslint@10.0.1)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.1)(typescript@5.9.3) - eslint: 10.0.1 + '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + eslint: 10.0.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5160,7 +5343,7 @@ snapshots: videojs-hotkeys@0.2.30: {} - videojs-mobile-ui@1.2.1(video.js@8.23.7): + videojs-mobile-ui@1.2.2(video.js@8.23.7): dependencies: global: 4.4.0 video.js: 8.23.7 @@ -5176,7 +5359,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.10.13)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -5185,17 +5368,17 @@ snapshots: rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 24.11.0 fsevents: 2.3.3 terser: 5.46.0 yaml: 2.8.2 vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.0.1): + vue-eslint-parser@10.4.0(eslint@10.0.2): dependencies: debug: 4.4.3 - eslint: 10.0.1 + eslint: 10.0.2 eslint-scope: 9.1.1 eslint-visitor-keys: 5.0.1 espree: 11.1.1 @@ -5204,12 +5387,12 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.2.8(vue@3.5.28(typescript@5.9.3)): + vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)): dependencies: '@intlify/core-base': 11.2.8 '@intlify/shared': 11.2.8 '@vue/devtools-api': 6.6.4 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) vue-lazyload@3.0.0: {} @@ -5217,10 +5400,10 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.3(@vue/compiler-sfc@3.5.28)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)))(vue@3.5.28(typescript@5.9.3)): + vue-router@5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.1 - '@vue-macros/common': 3.1.2(vue@3.5.28(typescript@5.9.3)) + '@vue-macros/common': 3.1.2(vue@3.5.29(typescript@5.9.3)) '@vue/devtools-api': 8.0.6 ast-walker-scope: 0.8.3 chokidar: 5.0.0 @@ -5235,15 +5418,15 @@ snapshots: tinyglobby: 0.2.15 unplugin: 3.0.0 unplugin-utils: 0.3.1 - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) yaml: 2.8.2 optionalDependencies: - '@vue/compiler-sfc': 3.5.28 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.28(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.29 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) - vue-toastification@2.0.0-rc.5(vue@3.5.28(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.29(typescript@5.9.3)): dependencies: - vue: 3.5.28(typescript@5.9.3) + vue: 3.5.29(typescript@5.9.3) vue-tsc@3.2.5(typescript@5.9.3): dependencies: @@ -5251,13 +5434,13 @@ snapshots: '@vue/language-core': 3.2.5 typescript: 5.9.3 - vue@3.5.28(typescript@5.9.3): + vue@3.5.29(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.28 - '@vue/compiler-sfc': 3.5.28 - '@vue/runtime-dom': 3.5.28 - '@vue/server-renderer': 3.5.28(vue@3.5.28(typescript@5.9.3)) - '@vue/shared': 3.5.28 + '@vue/compiler-dom': 3.5.29 + '@vue/compiler-sfc': 3.5.29 + '@vue/runtime-dom': 3.5.29 + '@vue/server-renderer': 3.5.29(vue@3.5.29(typescript@5.9.3)) + '@vue/shared': 3.5.29 optionalDependencies: typescript: 5.9.3 diff --git a/go.mod b/go.mod index 13fb76c920..baa22c355e 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.25 require ( github.com/asdine/storm/v3 v3.2.1 - github.com/asticode/go-astisub v0.38.0 + github.com/asticode/go-astisub v0.39.0 github.com/disintegration/imaging v1.6.2 github.com/dsoprea/go-exif/v3 v3.0.1 github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 diff --git a/go.sum b/go.sum index 8a83f6ec41..356177314f 100644 --- a/go.sum +++ b/go.sum @@ -31,8 +31,8 @@ github.com/asticode/go-astikit v0.20.0/go.mod h1:h4ly7idim1tNhaVkdVBeXQZEE3L0xbl github.com/asticode/go-astikit v0.30.0/go.mod h1:h4ly7idim1tNhaVkdVBeXQZEE3L0xblP7fCWbgwipF0= github.com/asticode/go-astikit v0.56.0 h1:DmD2p7YnvxiPdF0h+dRmos3bsejNEXbycENsY5JfBqw= github.com/asticode/go-astikit v0.56.0/go.mod h1:fV43j20UZYfXzP9oBn33udkvCvDvCDhzjVqoLFuuYZE= -github.com/asticode/go-astisub v0.38.0 h1:Qh3IO8Cotn0wwok5maid7xqsIJTwn2DtABT1UajKJaI= -github.com/asticode/go-astisub v0.38.0/go.mod h1:WTkuSzFB+Bp7wezuSf2Oxulj5A8zu2zLRVFf6bIFQK8= +github.com/asticode/go-astisub v0.39.0 h1:j1/rFLRUH0TT2CW9YCtBek9lRdMp96oxaZm6vbgE96M= +github.com/asticode/go-astisub v0.39.0/go.mod h1:WTkuSzFB+Bp7wezuSf2Oxulj5A8zu2zLRVFf6bIFQK8= github.com/asticode/go-astits v1.8.0/go.mod h1:DkOWmBNQpnr9mv24KfZjq4JawCFX1FCqjLVGvO0DygQ= github.com/asticode/go-astits v1.13.0 h1:XOgkaadfZODnyZRR5Y0/DWkA9vrkLLPLeeOvDwfKZ1c= github.com/asticode/go-astits v1.13.0/go.mod h1:QSHmknZ51pf6KJdHKZHJTLlMegIrhega3LPWz3ND/iI= From 148b3c59422401ff00f255ae3044282d7a42192b Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 28 Feb 2026 10:54:35 +0100 Subject: [PATCH 11/55] chore(release): 2.61.0 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a55edba6c..27de0fe03e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.61.0](https://github.com/filebrowser/filebrowser/compare/v2.60.0...v2.61.0) (2026-02-28) + + +### Features + +* improved conflict resolution when uploading/copying/moving files ([#5765](https://github.com/filebrowser/filebrowser/issues/5765)) ([aa80909](https://github.com/filebrowser/filebrowser/commit/aa809096eb35fdfbdeb6784b1ebfe2ca1e42f52b)) + + +### Bug Fixes + +* correctly clean path ([31194fb](https://github.com/filebrowser/filebrowser/commit/31194fb57a5b92e7155219d7ec7273028fcb2e83)) + ## [2.60.0](https://github.com/filebrowser/filebrowser/compare/v2.59.0...v2.60.0) (2026-02-21) From 7ed1425115be602c2b23236c410098ea2d74b42f Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 4 Mar 2026 10:04:22 +0100 Subject: [PATCH 12/55] fix: check for correct permission in TUS Delete --- http/tus_handlers.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http/tus_handlers.go b/http/tus_handlers.go index b659d47965..68931f5d4f 100644 --- a/http/tus_handlers.go +++ b/http/tus_handlers.go @@ -240,7 +240,7 @@ func tusPatchHandler(cache UploadCache) handleFunc { func tusDeleteHandler(cache UploadCache) handleFunc { return withUser(func(_ http.ResponseWriter, r *http.Request, d *data) (int, error) { - if r.URL.Path == "/" || !d.user.Perm.Create { + if r.URL.Path == "/" || !d.user.Perm.Delete { return http.StatusForbidden, nil } From c950a57df8a513029edb6954e8845b9fc0134b62 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 4 Mar 2026 10:04:51 +0100 Subject: [PATCH 13/55] chore(release): 2.61.1 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27de0fe03e..8b5c2f27bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.61.1](https://github.com/filebrowser/filebrowser/compare/v2.61.0...v2.61.1) (2026-03-04) + + +### Bug Fixes + +* check for correct permission in TUS Delete ([7ed1425](https://github.com/filebrowser/filebrowser/commit/7ed1425115be602c2b23236c410098ea2d74b42f)) + ## [2.61.0](https://github.com/filebrowser/filebrowser/compare/v2.60.0...v2.61.0) (2026-02-28) From 4af3f85e64e795e8ae1d87d4caee8185028294ac Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 6 Mar 2026 09:26:13 -0500 Subject: [PATCH 14/55] fix(csv-viewer): add support for missing text encodings in dropdown list (#5795) --- frontend/src/components/DropdownModal.vue | 142 ++++++++++++++++ frontend/src/components/files/CsvViewer.vue | 107 ++++++++++-- frontend/src/types/global.d.ts | 4 + frontend/src/utils/encodings.ts | 173 ++++++++++++++++++++ frontend/src/utils/index.ts | 22 +++ frontend/src/views/files/Preview.vue | 6 +- http/resource.go | 2 +- 7 files changed, 439 insertions(+), 17 deletions(-) create mode 100644 frontend/src/components/DropdownModal.vue diff --git a/frontend/src/components/DropdownModal.vue b/frontend/src/components/DropdownModal.vue new file mode 100644 index 0000000000..66780120a9 --- /dev/null +++ b/frontend/src/components/DropdownModal.vue @@ -0,0 +1,142 @@ + + + + + + + diff --git a/frontend/src/components/files/CsvViewer.vue b/frontend/src/components/files/CsvViewer.vue index 38c2de5922..9e1904afd8 100644 --- a/frontend/src/components/files/CsvViewer.vue +++ b/frontend/src/components/files/CsvViewer.vue @@ -21,19 +21,37 @@
- +
+ {{ selectedEncoding }} +
+ +
@@ -74,10 +92,11 @@ diff --git a/frontend/src/types/global.d.ts b/frontend/src/types/global.d.ts index 5475c908fd..287388f0ec 100644 --- a/frontend/src/types/global.d.ts +++ b/frontend/src/types/global.d.ts @@ -10,4 +10,8 @@ declare global { // TODO: no idea what the exact type is __vue__: any; } + + interface HTMLElement { + clickOutsideEvent?: (event: Event) => void; + } } diff --git a/frontend/src/utils/encodings.ts b/frontend/src/utils/encodings.ts index 80f1e21975..9be1017a4e 100644 --- a/frontend/src/utils/encodings.ts +++ b/frontend/src/utils/encodings.ts @@ -1,4 +1,5 @@ export const availableEncodings = [ + // encodings "utf-8", "ibm866", "iso-8859-2", @@ -37,6 +38,178 @@ export const availableEncodings = [ "euc-kr", "utf-16be", "utf-16le", + // label encodings + "unicode-1-1-utf-8", + "utf8", + "866", + "cp866", + "csibm866", + "csisolatin2", + "iso-ir-101", + "iso8859-2", + "iso88592", + "iso_8859-2", + "iso_8859-2:1987", + "l2", + "latin2", + "csisolatin3", + "iso-ir-109", + "iso8859-3", + "iso88593", + "iso_8859-3", + "iso_8859-3:1988", + "l3", + "latin3", + "csisolatin4", + "iso-ir-110", + "iso8859-4", + "iso88594", + "iso_8859-4", + "iso_8859-4:1988", + "l4", + "latin4", + "csisolatincyrillic", + "cyrillic", + "iso-ir-144", + "iso88595", + "iso_8859-5", + "iso_8859-5:1988", + "arabic", + "asmo-708", + "csiso88596e", + "csiso88596i", + "csisolatinarabic", + "ecma-114", + "iso-8859-6-e", + "iso-8859-6-i", + "iso-ir-127", + "iso8859-6", + "iso88596", + "iso_8859-6", + "iso_8859-6:1987", + "csisolatingreek", + "ecma-118", + "elot_928", + "greek", + "greek8", + "iso-ir-126", + "iso8859-7", + "iso88597", + "iso_8859-7", + "iso_8859-7:1987", + "sun_eu_greek", + "csiso88598e", + "csisolatinhebrew", + "hebrew", + "iso-8859-8-e", + "iso-ir-138", + "iso8859-8", + "iso88598", + "iso_8859-8", + "iso_8859-8:1988", + "visual", + "csiso88598i", + "logical", + "csisolatin6", + "iso-ir-157", + "iso8859-10", + "iso885910", + "l6", + "latin6", + "iso8859-13", + "iso885913", + "iso8859-14", + "iso885914", + "csisolatin9", + "iso8859-15", + "iso885915", + "l9", + "latin9", + "cskoi8r", + "koi", + "koi8", + "koi8_r", + "csmacintosh", + "mac", + "x-mac-roman", + "dos-874", + "iso-8859-11", + "iso8859-11", + "iso885911", + "tis-620", + "cp1250", + "x-cp1250", + "cp1251", + "x-cp1251", + "ansi_x3.4-1968", + "ascii", + "cp1252", + "cp819", + "csisolatin1", + "ibm819", + "iso-8859-1", + "iso-ir-100", + "iso8859-1", + "iso88591", + "iso_8859-1", + "iso_8859-1:1987", + "l1", + "latin1", + "us-ascii", + "x-cp1252", + "cp1253", + "x-cp1253", + "cp1254", + "csisolatin5", + "iso-8859-9", + "iso-ir-148", + "iso8859-9", + "iso88599", + "iso_8859-9", + "iso_8859-9:1989", + "l5", + "latin5", + "x-cp1254", + "cp1255", + "x-cp1255", + "cp1256", + "x-cp1256", + "cp1257", + "x-cp1257", + "cp1258", + "x-cp1258", + "x-mac-ukrainian", + "chinese", + "csgb2312", + "csiso58gb231280", + "gb2312", + "gb_2312", + "gb_2312-80", + "iso-ir-58", + "x-gbk", + "big5-hkscs", + "cn-big5", + "csbig5", + "x-x-big5", + "cseucpkdfmtjapanese", + "x-euc-jp", + "csiso2022jp", + "csshiftjis", + "ms_kanji", + "shift-jis", + "sjis", + "windows-31j", + "x-sjis", + "cseuckr", + "csksc56011987", + "iso-ir-149", + "korean", + "ks_c_5601-1987", + "ks_c_5601-1989", + "ksc5601", + "ksc_5601", + "windows-949", + "utf-16", ]; export function decode(content: ArrayBuffer, encoding: string): string { diff --git a/frontend/src/utils/index.ts b/frontend/src/utils/index.ts index d7f0bd9b7f..faca153923 100644 --- a/frontend/src/utils/index.ts +++ b/frontend/src/utils/index.ts @@ -4,3 +4,25 @@ import { partial } from "filesize"; * Formats filesize as KiB/MiB/... */ export const filesize = partial({ base: 2 }); + +export const vClickOutside = { + created(el: HTMLElement, binding: any) { + el.clickOutsideEvent = (event: Event) => { + const target = event.target; + + if (target instanceof Node) { + if (!el.contains(target)) { + binding.value(event); + } + } + }; + + document.addEventListener("click", el.clickOutsideEvent); + }, + + unmounted(el: HTMLElement) { + if (el.clickOutsideEvent) { + document.removeEventListener("click", el.clickOutsideEvent); + } + }, +}; diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 9a67de2d7c..2a60e7df30 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -311,7 +311,11 @@ const isPdf = computed(() => fileStore.req?.extension.toLowerCase() == ".pdf"); const isEpub = computed( () => fileStore.req?.extension.toLowerCase() == ".epub" ); -const isCsv = computed(() => fileStore.req?.extension.toLowerCase() == ".csv"); +const isCsv = computed( + () => + fileStore.req?.extension.toLowerCase() == ".csv" && + fileStore.req.size <= CSV_MAX_SIZE +); const isResizeEnabled = computed(() => resizePreview); diff --git a/http/resource.go b/http/resource.go index 7066f35a63..f528473d95 100644 --- a/http/resource.go +++ b/http/resource.go @@ -43,7 +43,7 @@ var resourceGetHandler = withUser(func(w http.ResponseWriter, r *http.Request, d return renderJSON(w, r, file) } else if encoding == "true" { if file.Type != "text" { - return http.StatusUnsupportedMediaType, fmt.Errorf("file is not a text file") + return renderJSON(w, r, file) } f, err := d.user.Fs.Open(r.URL.Path) From 177c7cfcce36779e2c5ebaa4b59a055dd1e17648 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 6 Mar 2026 09:26:41 -0500 Subject: [PATCH 15/55] fix: validate current password with a modal (#5805) --- .../components/prompts/CurrentPassword.vue | 58 +++++++++++++++++ frontend/src/components/prompts/Prompts.vue | 2 + frontend/src/i18n/en.json | 4 +- frontend/src/views/settings/User.vue | 63 ++++++++++++------- 4 files changed, 102 insertions(+), 25 deletions(-) create mode 100644 frontend/src/components/prompts/CurrentPassword.vue diff --git a/frontend/src/components/prompts/CurrentPassword.vue b/frontend/src/components/prompts/CurrentPassword.vue new file mode 100644 index 0000000000..c97485f26a --- /dev/null +++ b/frontend/src/components/prompts/CurrentPassword.vue @@ -0,0 +1,58 @@ + + + diff --git a/frontend/src/components/prompts/Prompts.vue b/frontend/src/components/prompts/Prompts.vue index 791d3ca910..968e22f593 100644 --- a/frontend/src/components/prompts/Prompts.vue +++ b/frontend/src/components/prompts/Prompts.vue @@ -28,6 +28,7 @@ import ShareDelete from "./ShareDelete.vue"; import Upload from "./Upload.vue"; import DiscardEditorChanges from "./DiscardEditorChanges.vue"; import ResolveConflict from "./ResolveConflict.vue"; +import CurrentPassword from "./CurrentPassword.vue"; const layoutStore = useLayoutStore(); @@ -50,6 +51,7 @@ const components = new Map([ ["deleteUser", DeleteUser], ["discardEditorChanges", DiscardEditorChanges], ["resolve-conflict", ResolveConflict], + ["current-password", CurrentPassword], ]); const modal = computed(() => { diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 77d74d9f3f..dcbedcef2e 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Images", diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index 77786e2a99..b726d9ef0e 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -15,19 +15,6 @@ :isDefault="false" :isNew="isNew" /> - -

- - -

@@ -77,7 +64,6 @@ const error = ref(); const originalUser = ref(); const user = ref(); const createUserDir = ref(false); -const currentPassword = ref(""); const isCurrentPasswordRequired = ref(false); const $showError = inject("$showError")!; @@ -134,16 +120,30 @@ const fetchData = async () => { } }; -const deletePrompt = () => - layoutStore.showHover({ prompt: "deleteUser", confirm: deleteUser }); +const deletePrompt = () => { + if (isCurrentPasswordRequired.value) { + layoutStore.showHover({ + prompt: "current-password", + confirm: (event: Event, currentPassword: string) => { + event.preventDefault(); + layoutStore.closeHovers(); + deleteUser(currentPassword); + }, + }); + } else { + layoutStore.showHover({ + prompt: "deleteUser", + confirm: () => deleteUser(""), + }); + } +}; -const deleteUser = async (e: Event) => { - e.preventDefault(); +const deleteUser = async (currentPassword: string) => { if (!user.value) { return false; } try { - await api.remove(user.value.id, currentPassword.value); + await api.remove(user.value.id, currentPassword); router.push({ path: "/settings/users" }); $showSuccess(t("settings.userDeleted")); } catch (err) { @@ -157,8 +157,25 @@ const deleteUser = async (e: Event) => { return true; }; -const save = async (event: Event) => { +const save = (event: Event) => { event.preventDefault(); + if (isCurrentPasswordRequired.value) { + layoutStore.showHover({ + prompt: "current-password", + confirm: (event: Event, currentPassword: string) => { + event.preventDefault(); + layoutStore.closeHovers(); + send(currentPassword); + }, + }); + } else { + send(""); + } + + return true; +}; + +const send = async (currentPassword: string) => { if (!user.value) { return false; } @@ -170,11 +187,11 @@ const save = async (event: Event) => { ...user.value, }; - const loc = await api.create(newUser, currentPassword.value); + const loc = await api.create(newUser, currentPassword); router.push({ path: loc || "/settings/users" }); $showSuccess(t("settings.userCreated")); } else { - await api.update(user.value, ["all"], currentPassword.value); + await api.update(user.value, ["all"], currentPassword); if (user.value.id === authStore.user?.id) { authStore.updateUser(user.value); @@ -185,7 +202,5 @@ const save = async (event: Event) => { } catch (e: any) { $showError(e); } - - return true; }; From d7b00ce5f672b7ce0b26ce31abdfc74f8b00b939 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Fri, 6 Mar 2026 09:26:54 -0500 Subject: [PATCH 16/55] fix: avoid sending the same name in the file/folder rename modal (#5806) --- frontend/src/components/prompts/Rename.vue | 24 +++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/prompts/Rename.vue b/frontend/src/components/prompts/Rename.vue index f18ed7a089..4e1bb095bc 100644 --- a/frontend/src/components/prompts/Rename.vue +++ b/frontend/src/components/prompts/Rename.vue @@ -6,7 +6,7 @@

- {{ $t("prompts.renameMessage") }} {{ oldName() }}{{ oldName }}:

{{ $t("buttons.rename") }} @@ -56,7 +57,7 @@ export default { }; }, created() { - this.name = this.oldName(); + this.name = this.oldName; }, inject: ["$showError"], computed: { @@ -67,25 +68,28 @@ export default { "isListing", ]), ...mapWritableState(useFileStore, ["reload", "preselect"]), - }, - methods: { - ...mapActions(useLayoutStore, ["closeHovers"]), - cancel: function () { - this.closeHovers(); - }, - oldName: function () { + oldName() { if (!this.isListing) { return this.req.name; } if (this.selectedCount === 0 || this.selectedCount > 1) { // This shouldn't happen. - return; + return ""; } return this.req.items[this.selected[0]].name; }, + }, + methods: { + ...mapActions(useLayoutStore, ["closeHovers"]), + cancel: function () { + this.closeHovers(); + }, submit: async function () { + if (this.name === "" || this.name === this.oldName) { + return; + } let oldLink = ""; let newLink = ""; From 9f56826fb2dc03fba5073d633704f3cd708907ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 15:27:14 +0100 Subject: [PATCH 17/55] chore(deps): update all non-major dependencies (#5794) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 87 +++++++++++++++++++++-------------------- go.mod | 6 +-- go.sum | 12 +++--- 4 files changed, 54 insertions(+), 53 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 6f12769a7d..6e5796baed 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -58,7 +58,7 @@ "@vitejs/plugin-vue": "^6.0.1", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", - "@vue/tsconfig": "^0.8.1", + "@vue/tsconfig": "^0.9.0", "autoprefixer": "^10.4.21", "eslint": "^10.0.0", "eslint-config-prettier": "^10.1.5", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 8107bb98a8..bbdee7df01 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -28,7 +28,7 @@ importers: version: 1.11.19 dompurify: specifier: ^3.2.6 - version: 3.3.1 + version: 3.3.2 epubjs: specifier: ^0.3.93 version: 0.3.93 @@ -46,10 +46,10 @@ importers: version: 4.17.23 marked: specifier: ^17.0.0 - version: 17.0.3 + version: 17.0.4 marked-katex-extension: specifier: ^5.1.6 - version: 5.1.7(katex@0.16.28)(marked@17.0.3) + version: 5.1.7(katex@0.16.28)(marked@17.0.4) material-icons: specifier: ^1.13.14 version: 1.13.14 @@ -110,16 +110,16 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.11.0 + version: 24.12.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) + version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@10.0.2)(prettier@3.8.1) @@ -127,11 +127,11 @@ importers: specifier: ^14.6.0 version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3) '@vue/tsconfig': - specifier: ^0.8.1 - version: 0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + specifier: ^0.9.0 + version: 0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 - version: 10.4.27(postcss@8.5.6) + version: 10.4.27(postcss@8.5.8) eslint: specifier: ^10.0.0 version: 10.0.2 @@ -146,7 +146,7 @@ importers: version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) postcss: specifier: ^8.5.6 - version: 8.5.6 + version: 8.5.8 prettier: specifier: ^3.6.2 version: 3.8.1 @@ -158,10 +158,10 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + version: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 - version: 2.4.0(rollup@4.57.1) + version: 2.5.0(rollup@4.57.1) vue-tsc: specifier: ^3.1.3 version: 3.2.5(typescript@5.9.3) @@ -1288,8 +1288,8 @@ packages: '@types/lodash@4.17.23': resolution: {integrity: sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==} - '@types/node@24.11.0': - resolution: {integrity: sha512-fPxQqz4VTgPI/IQ+lj9r0h+fDR66bzoeMGHp8ASee+32OSGIkeASsoZuJixsQoVef1QJbeubcPBxKk22QVoWdw==} + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1538,8 +1538,8 @@ packages: '@vue/shared@3.5.29': resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} - '@vue/tsconfig@0.8.1': - resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} + '@vue/tsconfig@0.9.0': + resolution: {integrity: sha512-RP+v9Cpbsk1ZVXltCHHkYBr7+624x6gcijJXVjIcsYk7JXqvIpRtMwU2ARLvWDhmy9ffdFYxhsfJnPztADBohQ==} peerDependencies: typescript: 5.x vue: ^3.4.0 @@ -1800,8 +1800,9 @@ packages: dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - dompurify@3.3.1: - resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + dompurify@3.3.2: + resolution: {integrity: sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==} + engines: {node: '>=20'} electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} @@ -2205,8 +2206,8 @@ packages: katex: '>=0.16 <0.17' marked: '>=4 <18' - marked@17.0.3: - resolution: {integrity: sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==} + marked@17.0.4: + resolution: {integrity: sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==} engines: {node: '>= 20'} hasBin: true @@ -2358,8 +2359,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2648,8 +2649,8 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-plugin-compression2@2.4.0: - resolution: {integrity: sha512-8J4CBF1+dM1I06azba/eXJuJHinLF0Am7lUvRH8AZpu0otJoBaDEnxrIEr5iPZJSwH0AEglJGYCveh7pN52jCg==} + vite-plugin-compression2@2.5.0: + resolution: {integrity: sha512-bHxtBibPxxSn5eZSe0IAzvYucP/hg8Bz8ppjbH7lndU5kIHT+92qTkB4z9xWYfnyV0YHuir1SjOuyO0fzU4Vgg==} vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} @@ -3835,7 +3836,7 @@ snapshots: '@types/lodash@4.17.23': {} - '@types/node@24.11.0': + '@types/node@24.12.0': dependencies: undici-types: 7.16.0 @@ -4036,7 +4037,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) @@ -4051,14 +4052,14 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.29(typescript@5.9.3) '@volar/language-core@2.4.28': @@ -4118,7 +4119,7 @@ snapshots: '@vue/shared': 3.5.28 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.6 + postcss: 8.5.8 source-map-js: 1.2.1 '@vue/compiler-sfc@3.5.29': @@ -4130,7 +4131,7 @@ snapshots: '@vue/shared': 3.5.29 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.6 + postcss: 8.5.8 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.28': @@ -4239,7 +4240,7 @@ snapshots: '@vue/shared@3.5.29': {} - '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': + '@vue/tsconfig@0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 vue: 3.5.29(typescript@5.9.3) @@ -4306,13 +4307,13 @@ snapshots: '@babel/parser': 7.29.0 ast-kit: 2.2.0 - autoprefixer@10.4.27(postcss@8.5.6): + autoprefixer@10.4.27(postcss@8.5.8): dependencies: browserslist: 4.28.1 caniuse-lite: 1.0.30001774 fraction.js: 5.3.4 picocolors: 1.1.1 - postcss: 8.5.6 + postcss: 8.5.8 postcss-value-parser: 4.2.0 babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.29.0): @@ -4448,7 +4449,7 @@ snapshots: dom-walk@0.1.2: {} - dompurify@3.3.1: + dompurify@3.3.2: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -4902,12 +4903,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.3): + marked-katex-extension@5.1.7(katex@0.16.28)(marked@17.0.4): dependencies: katex: 0.16.28 - marked: 17.0.3 + marked: 17.0.4 - marked@17.0.3: {} + marked@17.0.4: {} marks-pane@1.0.9: {} @@ -5044,7 +5045,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.6: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -5352,23 +5353,23 @@ snapshots: dependencies: global: 4.4.0 - vite-plugin-compression2@2.4.0(rollup@4.57.1): + vite-plugin-compression2@2.5.0(rollup@4.57.1): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.57.1) tar-mini: 0.2.0 transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.11.0)(terser@5.46.0)(yaml@2.8.2): + vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - postcss: 8.5.6 + postcss: 8.5.8 rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.11.0 + '@types/node': 24.12.0 fsevents: 2.3.3 terser: 5.46.0 yaml: 2.8.2 diff --git a/go.mod b/go.mod index baa22c355e..cf34bdf122 100644 --- a/go.mod +++ b/go.mod @@ -17,8 +17,8 @@ require ( github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 github.com/redis/go-redis/v9 v9.18.0 - github.com/samber/lo v1.52.0 - github.com/shirou/gopsutil/v4 v4.26.1 + github.com/samber/lo v1.53.0 + github.com/shirou/gopsutil/v4 v4.26.2 github.com/spf13/afero v1.15.0 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 @@ -47,7 +47,7 @@ require ( github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect github.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect - github.com/ebitengine/purego v0.9.1 // indirect + github.com/ebitengine/purego v0.10.0 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-ole/go-ole v1.3.0 // indirect diff --git a/go.sum b/go.sum index 356177314f..459182b048 100644 --- a/go.sum +++ b/go.sum @@ -83,8 +83,8 @@ github.com/dsoprea/go-utility/v2 v2.0.0-20221003142440-7a1927d49d9d/go.mod h1:LV github.com/dsoprea/go-utility/v2 v2.0.0-20221003160719-7bc88537c05e/go.mod h1:VZ7cB0pTjm1ADBWhJUOHESu4ZYy9JN+ZPqjfiW09EPU= github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 h1:DilThiXje0z+3UQ5YjYiSRRzVdtamFpvBQXKwMglWqw= github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349/go.mod h1:4GC5sXji84i/p+irqghpPFZBF8tRN/Q7+700G0/DLe8= -github.com/ebitengine/purego v0.9.1 h1:a/k2f2HQU3Pi399RPW1MOaZyhKJL9w/xFpKAg4q1s0A= -github.com/ebitengine/purego v0.9.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= +github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= @@ -215,10 +215,10 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= -github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw= -github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= -github.com/shirou/gopsutil/v4 v4.26.1 h1:TOkEyriIXk2HX9d4isZJtbjXbEjf5qyKPAzbzY0JWSo= -github.com/shirou/gopsutil/v4 v4.26.1/go.mod h1:medLI9/UNAb0dOI9Q3/7yWSqKkj00u+1tgY8nvv41pc= +github.com/samber/lo v1.53.0 h1:t975lj2py4kJPQ6haz1QMgtId2gtmfktACxIXArw3HM= +github.com/samber/lo v1.53.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= +github.com/shirou/gopsutil/v4 v4.26.2 h1:X8i6sicvUFih4BmYIGT1m2wwgw2VG9YgrDTi7cIRGUI= +github.com/shirou/gopsutil/v4 v4.26.2/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/sorairolake/lzip-go v0.3.8 h1:j5Q2313INdTA80ureWYRhX+1K78mUXfMoPZCw/ivWik= github.com/sorairolake/lzip-go v0.3.8/go.mod h1:JcBqGMV0frlxwrsE9sMWXDjqn3EeVf0/54YPsw66qkU= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= From a7dc7bf88a727769d9aad0e6598525936c06992c Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 15:28:29 +0100 Subject: [PATCH 18/55] chore: update translations (#5796) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ko.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 7ff52dfc76..5bad2d5616 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -49,10 +49,10 @@ "editAsText": "텍스트로 편집", "increaseFontSize": "글꼴 크기 증가", "decreaseFontSize": "글꼴 크기 감소", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" + "overrideAll": "대상 폴더의 모든 파일을 대체", + "skipAll": "충돌하는 모든 파일을 건너뛰기", + "renameAll": "모든 파일의 이름 변경 (복사본 생성)", + "singleDecision": "충돌하는 각 파일을 확인" }, "download": { "downloadFile": "파일 다운로드", @@ -166,16 +166,16 @@ "optionalPassword": "비밀번호 (선택)", "resolution": "해상도", "discardEditorChanges": "변경 사항을 취소하시겠습니까?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error" + "replaceOrSkip": "파일 대체 또는 건너뛰기", + "resolveConflict": "어떤 파일을 유지하시겠습니까?", + "singleConflictResolve": "모든 버전을 선택하면 복사한 파일의 이름에 번호를 추가합니다.", + "fastConflictResolve": "대상 폴더에 같은 이름을 가진 파일이 {count}개 있습니다.", + "uploadingFiles": "파일 업로드 중", + "filesInOrigin": "원본 파일", + "filesInDest": "대상 경로의 파일", + "override": "덮어쓰기", + "skip": "건너뛰기", + "forbiddenError": "권한 오류" }, "search": { "images": "이미지", From 8598db2accccf5b87353e5e718b2ad1c946e5c44 Mon Sep 17 00:00:00 2001 From: Marcel Szalbach <4-bar-killa@web.de> Date: Fri, 6 Mar 2026 15:32:04 +0100 Subject: [PATCH 19/55] =?UTF-8?q?fix:=20added=20dateFormat=20to=20getUserD?= =?UTF-8?q?efaults=20so=20this=20is=20respected=20in=20the=20=E2=80=A6=20(?= =?UTF-8?q?#5804)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auth/hook.go | 2 ++ cmd/config.go | 3 ++- cmd/users.go | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/auth/hook.go b/auth/hook.go index 0c5efac5c7..2541b684b9 100644 --- a/auth/hook.go +++ b/auth/hook.go @@ -168,6 +168,7 @@ func (a *HookAuth) SaveUser() (*users.User, error) { Sorting: a.Settings.Defaults.Sorting, Perm: a.Settings.Defaults.Perm, Commands: a.Settings.Defaults.Commands, + DateFormat: a.Settings.Defaults.DateFormat, HideDotfiles: a.Settings.Defaults.HideDotfiles, } u = a.GetUser(d) @@ -233,6 +234,7 @@ func (a *HookAuth) GetUser(d *users.User) *users.User { By: a.Fields.GetString("user.sorting.by", d.Sorting.By), }, Commands: a.Fields.GetArray("user.commands", d.Commands), + DateFormat: a.Fields.GetBoolean("user.dateFormat", d.DateFormat), HideDotfiles: a.Fields.GetBoolean("user.hideDotfiles", d.HideDotfiles), Perm: perms, LockPassword: true, diff --git a/cmd/config.go b/cmd/config.go index 5b3314ed73..e3bb2b862d 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -99,7 +99,7 @@ func getProxyAuth(flags *pflag.FlagSet, defaultAuther map[string]interface{}) (a return nil, err } - if header == "" && defaultAuther != nil { + if header == "" && defaultAuther != nil { header = defaultAuther["header"].(string) } @@ -236,6 +236,7 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut fmt.Fprintln(w, "\nDefaults:") fmt.Fprintf(w, "\tScope:\t%s\n", set.Defaults.Scope) + fmt.Fprintf(w, "\tDateFormat:\t%t\n", set.Defaults.DateFormat) fmt.Fprintf(w, "\tHideDotfiles:\t%t\n", set.Defaults.HideDotfiles) fmt.Fprintf(w, "\tLocale:\t%s\n", set.Defaults.Locale) fmt.Fprintf(w, "\tView mode:\t%s\n", set.Defaults.ViewMode) diff --git a/cmd/users.go b/cmd/users.go index 7d35e964d8..7aae00a995 100644 --- a/cmd/users.go +++ b/cmd/users.go @@ -138,6 +138,8 @@ func getUserDefaults(flags *pflag.FlagSet, defaults *settings.UserDefaults, all defaults.Sorting.By, err = flags.GetString(flag.Name) case "sorting.asc": defaults.Sorting.Asc, err = flags.GetBool(flag.Name) + case "dateFormat": + defaults.DateFormat, err = flags.GetBool(flag.Name) case "hideDotfiles": defaults.HideDotfiles, err = flags.GetBool(flag.Name) } From 8ee55761a1aa9bc091d8466c44f03c2043a8ca79 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Fri, 6 Mar 2026 16:06:54 +0100 Subject: [PATCH 20/55] fix(frontend): input password type --- frontend/src/components/prompts/CurrentPassword.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/prompts/CurrentPassword.vue b/frontend/src/components/prompts/CurrentPassword.vue index c97485f26a..dfccf3fd64 100644 --- a/frontend/src/components/prompts/CurrentPassword.vue +++ b/frontend/src/components/prompts/CurrentPassword.vue @@ -11,7 +11,7 @@ From 4d9e6b821852203cef67233791a922013bd5b64d Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Fri, 6 Mar 2026 16:07:08 +0100 Subject: [PATCH 21/55] fix(frontend): do not delete original assets --- frontend/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 583b2e3829..081591773d 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -14,7 +14,7 @@ const plugins = [ // defaults already drop IE support targets: ["defaults"], }), - compression({ include: /\.js$/i, deleteOriginalAssets: true }), + compression({ include: /\.js$/, deleteOriginalAssets: false }), ]; const resolve = { From cbcf708d945c74ed7ee054726dca131ac10e97a5 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Fri, 6 Mar 2026 16:17:33 +0100 Subject: [PATCH 22/55] chore(release): 2.61.2 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b5c2f27bc..3771efe145 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.61.2](https://github.com/filebrowser/filebrowser/compare/v2.61.1...v2.61.2) (2026-03-06) + + +### Bug Fixes + +* added dateFormat to getUserDefaults so this is respected in the … ([#5804](https://github.com/filebrowser/filebrowser/issues/5804)) ([8598db2](https://github.com/filebrowser/filebrowser/commit/8598db2accccf5b87353e5e718b2ad1c946e5c44)) +* avoid sending the same name in the file/folder rename modal ([#5806](https://github.com/filebrowser/filebrowser/issues/5806)) ([d7b00ce](https://github.com/filebrowser/filebrowser/commit/d7b00ce5f672b7ce0b26ce31abdfc74f8b00b939)) +* **csv-viewer:** add support for missing text encodings in dropdown list ([#5795](https://github.com/filebrowser/filebrowser/issues/5795)) ([4af3f85](https://github.com/filebrowser/filebrowser/commit/4af3f85e64e795e8ae1d87d4caee8185028294ac)) +* **frontend:** do not delete original assets ([4d9e6b8](https://github.com/filebrowser/filebrowser/commit/4d9e6b821852203cef67233791a922013bd5b64d)) +* **frontend:** input password type ([8ee5576](https://github.com/filebrowser/filebrowser/commit/8ee55761a1aa9bc091d8466c44f03c2043a8ca79)) +* validate current password with a modal ([#5805](https://github.com/filebrowser/filebrowser/issues/5805)) ([177c7cf](https://github.com/filebrowser/filebrowser/commit/177c7cfcce36779e2c5ebaa4b59a055dd1e17648)) + ## [2.61.1](https://github.com/filebrowser/filebrowser/compare/v2.61.0...v2.61.1) (2026-03-04) From c01b6a840c7aa9722d7e9ea1c4134e79599045b8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:23 +0100 Subject: [PATCH 23/55] chore(deps): update dependency eslint to v10.0.3 (#5809) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/pnpm-lock.yaml | 214 ++++++++++++++++++++-------------------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index bbdee7df01..1446cc027c 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -101,7 +101,7 @@ importers: devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,7 +113,7 @@ importers: version: 24.12.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) + version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) @@ -122,10 +122,10 @@ importers: version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@10.0.2)(prettier@3.8.1) + version: 10.2.0(eslint@10.0.3)(prettier@3.8.1) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)))(eslint@10.0.3)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.9.0 version: 0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) @@ -134,16 +134,16 @@ importers: version: 10.4.27(postcss@8.5.8) eslint: specifier: ^10.0.0 - version: 10.0.2 + version: 10.0.3 eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.8(eslint@10.0.2) + version: 10.1.8(eslint@10.0.3) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) + version: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)) postcss: specifier: ^8.5.6 version: 8.5.8 @@ -990,24 +990,24 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.2': - resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} + '@eslint/config-array@0.23.3': + resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.2': - resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + '@eslint/config-helpers@0.5.3': + resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.0': - resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + '@eslint/core@1.1.1': + resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@3.0.2': - resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} + '@eslint/object-schema@3.0.3': + resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.0': - resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + '@eslint/plugin-kit@0.6.1': + resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@humanfs/core@0.19.1': @@ -1882,8 +1882,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-scope@9.1.1: - resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: @@ -1894,8 +1894,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.2: - resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} + eslint@10.0.3: + resolution: {integrity: sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1908,8 +1908,8 @@ packages: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} - espree@11.1.1: - resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} espree@9.6.1: @@ -1997,8 +1997,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.3.4: + resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} focus-trap@8.0.0: resolution: {integrity: sha512-Aa84FOGHs99vVwufDMdq2qgOwXPC2e9U66GcqBhn1/jEHPDhJaP8PYhkIbqG9lhfL5Kddk/567lj46LLHYCRUw==} @@ -2236,8 +2236,8 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} mitt@3.0.1: @@ -3595,34 +3595,34 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': dependencies: - eslint: 10.0.2 + eslint: 10.0.3 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.2': + '@eslint/config-array@0.23.3': dependencies: - '@eslint/object-schema': 3.0.2 + '@eslint/object-schema': 3.0.3 debug: 4.4.3 minimatch: 10.2.4 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.2': + '@eslint/config-helpers@0.5.3': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 - '@eslint/core@1.1.0': + '@eslint/core@1.1.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/object-schema@3.0.2': {} + '@eslint/object-schema@3.0.3': {} - '@eslint/plugin-kit@0.6.0': + '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -3662,9 +3662,9 @@ snapshots: '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.2)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3))) '@intlify/shared': 11.2.8 '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) @@ -3845,15 +3845,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 - eslint: 10.0.2 + eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3861,15 +3861,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.1 - eslint: 10.0.2 + eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3877,14 +3877,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/types': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 - eslint: 10.0.2 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3925,25 +3925,25 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.0(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.2 + eslint: 10.0.3 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.56.1 '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) debug: 4.4.3 - eslint: 10.0.2 + eslint: 10.0.3 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -3960,7 +3960,7 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 debug: 4.4.3 - minimatch: 9.0.5 + minimatch: 9.0.9 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3983,24 +3983,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/types': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - eslint: 10.0.2 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@typescript-eslint/scope-manager': 8.56.1 '@typescript-eslint/types': 8.56.1 '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - eslint: 10.0.2 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -4182,23 +4182,23 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@10.0.2)(prettier@3.8.1)': + '@vue/eslint-config-prettier@10.2.0(eslint@10.0.3)(prettier@3.8.1)': dependencies: - eslint: 10.0.2 - eslint-config-prettier: 10.1.8(eslint@10.0.2) - eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1) + eslint: 10.0.3 + eslint-config-prettier: 10.1.8(eslint@10.0.3) + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1) prettier: 3.8.1 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)))(eslint@10.0.2)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)))(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) - eslint: 10.0.2 - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)) + '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) + eslint: 10.0.3 + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)) fast-glob: 3.3.3 - typescript-eslint: 8.56.0(eslint@10.0.2)(typescript@5.9.3) - vue-eslint-parser: 10.4.0(eslint@10.0.2) + typescript-eslint: 8.56.0(eslint@10.0.3)(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@10.0.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -4557,33 +4557,33 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.0.2): + eslint-config-prettier@10.1.8(eslint@10.0.3): dependencies: - eslint: 10.0.2 + eslint: 10.0.3 - eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.2))(eslint@10.0.2)(prettier@3.8.1): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)(prettier@3.8.1): dependencies: - eslint: 10.0.2 + eslint: 10.0.3 prettier: 3.8.1 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@10.0.2) + eslint-config-prettier: 10.1.8(eslint@10.0.3) - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(vue-eslint-parser@10.4.0(eslint@10.0.2)): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) - eslint: 10.0.2 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) + eslint: 10.0.3 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 semver: 7.7.4 - vue-eslint-parser: 10.4.0(eslint@10.0.2) + vue-eslint-parser: 10.4.0(eslint@10.0.3) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - eslint-scope@9.1.1: + eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 @@ -4594,14 +4594,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.2: + eslint@10.0.3: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.2 - '@eslint/config-helpers': 0.5.2 - '@eslint/core': 1.1.0 - '@eslint/plugin-kit': 0.6.0 + '@eslint/config-array': 0.23.3 + '@eslint/config-helpers': 0.5.3 + '@eslint/core': 1.1.1 + '@eslint/plugin-kit': 0.6.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -4610,9 +4610,9 @@ snapshots: cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 9.1.1 + eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - espree: 11.1.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4636,7 +4636,7 @@ snapshots: event-emitter: 0.3.5 type: 2.7.3 - espree@11.1.1: + espree@11.2.0: dependencies: acorn: 8.16.0 acorn-jsx: 5.3.2(acorn@8.16.0) @@ -4716,10 +4716,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.3.4 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.3.4: {} focus-trap@8.0.0: dependencies: @@ -4931,7 +4931,7 @@ snapshots: dependencies: brace-expansion: 5.0.4 - minimatch@9.0.5: + minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 @@ -5253,13 +5253,13 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.56.0(eslint@10.0.2)(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.0.3)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.0(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.0(eslint@10.0.2)(typescript@5.9.3) - eslint: 10.0.2 + '@typescript-eslint/utils': 8.56.0(eslint@10.0.3)(typescript@5.9.3) + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -5376,13 +5376,13 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.0.2): + vue-eslint-parser@10.4.0(eslint@10.0.3): dependencies: debug: 4.4.3 - eslint: 10.0.2 - eslint-scope: 9.1.1 + eslint: 10.0.3 + eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - espree: 11.1.1 + espree: 11.2.0 esquery: 1.7.0 semver: 7.7.4 transitivePeerDependencies: From 3cb21c727d21d626d11896013b6e686c1f4e4790 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:31 +0100 Subject: [PATCH 24/55] chore(deps): update docker/login-action action to v4 (#5810) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ddbb8962a4..174a03f285 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -99,7 +99,7 @@ jobs: uses: go-task/setup-task@v1 - run: task build:frontend - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} From df63cb595c87c084ddac0755e410ac6c96a8285a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:39 +0100 Subject: [PATCH 25/55] chore(deps): update docker/setup-buildx-action action to v4 (#5811) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- .github/workflows/docs.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 174a03f285..1e359dcc4f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -94,7 +94,7 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Install Task uses: go-task/setup-task@v1 - run: task build:frontend diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5b21ccba79..6dfcfe2394 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -18,7 +18,7 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Install Task uses: go-task/setup-task@v1 - name: Build site @@ -39,7 +39,7 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Install Task uses: go-task/setup-task@v1 - name: Build site From 490e5bbf9981e374ed6c00f1f18de4cb8dcdfb10 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:40:47 +0100 Subject: [PATCH 26/55] chore(deps): update docker/setup-qemu-action action to v4 (#5812) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1e359dcc4f..895dfe2b4b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -92,7 +92,7 @@ jobs: cache: "pnpm" cache-dependency-path: "frontend/pnpm-lock.yaml" - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task From 6700a981a5297f2d83c77413aa2d5c9b423863ae Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 11 Mar 2026 19:32:42 +0100 Subject: [PATCH 27/55] docs: update readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e15d59275..f2ed795773 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,10 @@ This project is a finished product which fulfills its goal: be a single binary w - It can take a while until someone gets back to you. Please be patient. - [Issues](https://github.com/filebrowser/filebrowser/issues) are meant to track bugs. Unrelated issues will be converted into [discussions](https://github.com/filebrowser/filebrowser/discussions). -- No new features will be implemented by maintainers. Pull requests for new features will be reviewed on a case by case basis. - The priority is triaging issues, addressing security issues and reviewing pull requests meant to solve bugs. +- No new features are planned. Pull requests for new features are not guaranteed to be reviewed. + +Please read [@hacdias' personal reflection](https://hacdias.com/2026/03/11/filebrowser/) on the project status. ## Contributing From 6dcef07f40d550acee63dd01e0a3bcf78532f690 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 11 Mar 2026 11:34:49 -0700 Subject: [PATCH 28/55] fix(upload): don't mark every folder-upload file as conflicting (#5813) --- frontend/src/utils/upload.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts index a5a62b1dfc..1c894992c6 100644 --- a/frontend/src/utils/upload.ts +++ b/frontend/src/utils/upload.ts @@ -25,7 +25,7 @@ export function checkConflict( const file = files[i]; let name = file.name; - if (folder_upload) { + if (folder_upload && file.isDir) { const dirs = file.fullPath?.split("/"); if (dirs && dirs.length > 1) { name = dirs[0]; From f5f8b60b331a07729a1fed1ed065cb6fc20930ea Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 11 Mar 2026 11:34:57 -0700 Subject: [PATCH 29/55] fix(upload): avoid skipping whole folder upload on conflict modal (#5814) --- frontend/src/utils/upload.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts index 1c894992c6..3b68919223 100644 --- a/frontend/src/utils/upload.ts +++ b/frontend/src/utils/upload.ts @@ -23,12 +23,16 @@ export function checkConflict( for (let i = 0; i < files.length; i++) { const file = files[i]; - let name = file.name; + const name = file.name; if (folder_upload && file.isDir) { const dirs = file.fullPath?.split("/"); + // For folder uploads, destination listing is flat and only contains + // top-level entries. Treating every nested file as a conflict when the + // parent folder exists blocks the whole upload (see #5798), so skip + // preflight conflict detection for nested files. if (dirs && dirs.length > 1) { - name = dirs[0]; + continue; } } From f04af0cac6c808b8e7c9a9651380c252c4de9132 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Wed, 11 Mar 2026 14:36:05 -0400 Subject: [PATCH 30/55] fix: allow deleting the user's own account (#5820) --- errors/errors.go | 2 +- frontend/src/views/settings/User.vue | 7 ++++++- storage/bolt/users.go | 27 +++++++++++++++++++++++++++ users/storage.go | 23 +++++++++++++++++++++-- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/errors/errors.go b/errors/errors.go index 748354a8a0..f6b86cafbc 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -21,7 +21,7 @@ var ( ErrPermissionDenied = errors.New("permission denied") ErrInvalidRequestParams = errors.New("invalid request params") ErrSourceIsParent = errors.New("source is parent") - ErrRootUserDeletion = errors.New("user with id 1 can't be deleted") + ErrRootUserDeletion = errors.New("the sole admin can't be deleted") ErrCurrentPasswordIncorrect = errors.New("the current password is incorrect") ) diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index b726d9ef0e..63e0d2a2df 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -59,6 +59,7 @@ import { useRoute, useRouter } from "vue-router"; import { useI18n } from "vue-i18n"; import { StatusError } from "@/api/utils"; import { authMethod } from "@/utils/constants"; +import { logout } from "@/utils/auth"; const error = ref(); const originalUser = ref(); @@ -144,7 +145,11 @@ const deleteUser = async (currentPassword: string) => { } try { await api.remove(user.value.id, currentPassword); - router.push({ path: "/settings/users" }); + if (user.value.id == authStore.user?.id) { + logout(); + } else { + router.push({ path: "/settings/users" }); + } $showSuccess(t("settings.userDeleted")); } catch (err) { if (err instanceof StatusError) { diff --git a/storage/bolt/users.go b/storage/bolt/users.go index 974c0a48aa..6686d941b0 100644 --- a/storage/bolt/users.go +++ b/storage/bolt/users.go @@ -6,6 +6,7 @@ import ( "reflect" "github.com/asdine/storm/v3" + bolt "go.etcd.io/bbolt" fberrors "github.com/filebrowser/filebrowser/v2/errors" "github.com/filebrowser/filebrowser/v2/users" @@ -93,3 +94,29 @@ func (st usersBackend) DeleteByUsername(username string) error { return st.db.DeleteStruct(user) } + +func (st usersBackend) CountAdmins() (int, error) { + count := 0 + + err := st.db.Bolt.View(func(tx *bolt.Tx) error { + bucket := tx.Bucket([]byte(reflect.TypeOf(users.User{}).Name())) + if bucket == nil { + return nil + } + + c := bucket.Cursor() + for _, v := c.First(); v != nil; _, v = c.Next() { + var u users.User + if err := st.db.Codec().Unmarshal(v, &u); err != nil { + return err + } + if u.Perm.Admin { + count++ + } + } + + return nil + }) + + return count, err +} diff --git a/users/storage.go b/users/storage.go index 43c65fe4f5..33cfc9c4ae 100644 --- a/users/storage.go +++ b/users/storage.go @@ -15,6 +15,7 @@ type StorageBackend interface { Update(u *User, fields ...string) error DeleteByID(uint) error DeleteByUsername(string) error + CountAdmins() (int, error) } type Store interface { @@ -108,14 +109,20 @@ func (s *Storage) Delete(id interface{}) error { if err != nil { return err } - if user.ID == 1 { + if s.IsUniqueAdmin(user) { return fberrors.ErrRootUserDeletion } + return s.back.DeleteByUsername(id) case uint: - if id == 1 { + user, err := s.back.GetBy(id) + if err != nil { + return err + } + if s.IsUniqueAdmin(user) { return fberrors.ErrRootUserDeletion } + return s.back.DeleteByID(id) default: return fberrors.ErrInvalidDataType @@ -131,3 +138,15 @@ func (s *Storage) LastUpdate(id uint) int64 { } return 0 } + +func (s *Storage) IsUniqueAdmin(user *User) bool { + if !user.Perm.Admin { + return false + } + + count, err := s.back.CountAdmins() + if err != nil { + return true + } + return count <= 1 +} From 0542fc0ba43740c967414eebd156bac86ad80376 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 11 Mar 2026 11:37:07 -0700 Subject: [PATCH 31/55] fix(tus): preserve percent-encoded upload paths in Location header (#5817) --- http/tus_handlers.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/http/tus_handlers.go b/http/tus_handlers.go index 68931f5d4f..0b7bcbb48f 100644 --- a/http/tus_handlers.go +++ b/http/tus_handlers.go @@ -5,10 +5,10 @@ import ( "fmt" "io" "net/http" - "net/url" "os" "path/filepath" "strconv" + "strings" "time" "github.com/spf13/afero" @@ -112,12 +112,12 @@ func tusPostHandler(cache UploadCache) handleFunc { // Enables the user to utilize the PATCH endpoint for uploading file data cache.Register(file.RealPath(), uploadLength) - path, err := url.JoinPath("/", d.server.BaseURL, "/api/tus", r.URL.Path) - if err != nil { - return http.StatusBadRequest, fmt.Errorf("invalid path: %w", err) + basePath := "/" + strings.Trim(strings.TrimSpace(d.server.BaseURL), "/") + if basePath == "/" { + basePath = "" } - w.Header().Set("Location", path) + w.Header().Set("Location", basePath+"/api/tus"+r.URL.EscapedPath()) return http.StatusCreated, nil }) } From ef2e9992dc3098f6c4722c2a98966cd8abf8bab5 Mon Sep 17 00:00:00 2001 From: Andrew Katsikas Date: Thu, 12 Mar 2026 02:34:11 -0400 Subject: [PATCH 32/55] fix: properly surface config parse errors (#5822) --- cmd/utils.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/utils.go b/cmd/utils.go index a57856e425..3ae29b270a 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -118,7 +118,8 @@ func initViper(cmd *cobra.Command) (*viper.Viper, error) { // Read in configuration if err := v.ReadInConfig(); err != nil { - if errors.Is(err, viper.ConfigParseError{}) { + + if errors.As(err, &viper.ConfigParseError{}) { return nil, err } From be8ba189372f96d87abd22f85a6768ac936d91f2 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 12 Mar 2026 07:59:20 +0100 Subject: [PATCH 33/55] docs: add notice on proxy --- www/docs/authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/docs/authentication.md b/www/docs/authentication.md index 75270f8cc7..4308b01c12 100644 --- a/www/docs/authentication.md +++ b/www/docs/authentication.md @@ -38,7 +38,7 @@ Where `X-My-Header` is the HTTP header provided by your proxy with the username. > [!WARNING] > -> File Browser will blindly trust the provided header. If the proxy can be bypassed, an attacker could simply attach the header and get admin access. +> File Browser will blindly trust the provided header. If the proxy can be bypassed, an attacker could simply attach the header and get admin access. Please ensure that File Browser is not accessible from untrusted networks, and that the proxy is correctly configured to strip/overwrite the header from client requests. ## Hook Authentication From 79875bac7ffb7534ab20d219da87be23e9ddd6db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:51:04 +0100 Subject: [PATCH 34/55] chore(deps): update marocchino/sticky-pull-request-comment action to v3 (#5833) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/lint-pr.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint-pr.yaml b/.github/workflows/lint-pr.yaml index f00f44150f..9a4e26156c 100644 --- a/.github/workflows/lint-pr.yaml +++ b/.github/workflows/lint-pr.yaml @@ -21,7 +21,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - uses: marocchino/sticky-pull-request-comment@v2 + - uses: marocchino/sticky-pull-request-comment@v3 # When the previous steps fails, the workflow would stop. By adding this # condition you can continue the execution with the populated error message. if: always() && (steps.lint_pr_title.outputs.error_message != null) @@ -40,7 +40,7 @@ jobs: # Delete a previous comment when the issue has been resolved - if: ${{ steps.lint_pr_title.outputs.error_message == null }} - uses: marocchino/sticky-pull-request-comment@v2 + uses: marocchino/sticky-pull-request-comment@v3 with: header: pr-title-lint-error delete: true From 27afbb8813c1a1f58c2fd8f90b1f4ecb90bf5aac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:52:28 +0100 Subject: [PATCH 35/55] chore(deps): update dependency @vitejs/plugin-legacy to v8 (#5830) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 72 ++++++++++++++++++++--------------------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 6e5796baed..a141db267b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -54,7 +54,7 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^24.10.1", "@typescript-eslint/eslint-plugin": "^8.37.0", - "@vitejs/plugin-legacy": "^7.2.1", + "@vitejs/plugin-legacy": "^8.0.0", "@vitejs/plugin-vue": "^6.0.1", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 1446cc027c..71ba5fc432 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -115,8 +115,8 @@ importers: specifier: ^8.37.0 version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) '@vitejs/plugin-legacy': - specifier: ^7.2.1 - version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) + specifier: ^8.0.0 + version: 8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) @@ -209,6 +209,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.7': + resolution: {integrity: sha512-6Fqi8MtQ/PweQ9xvux65emkLQ83uB+qAVtfHkC9UodyHMIZdxNI01HjLCLUtybElp2KY2XNE0nOgyP1E1vXw9w==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} @@ -1421,12 +1426,12 @@ packages: '@videojs/xhr@2.7.0': resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==} - '@vitejs/plugin-legacy@7.2.1': - resolution: {integrity: sha512-CaXb/y0mlfu7jQRELEJJc2/5w2bX2m1JraARgFnvSB2yfvnCNJVWWlqAo6WjnKoepOwKx8gs0ugJThPLKCOXIg==} + '@vitejs/plugin-legacy@8.0.0': + resolution: {integrity: sha512-o5BmEuu4N+woyv+yUsiDrMUfMntJ1kEJITUYLd2ELOAETObwkWNFn5GNIQLLGx8liaobIvoXeSRiM/aYVIaeTQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: terser: ^5.16.0 - vite: ^7.0.0 + vite: ^8.0.0 '@vitejs/plugin-vue@6.0.4': resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} @@ -1660,18 +1665,13 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + babel-plugin-polyfill-corejs3@0.14.1: + resolution: {integrity: sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.14.0: - resolution: {integrity: sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.6: - resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==} + babel-plugin-polyfill-regenerator@0.6.7: + resolution: {integrity: sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -1718,9 +1718,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - caniuse-lite@1.0.30001769: - resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} - caniuse-lite@1.0.30001774: resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} @@ -2860,6 +2857,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-define-polyfill-provider@0.6.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + '@babel/helper-globals@7.28.0': {} '@babel/helper-member-expression-to-functions@7.28.5': @@ -3396,8 +3404,8 @@ snapshots: '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.1(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) core-js-compat: 3.48.0 semver: 6.3.1 transitivePeerDependencies: @@ -4037,14 +4045,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) '@babel/preset-env': 7.29.0(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.1(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) browserslist: 4.28.1 browserslist-to-esbuild: 2.1.1(browserslist@4.28.1) core-js: 3.48.0 @@ -4325,26 +4333,18 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) - core-js-compat: 3.48.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.14.0(@babel/core@7.29.0): + babel-plugin-polyfill-corejs3@0.14.1(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) core-js-compat: 3.48.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.29.0): + babel-plugin-polyfill-regenerator@0.6.7(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.29.0) + '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -4378,15 +4378,13 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001769 + caniuse-lite: 1.0.30001774 electron-to-chromium: 1.5.286 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-from@1.1.2: {} - caniuse-lite@1.0.30001769: {} - caniuse-lite@1.0.30001774: {} chokidar@5.0.0: From 3c5d36673f87517168f7412f89c4ac0831145faf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:53:53 +0100 Subject: [PATCH 36/55] chore(deps): update all non-major dependencies (#5818) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 385 +++++++++++++++++++++------------------- go.mod | 16 +- go.sum | 24 +-- 4 files changed, 226 insertions(+), 201 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index a141db267b..4b383137fc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,5 +72,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017" + "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 71ba5fc432..cf778b3568 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@chenfengyuan/vue-number-input': specifier: ^2.0.1 - version: 2.0.1(vue@3.5.29(typescript@5.9.3)) + version: 2.0.1(vue@3.5.30(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.2.1(vue@3.5.29(typescript@5.9.3)) + version: 14.2.1(vue@3.5.30(typescript@5.9.3)) '@vueuse/integrations': specifier: ^14.0.0 - version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.29(typescript@5.9.3)) + version: 14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.30(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.6 @@ -25,10 +25,10 @@ importers: version: 6.1.0 dayjs: specifier: ^1.11.13 - version: 1.11.19 + version: 1.11.20 dompurify: specifier: ^3.2.6 - version: 3.3.2 + version: 3.3.3 epubjs: specifier: ^0.3.93 version: 0.3.93 @@ -58,13 +58,13 @@ importers: version: 8.0.1 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) pretty-bytes: specifier: ^7.1.0 version: 7.1.0 qrcode.vue: specifier: ^3.6.0 - version: 3.8.0(vue@3.5.29(typescript@5.9.3)) + version: 3.8.0(vue@3.5.30(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -82,10 +82,10 @@ importers: version: 1.2.2(video.js@8.23.7) vue: specifier: ^3.5.17 - version: 3.5.29(typescript@5.9.3) + version: 3.5.30(typescript@5.9.3) vue-i18n: specifier: ^11.1.10 - version: 11.2.8(vue@3.5.29(typescript@5.9.3)) + version: 11.3.0(vue@3.5.30(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 @@ -94,14 +94,14 @@ importers: version: 1.3.4 vue-router: specifier: ^5.0.0 - version: 5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + version: 5.0.3(@vue/compiler-sfc@3.5.30)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.29(typescript@5.9.3)) + version: 2.0.0-rc.5(vue@3.5.30(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.30)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.4 @@ -113,13 +113,13 @@ importers: version: 24.12.0 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) + version: 8.57.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^8.0.0 version: 8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3)) + version: 6.0.5(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@10.0.3)(prettier@3.8.1) @@ -128,7 +128,7 @@ importers: version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(vue-eslint-parser@10.4.0(eslint@10.0.3)))(eslint@10.0.3)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.9.0 - version: 0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + version: 0.9.0(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 version: 10.4.27(postcss@8.5.8) @@ -161,7 +161,7 @@ importers: version: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 - version: 2.5.0(rollup@4.57.1) + version: 2.5.1(rollup@4.57.1) vue-tsc: specifier: ^3.1.3 version: 3.2.5(typescript@5.9.3) @@ -1043,18 +1043,30 @@ packages: vue-i18n: optional: true - '@intlify/core-base@11.2.8': - resolution: {integrity: sha512-nBq6Y1tVkjIUsLsdOjDSJj4AsjvD0UG3zsg9Fyc+OivwlA/oMHSKooUy9tpKj0HqZ+NWFifweHavdljlBLTwdA==} + '@intlify/core-base@11.3.0': + resolution: {integrity: sha512-NNX5jIwF4TJBe7RtSKDMOA6JD9mp2mRcBHAwt2X+Q8PvnZub0yj5YYXlFu2AcESdgQpEv/5Yx2uOCV/yh7YkZg==} + engines: {node: '>= 16'} + + '@intlify/devtools-types@11.3.0': + resolution: {integrity: sha512-G9CNL4WpANWVdUjubOIIS7/D2j/0j+1KJmhBJxHilWNKr9mmt3IjFV3Hq4JoBP23uOoC5ynxz/FHZ42M+YxfGw==} engines: {node: '>= 16'} '@intlify/message-compiler@11.2.8': resolution: {integrity: sha512-A5n33doOjmHsBtCN421386cG1tWp5rpOjOYPNsnpjIJbQ4POF0QY2ezhZR9kr0boKwaHjbOifvyQvHj2UTrDFQ==} engines: {node: '>= 16'} + '@intlify/message-compiler@11.3.0': + resolution: {integrity: sha512-RAJp3TMsqohg/Wa7bVF3cChRhecSYBLrTCQSj7j0UtWVFLP+6iEJoE2zb7GU5fp+fmG5kCbUdzhmlAUCWXiUJw==} + engines: {node: '>= 16'} + '@intlify/shared@11.2.8': resolution: {integrity: sha512-l6e4NZyUgv8VyXXH4DbuucFOBmxLF56C/mqh2tvApbzl2Hrhi1aTDcuv5TKdxzfHYmpO3UB0Cz04fgDT9vszfw==} engines: {node: '>= 16'} + '@intlify/shared@11.3.0': + resolution: {integrity: sha512-LC6P/uay7rXL5zZ5+5iRJfLs/iUN8apu9tm8YqQVmW3Uq3X4A0dOFUIDuAmB7gAC29wTHOS3EiN/IosNSz0eNQ==} + engines: {node: '>= 16'} + '@intlify/unplugin-vue-i18n@11.0.7': resolution: {integrity: sha512-wswKprS1D8VfnxxVhKxug5wa3MbDSOcCoXOBjnzhMK+6NfP6h6UI8pFqSBIvcW8nPDuzweTc0Sk3PeBCcubfoQ==} engines: {node: '>= 20'} @@ -1310,11 +1322,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/eslint-plugin@8.56.1': - resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + '@typescript-eslint/eslint-plugin@8.57.0': + resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.56.1 + '@typescript-eslint/parser': ^8.57.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1331,8 +1343,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.56.1': - resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + '@typescript-eslint/project-service@8.57.0': + resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1341,8 +1353,8 @@ packages: resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.56.1': - resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + '@typescript-eslint/scope-manager@8.57.0': + resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.56.0': @@ -1351,8 +1363,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.56.1': - resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + '@typescript-eslint/tsconfig-utils@8.57.0': + resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1364,8 +1376,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.56.1': - resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + '@typescript-eslint/type-utils@8.57.0': + resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1375,8 +1387,8 @@ packages: resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.56.1': - resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + '@typescript-eslint/types@8.57.0': + resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.56.0': @@ -1385,8 +1397,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.56.1': - resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + '@typescript-eslint/typescript-estree@8.57.0': + resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1398,8 +1410,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.56.1': - resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + '@typescript-eslint/utils@8.57.0': + resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1409,8 +1421,8 @@ packages: resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.56.1': - resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + '@typescript-eslint/visitor-keys@8.57.0': + resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.4': @@ -1433,11 +1445,11 @@ packages: terser: ^5.16.0 vite: ^8.0.0 - '@vitejs/plugin-vue@6.0.4': - resolution: {integrity: sha512-uM5iXipgYIn13UUQCZNdWkYk+sysBeA97d5mHsAoAt1u/wpN3+zxOmsVJWosuzX+IMGRzeYUNytztrYznboIkQ==} + '@vitejs/plugin-vue@6.0.5': + resolution: {integrity: sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 '@volar/language-core@2.4.28': @@ -1461,26 +1473,26 @@ packages: '@vue/compiler-core@3.5.28': resolution: {integrity: sha512-kviccYxTgoE8n6OCw96BNdYlBg2GOWfBuOW4Vqwrt7mSKWKwFVvI8egdTltqRgITGPsTFYtKYfxIG8ptX2PJHQ==} - '@vue/compiler-core@3.5.29': - resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + '@vue/compiler-core@3.5.30': + resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} '@vue/compiler-dom@3.5.28': resolution: {integrity: sha512-/1ZepxAb159jKR1btkefDP+J2xuWL5V3WtleRmxaT+K2Aqiek/Ab/+Ebrw2pPj0sdHO8ViAyyJWfhXXOP/+LQA==} - '@vue/compiler-dom@3.5.29': - resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + '@vue/compiler-dom@3.5.30': + resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} '@vue/compiler-sfc@3.5.28': resolution: {integrity: sha512-6TnKMiNkd6u6VeVDhZn/07KhEZuBSn43Wd2No5zaP5s3xm8IqFTHBj84HJah4UepSUJTro5SoqqlOY22FKY96g==} - '@vue/compiler-sfc@3.5.29': - resolution: {integrity: sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==} + '@vue/compiler-sfc@3.5.30': + resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==} '@vue/compiler-ssr@3.5.28': resolution: {integrity: sha512-JCq//9w1qmC6UGLWJX7RXzrGpKkroubey/ZFqTpvEIDJEKGgntuDMqkuWiZvzTzTA5h2qZvFBFHY7fAAa9475g==} - '@vue/compiler-ssr@3.5.29': - resolution: {integrity: sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==} + '@vue/compiler-ssr@3.5.30': + resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -1523,25 +1535,25 @@ packages: '@vue/language-core@3.2.5': resolution: {integrity: sha512-d3OIxN/+KRedeM5wQ6H6NIpwS3P5gC9nmyaHgBk+rO6dIsjY+tOh4UlPpiZbAh3YtLdCGEX4M16RmsBqPmJV+g==} - '@vue/reactivity@3.5.29': - resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} + '@vue/reactivity@3.5.30': + resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - '@vue/runtime-core@3.5.29': - resolution: {integrity: sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==} + '@vue/runtime-core@3.5.30': + resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==} - '@vue/runtime-dom@3.5.29': - resolution: {integrity: sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==} + '@vue/runtime-dom@3.5.30': + resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==} - '@vue/server-renderer@3.5.29': - resolution: {integrity: sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==} + '@vue/server-renderer@3.5.30': + resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==} peerDependencies: - vue: 3.5.29 + vue: 3.5.30 '@vue/shared@3.5.28': resolution: {integrity: sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==} - '@vue/shared@3.5.29': - resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + '@vue/shared@3.5.30': + resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} '@vue/tsconfig@0.9.0': resolution: {integrity: sha512-RP+v9Cpbsk1ZVXltCHHkYBr7+624x6gcijJXVjIcsYk7JXqvIpRtMwU2ARLvWDhmy9ffdFYxhsfJnPztADBohQ==} @@ -1779,8 +1791,8 @@ packages: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} engines: {node: '>=0.12'} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -1797,9 +1809,8 @@ packages: dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - dompurify@3.3.2: - resolution: {integrity: sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==} - engines: {node: '>=20'} + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} @@ -2646,8 +2657,8 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-plugin-compression2@2.5.0: - resolution: {integrity: sha512-bHxtBibPxxSn5eZSe0IAzvYucP/hg8Bz8ppjbH7lndU5kIHT+92qTkB4z9xWYfnyV0YHuir1SjOuyO0fzU4Vgg==} + vite-plugin-compression2@2.5.1: + resolution: {integrity: sha512-2YpLZWs1ZRo9XwtSFA6/NVuBgOR+kvFk8M0HNDsP7Wu7OfJDOKT6fHB8kzuvw6jhgC9KYgDOttfaG2qC0wE9AQ==} vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} @@ -2698,8 +2709,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue-i18n@11.2.8: - resolution: {integrity: sha512-vJ123v/PXCZntd6Qj5Jumy7UBmIuE92VrtdX+AXr+1WzdBHojiBxnAxdfctUFL+/JIN+VQH4BhsfTtiGsvVObg==} + vue-i18n@11.3.0: + resolution: {integrity: sha512-1J+xDfDJTLhDxElkd3+XUhT7FYSZd2b8pa7IRKGxhWH/8yt6PTvi3xmWhGwhYT5EaXdatui11pF2R6tL73/zPA==} engines: {node: '>= 16'} peerDependencies: vue: ^3.0.0 @@ -2736,8 +2747,8 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue@3.5.29: - resolution: {integrity: sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==} + vue@3.5.30: + resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3443,9 +3454,9 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.29(typescript@5.9.3))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.30(typescript@5.9.3))': dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@esbuild/aix-ppc64@0.25.12': optional: true @@ -3644,7 +3655,7 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.7(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.7(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.8 '@intlify/shared': 11.2.8 @@ -3656,26 +3667,39 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.2 optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) + vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) - '@intlify/core-base@11.2.8': + '@intlify/core-base@11.3.0': dependencies: - '@intlify/message-compiler': 11.2.8 - '@intlify/shared': 11.2.8 + '@intlify/devtools-types': 11.3.0 + '@intlify/message-compiler': 11.3.0 + '@intlify/shared': 11.3.0 + + '@intlify/devtools-types@11.3.0': + dependencies: + '@intlify/core-base': 11.3.0 + '@intlify/shared': 11.3.0 '@intlify/message-compiler@11.2.8': dependencies: '@intlify/shared': 11.2.8 source-map-js: 1.2.1 + '@intlify/message-compiler@11.3.0': + dependencies: + '@intlify/shared': 11.3.0 + source-map-js: 1.2.1 + '@intlify/shared@11.2.8': {} - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.29)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': + '@intlify/shared@11.3.0': {} + + '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.30)(eslint@10.0.3)(rollup@4.57.1)(typescript@5.9.3)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@intlify/bundle-utils': 11.0.7(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3))) + '@intlify/bundle-utils': 11.0.7(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3))) '@intlify/shared': 11.2.8 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.30)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) '@typescript-eslint/scope-manager': 8.56.0 '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.9.3) @@ -3684,9 +3708,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) + vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -3694,14 +3718,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.29)(vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.8)(@vue/compiler-dom@3.5.30)(vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3))': dependencies: '@babel/parser': 7.29.0 optionalDependencies: '@intlify/shared': 11.2.8 - '@vue/compiler-dom': 3.5.29 - vue: 3.5.29(typescript@5.9.3) - vue-i18n: 11.2.8(vue@3.5.29(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.30 + vue: 3.5.30(typescript@5.9.3) + vue-i18n: 11.3.0(vue@3.5.30(typescript@5.9.3)) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -3869,14 +3893,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.56.0(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3906,10 +3930,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -3920,16 +3944,16 @@ snapshots: '@typescript-eslint/types': 8.56.0 '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/scope-manager@8.56.1': + '@typescript-eslint/scope-manager@8.57.0': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3945,11 +3969,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) debug: 4.4.3 eslint: 10.0.3 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3959,7 +3983,7 @@ snapshots: '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/types@8.56.1': {} + '@typescript-eslint/types@8.57.0': {} '@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)': dependencies: @@ -3976,12 +4000,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 debug: 4.4.3 minimatch: 10.2.4 semver: 7.7.4 @@ -4002,12 +4026,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@10.0.3)(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: @@ -4018,9 +4042,9 @@ snapshots: '@typescript-eslint/types': 8.56.0 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.56.1': + '@typescript-eslint/visitor-keys@8.57.0': dependencies: - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/types': 8.57.0 eslint-visitor-keys: 5.0.1 '@videojs/http-streaming@3.17.4(video.js@8.23.7)': @@ -4064,11 +4088,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.4(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.29(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.5(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@volar/language-core@2.4.28': dependencies: @@ -4082,7 +4106,7 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue-macros/common@3.1.2(vue@3.5.29(typescript@5.9.3))': + '@vue-macros/common@3.1.2(vue@3.5.30(typescript@5.9.3))': dependencies: '@vue/compiler-sfc': 3.5.28 ast-kit: 2.2.0 @@ -4090,7 +4114,7 @@ snapshots: magic-string-ast: 1.0.3 unplugin-utils: 0.3.1 optionalDependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@vue/compiler-core@3.5.28': dependencies: @@ -4100,10 +4124,10 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-core@3.5.29': + '@vue/compiler-core@3.5.30': dependencies: '@babel/parser': 7.29.0 - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 @@ -4113,10 +4137,10 @@ snapshots: '@vue/compiler-core': 3.5.28 '@vue/shared': 3.5.28 - '@vue/compiler-dom@3.5.29': + '@vue/compiler-dom@3.5.30': dependencies: - '@vue/compiler-core': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-core': 3.5.30 + '@vue/shared': 3.5.30 '@vue/compiler-sfc@3.5.28': dependencies: @@ -4130,13 +4154,13 @@ snapshots: postcss: 8.5.8 source-map-js: 1.2.1 - '@vue/compiler-sfc@3.5.29': + '@vue/compiler-sfc@3.5.30': dependencies: '@babel/parser': 7.29.0 - '@vue/compiler-core': 3.5.29 - '@vue/compiler-dom': 3.5.29 - '@vue/compiler-ssr': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-core': 3.5.30 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.8 @@ -4147,10 +4171,10 @@ snapshots: '@vue/compiler-dom': 3.5.28 '@vue/shared': 3.5.28 - '@vue/compiler-ssr@3.5.29': + '@vue/compiler-ssr@3.5.30': dependencies: - '@vue/compiler-dom': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-dom': 3.5.30 + '@vue/shared': 3.5.30 '@vue/devtools-api@6.6.4': {} @@ -4222,58 +4246,58 @@ snapshots: path-browserify: 1.0.1 picomatch: 4.0.3 - '@vue/reactivity@3.5.29': + '@vue/reactivity@3.5.30': dependencies: - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 - '@vue/runtime-core@3.5.29': + '@vue/runtime-core@3.5.30': dependencies: - '@vue/reactivity': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/reactivity': 3.5.30 + '@vue/shared': 3.5.30 - '@vue/runtime-dom@3.5.29': + '@vue/runtime-dom@3.5.30': dependencies: - '@vue/reactivity': 3.5.29 - '@vue/runtime-core': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/reactivity': 3.5.30 + '@vue/runtime-core': 3.5.30 + '@vue/shared': 3.5.30 csstype: 3.2.3 - '@vue/server-renderer@3.5.29(vue@3.5.29(typescript@5.9.3))': + '@vue/server-renderer@3.5.30(vue@3.5.30(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.29 - '@vue/shared': 3.5.29 - vue: 3.5.29(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.30 + '@vue/shared': 3.5.30 + vue: 3.5.30(typescript@5.9.3) '@vue/shared@3.5.28': {} - '@vue/shared@3.5.29': {} + '@vue/shared@3.5.30': {} - '@vue/tsconfig@0.9.0(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3))': + '@vue/tsconfig@0.9.0(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) - '@vueuse/core@14.2.1(vue@3.5.29(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.30(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.2.1 - '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) - vue: 3.5.29(typescript@5.9.3) + '@vueuse/shared': 14.2.1(vue@3.5.30(typescript@5.9.3)) + vue: 3.5.30(typescript@5.9.3) - '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.29(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(focus-trap@8.0.0)(jwt-decode@4.0.0)(vue@3.5.30(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.2.1(vue@3.5.29(typescript@5.9.3)) - '@vueuse/shared': 14.2.1(vue@3.5.29(typescript@5.9.3)) - vue: 3.5.29(typescript@5.9.3) + '@vueuse/core': 14.2.1(vue@3.5.30(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.30(typescript@5.9.3)) + vue: 3.5.30(typescript@5.9.3) optionalDependencies: focus-trap: 8.0.0 jwt-decode: 4.0.0 '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@14.2.1(vue@3.5.29(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.30(typescript@5.9.3))': dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4437,7 +4461,7 @@ snapshots: es5-ext: 0.10.64 type: 2.7.3 - dayjs@1.11.19: {} + dayjs@1.11.20: {} debug@4.4.3: dependencies: @@ -4447,7 +4471,7 @@ snapshots: dom-walk@0.1.2: {} - dompurify@3.3.2: + dompurify@3.3.3: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -5013,10 +5037,10 @@ snapshots: picomatch@4.0.3: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)): + pinia@3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.9 - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -5071,9 +5095,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.8.0(vue@3.5.29(typescript@5.9.3)): + qrcode.vue@3.8.0(vue@3.5.30(typescript@5.9.3)): dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) quansync@0.2.11: {} @@ -5351,7 +5375,7 @@ snapshots: dependencies: global: 4.4.0 - vite-plugin-compression2@2.5.0(rollup@4.57.1): + vite-plugin-compression2@2.5.1(rollup@4.57.1): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.57.1) tar-mini: 0.2.0 @@ -5386,12 +5410,13 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.2.8(vue@3.5.29(typescript@5.9.3)): + vue-i18n@11.3.0(vue@3.5.30(typescript@5.9.3)): dependencies: - '@intlify/core-base': 11.2.8 - '@intlify/shared': 11.2.8 + '@intlify/core-base': 11.3.0 + '@intlify/devtools-types': 11.3.0 + '@intlify/shared': 11.3.0 '@vue/devtools-api': 6.6.4 - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) vue-lazyload@3.0.0: {} @@ -5399,10 +5424,10 @@ snapshots: dependencies: epubjs: 0.3.93 - vue-router@5.0.3(@vue/compiler-sfc@3.5.29)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3)): + vue-router@5.0.3(@vue/compiler-sfc@3.5.30)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)): dependencies: '@babel/generator': 7.29.1 - '@vue-macros/common': 3.1.2(vue@3.5.29(typescript@5.9.3)) + '@vue-macros/common': 3.1.2(vue@3.5.30(typescript@5.9.3)) '@vue/devtools-api': 8.0.6 ast-walker-scope: 0.8.3 chokidar: 5.0.0 @@ -5417,15 +5442,15 @@ snapshots: tinyglobby: 0.2.15 unplugin: 3.0.0 unplugin-utils: 0.3.1 - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) yaml: 2.8.2 optionalDependencies: - '@vue/compiler-sfc': 3.5.29 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.29(typescript@5.9.3)) + '@vue/compiler-sfc': 3.5.30 + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) - vue-toastification@2.0.0-rc.5(vue@3.5.29(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.30(typescript@5.9.3)): dependencies: - vue: 3.5.29(typescript@5.9.3) + vue: 3.5.30(typescript@5.9.3) vue-tsc@3.2.5(typescript@5.9.3): dependencies: @@ -5433,13 +5458,13 @@ snapshots: '@vue/language-core': 3.2.5 typescript: 5.9.3 - vue@3.5.29(typescript@5.9.3): + vue@3.5.30(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.29 - '@vue/compiler-sfc': 3.5.29 - '@vue/runtime-dom': 3.5.29 - '@vue/server-renderer': 3.5.29(vue@3.5.29(typescript@5.9.3)) - '@vue/shared': 3.5.29 + '@vue/compiler-dom': 3.5.30 + '@vue/compiler-sfc': 3.5.30 + '@vue/runtime-dom': 3.5.30 + '@vue/server-renderer': 3.5.30(vue@3.5.30(typescript@5.9.3)) + '@vue/shared': 3.5.30 optionalDependencies: typescript: 5.9.3 diff --git a/go.mod b/go.mod index cf34bdf122..e354852959 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/filebrowser/filebrowser/v2 -go 1.25 +go 1.25.0 require ( github.com/asdine/storm/v3 v3.2.1 @@ -25,9 +25,10 @@ require ( github.com/spf13/viper v1.21.0 github.com/stretchr/testify v1.11.1 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce - golang.org/x/crypto v0.48.0 - golang.org/x/image v0.36.0 - golang.org/x/text v0.34.0 + go.etcd.io/bbolt v1.4.3 + golang.org/x/crypto v0.49.0 + golang.org/x/image v0.37.0 + golang.org/x/text v0.35.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) @@ -73,13 +74,12 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/ulikunitz/xz v0.5.15 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.etcd.io/bbolt v1.4.3 // indirect go.uber.org/atomic v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect - golang.org/x/net v0.49.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect + golang.org/x/net v0.51.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 459182b048..07a252baeb 100644 --- a/go.sum +++ b/go.sum @@ -283,8 +283,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -296,8 +296,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.36.0 h1:Iknbfm1afbgtwPTmHnS2gTM/6PPZfH+z2EFuOkSbqwc= -golang.org/x/image v0.36.0/go.mod h1:YsWD2TyyGKiIX1kZlu9QfKIsQ4nAAK9bdgdrIsE7xy4= +golang.org/x/image v0.37.0 h1:ZiRjArKI8GwxZOoEtUfhrBtaCN+4b/7709dlT6SSnQA= +golang.org/x/image v0.37.0/go.mod h1:/3f6vaXC+6CEanU4KJxbcUZyEePbyKbaLoDOe4ehFYY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -336,8 +336,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -350,8 +350,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -377,8 +377,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -389,8 +389,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 6f772f2b105f989548fafa4ac233e92d0e6ee1b6 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 07:55:25 +0100 Subject: [PATCH 37/55] ci: update transifex settings --- transifex.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/transifex.yml b/transifex.yml index 8a12912b6d..fdecb1ce56 100644 --- a/transifex.yml +++ b/transifex.yml @@ -9,6 +9,7 @@ settings: language_mapping: sv_SE: sv-se pt_BR: pt-br + pt_PT: pt-pt zh_CN: zh-cn zh_HK: zh-hk zh_TW: zh-tw From 846fb3333a31e31f9f4cea4a98bba13a97689dd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:55:55 +0100 Subject: [PATCH 38/55] chore(deps): update dependency vite to v8 (#5831) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 402 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 386 insertions(+), 18 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 4b383137fc..36c7ae095d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -68,7 +68,7 @@ "prettier": "^3.6.2", "terser": "^5.43.1", "typescript": "^5.9.3", - "vite": "^7.2.2", + "vite": "^8.0.0", "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index cf778b3568..58de3b03df 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -116,10 +116,10 @@ importers: version: 8.57.0(@typescript-eslint/parser@8.56.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^8.0.0 - version: 8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2)) + version: 8.0.0(terser@5.46.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.5(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3)) + version: 6.0.5(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@10.0.3)(prettier@3.8.1) @@ -157,8 +157,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^7.2.2 - version: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) + specifier: ^8.0.0 + version: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.5.1(rollup@4.57.1) @@ -673,6 +673,15 @@ packages: peerDependencies: vue: ^3.0.0 + '@emnapi/core@1.9.0': + resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} + + '@emnapi/runtime@1.9.0': + resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -1117,6 +1126,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1129,13 +1141,118 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/runtime@0.115.0': + resolution: {integrity: sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@oxc-project/types@0.115.0': + resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@rolldown/binding-android-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-rc.2': resolution: {integrity: sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==} + '@rolldown/pluginutils@1.0.0-rc.9': + resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==} + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -1286,6 +1403,9 @@ packages: '@tsconfig/node24@24.0.4': resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -1806,6 +1926,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} @@ -2151,6 +2275,80 @@ packages: lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -2463,6 +2661,11 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rolldown@1.0.0-rc.9: + resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.57.1: resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -2558,6 +2761,9 @@ packages: peerDependencies: typescript: '>=4.8.4' + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tus-js-client@4.3.1: resolution: {integrity: sha512-ZLeYmjrkaU1fUsKbIi8JML52uAocjEZtBx4DKjRrqzrZa0O4MYwT6db+oqePlspV+FxXJAyFBc/L5gwUi2OFsg==} engines: {node: '>=18'} @@ -2660,15 +2866,16 @@ packages: vite-plugin-compression2@2.5.1: resolution: {integrity: sha512-2YpLZWs1ZRo9XwtSFA6/NVuBgOR+kvFk8M0HNDsP7Wu7OfJDOKT6fHB8kzuvw6jhgC9KYgDOttfaG2qC0wE9AQ==} - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@8.0.0: + resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.0.0-alpha.31 + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -2679,12 +2886,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -3458,6 +3667,22 @@ snapshots: dependencies: vue: 3.5.30(typescript@5.9.3) + '@emnapi/core@1.9.0': + dependencies: + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.25.12': optional: true @@ -3751,6 +3976,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.9.0 + '@emnapi/runtime': 1.9.0 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3763,10 +3995,63 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 + '@oxc-project/runtime@0.115.0': {} + + '@oxc-project/types@0.115.0': {} + '@pkgr/core@0.2.9': {} + '@rolldown/binding-android-arm64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.9': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.9': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.9': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9': + optional: true + '@rolldown/pluginutils@1.0.0-rc.2': {} + '@rolldown/pluginutils@1.0.0-rc.9': {} + '@rollup/pluginutils@5.3.0(rollup@4.57.1)': dependencies: '@types/estree': 1.0.8 @@ -3852,6 +4137,11 @@ snapshots: '@tsconfig/node24@24.0.4': {} + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} @@ -4069,7 +4359,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@8.0.0(terser@5.46.0)(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))': + '@vitejs/plugin-legacy@8.0.0(terser@5.46.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) @@ -4084,14 +4374,14 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.46.0 - vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.5(vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.5(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.30(typescript@5.9.3) '@volar/language-core@2.4.28': @@ -4469,6 +4759,8 @@ snapshots: deep-is@0.1.4: {} + detect-libc@2.1.2: {} + dom-walk@0.1.2: {} dompurify@3.3.3: @@ -4566,6 +4858,7 @@ snapshots: '@esbuild/win32-arm64': 0.27.3 '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + optional: true escalade@3.2.0: {} @@ -4861,6 +5154,55 @@ snapshots: dependencies: immediate: 3.0.6 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + local-pkg@1.1.2: dependencies: mlly: 1.8.0 @@ -5154,6 +5496,27 @@ snapshots: rfdc@1.4.1: {} + rolldown@1.0.0-rc.9: + dependencies: + '@oxc-project/types': 0.115.0 + '@rolldown/pluginutils': 1.0.0-rc.9 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.9 + '@rolldown/binding-darwin-x64': 1.0.0-rc.9 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.9 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.9 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.9 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.9 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.9 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.9 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 + rollup@4.57.1: dependencies: '@types/estree': 1.0.8 @@ -5184,6 +5547,7 @@ snapshots: '@rollup/rollup-win32-x64-gnu': 4.57.1 '@rollup/rollup-win32-x64-msvc': 4.57.1 fsevents: 2.3.3 + optional: true run-parallel@1.2.0: dependencies: @@ -5259,6 +5623,9 @@ snapshots: dependencies: typescript: 5.9.3 + tslib@2.8.1: + optional: true + tus-js-client@4.3.1: dependencies: buffer-from: 1.1.2 @@ -5382,16 +5749,17 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.12.0)(terser@5.46.0)(yaml@2.8.2): + vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.3)(terser@5.46.0)(yaml@2.8.2): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) + '@oxc-project/runtime': 0.115.0 + lightningcss: 1.32.0 picomatch: 4.0.3 postcss: 8.5.8 - rollup: 4.57.1 + rolldown: 1.0.0-rc.9 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.12.0 + esbuild: 0.27.3 fsevents: 2.3.3 terser: 5.46.0 yaml: 2.8.2 From 21709428b19252be13502f65e9131a2c3fb844ee Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 07:56:59 +0100 Subject: [PATCH 39/55] ci: update transifex settings --- transifex.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/transifex.yml b/transifex.yml index fdecb1ce56..3ab4a61a31 100644 --- a/transifex.yml +++ b/transifex.yml @@ -14,3 +14,4 @@ settings: zh_HK: zh-hk zh_TW: zh-tw nl_BE: nl-be + lv_LV: lv-lv From 858eb426515ec55172e9cca47bdf1e25a0d0d81d Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 07:57:56 +0100 Subject: [PATCH 40/55] feat: Updates for project File Browser (#5807) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 4 +- frontend/src/i18n/bg.json | 4 +- frontend/src/i18n/ca.json | 4 +- frontend/src/i18n/cs.json | 4 +- frontend/src/i18n/de.json | 4 +- frontend/src/i18n/el.json | 4 +- frontend/src/i18n/es.json | 4 +- frontend/src/i18n/fa.json | 4 +- frontend/src/i18n/fr.json | 4 +- frontend/src/i18n/he.json | 4 +- frontend/src/i18n/hr.json | 4 +- frontend/src/i18n/hu.json | 4 +- frontend/src/i18n/is.json | 4 +- frontend/src/i18n/it.json | 4 +- frontend/src/i18n/ja.json | 4 +- frontend/src/i18n/ko.json | 4 +- frontend/src/i18n/lv.json | 4 +- frontend/src/i18n/lv_LV.json | 4 +- frontend/src/i18n/nl-be.json | 4 +- frontend/src/i18n/nl.json | 4 +- frontend/src/i18n/no.json | 4 +- frontend/src/i18n/pl.json | 4 +- frontend/src/i18n/pt-br.json | 4 +- frontend/src/i18n/pt.json | 4 +- frontend/src/i18n/pt_PT.json | 306 +++++++++++++++++++++++++++++++++++ frontend/src/i18n/ro.json | 4 +- frontend/src/i18n/ru.json | 4 +- frontend/src/i18n/sk.json | 4 +- frontend/src/i18n/sv-se.json | 4 +- frontend/src/i18n/tr.json | 4 +- frontend/src/i18n/uk.json | 4 +- frontend/src/i18n/vi.json | 4 +- frontend/src/i18n/zh-cn.json | 4 +- frontend/src/i18n/zh-tw.json | 4 +- 34 files changed, 405 insertions(+), 33 deletions(-) create mode 100644 frontend/src/i18n/pt_PT.json diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index 5df31c3ff4..cadd540283 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "الصور", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index 582c1059e3..2cba2b983f 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index c9e64b0f2d..4ce9faa0b3 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imatges", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 5d08768ac6..e354475f83 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index bacaf0fa96..a09e2bdb51 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -175,7 +175,9 @@ "filesInDest": "Dateien im Zielordner", "override": "Überschreiben", "skip": "Überspringen", - "forbiddenError": "Zugriff verweigert" + "forbiddenError": "Zugriff verweigert", + "currentPassword": "Dein Passwort", + "currentPasswordMessage": "Gib dein Passwort ein, um diese Aktion zu bestätigen." }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index 0ab2b58971..90853ab7da 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Εικόνες", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 9f06513755..92847e62be 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imágenes", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 9f4504bd09..a40addba4b 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "تصاویر", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 5d39372c1c..7a5e6070c4 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Images", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index dbb3263cc2..1b7a7b0bc2 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "תמונות", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 1cb4368f0d..9626a0c756 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Slike", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index bdcb33ba00..4df490b8bc 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Képek", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 3825849218..40f8fd6de6 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Myndir", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index f3e7478abf..a363bd0680 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Immagini", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index bf623ec224..79c29ac8bc 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "画像", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 5bad2d5616..1ca34ed38b 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -175,7 +175,9 @@ "filesInDest": "대상 경로의 파일", "override": "덮어쓰기", "skip": "건너뛰기", - "forbiddenError": "권한 오류" + "forbiddenError": "권한 오류", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "이미지", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index e852b17026..72cc0a5dd3 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index 748614d600..723076d73e 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Attēli", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index ee27329e97..f9fb8fd8b8 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/nl.json b/frontend/src/i18n/nl.json index 5d507a5535..331eb3063f 100644 --- a/frontend/src/i18n/nl.json +++ b/frontend/src/i18n/nl.json @@ -175,7 +175,9 @@ "filesInDest": "Bestanden in bestemming", "override": "Overschrijven", "skip": "Overslaan", - "forbiddenError": "Verboden Fout" + "forbiddenError": "Verboden Fout", + "currentPassword": "Uw wachtwoord", + "currentPasswordMessage": "Voer uw wachtwoord in om deze actie te valideren." }, "search": { "images": "Afbeeldingen", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index dd82ee85f8..cd77273984 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Bilde", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 2a46352892..f613dd5173 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -175,7 +175,9 @@ "filesInDest": "Pliki w miejscu docelowym", "override": "Zastąp", "skip": "Pomiń", - "forbiddenError": "Błąd zabronionego dostępu" + "forbiddenError": "Błąd zabronionego dostępu", + "currentPassword": "Twoje hasło", + "currentPasswordMessage": "Wpisz swoje hasło, aby zatwierdzić tę czynność." }, "search": { "images": "Obrazy", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 9b9122c65b..6b9c90048e 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index 8f5e852455..ef5a4cf734 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imagens", diff --git a/frontend/src/i18n/pt_PT.json b/frontend/src/i18n/pt_PT.json new file mode 100644 index 0000000000..f7b8e52446 --- /dev/null +++ b/frontend/src/i18n/pt_PT.json @@ -0,0 +1,306 @@ +{ + "buttons": { + "cancel": "Cancelar", + "clear": "Limpar", + "close": "Fechar", + "continue": "Continuar", + "copy": "Copiar", + "copyFile": "Copiar ficheiro", + "copyToClipboard": "Copiar para a área de transferência", + "copyDownloadLinkToClipboard": "Copiar link do download para a área de transferência", + "create": "Criar", + "delete": "Eliminar", + "download": "Descarregar", + "file": "Ficheiro", + "folder": "Pasta", + "fullScreen": "Alternar ecrã inteiro", + "hideDotfiles": "Ocultar ficheiros começados por ponto", + "info": "Info", + "more": "Mais", + "move": "Mover", + "moveFile": "Mover ficheiro", + "new": "Novo", + "next": "Seguinte", + "ok": "OK", + "permalink": "Obter link permanente", + "previous": "Anterior", + "preview": "Pré-visualizar", + "publish": "Publicar", + "rename": "Mudar o nome", + "replace": "Substituir", + "reportIssue": "Reportar problema", + "save": "Guardar", + "schedule": "Agendar", + "search": "Pesquisar", + "select": "Seleccionar", + "selectMultiple": "Seleccionar vários", + "share": "Partilhar", + "shell": "Alternar shell", + "submit": "Enviar", + "switchView": "Alterar vista", + "toggleSidebar": "Alternar barra lateral", + "update": "Actualizar", + "upload": "Enviar", + "openFile": "Abrir ficheiro", + "openDirect": "Ver raw", + "discardChanges": "Descartar", + "stopSearch": "Parar a procura", + "saveChanges": "Guardar alterações", + "editAsText": "Editar como Texto", + "increaseFontSize": "Aumentar o tamanho da letra", + "decreaseFontSize": "Diminuir o tamanho da letra", + "overrideAll": "Substituir todos os ficheiros na pasta de destino", + "skipAll": "Ignorar todos os ficheiros em conflito", + "renameAll": "Mudar o nome a todos os ficheiros (criar uma cópia)", + "singleDecision": "Decidir para cada ficheiro em conflito" + }, + "download": { + "downloadFile": "Descarregar Ficheiro", + "downloadFolder": "Descarregar Pasta", + "downloadSelected": "Descarregar Seleccionados" + }, + "upload": { + "abortUpload": "Tem a certeza que quer abortar?" + }, + "errors": { + "forbidden": "Não tem permissão para aceder a isto.", + "internal": "Algo correu mal.", + "notFound": "Esta localização não pôde ser alcançada.", + "connection": "Este servidor não pôde ser alcançado." + }, + "files": { + "body": "Corpo", + "closePreview": "Fechar pré-visualização", + "files": "Ficheiros", + "folders": "Pastas", + "home": "Início", + "lastModified": "Última modificação", + "loading": "A carregar...", + "lonely": "Sinto-me sózinho...", + "metadata": "Metadados", + "multipleSelectionEnabled": "Selecção múltipla activada", + "name": "Nome", + "size": "Tamanho", + "sortByLastModified": "Ordenar pela última modificação", + "sortByName": "Ordenar pelo nome", + "sortBySize": "Ordenar pelo tamanho", + "noPreview": "Pré-visualização não disponível para este ficheiro.", + "csvTooLarge": "O ficheiro CSV é demasiado grande para pré-visualizar (>5MB). Por favor, descarregue-o para visualizá-lo.", + "csvLoadFailed": "Falha ao carregar o ficheiro CSV.", + "showingRows": "A mostrar {count} linha(s)", + "columnSeparator": "Separador de Coluna", + "csvSeparators": { + "comma": "Vírgula (,)", + "semicolon": "Ponto e vírgula (;)", + "both": "Ambos (,) e (;)" + }, + "fileEncoding": "Codificação do Ficheiro" + }, + "help": { + "click": "seleccionar ficheiro ou pasta", + "ctrl": { + "click": "seleccionar vários ficheiros e pastas", + "f": "opens search", + "s": "guarda um ficheiro ou descarrega a pasta onde estiver" + }, + "del": "elimina os itens seleccionados", + "doubleClick": "abre um ficheiro ou pasta", + "esc": "limpa a selecção e/ou fecha o pedido", + "f1": "esta informação", + "f2": "muda o nome ao ficheiro", + "help": "Ajuda" + }, + "login": { + "createAnAccount": "Criar uma conta", + "loginInstead": "Já tenho uma conta", + "password": "Palavra-passe", + "passwordConfirm": "Confirmação da Palavra-passe", + "passwordsDontMatch": "As palavras-passe não coincidem", + "signup": "Registar", + "submit": "Entrar", + "username": "Nome de utilizador", + "usernameTaken": "O nome de utilizador já existe", + "wrongCredentials": "Credenciais erradas", + "passwordTooShort": "A palavra-passe tem de ter pelo menos {min} caracteres", + "logout_reasons": { + "inactivity": "Foi terminada a sessão por inactividade." + } + }, + "permanent": "Permanente", + "prompts": { + "copy": "Copiar", + "copyMessage": "Escolha a localização para copiar os ficheiros:", + "currentlyNavigating": "Actualmente a navegar em:", + "deleteMessageMultiple": "Tem a certeza que quer eliminar {count} ficheiro(s)?", + "deleteMessageSingle": "Tem a certeza que quer eliminar este ficheiro/pasta?", + "deleteMessageShare": "Tem a certeza que quer eliminar esta partilha ({path})?", + "deleteUser": "Tem a certeza que quer eliminar este utilizador?", + "deleteTitle": "Eliminar ficheiros", + "displayName": "Nome a mostrar:", + "download": "Descarregar ficheiros", + "downloadMessage": "Escolha o formato que pretende descarregar.", + "error": "Algo correu mal.", + "fileInfo": "Informação do Ficheiro", + "filesSelected": "{count} ficheiro(s) seleccionado(s)", + "lastModified": "última modificação", + "move": "Mover", + "moveMessage": "Escolha uma nova casa para o(s) seu(s) ficheiro(s)/pasta(s):", + "newArchetype": "Escolha um novo post baseado no archetype. O seu ficheiro irá criado no conteúdo da pasta.", + "newDir": "Nova pasta", + "newDirMessage": "Nomeie a sua nova pasta.", + "newFile": "Novo ficheiro", + "newFileMessage": "Nomeie o seu novo ficheiro.", + "numberDirs": "Número de pastas", + "numberFiles": "Número de ficheiros", + "rename": "Mudar o nome", + "renameMessage": "Introduza um novo nome para", + "replace": "Substituir", + "replaceMessage": "Um dos ficheiros que está a tentar enviar tem um nome em conflito. Quer ignorar este ficheiro e continuar a enviar ou substituir o existente?\none?\n", + "schedule": "Agendar", + "scheduleMessage": "Escolha a data e hora para agendar a autenticação desta publicação.", + "show": "Mostrar", + "size": "Tamanho", + "upload": "Enviar", + "uploadFiles": "A enviar {files} ficheiros...", + "uploadMessage": "Seleccione uma opção para enviar.", + "optionalPassword": "Palavra-passe opcional", + "resolution": "Resolução", + "discardEditorChanges": "Tem a certeza que quer descartar as alterações que fez?", + "replaceOrSkip": "Substituir ou ignorar ficheiros", + "resolveConflict": "Que ficheiros quer manter?", + "singleConflictResolve": "Se seleccionar ambas as versões, um número será adicionar ao nome do ficheiro copiado.", + "fastConflictResolve": "Na pasta de destino há {count} ficheiros com o mesmo nome.", + "uploadingFiles": "A enviar ficheiros", + "filesInOrigin": "Ficheiros na origem", + "filesInDest": "Ficheiros no destino", + "override": "Substituir", + "skip": "Ignorar", + "forbiddenError": "Erro de Proibido", + "currentPassword": "A sua palavra-passe", + "currentPasswordMessage": "Insira a sua palavra-passe para validar esta acção." + }, + "search": { + "images": "Imagens", + "music": "Música", + "pdf": "PDF", + "pressToSearch": "Prima Enter para procurar...", + "search": "Procurar...", + "typeToSearch": "Digite para procurar...", + "types": "Tipos", + "video": "Vídeo" + }, + "settings": { + "aceEditorTheme": "Editor de temas audaz", + "admin": "Admin", + "administrator": "Administrador", + "allowCommands": "Executar comandos", + "allowEdit": "Editar, mudar o nome e eliminar ficheiros ou pastas", + "allowNew": "Criar novos ficheiros e pastas", + "allowPublish": "Publicar novas publicações e páginas", + "allowSignup": "Permitir que utilizadores se registem", + "hideLoginButton": "Ocultar o botão de início de sessão nas páginas públicas", + "avoidChanges": "(deixe em branco para evitar alterações)", + "branding": "Branding", + "brandingDirectoryPath": "Caminho da pasta da marca", + "brandingHelp": "Pode personalizar a aparência da instânciado seu File Browser\nao alterar o seu nome, alterar o logótipo, adicionar estilos personalizados e até mesmo desactivar links externos para o Github.\nPara mais informação acerca de personalização de marca, por favor, veja {0}.", + "changePassword": "Alterar Palavra-passe", + "commandRunner": "Executador de comandos", + "commandRunnerHelp": "Aqui pode definir comandos que são executados nos eventos nomeados. Tem de escrever um por linha. A variável de ambiente {0} e {1} irá estar disponível, sendo {0} relativo a {1}.\nPara mais informação acerca desta funcionalidade e variáveis de ambiente disponíveis, por favor, leia o {2}.", + "commandsUpdated": "Comandos actualizados!", + "createUserDir": "Criar automaticamente a pasta da casa do utilizador quando adicionar um novo utilizador", + "minimumPasswordLength": "Comprimento mínimo da palavra-passe", + "tusUploads": "Envios aos Bocados", + "tusUploadsHelp": "O File Browser suporta envio de ficheiros aos bocados, permitindo a criação de envios eficiente, de confiança e retomáveis de ficheiros aos bocados mesmo em redes instáveis.", + "tusUploadsChunkSize": "Indica o tamanho máximo do pedido (envios directos serão utilizadas para envios pequenos). Pode introduzir um valor inteiro para tamanhos de byte ou uma cadeia como 10MB, 1GB, etc.", + "tusUploadsRetryCount": "Número de tentativas a realizar se um bocado falha ao ser enviado.", + "userHomeBasePath": "O caminho base para a pasta da casa do utilizador", + "userScopeGenerationPlaceholder": "O escopo será gerado automaticamente", + "createUserHomeDirectory": "Criar pasta da casa do utilizador", + "customStylesheet": "Folha de estilo Personalizada", + "defaultUserDescription": "Estes são as definições por defeito para novos utilizadores", + "disableExternalLinks": "Eliminar links externos (excepto documentação)", + "disableUsedDiskPercentage": "Desactivar gráfico de percentagem de uso de disco", + "documentation": "documentação\ndocumentation", + "examples": "Exemplos", + "executeOnShell": "Executar na shell", + "executeOnShellDescription": "Por defeito, o File Browser executa os comandos ao chamar os seus binários\ndirectamenta. Se quiser executá-los mesmo na shell (como o Bash ou PoweShell), pode defini-lo aqui com os argumentos pedidos e flags. Se definido, o comando que executar será acrescentado como um argumento. Isto aplica-se a ambos comandos de utilizador e hooks de eventos.", + "globalRules": "Esta é um conjunto global de regras de permissão e negação. Elas aplicam-se a cada utilizador. Pode definir regras especificas em cada definições de utilizador para contornar estas.", + "globalSettings": "Definições Globais", + "hideDotfiles": "Ocultar ficheiros começados por ponto", + "insertPath": "Introduza o caminho", + "insertRegex": "Introduza expressão regex", + "instanceName": "Nome da instância", + "language": "Idioma", + "lockPassword": "Impedir o utilizador de alterar a palavra-passe", + "newPassword": "A sua nova palavra-passe", + "newPasswordConfirm": "Confirmar a sua palavra-passe", + "newUser": "Novo Utilizador", + "password": "Palavra-passe", + "passwordUpdated": "Palavras-passe não coincidem!", + "path": "Caminho", + "perm": { + "create": "Criar ficheiros e pastas", + "delete": "Eliminar ficheiros e pastas", + "download": "Descarregar", + "execute": "Executar comandos", + "modify": "Editar ficheiros", + "rename": "Mudar o nome ou mover ficheiros e pastas", + "share": "Ficheiros partilhados" + }, + "permissions": "Permissões", + "permissionsHelp": "Pode definir um utilizador um administrador ou escolher as permissões individualmente. Se escolher \"Administrador\", todas as outras opções serão automaticamente marcadas. A gestão de utilizadores continua a ser um privilégio de um administrador.\n", + "profileSettings": "Definições de Perfil", + "redirectAfterCopyMove": "Redireccionar para o destino depois de copiar/mover", + "ruleExample1": "impede o acesso a qualquer ficheiro começado por ponto (como .git ou .gitignore) em cada pasta.\n", + "ruleExample2": "bloqueia o acesso ao ficheiro chamado Caddyfile na raíz de um escopo.", + "rules": "Regras", + "rulesHelp": "Aqui pode definir um conjunto de regras de permissão e negação para este utilizador especifico. Os ficheiros bloqueados não serão mostrados nas listas e não são acessíveis ao utilizador. Suportamos regex e caminhos relativos ao escopo do utilizador.\n", + "scope": "Escopo", + "setDateFormat": "Definir formato exacto da data", + "settingsUpdated": "Definições actualizadas!", + "shareDuration": "Duração da Partilha", + "shareManagement": "Gestão de Partilhas", + "shareDeleted": "Partilha eliminada!", + "singleClick": "Utilizar cliques únicos para abrir ficheiros e pastas", + "themes": { + "default": "Predefinição do sistema", + "dark": "Escuro", + "light": "Claro", + "title": "Tema" + }, + "user": "Utilizador", + "userCommands": "Comandos", + "userCommandsHelp": "Uma lista separada por espaços com os comandos disponíveis para este utilizador. Exemplo:\n", + "userCreated": "Utilizador criado!", + "userDefaults": "Definições de utilizador por defeito", + "userDeleted": "Utilizador eliminado!", + "userManagement": "Gestão de Utilizadores", + "userUpdated": "Utilizador actualizado!", + "username": "Nome de utilizador", + "users": "Utilizadores", + "currentPassword": "A Sua Palavra-passe Actual" + }, + "sidebar": { + "help": "Ajuda", + "hugoNew": "Hugo New", + "login": "Iniciar sessão", + "logout": "Sair", + "myFiles": "Os meus ficheiros", + "newFile": "Novo ficheiro", + "newFolder": "Nova pasta", + "preview": "Pré-visualizar", + "settings": "Definições", + "signup": "Registar", + "siteSettings": "Definições do Site" + }, + "success": { + "linkCopied": "Link copiado!" + }, + "time": { + "days": "Dias", + "hours": "Horas", + "minutes": "Minutos", + "seconds": "Segundos", + "unit": "Unidade de Tempo" + } +} diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index b36436ea1b..052025455d 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Imagini", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 6cd70e1317..4ff2658786 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Изображения", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 82089d7ba2..c43b0816d0 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Obrázky", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index a7cf261a2d..5102f9b066 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Bilder", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index 800c9e6493..e0608217c4 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Görseller", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index d9aa3fb4f1..0eea735704 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Зображення", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index ab73c0cb27..3b84ab4625 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "Hình ảnh", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 816e1d8d82..9d136737a1 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "图像", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 986b1d3b03..edced1fb4a 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -175,7 +175,9 @@ "filesInDest": "Files in destination", "override": "Overwrite", "skip": "Skip", - "forbiddenError": "Forbidden Error" + "forbiddenError": "Forbidden Error", + "currentPassword": "Your password", + "currentPasswordMessage": "Enter your password to validate this action." }, "search": { "images": "影像", From c21af0791a5df458c2ddb81ce9ae44b772b6d82d Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:12:03 +0100 Subject: [PATCH 41/55] fix: around languages --- frontend/src/components/files/VideoPlayer.vue | 13 +- .../src/components/settings/Languages.vue | 3 +- frontend/src/i18n/index.ts | 24 +- frontend/src/i18n/lv_LV.json | 306 ------------------ frontend/src/i18n/{pt_PT.json => pt-pt.json} | 0 5 files changed, 29 insertions(+), 317 deletions(-) delete mode 100644 frontend/src/i18n/lv_LV.json rename frontend/src/i18n/{pt_PT.json => pt-pt.json} (100%) diff --git a/frontend/src/components/files/VideoPlayer.vue b/frontend/src/components/files/VideoPlayer.vue index ac38b6d114..295907db5c 100644 --- a/frontend/src/components/files/VideoPlayer.vue +++ b/frontend/src/components/files/VideoPlayer.vue @@ -147,26 +147,33 @@ interface LanguageImports { } const languageImports: LanguageImports = { - he: () => import("video.js/dist/lang/he.json"), - hu: () => import("video.js/dist/lang/hu.json"), ar: () => import("video.js/dist/lang/ar.json"), + bg: () => import("video.js/dist/lang/bg.json"), + cs: () => import("video.js/dist/lang/cs.json"), de: () => import("video.js/dist/lang/de.json"), el: () => import("video.js/dist/lang/el.json"), en: () => import("video.js/dist/lang/en.json"), es: () => import("video.js/dist/lang/es.json"), fr: () => import("video.js/dist/lang/fr.json"), + he: () => import("video.js/dist/lang/he.json"), + hr: () => import("video.js/dist/lang/hr.json"), + hu: () => import("video.js/dist/lang/hu.json"), it: () => import("video.js/dist/lang/it.json"), ja: () => import("video.js/dist/lang/ja.json"), ko: () => import("video.js/dist/lang/ko.json"), + lv: () => import("video.js/dist/lang/lv.json"), + nb: () => import("video.js/dist/lang/nb.json"), + nl: () => import("video.js/dist/lang/nl.json"), "nl-be": () => import("video.js/dist/lang/nl.json"), pl: () => import("video.js/dist/lang/pl.json"), "pt-br": () => import("video.js/dist/lang/pt-BR.json"), - pt: () => import("video.js/dist/lang/pt-PT.json"), + "pt-pt": () => import("video.js/dist/lang/pt-PT.json"), ro: () => import("video.js/dist/lang/ro.json"), ru: () => import("video.js/dist/lang/ru.json"), sk: () => import("video.js/dist/lang/sk.json"), tr: () => import("video.js/dist/lang/tr.json"), uk: () => import("video.js/dist/lang/uk.json"), + vi: () => import("video.js/dist/lang/vi.json"), "zh-cn": () => import("video.js/dist/lang/zh-CN.json"), "zh-tw": () => import("video.js/dist/lang/zh-TW.json"), }; diff --git a/frontend/src/components/settings/Languages.vue b/frontend/src/components/settings/Languages.vue index 3df6028e61..6a6033587b 100644 --- a/frontend/src/components/settings/Languages.vue +++ b/frontend/src/components/settings/Languages.vue @@ -34,9 +34,10 @@ export default { no: "Norsk", nl: "Nederlands (Nederland)", "nl-be": "Nederlands (België)", + lv: "Latviešu", pl: "Polski", "pt-br": "Português (Brasil)", - pt: "Português (Portugal)", + "pt-pt": "Português (Portugal)", ro: "Romanian", ru: "Русский", sk: "Slovenčina", diff --git a/frontend/src/i18n/index.ts b/frontend/src/i18n/index.ts index 9fa7155f85..44b8e17783 100644 --- a/frontend/src/i18n/index.ts +++ b/frontend/src/i18n/index.ts @@ -3,6 +3,7 @@ import { createI18n } from "vue-i18n"; import("dayjs/locale/ar"); import("dayjs/locale/bg"); +import("dayjs/locale/ca"); import("dayjs/locale/cs"); import("dayjs/locale/de"); import("dayjs/locale/el"); @@ -16,6 +17,7 @@ import("dayjs/locale/is"); import("dayjs/locale/it"); import("dayjs/locale/ja"); import("dayjs/locale/ko"); +import("dayjs/locale/lv"); import("dayjs/locale/nb"); import("dayjs/locale/nl"); import("dayjs/locale/nl-be"); @@ -41,6 +43,18 @@ export function detectLocale() { // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language let locale = navigator.language.toLowerCase(); switch (true) { + case /^ar\b/.test(locale): + locale = "ar"; + break; + case /^bg\b/.test(locale): + locale = "bg"; + break; + case /^cs\b/.test(locale): + locale = "cs"; + break; + case /^lv\b/.test(locale): + locale = "lv"; + break; case /^he\b/.test(locale): locale = "he"; break; @@ -50,9 +64,6 @@ export function detectLocale() { case /^hu\b/.test(locale): locale = "hu"; break; - case /^ar\b/.test(locale): - locale = "ar"; - break; case /^el.*/i.test(locale): locale = "el"; break; @@ -74,8 +85,9 @@ export function detectLocale() { case /^pt-br\b/.test(locale): locale = "pt-br"; break; + case /^pt-pt\b/.test(locale): case /^pt\b/.test(locale): - locale = "pt"; + locale = "pt-pt"; break; case /^ja\b/.test(locale): locale = "ja"; @@ -128,9 +140,7 @@ export function detectLocale() { case /^no\b/.test(locale): locale = "no"; break; - case /^bg\b/.test(locale): - locale = "bg"; - break; + default: locale = "en"; } diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json deleted file mode 100644 index 723076d73e..0000000000 --- a/frontend/src/i18n/lv_LV.json +++ /dev/null @@ -1,306 +0,0 @@ -{ - "buttons": { - "cancel": "Atcelt", - "clear": "Tīrs", - "close": "Aizvērt", - "continue": "Turpināt", - "copy": "Kopēt", - "copyFile": "Kopēt failu", - "copyToClipboard": "Kopēt starpliktuvē", - "copyDownloadLinkToClipboard": "Kopēt lejupielādes saiti starpliktuvē", - "create": "Izveidot", - "delete": "Dzēst", - "download": "Lejupielādēt", - "file": "Fails", - "folder": "Mape", - "fullScreen": "Pārslēgt pilnekrāna režīmu", - "hideDotfiles": "Slēpt punktfailus", - "info": "Informācija", - "more": "Vairāk", - "move": "Pārvietot", - "moveFile": "Pārvietot failu", - "new": "Jauns", - "next": "Nākamais", - "ok": "Labi", - "permalink": "Iegūt pastāvīgo saiti", - "previous": "Iepriekšējais", - "preview": "Priekšskatījums", - "publish": "Publicēt", - "rename": "Pārdēvēt", - "replace": "Aizstāt", - "reportIssue": "Ziņot par problēmu", - "save": "Saglabāt", - "schedule": "Grafiks", - "search": "Meklēt", - "select": "Izvēlieties", - "selectMultiple": "Izvēlieties vairākus", - "share": "Dalīties", - "shell": "Pārslēgt apvalku", - "submit": "Iesniegt", - "switchView": "Pārslēgt skatu", - "toggleSidebar": "Pārslēgt sānjoslu", - "update": "Atjaunināt", - "upload": "Augšupielādēt", - "openFile": "Atvērt failu", - "openDirect": "View raw", - "discardChanges": "Izmest", - "stopSearch": "Beigt meklēšanu", - "saveChanges": "Saglabāt izmaiņas", - "editAsText": "Rediģēt kā tekstu", - "increaseFontSize": "Palieliniet fonta lielumu", - "decreaseFontSize": "Samaziniet fonta lielumu", - "overrideAll": "Replace all files in destination folder", - "skipAll": "Skip all conflicting files", - "renameAll": "Rename all files (create a copy)", - "singleDecision": "Decide for each conflicting file" - }, - "download": { - "downloadFile": "Lejupielādēt failu", - "downloadFolder": "Lejupielādēt mapi", - "downloadSelected": "Lejupielādēt atlasīto" - }, - "upload": { - "abortUpload": "Vai tiešām vēlaties pārtraukt?" - }, - "errors": { - "forbidden": "Jums nav atļaujas piekļūt šim.", - "internal": "Kaut kas tiešām nogāja greizi.", - "notFound": "Šo atrašanās vietu nevar sasniegt.", - "connection": "Ar serveri nevar sazināties." - }, - "files": { - "body": "Ķermenis", - "closePreview": "Aizvērt priekšskatījumu", - "files": "Faili", - "folders": "Mapes", - "home": "Sākums", - "lastModified": "Pēdējoreiz modificēts", - "loading": "Notiek ielāde...", - "lonely": "Šeit ir tukša vieta...", - "metadata": "Metadati", - "multipleSelectionEnabled": "Vairākas atlases ir iespējotas", - "name": "Vārds", - "size": "Izmērs", - "sortByLastModified": "Kārtot pēc pēdējās modifikācijas", - "sortByName": "Kārtot pēc nosaukuma", - "sortBySize": "Kārtot pēc izmēra", - "noPreview": "Šim failam nav pieejams priekšskatījums.", - "csvTooLarge": "CSV fails ir pārāk liels priekšskatīšanai (>5 MB). Lūdzu, lejupielādējiet to, lai skatītu", - "csvLoadFailed": "Neizdevās ielādēt CSV failu.", - "showingRows": "Rāda {count} rindu(as)", - "columnSeparator": "Kolonnu atdalītājs", - "csvSeparators": { - "comma": "Komats (,)", - "semicolon": "Semikols (;)", - "both": "Gan (,) gan (;)" - }, - "fileEncoding": "File Encoding" - }, - "help": { - "click": "atlasiet failu vai direktoriju", - "ctrl": { - "click": "atlasīt vairākus failus vai direktorijus", - "f": "atver meklēšanu", - "s": "saglabājiet failu vai lejupielādējiet direktoriju, kurā atrodaties" - }, - "del": "dzēst atlasītos vienumus", - "doubleClick": "atvērt failu vai direktoriju", - "esc": "notīrīt atlasi un/vai aizvērt uzvedni", - "f1": "šo informāciju", - "f2": "pārdēvēt failu", - "help": "Palīdzība" - }, - "login": { - "createAnAccount": "Izveidot kontu", - "loginInstead": "Jau ir konts", - "password": "Parole", - "passwordConfirm": "Paroles apstiprināšana", - "passwordsDontMatch": "Paroles nesakrīt", - "signup": "Reģistrēšanās", - "submit": "Pieteikties", - "username": "Lietotājvārds", - "usernameTaken": "Lietotājvārds jau aizņemts", - "wrongCredentials": "Nepareizi akreditācijas dati", - "passwordTooShort": "Parolei jābūt vismaz {min} rakstzīmju garai", - "logout_reasons": { - "inactivity": "Jūs esat atteicies no sistēmas neaktivitātes dēļ." - } - }, - "permanent": "Pastāvīgs", - "prompts": { - "copy": "Kopēt", - "copyMessage": "Izvēlieties atrašanās vietu, uz kuru kopēt failus:", - "currentlyNavigating": "Pašlaik navigācija:", - "deleteMessageMultiple": "Vai tiešām vēlaties dzēst {count} failu(s)?", - "deleteMessageSingle": "Vai tiešām vēlaties dzēst šo failu/mapi?", - "deleteMessageShare": "Vai tiešām vēlaties dzēst šo koplietojumu({path})?", - "deleteUser": "Vai tiešām vēlaties dzēst šo lietotāju?", - "deleteTitle": "Dzēst failus", - "displayName": "Displeja nosaukums:", - "download": "Lejupielādēt failus", - "downloadMessage": "Izvēlieties formātu, kuru vēlaties lejupielādēt.", - "error": "Kaut kas nogāja greizi", - "fileInfo": "Informācija par failu", - "filesSelected": "{count} atlasīti faili", - "lastModified": "Pēdējās izmaiņas", - "move": "Pārvietot", - "moveMessage": "Izvēlieties jaunu mājvietu failam(iem)/mapei(ēm):", - "newArchetype": "Izveidojiet jaunu ierakstu, pamatojoties uz arhtipu. Jūsu fails tiks izveidots satura mapē.", - "newDir": "Jauna direktorija", - "newDirMessage": "Nosaukums savai jaunajai direktorijai.", - "newFile": "Jauns fails", - "newFileMessage": "Nosauciet savu jauno failu.", - "numberDirs": "Katalogu skaits", - "numberFiles": "Failu skaits", - "rename": "Pārdēvēt", - "renameMessage": "Ievietojiet jaunu nosaukumu", - "replace": "Aizstāt", - "replaceMessage": "Vienam no failiem, kurus mēģināt augšupielādēt, ir konfliktējošs nosaukums. Vai vēlaties izlaist šo failu un turpināt augšupielādi vai aizstāt esošo?\n", - "schedule": "Grafiks", - "scheduleMessage": "Izvēlieties datumu un laiku, lai ieplānotu šī ieraksta publicēšanu.", - "show": "Rādīt", - "size": "Izmērs", - "upload": "Augšupielādēt", - "uploadFiles": "Notiek {files} failu augšupielāde...", - "uploadMessage": "Atlasiet augšupielādes opciju.", - "optionalPassword": "Izvēles parole", - "resolution": "Izšķirtspēja", - "discardEditorChanges": "Vai tiešām vēlaties atmest veiktās izmaiņas?", - "replaceOrSkip": "Replace or skip files", - "resolveConflict": "Which files do you want to keep?", - "singleConflictResolve": "If you select both versions, a number will be added to the name of the copied file.", - "fastConflictResolve": "The destination folder there are {count} files with same name.", - "uploadingFiles": "Uploading files", - "filesInOrigin": "Files in origin", - "filesInDest": "Files in destination", - "override": "Overwrite", - "skip": "Skip", - "forbiddenError": "Forbidden Error", - "currentPassword": "Your password", - "currentPasswordMessage": "Enter your password to validate this action." - }, - "search": { - "images": "Attēli", - "music": "Mūzika", - "pdf": "PDF", - "pressToSearch": "Nospiediet taustiņu Enter, lai meklētu...", - "search": "Meklē...", - "typeToSearch": "Ierakstiet, lai meklētu...", - "types": "Veidi", - "video": "Video" - }, - "settings": { - "aceEditorTheme": "Ace redaktora tēma", - "admin": "Admin", - "administrator": "Administrator", - "allowCommands": "Izpildīt komandas", - "allowEdit": "Rediģēt, pārdēvēt un dzēst failus vai direktorijus", - "allowNew": "Izveidojiet jaunus failus un direktorijus", - "allowPublish": "Publicēt jaunus ierakstus un lapas", - "allowSignup": "Atļaut lietotājiem reģistrēties", - "hideLoginButton": "Paslēpt pieteikšanās pogu publiskajās lapās", - "avoidChanges": "(atstājiet tukšu, lai izvairītos no izmaiņām)", - "branding": "Zīmols", - "brandingDirectoryPath": "Zīmola direktorijas ceļš", - "brandingHelp": "Jūs varat pielāgot sava failu pārlūka instances izskatu un darbību, mainot tās nosaukumu, aizstājot logotipu, pievienojot pielāgotus stilus un pat atspējojot ārējās saites uz GitHub.\nLai iegūtu plašāku informāciju par pielāgotu zīmola veidošanu, lūdzu, skatiet {0}.", - "changePassword": "Mainīt paroli", - "commandRunner": "Komandu skrējējs", - "commandRunnerHelp": "Šeit varat iestatīt komandas, kas tiek izpildītas nosauktajos notikumos. Katrā rindā jāraksta pa vienai. Būs pieejami vides mainīgie {0} un {1}, kas ir {0} relatīvi pret {1}. Lai iegūtu plašāku informāciju par šo funkciju un pieejamajiem vides mainīgajiem, lūdzu, izlasiet {2}.", - "commandsUpdated": "Komandas atjauninātas!", - "createUserDir": "Automātiski izveidot lietotāja mājas direktoriju, pievienojot jaunu lietotāju", - "minimumPasswordLength": "Minimālais paroles garums", - "tusUploads": "Sadalītas augšupielādes", - "tusUploadsHelp": "Failu pārlūks atbalsta failu augšupielādi fragmentos, ļaujot izveidot efektīvu, uzticamu, atsākamu un fragmentos sadalītu failu augšupielādi pat neuzticamos tīklos.", - "tusUploadsChunkSize": "Norāda pieprasījuma maksimālo izmēru (mazākiem augšupielādes apjomiem tiks izmantota tieša augšupielāde). Varat ievadīt vienkāršu veselu skaitli, kas apzīmē baitu izmēru, vai virkni, piemēram, 10 MB, 1 GB utt.", - "tusUploadsRetryCount": "Atkārtotu mēģinājumu skaits, kas jāveic, ja fragmenta augšupielāde neizdodas.", - "userHomeBasePath": "Lietotāja mājas direktoriju bāzes ceļš", - "userScopeGenerationPlaceholder": "Darbības joma tiks ģenerēta automātiski", - "createUserHomeDirectory": "Izveidojiet lietotāja mājas direktoriju", - "customStylesheet": "Pielāgota stila lapa", - "defaultUserDescription": "Šie ir noklusējuma iestatījumi jaunajiem lietotājiem.", - "disableExternalLinks": "Atspējot ārējās saites (izņemot dokumentāciju)", - "disableUsedDiskPercentage": "Atspējot izmantotā diska procentuālās daļas grafiku", - "documentation": "dokumentācija", - "examples": "Piemēri", - "executeOnShell": "Izpildīt uz čaulas", - "executeOnShellDescription": "Pēc noklusējuma failu pārlūks izpilda komandas, tieši izsaucot to bināros failus. Ja vēlaties tās palaist čaulā (piemēram, Bash vai PowerShell), varat to definēt šeit ar nepieciešamajiem argumentiem un karodziņiem. Ja tas ir iestatīts, izpildītā komanda tiks pievienota kā arguments. Tas attiecas gan uz lietotāja komandām, gan notikumu piesaistes rīkiem.", - "globalRules": "Šis ir globāls atļaušanas un aizliegšanas noteikumu kopums. Tie attiecas uz katru lietotāju. Katra lietotāja iestatījumos varat definēt konkrētus noteikumus, lai tos ignorētu.", - "globalSettings": "Globālie iestatījumi", - "hideDotfiles": "Slēpt punktfailus", - "insertPath": "Ievietojiet ceļu", - "insertRegex": "Ievietojiet regex izteiksmi", - "instanceName": "Gadījuma nosaukums", - "language": "Valoda", - "lockPassword": "Neļaut lietotājam mainīt paroli", - "newPassword": "Jūsu jaunā parole", - "newPasswordConfirm": "Apstipriniet savu jauno paroli", - "newUser": "Jauns lietotājs", - "password": "Parole", - "passwordUpdated": "Parole atjaunināta!", - "path": "Ceļš", - "perm": { - "create": "Izveidojiet failus un direktorijus", - "delete": "Dzēst failus un direktorijus", - "download": "Lejupielādēt", - "execute": "Izpildīt komandas", - "modify": "Rediģēt failus", - "rename": "Pārdēvēt vai pārvietot failus un direktorijus", - "share": "Kopīgojiet failus" - }, - "permissions": "Atļaujas", - "permissionsHelp": "Varat iestatīt lietotāju kā administratoru vai izvēlēties atļaujas individuāli. Ja atlasīsiet “Administrators”, visas pārējās opcijas tiks automātiski atzīmētas. Lietotāju pārvaldība joprojām ir administratora privilēģija.\n", - "profileSettings": "Profila iestatījumi", - "redirectAfterCopyMove": "Pārvirzīt uz galapunktu pēc kopēšanas/pārvietošanas", - "ruleExample1": "neļauj piekļūt jebkuram dotfile failam (piemēram, .git, .gitignore) katrā mapē.\n", - "ruleExample2": "bloķē piekļuvi failam ar nosaukumu Caddyfile darbības jomas saknē.", - "rules": "Noteikumi", - "rulesHelp": "Šeit varat definēt atļaušanas un aizliegšanas noteikumu kopu šim konkrētajam lietotājam. Bloķētie faili netiks rādīti sarakstos, un lietotājs tiem nevarēs piekļūt. Mēs atbalstām regulārās izteiksmes un ceļus attiecībā pret lietotāja darbības jomu.\n", - "scope": "Darbības joma", - "setDateFormat": "Iestatiet precīzu datuma formātu", - "settingsUpdated": "Iestatījumi atjaunināti!", - "shareDuration": "Kopīgošanas ilgums", - "shareManagement": "Kopīgošanas pārvaldība", - "shareDeleted": "Kopīgojums izdzēsts!", - "singleClick": "Failu un direktoriju atvēršanai izmantojiet vienus klikšķi", - "themes": { - "default": "Sistēmas noklusējums", - "dark": "Tumša", - "light": "Gaiša", - "title": "Tēma" - }, - "user": "Lietotājs", - "userCommands": "Komandas", - "userCommandsHelp": "Ar atstarpi atdalīts saraksts ar šim lietotājam pieejamajām komandām. Piemērs:\n", - "userCreated": "Lietotājs izveidots!", - "userDefaults": "Lietotāja noklusējuma iestatījumi", - "userDeleted": "Lietotājs izdzēsts!", - "userManagement": "Lietotāju pārvaldība", - "userUpdated": "Lietotājs atjaunināts!", - "username": "Lietotājvārds", - "users": "Lietotāji", - "currentPassword": "Esošā Parole" - }, - "sidebar": { - "help": "Palīdzība", - "hugoNew": "Hugo Jauns", - "login": "Pieteikties", - "logout": "Atteikties", - "myFiles": "Mani faili", - "newFile": "Jauns fails", - "newFolder": "Jauna mape", - "preview": "Priekšskatījums", - "settings": "Iestatījumi", - "signup": "Reģistrēties", - "siteSettings": "Vietnes iestatījumi" - }, - "success": { - "linkCopied": "Saite nokopēta!" - }, - "time": { - "days": "Dienas", - "hours": "Stundas", - "minutes": "Minūtes", - "seconds": "Sekundes", - "unit": "Laika vienība" - } -} diff --git a/frontend/src/i18n/pt_PT.json b/frontend/src/i18n/pt-pt.json similarity index 100% rename from frontend/src/i18n/pt_PT.json rename to frontend/src/i18n/pt-pt.json From 4bd7d69c82163b201a987e99c0c50d7ecc6ee5f1 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:13:51 +0100 Subject: [PATCH 42/55] fix: clean path in patch handler --- http/resource.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/http/resource.go b/http/resource.go index f528473d95..3f78cb0c0e 100644 --- a/http/resource.go +++ b/http/resource.go @@ -212,6 +212,8 @@ func resourcePatchHandler(fileCache FileCache) handleFunc { dst := r.URL.Query().Get("destination") action := r.URL.Query().Get("action") dst, err := url.QueryUnescape(dst) + dst = path.Clean("/" + dst) + src = path.Clean("/" + src) if !d.Check(src) || !d.Check(dst) { return http.StatusForbidden, nil } From a63573b67eb302167b4c4f218361a2d0c138deab Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:23:10 +0100 Subject: [PATCH 43/55] fix: signup handler shouldn't create admins --- http/auth.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/http/auth.go b/http/auth.go index 4eceeafe31..d975beae9d 100644 --- a/http/auth.go +++ b/http/auth.go @@ -167,6 +167,10 @@ var signupHandler = func(_ http.ResponseWriter, r *http.Request, d *data) (int, d.settings.Defaults.Apply(user) + // Users signed up via the signup handler should never become admins, even + // if that is the default permission. + user.Perm.Admin = false + pwd, err := users.ValidateAndHashPwd(info.Password, d.settings.MinimumPasswordLength) if err != nil { return http.StatusBadRequest, err From 09a26166b4f79446e7174c017380f6db45444e32 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:31:55 +0100 Subject: [PATCH 44/55] fix: make perm.share depend on share.download --- frontend/src/views/files/FileListing.vue | 5 ++++- http/share.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue index f612ab1d16..0ad8bd8cc2 100644 --- a/frontend/src/views/files/FileListing.vue +++ b/frontend/src/views/files/FileListing.vue @@ -480,7 +480,10 @@ const headerButtons = computed(() => { shell: authStore.user?.perm.execute && enableExec, delete: fileStore.selectedCount > 0 && authStore.user?.perm.delete, rename: fileStore.selectedCount === 1 && authStore.user?.perm.rename, - share: fileStore.selectedCount === 1 && authStore.user?.perm.share, + share: + fileStore.selectedCount === 1 && + authStore.user?.perm.share && + authStore.user?.perm.download, move: fileStore.selectedCount > 0 && authStore.user?.perm.rename, copy: fileStore.selectedCount > 0 && authStore.user?.perm.create, }; diff --git a/http/share.go b/http/share.go index 509a7b21e2..35125dba40 100644 --- a/http/share.go +++ b/http/share.go @@ -20,7 +20,7 @@ import ( func withPermShare(fn handleFunc) handleFunc { return withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { - if !d.user.Perm.Share { + if !d.user.Perm.Share || !d.user.Perm.Download { return http.StatusForbidden, nil } From 6aea2276177c9a5ca21115618e541fd237737f79 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 08:32:56 +0100 Subject: [PATCH 45/55] chore(release): 2.62.0 --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3771efe145..641230bc72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.62.0](https://github.com/filebrowser/filebrowser/compare/v2.61.2...v2.62.0) (2026-03-14) + + +### Features + +* Updates for project File Browser ([#5807](https://github.com/filebrowser/filebrowser/issues/5807)) ([858eb42](https://github.com/filebrowser/filebrowser/commit/858eb426515ec55172e9cca47bdf1e25a0d0d81d)) + + +### Bug Fixes + +* allow deleting the user's own account ([#5820](https://github.com/filebrowser/filebrowser/issues/5820)) ([f04af0c](https://github.com/filebrowser/filebrowser/commit/f04af0cac6c808b8e7c9a9651380c252c4de9132)) +* around languages ([c21af07](https://github.com/filebrowser/filebrowser/commit/c21af0791a5df458c2ddb81ce9ae44b772b6d82d)) +* clean path in patch handler ([4bd7d69](https://github.com/filebrowser/filebrowser/commit/4bd7d69c82163b201a987e99c0c50d7ecc6ee5f1)) +* make perm.share depend on share.download ([09a2616](https://github.com/filebrowser/filebrowser/commit/09a26166b4f79446e7174c017380f6db45444e32)) +* properly surface config parse errors ([#5822](https://github.com/filebrowser/filebrowser/issues/5822)) ([ef2e999](https://github.com/filebrowser/filebrowser/commit/ef2e9992dc3098f6c4722c2a98966cd8abf8bab5)) +* signup handler shouldn't create admins ([a63573b](https://github.com/filebrowser/filebrowser/commit/a63573b67eb302167b4c4f218361a2d0c138deab)) +* **tus:** preserve percent-encoded upload paths in Location header ([#5817](https://github.com/filebrowser/filebrowser/issues/5817)) ([0542fc0](https://github.com/filebrowser/filebrowser/commit/0542fc0ba43740c967414eebd156bac86ad80376)) +* **upload:** avoid skipping whole folder upload on conflict modal ([#5814](https://github.com/filebrowser/filebrowser/issues/5814)) ([f5f8b60](https://github.com/filebrowser/filebrowser/commit/f5f8b60b331a07729a1fed1ed065cb6fc20930ea)) +* **upload:** don't mark every folder-upload file as conflicting ([#5813](https://github.com/filebrowser/filebrowser/issues/5813)) ([6dcef07](https://github.com/filebrowser/filebrowser/commit/6dcef07f40d550acee63dd01e0a3bcf78532f690)) + ## [2.61.2](https://github.com/filebrowser/filebrowser/compare/v2.61.1...v2.61.2) (2026-03-06) From fc80f4f44c856ddc19df3024c245990fffd55630 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 09:30:35 +0100 Subject: [PATCH 46/55] fix: base url/reverse proxy redirect --- http/utils.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/http/utils.go b/http/utils.go index c76cecf420..dc51ccb681 100644 --- a/http/utils.go +++ b/http/utils.go @@ -60,6 +60,15 @@ func stripPrefix(prefix string, h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { p := strings.TrimPrefix(r.URL.Path, prefix) rp := strings.TrimPrefix(r.URL.RawPath, prefix) + + // If the path is exactly the prefix (no trailing slash), redirect to + // the prefix with a trailing slash so the router receives "/" instead + // of "", which would otherwise cause a redirect to the site root. + if p == "" { + http.Redirect(w, r, prefix+"/", http.StatusMovedPermanently) + return + } + r2 := new(http.Request) *r2 = *r r2.URL = new(url.URL) From b5f970731be11d3fc8f59b194b15089b6c13bd5f Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 14 Mar 2026 09:31:34 +0100 Subject: [PATCH 47/55] chore(release): 2.62.1 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 641230bc72..0fc2176b94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [2.62.1](https://github.com/filebrowser/filebrowser/compare/v2.62.0...v2.62.1) (2026-03-14) + + +### Bug Fixes + +* base url/reverse proxy redirect ([fc80f4f](https://github.com/filebrowser/filebrowser/commit/fc80f4f44c856ddc19df3024c245990fffd55630)) + ## [2.62.0](https://github.com/filebrowser/filebrowser/compare/v2.61.2...v2.62.0) (2026-03-14) From 811cf2dfe5a3c1c5132320eb8e48c1ab1805441b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 07:13:58 +0100 Subject: [PATCH 48/55] chore(deps): update go-task/setup-task action to v2 (#5856) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 4 ++-- .github/workflows/docs.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 895dfe2b4b..a8c11c9ea5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -68,7 +68,7 @@ jobs: cache: "pnpm" cache-dependency-path: "frontend/pnpm-lock.yaml" - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - run: task build release: @@ -96,7 +96,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - run: task build:frontend - name: Login to Docker Hub uses: docker/login-action@v4 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6dfcfe2394..d7cbf75e10 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - name: Build site run: task docs @@ -41,7 +41,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Install Task - uses: go-task/setup-task@v1 + uses: go-task/setup-task@v2 - name: Build site run: task docs - name: Upload static files as artifact From 6d44b3ae1d8d26484380bd90d8eb90a08a7fc062 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 07:14:02 +0100 Subject: [PATCH 49/55] chore(deps): update pnpm/action-setup action to v5 (#5857) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a8c11c9ea5..c6e4c7b39f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v5 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 @@ -59,7 +59,7 @@ jobs: - uses: actions/setup-go@v6 with: go-version: '1.26' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v5 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 @@ -83,7 +83,7 @@ jobs: - uses: actions/setup-go@v6 with: go-version: '1.26' - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v5 with: package_json_file: "frontend/package.json" - uses: actions/setup-node@v6 From ff31283b679aa0d159e1b2905da958a0a86aac0a Mon Sep 17 00:00:00 2001 From: Michal Pryc Date: Sat, 18 Oct 2025 21:32:21 +0200 Subject: [PATCH 50/55] UPSTREAM: Add disableUserProfile branding option New config option: --branding.disableUserProfile This option allows to disable User Profile together with User settings. Signed-off-by: Michal Pryc --- cmd/config.go | 9 +- cmd/config_init.go | 129 ++++++++++++++++++++++++- cmd/config_set.go | 56 ++++++++++- frontend/index.html | 1 + frontend/src/components/Sidebar.vue | 6 +- frontend/src/i18n/en.json | 1 + frontend/src/router/index.ts | 18 +++- frontend/src/types/settings.d.ts | 1 + frontend/src/utils/constants.ts | 2 + frontend/src/views/Settings.vue | 3 +- frontend/src/views/settings/Global.vue | 9 ++ http/static.go | 1 + settings/branding.go | 1 + 13 files changed, 228 insertions(+), 9 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index e3bb2b862d..140a3f0e51 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -57,9 +57,11 @@ func addConfigFlags(flags *pflag.FlagSet) { flags.String("branding.files", "", "path to directory with images and custom styles") flags.Bool("branding.disableExternal", false, "disable external links such as GitHub links") flags.Bool("branding.disableUsedPercentage", false, "disable used disk percentage graph") - - flags.Uint64("tus.chunkSize", settings.DefaultTusChunkSize, "the tus chunk size") - flags.Uint16("tus.retryCount", settings.DefaultTusRetryCount, "the tus retry count") + flags.Bool("branding.disableUserProfile", false, "disable user profile in sidebar and settings/profile page") + // NB: these are string so they can be presented as octal in the help text + // as that's the conventional representation for modes in Unix. + flags.String("file-mode", fmt.Sprintf("%O", settings.DefaultFileMode), "Mode bits that new files are created with") + flags.String("dir-mode", fmt.Sprintf("%O", settings.DefaultDirMode), "Mode bits that new directories are created with") } func getAuthMethod(flags *pflag.FlagSet, defaults ...interface{}) (settings.AuthMethod, map[string]interface{}, error) { @@ -212,6 +214,7 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut fmt.Fprintf(w, "\tFiles override:\t%s\n", set.Branding.Files) fmt.Fprintf(w, "\tDisable external links:\t%t\n", set.Branding.DisableExternal) fmt.Fprintf(w, "\tDisable used disk percentage graph:\t%t\n", set.Branding.DisableUsedPercentage) + fmt.Fprintf(w, "\tDisable user profile:\t%t\n", set.Branding.DisableUserProfile) fmt.Fprintf(w, "\tColor:\t%s\n", set.Branding.Color) fmt.Fprintf(w, "\tTheme:\t%s\n", set.Branding.Theme) diff --git a/cmd/config_init.go b/cmd/config_init.go index 359d02a343..eb1549bd51 100644 --- a/cmd/config_init.go +++ b/cmd/config_init.go @@ -46,7 +46,134 @@ override the options.`, return err } - err = st.Auth.Save(auther) + minLength, err := getUint(flags, "minimum-password-length") + if err != nil { + return err + } + + shell, err := getString(flags, "shell") + if err != nil { + return err + } + + brandingName, err := getString(flags, "branding.name") + if err != nil { + return err + } + + brandingDisableExternal, err := getBool(flags, "branding.disableExternal") + if err != nil { + return err + } + + brandingDisableUsedPercentage, err := getBool(flags, "branding.disableUsedPercentage") + if err != nil { + return err + } + + brandingDisableUserProfile, err := getBool(flags, "branding.disableUserProfile") + if err != nil { + return err + } + + brandingTheme, err := getString(flags, "branding.theme") + if err != nil { + return err + } + + brandingFiles, err := getString(flags, "branding.files") + if err != nil { + return err + } + + s := &settings.Settings{ + Key: key, + Signup: signup, + CreateUserDir: createUserDir, + MinimumPasswordLength: minLength, + Shell: convertCmdStrToCmdArray(shell), + AuthMethod: authMethod, + Defaults: defaults, + Branding: settings.Branding{ + Name: brandingName, + DisableExternal: brandingDisableExternal, + DisableUsedPercentage: brandingDisableUsedPercentage, + DisableUserProfile: brandingDisableUserProfile, + Theme: brandingTheme, + Files: brandingFiles, + }, + } + + s.FileMode, err = getMode(flags, "file-mode") + if err != nil { + return err + } + + s.DirMode, err = getMode(flags, "dir-mode") + if err != nil { + return err + } + + address, err := getString(flags, "address") + if err != nil { + return err + } + + socket, err := getString(flags, "socket") + if err != nil { + return err + } + + root, err := getString(flags, "root") + if err != nil { + return err + } + + baseURL, err := getString(flags, "baseurl") + if err != nil { + return err + } + + tlsKey, err := getString(flags, "key") + if err != nil { + return err + } + + cert, err := getString(flags, "cert") + if err != nil { + return err + } + + port, err := getString(flags, "port") + if err != nil { + return err + } + + log, err := getString(flags, "log") + if err != nil { + return err + } + + ser := &settings.Server{ + Address: address, + Socket: socket, + Root: root, + BaseURL: baseURL, + TLSKey: tlsKey, + TLSCert: cert, + Port: port, + Log: log, + } + + err = d.store.Settings.Save(s) + if err != nil { + return err + } + err = d.store.Settings.SaveServer(ser) + if err != nil { + return err + } + err = d.store.Auth.Save(auther) if err != nil { return err } diff --git a/cmd/config_set.go b/cmd/config_set.go index df357a0265..626e6e82f0 100644 --- a/cmd/config_set.go +++ b/cmd/config_set.go @@ -29,7 +29,61 @@ you want to change. Other options will remain unchanged.`, return err } - auther, err := st.Auth.Get(set.AuthMethod) + hasAuth := false + flags.Visit(func(flag *pflag.Flag) { + if err != nil { + return + } + switch flag.Name { + case "baseurl": + ser.BaseURL, err = getString(flags, flag.Name) + case "root": + ser.Root, err = getString(flags, flag.Name) + case "socket": + ser.Socket, err = getString(flags, flag.Name) + case "cert": + ser.TLSCert, err = getString(flags, flag.Name) + case "key": + ser.TLSKey, err = getString(flags, flag.Name) + case "address": + ser.Address, err = getString(flags, flag.Name) + case "port": + ser.Port, err = getString(flags, flag.Name) + case "log": + ser.Log, err = getString(flags, flag.Name) + case "signup": + set.Signup, err = getBool(flags, flag.Name) + case "auth.method": + hasAuth = true + case "shell": + var shell string + shell, err = getString(flags, flag.Name) + set.Shell = convertCmdStrToCmdArray(shell) + case "create-user-dir": + set.CreateUserDir, err = getBool(flags, flag.Name) + case "minimum-password-length": + set.MinimumPasswordLength, err = getUint(flags, flag.Name) + case "branding.name": + set.Branding.Name, err = getString(flags, flag.Name) + case "branding.color": + set.Branding.Color, err = getString(flags, flag.Name) + case "branding.theme": + set.Branding.Theme, err = getString(flags, flag.Name) + case "branding.disableExternal": + set.Branding.DisableExternal, err = getBool(flags, flag.Name) + case "branding.disableUsedPercentage": + set.Branding.DisableUsedPercentage, err = getBool(flags, flag.Name) + case "branding.disableUserProfile": + set.Branding.DisableUserProfile, err = getBool(flags, flag.Name) + case "branding.files": + set.Branding.Files, err = getString(flags, flag.Name) + case "file-mode": + set.FileMode, err = getMode(flags, flag.Name) + case "dir-mode": + set.DirMode, err = getMode(flags, flag.Name) + } + }) + if err != nil { return err } diff --git a/frontend/index.html b/frontend/index.html index 19308a9543..ffa4df8545 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -37,6 +37,7 @@ Color: "", DisableExternal: false, DisableUsedPercentage: false, + DisableUserProfile: false, EnableExec: true, EnableThumbs: true, LogoutPage: "", diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index c7961e3ece..2e4aaa1329 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -2,7 +2,7 @@