From 579756dbb517c06948dab7ad781b61ec79d065e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 08:03:59 +0100 Subject: [PATCH 01/34] chore(deps): update all non-major dependencies (#5621) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/pnpm-lock.yaml | 246 +++++++++++++++++----------------------- 1 file changed, 101 insertions(+), 145 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 70e5a1bc..daa7d7f4 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -98,7 +98,7 @@ importers: devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.1(@vue/compiler-dom@3.5.25)(eslint@9.39.2)(rollup@4.53.3)(typescript@5.9.3)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) + version: 11.0.3(@vue/compiler-dom@3.5.25)(eslint@9.39.2)(rollup@4.53.3)(typescript@5.9.3)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.3 @@ -107,16 +107,16 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.10.3 + version: 24.10.4 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 version: 8.49.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.44.1)(vite@7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0)) + version: 7.2.1(terser@5.44.1)(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.3(vite@7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0))(vue@3.5.25(typescript@5.9.3)) + version: 6.0.3(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@9.39.2)(prettier@3.7.4) @@ -128,7 +128,7 @@ importers: version: 0.8.1(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 - version: 10.4.22(postcss@8.5.6) + version: 10.4.23(postcss@8.5.6) eslint: specifier: ^9.31.0 version: 9.39.2 @@ -155,7 +155,7 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0) + version: 7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.4.0(rollup@4.53.3) @@ -875,8 +875,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@intlify/bundle-utils@11.0.1': - resolution: {integrity: sha512-5l10G5wE2cQRsZMS9y0oSFMOLW5IG/SgbkIUltqnwF1EMRrRbUAHFiPabXdGTHeexCsMTcxj/1w9i0rzjJU9IQ==} + '@intlify/bundle-utils@11.0.3': + resolution: {integrity: sha512-dURCDz1rQXwAb1+Hv4NDit6aZSRaAt4zUYBPEeaDCe3FSs8dMtdF6kEvgd9JwsYFSTAHcvbTs2CqwBjjt9Ltsw==} engines: {node: '>= 20'} peerDependencies: petite-vue-i18n: '*' @@ -895,16 +895,12 @@ packages: resolution: {integrity: sha512-XS2p8Ff5JxWsKhgfld4/MRQzZRQ85drMMPhb7Co6Be4ZOgqJX1DzcZt0IFgGTycgqL8rkYNwgnD443Q+TapOoA==} engines: {node: '>= 16'} - '@intlify/shared@11.1.12': - resolution: {integrity: sha512-Om86EjuQtA69hdNj3GQec9ZC0L0vPSAnXzB3gP/gyJ7+mA7t06d9aOAiqMZ+xEOsumGP4eEBlfl8zF2LOTzf2A==} - engines: {node: '>= 16'} - '@intlify/shared@11.2.2': resolution: {integrity: sha512-OtCmyFpSXxNu/oET/aN6HtPCbZ01btXVd0f3w00YsHOb13Kverk1jzA2k47pAekM55qbUw421fvPF1yxZ+gicw==} engines: {node: '>= 16'} - '@intlify/unplugin-vue-i18n@11.0.1': - resolution: {integrity: sha512-nH5NJdNjy/lO6Ne8LDtZzv4SbpVsMhPE+LbvBDmMeIeJDiino8sOJN2QB3MXzTliYTnqe3aB9Fw5+LJ/XVaXCg==} + '@intlify/unplugin-vue-i18n@11.0.3': + resolution: {integrity: sha512-iQuik0nXfdVZ5ab+IEyBFEuvMQ213zfbUpBXaEdHPk8DV+qB2CT/SdFuDhfUDRRBZc/e0qoLlfmc9urhnRYVWw==} engines: {node: '>= 20'} peerDependencies: petite-vue-i18n: '*' @@ -1110,8 +1106,8 @@ packages: '@types/lodash@4.17.13': resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} - '@types/node@24.10.3': - resolution: {integrity: sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==} + '@types/node@24.10.4': + resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1148,12 +1144,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.46.4': - resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.49.0': resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1164,10 +1154,6 @@ packages: resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.46.4': - resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.49.0': resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1178,12 +1164,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/tsconfig-utils@8.46.4': - resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.49.0': resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1208,10 +1188,6 @@ packages: resolution: {integrity: sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.46.4': - resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.49.0': resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1222,12 +1198,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.46.4': - resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.49.0': resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1252,10 +1222,6 @@ packages: resolution: {integrity: sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.46.4': - resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.49.0': resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1466,8 +1432,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - autoprefixer@10.4.22: - resolution: {integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==} + autoprefixer@10.4.23: + resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -1495,6 +1461,10 @@ packages: resolution: {integrity: sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==} hasBin: true + baseline-browser-mapping@2.9.7: + resolution: {integrity: sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==} + hasBin: true + birpc@2.8.0: resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} @@ -1523,6 +1493,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1533,6 +1508,9 @@ packages: caniuse-lite@1.0.30001754: resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} + caniuse-lite@1.0.30001760: + resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1612,6 +1590,9 @@ packages: electron-to-chromium@1.5.250: resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1762,8 +1743,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -1931,8 +1912,8 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-eslint-parser@2.4.0: - resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + jsonc-eslint-parser@2.4.2: + resolution: {integrity: sha512-1e4qoRgnn448pRuMvKGsFFymUCquZV0mpGgOyIKNgD3JVDTsVJyRBGH/Fm0tBb8WsWGgmB1mDe6/yJMQM37DUA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} jszip@3.10.1: @@ -2072,10 +2053,6 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - normalize.css@8.0.1: resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} @@ -2241,8 +2218,8 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rfdc@1.4.1: @@ -2390,8 +2367,8 @@ packages: resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} - unplugin@2.3.10: - resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} update-browserslist-db@1.1.4: @@ -2400,6 +2377,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.2.2: + resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -2551,13 +2534,13 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml-eslint-parser@1.2.3: - resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} + yaml-eslint-parser@1.3.2: + resolution: {integrity: sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==} engines: {node: ^14.17.0 || >=16.0.0} - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} hasBin: true yocto-queue@0.1.0: @@ -3359,17 +3342,17 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.1(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.2.2 - '@intlify/shared': 11.1.12 + '@intlify/shared': 11.2.2 acorn: 8.15.0 esbuild: 0.25.12 escodegen: 2.1.0 estree-walker: 2.0.2 - jsonc-eslint-parser: 2.4.0 + jsonc-eslint-parser: 2.4.2 source-map-js: 1.2.1 - yaml-eslint-parser: 1.2.3 + yaml-eslint-parser: 1.3.2 optionalDependencies: vue-i18n: 11.2.2(vue@3.5.25(typescript@5.9.3)) @@ -3383,24 +3366,22 @@ snapshots: '@intlify/shared': 11.2.2 source-map-js: 1.2.1 - '@intlify/shared@11.1.12': {} - '@intlify/shared@11.2.2': {} - '@intlify/unplugin-vue-i18n@11.0.1(@vue/compiler-dom@3.5.25)(eslint@9.39.2)(rollup@4.53.3)(typescript@5.9.3)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.25)(eslint@9.39.2)(rollup@4.53.3)(typescript@5.9.3)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@intlify/bundle-utils': 11.0.1(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3))) - '@intlify/shared': 11.1.12 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.25)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) + '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3))) + '@intlify/shared': 11.2.2 + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.25)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) '@rollup/pluginutils': 5.3.0(rollup@4.53.3) - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.49.0 + '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) debug: 4.4.3 fast-glob: 3.3.3 pathe: 2.0.3 picocolors: 1.1.1 - unplugin: 2.3.10 + unplugin: 2.3.11 vue: 3.5.25(typescript@5.9.3) optionalDependencies: vue-i18n: 11.2.2(vue@3.5.25(typescript@5.9.3)) @@ -3411,11 +3392,11 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.25)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.25)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))': dependencies: '@babel/parser': 7.28.5 optionalDependencies: - '@intlify/shared': 11.1.12 + '@intlify/shared': 11.2.2 '@vue/compiler-dom': 3.5.25 vue: 3.5.25(typescript@5.9.3) vue-i18n: 11.2.2(vue@3.5.25(typescript@5.9.3)) @@ -3454,7 +3435,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 + fastq: 1.19.1 '@pkgr/core@0.2.9': {} @@ -3550,7 +3531,7 @@ snapshots: '@types/lodash@4.17.13': {} - '@types/node@24.10.3': + '@types/node@24.10.4': dependencies: undici-types: 7.16.0 @@ -3613,15 +3594,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) - '@typescript-eslint/types': 8.46.4 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) @@ -3636,11 +3608,6 @@ snapshots: '@typescript-eslint/types': 8.37.0 '@typescript-eslint/visitor-keys': 8.37.0 - '@typescript-eslint/scope-manager@8.46.4': - dependencies: - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 - '@typescript-eslint/scope-manager@8.49.0': dependencies: '@typescript-eslint/types': 8.49.0 @@ -3650,10 +3617,6 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3684,8 +3647,6 @@ snapshots: '@typescript-eslint/types@8.37.0': {} - '@typescript-eslint/types@8.46.4': {} - '@typescript-eslint/types@8.49.0': {} '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': @@ -3704,22 +3665,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 - debug: 4.4.3 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.3 - ts-api-utils: 2.1.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3) @@ -3762,11 +3707,6 @@ snapshots: '@typescript-eslint/types': 8.37.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.46.4': - dependencies: - '@typescript-eslint/types': 8.46.4 - eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.49.0': dependencies: '@typescript-eslint/types': 8.49.0 @@ -3794,7 +3734,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.44.1)(vite@7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0))': + '@vitejs/plugin-legacy@7.2.1(terser@5.44.1)(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) @@ -3809,14 +3749,14 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.44.1 - vite: 7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0) + vite: 7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.3(vite@7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0))(vue@3.5.25(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.3(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.53 - vite: 7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0) + vite: 7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) vue: 3.5.25(typescript@5.9.3) '@volar/language-core@2.4.26': @@ -4000,12 +3940,11 @@ snapshots: argparse@2.0.1: {} - autoprefixer@10.4.22(postcss@8.5.6): + autoprefixer@10.4.23(postcss@8.5.6): dependencies: - browserslist: 4.28.0 - caniuse-lite: 1.0.30001754 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001760 fraction.js: 5.3.4 - normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -4038,6 +3977,8 @@ snapshots: baseline-browser-mapping@2.8.26: {} + baseline-browser-mapping@2.9.7: {} + birpc@2.8.0: {} boolbase@1.0.0: {} @@ -4068,12 +4009,22 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.28.0) + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.7 + caniuse-lite: 1.0.30001760 + electron-to-chromium: 1.5.267 + node-releases: 2.0.27 + update-browserslist-db: 1.2.2(browserslist@4.28.1) + buffer-from@1.1.2: {} callsites@3.1.0: {} caniuse-lite@1.0.30001754: {} + caniuse-lite@1.0.30001760: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -4141,6 +4092,8 @@ snapshots: electron-to-chromium@1.5.250: {} + electron-to-chromium@1.5.267: {} + entities@4.5.0: {} epubjs@0.3.93: @@ -4348,9 +4301,9 @@ snapshots: fast-levenshtein@2.0.6: {} - fastq@1.18.0: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 fdir@6.5.0(picomatch@4.0.3): optionalDependencies: @@ -4473,7 +4426,7 @@ snapshots: json5@2.2.3: {} - jsonc-eslint-parser@2.4.0: + jsonc-eslint-parser@2.4.2: dependencies: acorn: 8.15.0 eslint-visitor-keys: 3.4.3 @@ -4615,8 +4568,6 @@ snapshots: node-releases@2.0.27: {} - normalize-range@0.1.2: {} - normalize.css@8.0.1: {} nth-check@2.1.1: @@ -4765,7 +4716,7 @@ snapshots: retry@0.12.0: {} - reusify@1.0.4: {} + reusify@1.1.0: {} rfdc@1.4.1: {} @@ -4916,7 +4867,7 @@ snapshots: unicode-property-aliases-ecmascript@2.2.0: {} - unplugin@2.3.10: + unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.15.0 @@ -4929,6 +4880,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.2(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -4984,7 +4941,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.2.7(@types/node@24.10.3)(terser@5.44.1)(yaml@2.7.0): + vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -4993,10 +4950,10 @@ snapshots: rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.3 + '@types/node': 24.10.4 fsevents: 2.3.3 terser: 5.44.1 - yaml: 2.7.0 + yaml: 2.8.2 vscode-uri@3.1.0: {} @@ -5069,12 +5026,11 @@ snapshots: yallist@3.1.1: {} - yaml-eslint-parser@1.2.3: + yaml-eslint-parser@1.3.2: dependencies: eslint-visitor-keys: 3.4.3 - lodash: 4.17.21 - yaml: 2.7.0 + yaml: 2.8.2 - yaml@2.7.0: {} + yaml@2.8.2: {} yocto-queue@0.1.0: {} From 2d3b64ecf6113fed3c4d6920f70597b07d58424b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Dec 2025 13:04:25 +0000 Subject: [PATCH 02/34] chore(deps): update all non-major dependencies (#5628) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 935 +++++++++++++++++++++++++++------------- go.mod | 2 +- go.sum | 4 +- 4 files changed, 640 insertions(+), 303 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index c405b2f8..0482dba3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,5 +71,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501" + "packageManager": "pnpm@10.26.1+sha512.664074abc367d2c9324fdc18037097ce0a8f126034160f709928e9e9f95d98714347044e5c3164d65bd5da6c59c6be362b107546292a8eecb7999196e5ce58fa" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index daa7d7f4..1975d743 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.25(typescript@5.9.3)) + version: 2.0.1(vue@3.5.26(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 - version: 14.1.0(vue@3.5.25(typescript@5.9.3)) + version: 14.1.0(vue@3.5.26(typescript@5.9.3)) '@vueuse/integrations': specifier: ^14.0.0 - version: 14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.25(typescript@5.9.3)) + version: 14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.26(typescript@5.9.3)) ace-builds: specifier: ^1.43.2 version: 1.43.5 @@ -40,7 +40,7 @@ importers: version: 4.0.0 lodash-es: specifier: ^4.17.21 - version: 4.17.21 + version: 4.17.22 marked: specifier: ^17.0.0 version: 17.0.1 @@ -52,13 +52,13 @@ importers: version: 8.0.1 pinia: specifier: ^3.0.4 - version: 3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.26(typescript@5.9.3)) pretty-bytes: specifier: ^7.1.0 version: 7.1.0 qrcode.vue: specifier: ^3.6.0 - version: 3.6.0(vue@3.5.25(typescript@5.9.3)) + version: 3.6.0(vue@3.5.26(typescript@5.9.3)) tus-js-client: specifier: ^4.3.1 version: 4.3.1 @@ -73,32 +73,32 @@ importers: version: 0.2.30 videojs-mobile-ui: specifier: ^1.1.1 - version: 1.1.1(video.js@8.23.4) + version: 1.1.3(video.js@8.23.4) vue: specifier: ^3.5.17 - version: 3.5.25(typescript@5.9.3) + version: 3.5.26(typescript@5.9.3) vue-final-modal: specifier: ^4.5.5 - version: 4.5.5(@vueuse/core@14.1.0(vue@3.5.25(typescript@5.9.3)))(@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.25(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.25(typescript@5.9.3)) + version: 4.5.5(@vueuse/core@14.1.0(vue@3.5.26(typescript@5.9.3)))(@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.26(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.26(typescript@5.9.3)) vue-i18n: specifier: ^11.1.10 - version: 11.2.2(vue@3.5.25(typescript@5.9.3)) + version: 11.2.7(vue@3.5.26(typescript@5.9.3)) vue-lazyload: specifier: ^3.0.0 version: 3.0.0 vue-reader: specifier: ^1.2.17 - version: 1.3.3 + version: 1.3.4 vue-router: specifier: ^4.5.1 - version: 4.6.4(vue@3.5.25(typescript@5.9.3)) + version: 4.6.4(vue@3.5.26(typescript@5.9.3)) vue-toastification: specifier: ^2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.25(typescript@5.9.3)) + version: 2.0.0-rc.5(vue@3.5.26(typescript@5.9.3)) devDependencies: '@intlify/unplugin-vue-i18n': specifier: ^11.0.1 - version: 11.0.3(@vue/compiler-dom@3.5.25)(eslint@9.39.2)(rollup@4.53.3)(typescript@5.9.3)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) + version: 11.0.3(@vue/compiler-dom@3.5.26)(eslint@9.39.2)(rollup@4.54.0)(typescript@5.9.3)(vue-i18n@11.2.7(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 version: 24.0.3 @@ -110,13 +110,13 @@ importers: version: 24.10.4 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.49.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.50.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.44.1)(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2)) + version: 7.2.1(terser@5.44.1)(vite@7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.3(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) + version: 6.0.3(vite@7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 version: 10.2.0(eslint@9.39.2)(prettier@3.7.4) @@ -125,7 +125,7 @@ importers: version: 14.6.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 - version: 0.8.1(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) + version: 0.8.1(typescript@5.9.3)(vue@3.5.26(typescript@5.9.3)) autoprefixer: specifier: ^10.4.21 version: 10.4.23(postcss@8.5.6) @@ -155,13 +155,13 @@ importers: version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) + version: 7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 - version: 2.4.0(rollup@4.53.3) + version: 2.4.0(rollup@4.54.0) vue-tsc: specifier: ^3.1.3 - version: 3.1.8(typescript@5.9.3) + version: 3.2.0(typescript@5.9.3) packages: @@ -671,156 +671,312 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -887,18 +1043,22 @@ packages: vue-i18n: optional: true - '@intlify/core-base@11.2.2': - resolution: {integrity: sha512-0mCTBOLKIqFUP3BzwuFW23hYEl9g/wby6uY//AC5hTgQfTsM2srCYF2/hYGp+a5DZ/HIFIgKkLJMzXTt30r0JQ==} + '@intlify/core-base@11.2.7': + resolution: {integrity: sha512-+Ra9I/LAzXDnmv/IrTO03WMCiLya7pHRmGJvNl9fKwx/W4REJ0xaMk2PxCRqnxcBsX443amEMdebQ3R1geiuIw==} engines: {node: '>= 16'} - '@intlify/message-compiler@11.2.2': - resolution: {integrity: sha512-XS2p8Ff5JxWsKhgfld4/MRQzZRQ85drMMPhb7Co6Be4ZOgqJX1DzcZt0IFgGTycgqL8rkYNwgnD443Q+TapOoA==} + '@intlify/message-compiler@11.2.7': + resolution: {integrity: sha512-TFamC+GzJAotAFwUNvbtRVBgvuSn2nCwKNresmPUHv3IIVMmXJt7QQJj/DORI1h8hs46ZF6L0Fs2xBohSOE4iQ==} engines: {node: '>= 16'} '@intlify/shared@11.2.2': resolution: {integrity: sha512-OtCmyFpSXxNu/oET/aN6HtPCbZ01btXVd0f3w00YsHOb13Kverk1jzA2k47pAekM55qbUw421fvPF1yxZ+gicw==} engines: {node: '>= 16'} + '@intlify/shared@11.2.7': + resolution: {integrity: sha512-uvlkvc/0uQ4FDlHQZccpUnmcOwNcaI3i+69ck2YJ+GqM35AoVbuS63b+YfirV4G0SZh64Ij2UMcFRMmB4nr95w==} + engines: {node: '>= 16'} + '@intlify/unplugin-vue-i18n@11.0.3': resolution: {integrity: sha512-iQuik0nXfdVZ5ab+IEyBFEuvMQ213zfbUpBXaEdHPk8DV+qB2CT/SdFuDhfUDRRBZc/e0qoLlfmc9urhnRYVWw==} engines: {node: '>= 20'} @@ -977,113 +1137,113 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.3': - resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + '@rollup/rollup-android-arm-eabi@4.54.0': + resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.3': - resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + '@rollup/rollup-android-arm64@4.54.0': + resolution: {integrity: sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.3': - resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + '@rollup/rollup-darwin-arm64@4.54.0': + resolution: {integrity: sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.3': - resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + '@rollup/rollup-darwin-x64@4.54.0': + resolution: {integrity: sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.3': - resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + '@rollup/rollup-freebsd-arm64@4.54.0': + resolution: {integrity: sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.3': - resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + '@rollup/rollup-freebsd-x64@4.54.0': + resolution: {integrity: sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': + resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + '@rollup/rollup-linux-arm-musleabihf@4.54.0': + resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.3': - resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + '@rollup/rollup-linux-arm64-gnu@4.54.0': + resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.3': - resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + '@rollup/rollup-linux-arm64-musl@4.54.0': + resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.3': - resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + '@rollup/rollup-linux-loong64-gnu@4.54.0': + resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + '@rollup/rollup-linux-ppc64-gnu@4.54.0': + resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + '@rollup/rollup-linux-riscv64-gnu@4.54.0': + resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.3': - resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + '@rollup/rollup-linux-riscv64-musl@4.54.0': + resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.3': - resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + '@rollup/rollup-linux-s390x-gnu@4.54.0': + resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + '@rollup/rollup-linux-x64-gnu@4.54.0': + resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.3': - resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + '@rollup/rollup-linux-x64-musl@4.54.0': + resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.3': - resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + '@rollup/rollup-openharmony-arm64@4.54.0': + resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.3': - resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + '@rollup/rollup-win32-arm64-msvc@4.54.0': + resolution: {integrity: sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.3': - resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + '@rollup/rollup-win32-ia32-msvc@4.54.0': + resolution: {integrity: sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.3': - resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + '@rollup/rollup-win32-x64-gnu@4.54.0': + resolution: {integrity: sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.3': - resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + '@rollup/rollup-win32-x64-msvc@4.54.0': + resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==} cpu: [x64] os: [win32] @@ -1123,11 +1283,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.49.0': - resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} + '@typescript-eslint/eslint-plugin@8.50.0': + resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.49.0 + '@typescript-eslint/parser': ^8.50.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1150,6 +1310,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.50.0': + resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.37.0': resolution: {integrity: sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1158,6 +1324,10 @@ packages: resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.50.0': + resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.37.0': resolution: {integrity: sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1170,6 +1340,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.50.0': + resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.37.0': resolution: {integrity: sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1177,8 +1353,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.49.0': - resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} + '@typescript-eslint/type-utils@8.50.0': + resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1192,6 +1368,10 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.50.0': + resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.37.0': resolution: {integrity: sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1204,6 +1384,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.50.0': + resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.37.0': resolution: {integrity: sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1211,8 +1397,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.49.0': - resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} + '@typescript-eslint/utils@8.50.0': + resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1226,6 +1412,10 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.50.0': + resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@videojs/http-streaming@3.17.2': resolution: {integrity: sha512-VBQ3W4wnKnVKb/limLdtSD2rAd5cmHN70xoMf4OmuDd0t2kfJX04G+sfw6u2j8oOm2BXYM9E1f4acHruqKnM1g==} engines: {node: '>=8', npm: '>=5'} @@ -1253,26 +1443,26 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.2.25 - '@volar/language-core@2.4.26': - resolution: {integrity: sha512-hH0SMitMxnB43OZpyF1IFPS9bgb2I3bpCh76m2WEK7BE0A0EzpYsRp0CCH2xNKshr7kacU5TQBLYn4zj7CG60A==} + '@volar/language-core@2.4.27': + resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} - '@volar/source-map@2.4.26': - resolution: {integrity: sha512-JJw0Tt/kSFsIRmgTQF4JSt81AUSI1aEye5Zl65EeZ8H35JHnTvFGmpDOBn5iOxd48fyGE+ZvZBp5FcgAy/1Qhw==} + '@volar/source-map@2.4.27': + resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==} - '@volar/typescript@2.4.26': - resolution: {integrity: sha512-N87ecLD48Sp6zV9zID/5yuS1+5foj0DfuYGdQ6KHj/IbKvyKv1zNX6VCmnKYwtmHadEO6mFc2EKISiu3RDPAvA==} + '@volar/typescript@2.4.27': + resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} - '@vue/compiler-core@3.5.25': - resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} + '@vue/compiler-core@3.5.26': + resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==} - '@vue/compiler-dom@3.5.25': - resolution: {integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==} + '@vue/compiler-dom@3.5.26': + resolution: {integrity: sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==} - '@vue/compiler-sfc@3.5.25': - resolution: {integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==} + '@vue/compiler-sfc@3.5.26': + resolution: {integrity: sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==} - '@vue/compiler-ssr@3.5.25': - resolution: {integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==} + '@vue/compiler-ssr@3.5.26': + resolution: {integrity: sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==} '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} @@ -1303,30 +1493,25 @@ packages: typescript: optional: true - '@vue/language-core@3.1.8': - resolution: {integrity: sha512-PfwAW7BLopqaJbneChNL6cUOTL3GL+0l8paYP5shhgY5toBNidWnMXWM+qDwL7MC9+zDtzCF2enT8r6VPu64iw==} + '@vue/language-core@3.2.0': + resolution: {integrity: sha512-CHIuDtZ04CIElAgEuLbwmq3p7QcmYoVPmBPqtdvWJCflZE5W3KHT/5DRBvDv1r2TteCjN02uYHiaAEWq9hQNiA==} + + '@vue/reactivity@3.5.26': + resolution: {integrity: sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==} + + '@vue/runtime-core@3.5.26': + resolution: {integrity: sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==} + + '@vue/runtime-dom@3.5.26': + resolution: {integrity: sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==} + + '@vue/server-renderer@3.5.26': + resolution: {integrity: sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + vue: 3.5.26 - '@vue/reactivity@3.5.25': - resolution: {integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==} - - '@vue/runtime-core@3.5.25': - resolution: {integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==} - - '@vue/runtime-dom@3.5.25': - resolution: {integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==} - - '@vue/server-renderer@3.5.25': - resolution: {integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==} - peerDependencies: - vue: 3.5.25 - - '@vue/shared@3.5.25': - resolution: {integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==} + '@vue/shared@3.5.26': + resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==} '@vue/tsconfig@0.8.1': resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} @@ -1593,8 +1778,8 @@ packages: electron-to-chromium@1.5.267: resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + entities@7.0.0: + resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} engines: {node: '>=0.12'} epubjs@0.3.93: @@ -1616,6 +1801,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1943,8 +2133,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.17.22: + resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} lodash._baseiteratee@4.7.0: resolution: {integrity: sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ==} @@ -2225,8 +2415,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.53.3: - resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} + rollup@4.54.0: + resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2410,8 +2600,8 @@ packages: videojs-hotkeys@0.2.30: resolution: {integrity: sha512-G8kEQZPapoWDoEajh2Nroy4bCN1qVEul5AuzZqBS7ZCG45K7hqTYKgf1+fmYvG8m8u84sZmVMUvSWZBjaFW66Q==} - videojs-mobile-ui@1.1.1: - resolution: {integrity: sha512-q7vx74++bqu2763Tc/GG4qFcMt42emC8uXe/z+zFVpBIiysgAf89AgorE6m30YHWtVJWgbRIyzFVYNOxCk9qow==} + videojs-mobile-ui@1.1.3: + resolution: {integrity: sha512-LyWIRZBQWRouUQ9i9HBBvhwFL1uZkg3Adt52nT+e297dwpOgTaELO7gCXgvj5f6a2AfEb8a5AQMY4SLeIf8cqw==} engines: {node: '>=14', npm: '>=6'} peerDependencies: video.js: ^8 @@ -2422,8 +2612,8 @@ packages: vite-plugin-compression2@2.4.0: resolution: {integrity: sha512-8J4CBF1+dM1I06azba/eXJuJHinLF0Am7lUvRH8AZpu0otJoBaDEnxrIEr5iPZJSwH0AEglJGYCveh7pN52jCg==} - vite@7.2.7: - resolution: {integrity: sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==} + vite@7.3.0: + resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2479,8 +2669,8 @@ packages: focus-trap: '>=7.2.0' vue: '>=3.2.0' - vue-i18n@11.2.2: - resolution: {integrity: sha512-ULIKZyRluUPRCZmihVgUvpq8hJTtOqnbGZuv4Lz+byEKZq4mU0g92og414l6f/4ju+L5mORsiUuEPYrAuX2NJg==} + vue-i18n@11.2.7: + resolution: {integrity: sha512-LPv8bAY5OA0UvFEXl4vBQOBqJzRrlExy92tWgRuwW7tbykHf7CH71G2Y4TM2OwGcIS4+hyqKHS2EVBqaYwPY9Q==} engines: {node: '>= 16'} peerDependencies: vue: ^3.0.0 @@ -2488,8 +2678,8 @@ packages: vue-lazyload@3.0.0: resolution: {integrity: sha512-h2keL/Rj550dLgesgOtXJS9qOiSMmuJNeVlfNAYV1/IYwOQYaWk5mFJlwRxmZDK9YC5gECcFLYYj7z1lKSf9ug==} - vue-reader@1.3.3: - resolution: {integrity: sha512-Rpd9szXrnlyK1TxBsy/5He8W077ALFxrDLzOiD6HIzsJNj4miKs6nDljj4HdSliKbZ7LYvUMOitW9TL+5J5Ecg==} + vue-reader@1.3.4: + resolution: {integrity: sha512-QYTX9hlrV71gL/1vMejcBLLS9Ool29XMZcLQwvL0Ep1F//o0ymzYbKX2Lre+4BUBkVq49/GmmGCmAJACsJL9tw==} vue-router@4.6.4: resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} @@ -2501,14 +2691,14 @@ packages: peerDependencies: vue: ^3.0.2 - vue-tsc@3.1.8: - resolution: {integrity: sha512-deKgwx6exIHeZwF601P1ktZKNF0bepaSN4jBU3AsbldPx9gylUc1JDxYppl82yxgkAgaz0Y0LCLOi+cXe9HMYA==} + vue-tsc@3.2.0: + resolution: {integrity: sha512-NFhcKKQZeTuG8/gc8XwFANx/lC0Dd3dCZ97TWh1a63PcD22KkFy4QLeT8JMtduaQT1NzySWmx3qXm16Hj1Xsxg==} hasBin: true peerDependencies: typescript: '>=5.0.0' - vue@3.5.25: - resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==} + vue@3.5.26: + resolution: {integrity: sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -3203,88 +3393,166 @@ 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.25(typescript@5.9.3))': + '@chenfengyuan/vue-number-input@2.0.1(vue@3.5.26(typescript@5.9.3))': dependencies: - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) '@esbuild/aix-ppc64@0.25.12': optional: true + '@esbuild/aix-ppc64@0.27.2': + optional: true + '@esbuild/android-arm64@0.25.12': optional: true + '@esbuild/android-arm64@0.27.2': + optional: true + '@esbuild/android-arm@0.25.12': optional: true + '@esbuild/android-arm@0.27.2': + optional: true + '@esbuild/android-x64@0.25.12': optional: true + '@esbuild/android-x64@0.27.2': + optional: true + '@esbuild/darwin-arm64@0.25.12': optional: true + '@esbuild/darwin-arm64@0.27.2': + optional: true + '@esbuild/darwin-x64@0.25.12': optional: true + '@esbuild/darwin-x64@0.27.2': + optional: true + '@esbuild/freebsd-arm64@0.25.12': optional: true + '@esbuild/freebsd-arm64@0.27.2': + optional: true + '@esbuild/freebsd-x64@0.25.12': optional: true + '@esbuild/freebsd-x64@0.27.2': + optional: true + '@esbuild/linux-arm64@0.25.12': optional: true + '@esbuild/linux-arm64@0.27.2': + optional: true + '@esbuild/linux-arm@0.25.12': optional: true + '@esbuild/linux-arm@0.27.2': + optional: true + '@esbuild/linux-ia32@0.25.12': optional: true + '@esbuild/linux-ia32@0.27.2': + optional: true + '@esbuild/linux-loong64@0.25.12': optional: true + '@esbuild/linux-loong64@0.27.2': + optional: true + '@esbuild/linux-mips64el@0.25.12': optional: true + '@esbuild/linux-mips64el@0.27.2': + optional: true + '@esbuild/linux-ppc64@0.25.12': optional: true + '@esbuild/linux-ppc64@0.27.2': + optional: true + '@esbuild/linux-riscv64@0.25.12': optional: true + '@esbuild/linux-riscv64@0.27.2': + optional: true + '@esbuild/linux-s390x@0.25.12': optional: true + '@esbuild/linux-s390x@0.27.2': + optional: true + '@esbuild/linux-x64@0.25.12': optional: true + '@esbuild/linux-x64@0.27.2': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true + '@esbuild/netbsd-arm64@0.27.2': + optional: true + '@esbuild/netbsd-x64@0.25.12': optional: true + '@esbuild/netbsd-x64@0.27.2': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true + '@esbuild/openbsd-arm64@0.27.2': + optional: true + '@esbuild/openbsd-x64@0.25.12': optional: true + '@esbuild/openbsd-x64@0.27.2': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true + '@esbuild/openharmony-arm64@0.27.2': + optional: true + '@esbuild/sunos-x64@0.25.12': optional: true + '@esbuild/sunos-x64@0.27.2': + optional: true + '@esbuild/win32-arm64@0.25.12': optional: true + '@esbuild/win32-arm64@0.27.2': + optional: true + '@esbuild/win32-ia32@0.25.12': optional: true + '@esbuild/win32-ia32@0.27.2': + optional: true + '@esbuild/win32-x64@0.25.12': optional: true + '@esbuild/win32-x64@0.27.2': + optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)': dependencies: eslint: 9.39.2 @@ -3342,9 +3610,9 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))': + '@intlify/bundle-utils@11.0.3(vue-i18n@11.2.7(vue@3.5.26(typescript@5.9.3)))': dependencies: - '@intlify/message-compiler': 11.2.2 + '@intlify/message-compiler': 11.2.7 '@intlify/shared': 11.2.2 acorn: 8.15.0 esbuild: 0.25.12 @@ -3354,27 +3622,29 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.2 optionalDependencies: - vue-i18n: 11.2.2(vue@3.5.25(typescript@5.9.3)) + vue-i18n: 11.2.7(vue@3.5.26(typescript@5.9.3)) - '@intlify/core-base@11.2.2': + '@intlify/core-base@11.2.7': dependencies: - '@intlify/message-compiler': 11.2.2 - '@intlify/shared': 11.2.2 + '@intlify/message-compiler': 11.2.7 + '@intlify/shared': 11.2.7 - '@intlify/message-compiler@11.2.2': + '@intlify/message-compiler@11.2.7': dependencies: - '@intlify/shared': 11.2.2 + '@intlify/shared': 11.2.7 source-map-js: 1.2.1 '@intlify/shared@11.2.2': {} - '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.25)(eslint@9.39.2)(rollup@4.53.3)(typescript@5.9.3)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))': + '@intlify/shared@11.2.7': {} + + '@intlify/unplugin-vue-i18n@11.0.3(@vue/compiler-dom@3.5.26)(eslint@9.39.2)(rollup@4.54.0)(typescript@5.9.3)(vue-i18n@11.2.7(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3))) + '@intlify/bundle-utils': 11.0.3(vue-i18n@11.2.7(vue@3.5.26(typescript@5.9.3))) '@intlify/shared': 11.2.2 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.25)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.26)(vue-i18n@11.2.7(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3)) + '@rollup/pluginutils': 5.3.0(rollup@4.54.0) '@typescript-eslint/scope-manager': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) debug: 4.4.3 @@ -3382,9 +3652,9 @@ snapshots: pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.2.2(vue@3.5.25(typescript@5.9.3)) + vue-i18n: 11.2.7(vue@3.5.26(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -3392,14 +3662,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.25)(vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.2.2)(@vue/compiler-dom@3.5.26)(vue-i18n@11.2.7(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3))': dependencies: '@babel/parser': 7.28.5 optionalDependencies: '@intlify/shared': 11.2.2 - '@vue/compiler-dom': 3.5.25 - vue: 3.5.25(typescript@5.9.3) - vue-i18n: 11.2.2(vue@3.5.25(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.26 + vue: 3.5.26(typescript@5.9.3) + vue-i18n: 11.2.7(vue@3.5.26(typescript@5.9.3)) '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -3441,78 +3711,78 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.53': {} - '@rollup/pluginutils@5.3.0(rollup@4.53.3)': + '@rollup/pluginutils@5.3.0(rollup@4.54.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.3 + rollup: 4.54.0 - '@rollup/rollup-android-arm-eabi@4.53.3': + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true - '@rollup/rollup-android-arm64@4.53.3': + '@rollup/rollup-android-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.3': + '@rollup/rollup-darwin-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-x64@4.53.3': + '@rollup/rollup-darwin-x64@4.54.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.3': + '@rollup/rollup-freebsd-arm64@4.54.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.3': + '@rollup/rollup-freebsd-x64@4.54.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.3': + '@rollup/rollup-linux-arm-musleabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.3': + '@rollup/rollup-linux-arm64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.3': + '@rollup/rollup-linux-arm64-musl@4.54.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.3': + '@rollup/rollup-linux-loong64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.3': + '@rollup/rollup-linux-ppc64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.3': + '@rollup/rollup-linux-riscv64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.3': + '@rollup/rollup-linux-riscv64-musl@4.54.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.3': + '@rollup/rollup-linux-s390x-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.3': + '@rollup/rollup-linux-x64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.3': + '@rollup/rollup-linux-x64-musl@4.54.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.3': + '@rollup/rollup-openharmony-arm64@4.54.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.3': + '@rollup/rollup-win32-arm64-msvc@4.54.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.3': + '@rollup/rollup-win32-ia32-msvc@4.54.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.3': + '@rollup/rollup-win32-x64-gnu@4.54.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.3': + '@rollup/rollup-win32-x64-msvc@4.54.0': optional: true '@tsconfig/node24@24.0.3': {} @@ -3557,14 +3827,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3603,6 +3873,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) + '@typescript-eslint/types': 8.50.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.37.0': dependencies: '@typescript-eslint/types': 8.37.0 @@ -3613,6 +3892,11 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 + '@typescript-eslint/scope-manager@8.50.0': + dependencies: + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3621,6 +3905,10 @@ snapshots: dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.37.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.37.0 @@ -3633,11 +3921,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.49.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.1.0(typescript@5.9.3) @@ -3649,6 +3937,8 @@ snapshots: '@typescript-eslint/types@8.49.0': {} + '@typescript-eslint/types@8.50.0': {} + '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.37.0(typescript@5.9.3) @@ -3680,6 +3970,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/visitor-keys': 8.50.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.37.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) @@ -3691,12 +3996,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.49.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.50.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.49.0 - '@typescript-eslint/types': 8.49.0 - '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -3712,6 +4017,11 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.50.0': + dependencies: + '@typescript-eslint/types': 8.50.0 + eslint-visitor-keys: 4.2.1 + '@videojs/http-streaming@3.17.2(video.js@8.23.4)': dependencies: '@babel/runtime': 7.28.4 @@ -3734,7 +4044,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.44.1)(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.44.1)(vite@7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) @@ -3749,57 +4059,57 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.44.1 - vite: 7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.3(vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.3(vite@7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.53 - vite: 7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) - vue: 3.5.25(typescript@5.9.3) + vite: 7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2) + vue: 3.5.26(typescript@5.9.3) - '@volar/language-core@2.4.26': + '@volar/language-core@2.4.27': dependencies: - '@volar/source-map': 2.4.26 + '@volar/source-map': 2.4.27 - '@volar/source-map@2.4.26': {} + '@volar/source-map@2.4.27': {} - '@volar/typescript@2.4.26': + '@volar/typescript@2.4.27': dependencies: - '@volar/language-core': 2.4.26 + '@volar/language-core': 2.4.27 path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue/compiler-core@3.5.25': + '@vue/compiler-core@3.5.26': dependencies: '@babel/parser': 7.28.5 - '@vue/shared': 3.5.25 - entities: 4.5.0 + '@vue/shared': 3.5.26 + entities: 7.0.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.25': + '@vue/compiler-dom@3.5.26': dependencies: - '@vue/compiler-core': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/compiler-core': 3.5.26 + '@vue/shared': 3.5.26 - '@vue/compiler-sfc@3.5.25': + '@vue/compiler-sfc@3.5.26': dependencies: '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.25 - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-ssr': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/compiler-core': 3.5.26 + '@vue/compiler-dom': 3.5.26 + '@vue/compiler-ssr': 3.5.26 + '@vue/shared': 3.5.26 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.25': + '@vue/compiler-ssr@3.5.26': dependencies: - '@vue/compiler-dom': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/compiler-dom': 3.5.26 + '@vue/shared': 3.5.26 '@vue/devtools-api@6.6.4': {} @@ -3843,68 +4153,66 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/language-core@3.1.8(typescript@5.9.3)': + '@vue/language-core@3.2.0': dependencies: - '@volar/language-core': 2.4.26 - '@vue/compiler-dom': 3.5.25 - '@vue/shared': 3.5.25 + '@volar/language-core': 2.4.27 + '@vue/compiler-dom': 3.5.26 + '@vue/shared': 3.5.26 alien-signals: 3.1.1 muggle-string: 0.4.1 path-browserify: 1.0.1 picomatch: 4.0.3 - optionalDependencies: - typescript: 5.9.3 - '@vue/reactivity@3.5.25': + '@vue/reactivity@3.5.26': dependencies: - '@vue/shared': 3.5.25 + '@vue/shared': 3.5.26 - '@vue/runtime-core@3.5.25': + '@vue/runtime-core@3.5.26': dependencies: - '@vue/reactivity': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/reactivity': 3.5.26 + '@vue/shared': 3.5.26 - '@vue/runtime-dom@3.5.25': + '@vue/runtime-dom@3.5.26': dependencies: - '@vue/reactivity': 3.5.25 - '@vue/runtime-core': 3.5.25 - '@vue/shared': 3.5.25 + '@vue/reactivity': 3.5.26 + '@vue/runtime-core': 3.5.26 + '@vue/shared': 3.5.26 csstype: 3.2.3 - '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.9.3))': + '@vue/server-renderer@3.5.26(vue@3.5.26(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.25 - '@vue/shared': 3.5.25 - vue: 3.5.25(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.26 + '@vue/shared': 3.5.26 + vue: 3.5.26(typescript@5.9.3) - '@vue/shared@3.5.25': {} + '@vue/shared@3.5.26': {} - '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3))': + '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.26(typescript@5.9.3))': optionalDependencies: typescript: 5.9.3 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) - '@vueuse/core@14.1.0(vue@3.5.25(typescript@5.9.3))': + '@vueuse/core@14.1.0(vue@3.5.26(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.1.0 - '@vueuse/shared': 14.1.0(vue@3.5.25(typescript@5.9.3)) - vue: 3.5.25(typescript@5.9.3) + '@vueuse/shared': 14.1.0(vue@3.5.26(typescript@5.9.3)) + vue: 3.5.26(typescript@5.9.3) - '@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.25(typescript@5.9.3))': + '@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.26(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.1.0(vue@3.5.25(typescript@5.9.3)) - '@vueuse/shared': 14.1.0(vue@3.5.25(typescript@5.9.3)) - vue: 3.5.25(typescript@5.9.3) + '@vueuse/core': 14.1.0(vue@3.5.26(typescript@5.9.3)) + '@vueuse/shared': 14.1.0(vue@3.5.26(typescript@5.9.3)) + vue: 3.5.26(typescript@5.9.3) optionalDependencies: focus-trap: 7.6.2 jwt-decode: 4.0.0 '@vueuse/metadata@14.1.0': {} - '@vueuse/shared@14.1.0(vue@3.5.25(typescript@5.9.3))': + '@vueuse/shared@14.1.0(vue@3.5.26(typescript@5.9.3))': dependencies: - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) '@xmldom/xmldom@0.7.13': {} @@ -4094,7 +4402,7 @@ snapshots: electron-to-chromium@1.5.267: {} - entities@4.5.0: {} + entities@7.0.0: {} epubjs@0.3.93: dependencies: @@ -4155,6 +4463,35 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 + esbuild@0.27.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 + escalade@3.2.0: {} escape-string-regexp@4.0.0: {} @@ -4467,7 +4804,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.21: {} + lodash-es@4.17.22: {} lodash._baseiteratee@4.7.0: dependencies: @@ -4617,10 +4954,10 @@ snapshots: picomatch@4.0.3: {} - pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)): + pinia@3.0.4(typescript@5.9.3)(vue@3.5.26(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.8 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -4663,9 +5000,9 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.6.0(vue@3.5.25(typescript@5.9.3)): + qrcode.vue@3.6.0(vue@3.5.26(typescript@5.9.3)): dependencies: - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) querystringify@2.2.0: {} @@ -4720,32 +5057,32 @@ snapshots: rfdc@1.4.1: {} - rollup@4.53.3: + rollup@4.54.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.3 - '@rollup/rollup-android-arm64': 4.53.3 - '@rollup/rollup-darwin-arm64': 4.53.3 - '@rollup/rollup-darwin-x64': 4.53.3 - '@rollup/rollup-freebsd-arm64': 4.53.3 - '@rollup/rollup-freebsd-x64': 4.53.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 - '@rollup/rollup-linux-arm-musleabihf': 4.53.3 - '@rollup/rollup-linux-arm64-gnu': 4.53.3 - '@rollup/rollup-linux-arm64-musl': 4.53.3 - '@rollup/rollup-linux-loong64-gnu': 4.53.3 - '@rollup/rollup-linux-ppc64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-musl': 4.53.3 - '@rollup/rollup-linux-s390x-gnu': 4.53.3 - '@rollup/rollup-linux-x64-gnu': 4.53.3 - '@rollup/rollup-linux-x64-musl': 4.53.3 - '@rollup/rollup-openharmony-arm64': 4.53.3 - '@rollup/rollup-win32-arm64-msvc': 4.53.3 - '@rollup/rollup-win32-ia32-msvc': 4.53.3 - '@rollup/rollup-win32-x64-gnu': 4.53.3 - '@rollup/rollup-win32-x64-msvc': 4.53.3 + '@rollup/rollup-android-arm-eabi': 4.54.0 + '@rollup/rollup-android-arm64': 4.54.0 + '@rollup/rollup-darwin-arm64': 4.54.0 + '@rollup/rollup-darwin-x64': 4.54.0 + '@rollup/rollup-freebsd-arm64': 4.54.0 + '@rollup/rollup-freebsd-x64': 4.54.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.54.0 + '@rollup/rollup-linux-arm-musleabihf': 4.54.0 + '@rollup/rollup-linux-arm64-gnu': 4.54.0 + '@rollup/rollup-linux-arm64-musl': 4.54.0 + '@rollup/rollup-linux-loong64-gnu': 4.54.0 + '@rollup/rollup-linux-ppc64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-musl': 4.54.0 + '@rollup/rollup-linux-s390x-gnu': 4.54.0 + '@rollup/rollup-linux-x64-gnu': 4.54.0 + '@rollup/rollup-linux-x64-musl': 4.54.0 + '@rollup/rollup-openharmony-arm64': 4.54.0 + '@rollup/rollup-win32-arm64-msvc': 4.54.0 + '@rollup/rollup-win32-ia32-msvc': 4.54.0 + '@rollup/rollup-win32-x64-gnu': 4.54.0 + '@rollup/rollup-win32-x64-msvc': 4.54.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -4925,7 +5262,7 @@ snapshots: videojs-hotkeys@0.2.30: {} - videojs-mobile-ui@1.1.1(video.js@8.23.4): + videojs-mobile-ui@1.1.3(video.js@8.23.4): dependencies: global: 4.4.0 video.js: 8.23.4 @@ -4934,20 +5271,20 @@ snapshots: dependencies: global: 4.4.0 - vite-plugin-compression2@2.4.0(rollup@4.53.3): + vite-plugin-compression2@2.4.0(rollup@4.54.0): dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@rollup/pluginutils': 5.3.0(rollup@4.54.0) tar-mini: 0.2.0 transitivePeerDependencies: - rollup - vite@7.2.7(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2): + vite@7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2): dependencies: - esbuild: 0.25.12 + esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.3 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.4 @@ -4969,48 +5306,48 @@ snapshots: transitivePeerDependencies: - supports-color - vue-final-modal@4.5.5(@vueuse/core@14.1.0(vue@3.5.25(typescript@5.9.3)))(@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.25(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.25(typescript@5.9.3)): + vue-final-modal@4.5.5(@vueuse/core@14.1.0(vue@3.5.26(typescript@5.9.3)))(@vueuse/integrations@14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.26(typescript@5.9.3)))(focus-trap@7.6.2)(vue@3.5.26(typescript@5.9.3)): dependencies: - '@vueuse/core': 14.1.0(vue@3.5.25(typescript@5.9.3)) - '@vueuse/integrations': 14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.25(typescript@5.9.3)) + '@vueuse/core': 14.1.0(vue@3.5.26(typescript@5.9.3)) + '@vueuse/integrations': 14.1.0(focus-trap@7.6.2)(jwt-decode@4.0.0)(vue@3.5.26(typescript@5.9.3)) focus-trap: 7.6.2 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) - vue-i18n@11.2.2(vue@3.5.25(typescript@5.9.3)): + vue-i18n@11.2.7(vue@3.5.26(typescript@5.9.3)): dependencies: - '@intlify/core-base': 11.2.2 - '@intlify/shared': 11.2.2 + '@intlify/core-base': 11.2.7 + '@intlify/shared': 11.2.7 '@vue/devtools-api': 6.6.4 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) vue-lazyload@3.0.0: {} - vue-reader@1.3.3: + vue-reader@1.3.4: dependencies: epubjs: 0.3.93 - vue-router@4.6.4(vue@3.5.25(typescript@5.9.3)): + vue-router@4.6.4(vue@3.5.26(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) - vue-toastification@2.0.0-rc.5(vue@3.5.25(typescript@5.9.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.26(typescript@5.9.3)): dependencies: - vue: 3.5.25(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) - vue-tsc@3.1.8(typescript@5.9.3): + vue-tsc@3.2.0(typescript@5.9.3): dependencies: - '@volar/typescript': 2.4.26 - '@vue/language-core': 3.1.8(typescript@5.9.3) + '@volar/typescript': 2.4.27 + '@vue/language-core': 3.2.0 typescript: 5.9.3 - vue@3.5.25(typescript@5.9.3): + vue@3.5.26(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.25 - '@vue/compiler-sfc': 3.5.25 - '@vue/runtime-dom': 3.5.25 - '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.9.3)) - '@vue/shared': 3.5.25 + '@vue/compiler-dom': 3.5.26 + '@vue/compiler-sfc': 3.5.26 + '@vue/runtime-dom': 3.5.26 + '@vue/server-renderer': 3.5.26(vue@3.5.26(typescript@5.9.3)) + '@vue/shared': 3.5.26 optionalDependencies: typescript: 5.9.3 diff --git a/go.mod b/go.mod index 39bdf22c..1052747a 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/jellydator/ttlcache/v3 v3.4.0 - github.com/maruel/natural v1.2.1 + github.com/maruel/natural v1.3.0 github.com/marusama/semaphore/v2 v2.5.0 github.com/mholt/archives v0.1.5 github.com/mitchellh/go-homedir v1.1.0 diff --git a/go.sum b/go.sum index e239fb19..7d305274 100644 --- a/go.sum +++ b/go.sum @@ -169,8 +169,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/maruel/natural v1.2.1 h1:G/y4pwtTA07lbQsMefvsmEO0VN0NfqpxprxXDM4R/4o= -github.com/maruel/natural v1.2.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= +github.com/maruel/natural v1.3.0 h1:VsmCsBmEyrR46RomtgHs5hbKADGRVtliHTyCOLFBpsg= +github.com/maruel/natural v1.3.0/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/marusama/semaphore/v2 v2.5.0 h1:o/1QJD9DBYOWRnDhPwDVAXQn6mQYD0gZaS1Tpx6DJGM= github.com/marusama/semaphore/v2 v2.5.0/go.mod h1:z9nMiNUekt/LTpTUQdpp+4sJeYqUGpwMHfW0Z8V8fnQ= github.com/mholt/archives v0.1.5 h1:Fh2hl1j7VEhc6DZs2DLMgiBNChUux154a1G+2esNvzQ= From f89975603e29b9f1fc05aec58afb42bbd56ed696 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sun, 21 Dec 2025 17:41:19 +0000 Subject: [PATCH 03/34] feat: update translations (#5626) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/hr.json | 20 ++++++++++---------- frontend/src/i18n/ru.json | 32 ++++++++++++++++---------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 79e1e045..7c263198 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -44,9 +44,9 @@ "openFile": "Otvori datoteku", "discardChanges": "Odbaci", "saveChanges": "Spremi promjene", - "editAsText": "Edit as Text", - "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "editAsText": "Uredi kao tekst", + "increaseFontSize": "Povećaj veličinu fonta", + "decreaseFontSize": "Smanji veličinu fonta" }, "download": { "downloadFile": "Preuzmi Datoteku", @@ -79,14 +79,14 @@ "sortByName": "Sortiraj po nazivu", "sortBySize": "Sortiraj po veličini", "noPreview": "Pregled nije dostupan za ovu datoteku.", - "csvTooLarge": "CSV file is too large for preview (>5MB). Please download to view.", - "csvLoadFailed": "Failed to load CSV file.", - "showingRows": "Showing {count} row(s)", - "columnSeparator": "Column Separator", + "csvTooLarge": "CSV datoteka je prevelika za pregled (>5MB). Molimo preuzmite da bi ste ju pregledali.", + "csvLoadFailed": "Neuspješno učitavanje CSV datoteke.", + "showingRows": "Prikazuje se {count} red(ova)", + "columnSeparator": "Separator stupaca", "csvSeparators": { - "comma": "Comma (,)", - "semicolon": "Semicolon (;)", - "both": "Both (,) and (;)" + "comma": "Zarez (,)", + "semicolon": "Točka zarez (;)", + "both": "I (,) i (;)" } }, "help": { diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 5a92a2c7..50a8e2c7 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -43,10 +43,10 @@ "upload": "Загрузить", "openFile": "Открыть файл", "discardChanges": "Отказаться", - "saveChanges": "Save changes", - "editAsText": "Edit as Text", - "increaseFontSize": "Increase font size", - "decreaseFontSize": "Decrease font size" + "saveChanges": "Сохранить", + "editAsText": "Редактировать как текст", + "increaseFontSize": "Увеличить размер шрифта", + "decreaseFontSize": "Уменьшить размер шрифта" }, "download": { "downloadFile": "Скачать файл", @@ -79,14 +79,14 @@ "sortByName": "Сортировка по имени", "sortBySize": "Сортировка по размеру", "noPreview": "Предварительный просмотр для этого файла недоступен.", - "csvTooLarge": "CSV file is too large for preview (>5MB). Please download to view.", - "csvLoadFailed": "Failed to load CSV file.", - "showingRows": "Showing {count} row(s)", - "columnSeparator": "Column Separator", + "csvTooLarge": "Этот CSV файл слишком большой для предпросмотра (>5 МБ). Скачайте и откройте его локально.", + "csvLoadFailed": "Не удалось загрузить этот CSV.", + "showingRows": "Отображается {count} строк(а)", + "columnSeparator": "Разделитель столбцов", "csvSeparators": { - "comma": "Comma (,)", - "semicolon": "Semicolon (;)", - "both": "Both (,) and (;)" + "comma": "Запятая (,)", + "semicolon": "Точка с запятой (;)", + "both": "Оба варианта — (,) и (;)" } }, "help": { @@ -114,9 +114,9 @@ "username": "Имя пользователя", "usernameTaken": "Данное имя пользователя уже занято", "wrongCredentials": "Неверные данные", - "passwordTooShort": "Password must be at least {min} characters", + "passwordTooShort": "Пароль должен состоять как минимум из {min} символов", "logout_reasons": { - "inactivity": "You have been logged out due to inactivity." + "inactivity": "Сессия завершена после долгого отсутствия." } }, "permanent": "Постоянный", @@ -171,7 +171,7 @@ "video": "Видео" }, "settings": { - "aceEditorTheme": "Ace editor theme", + "aceEditorTheme": "Тема редактора Ace", "admin": "Админ", "administrator": "Администратор", "allowCommands": "Запуск команд", @@ -179,7 +179,7 @@ "allowNew": "Создание новых файлов или каталогов", "allowPublish": "Публикация новых записей и страниц", "allowSignup": "Разрешить пользователям регистрироваться", - "hideLoginButton": "Hide the login button from public pages", + "hideLoginButton": "Спрятать кнопку входа с публичных страниц", "avoidChanges": "(оставьте поле пустым, чтобы избежать изменений)", "branding": "Брендинг", "brandingDirectoryPath": "Путь к каталогу брендов", @@ -189,7 +189,7 @@ "commandRunnerHelp": "Здесь вы можете установить команды, которые будут выполняться в указанных событиях. Вы должны указать по одной команде в каждой строке. Переменные среды {0} и {1} будут доступны, будучи {0} относительно {1}. Дополнительные сведения об этой функции и доступных переменных среды см. В {2}.", "commandsUpdated": "Команды обновлены!", "createUserDir": "Автоматическое создание домашнего каталога пользователя при добавлении нового пользователя", - "minimumPasswordLength": "Minimum password length", + "minimumPasswordLength": "Минимальная длина пароля", "tusUploads": "Загруженные файлы", "tusUploadsHelp": " File Browser поддерживает загрузку файлов по частям, что позволяет работать в сетях низкого качества.", "tusUploadsChunkSize": "Указывает максимальный размер запроса (мелкие загрузки пойдут напрямую). Вы можете ввести простое целое число, обозначающее размер ввода в байтах, или строку, например 10MB, 1GB и т. д.", From 20bfd131c6a4fca48a645b52171c2d1cc3ce92b7 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Sun, 28 Dec 2025 17:57:25 -0300 Subject: [PATCH 04/34] feat: support streaming response for search results (#5630) Co-authored-by: manx98 <1323517022@qq.com> --- frontend/src/api/search.ts | 76 ++++++++++++++++++++++++------ frontend/src/components/Search.vue | 61 ++++++++++++++++++------ frontend/src/i18n/en.json | 1 + frontend/src/i18n/ja.json | 1 + frontend/src/i18n/ko.json | 1 + frontend/src/i18n/ru.json | 1 + frontend/src/i18n/zh-cn.json | 1 + frontend/src/i18n/zh-tw.json | 1 + http/search.go | 72 ++++++++++++++++++++++++---- search/search.go | 7 ++- 10 files changed, 183 insertions(+), 39 deletions(-) diff --git a/frontend/src/api/search.ts b/frontend/src/api/search.ts index 6fa02d06..63cbdaa1 100644 --- a/frontend/src/api/search.ts +++ b/frontend/src/api/search.ts @@ -1,7 +1,12 @@ -import { fetchURL, removePrefix } from "./utils"; +import { fetchURL, removePrefix, StatusError } from "./utils"; import url from "../utils/url"; -export default async function search(base: string, query: string) { +export default async function search( + base: string, + query: string, + signal: AbortSignal, + callback: (item: ResourceItem) => void +) { base = removePrefix(base); query = encodeURIComponent(query); @@ -9,19 +14,60 @@ export default async function search(base: string, query: string) { base += "/"; } - const res = await fetchURL(`/api/search${base}?query=${query}`, {}); + const res = await fetchURL(`/api/search${base}?query=${query}`, { signal }); + if (!res.body) { + throw new StatusError("000 No connection", 0); + } + try { + // Try streaming approach first (modern browsers) + if (res.body && typeof res.body.pipeThrough === "function") { + const reader = res.body.pipeThrough(new TextDecoderStream()).getReader(); + let buffer = ""; + while (true) { + const { done, value } = await reader.read(); + if (value) { + buffer += value; + } + const lines = buffer.split(/\n/); + let lastLine = lines.pop(); + // Save incomplete last line + if (!lastLine) { + lastLine = ""; + } + buffer = lastLine; - let data = await res.json(); - - data = data.map((item: ResourceItem & { dir: boolean }) => { - item.url = `/files${base}` + url.encodePath(item.path); - - if (item.dir) { - item.url += "/"; + for (const line of lines) { + if (line) { + const item = JSON.parse(line) as ResourceItem; + item.url = `/files${base}` + url.encodePath(item.path); + if (item.isDir) { + item.url += "/"; + } + callback(item); + } + } + if (done) break; + } + } else { + // Fallback for browsers without streaming support (e.g., Safari) + const text = await res.text(); + const lines = text.split(/\n/); + for (const line of lines) { + if (line) { + const item = JSON.parse(line) as ResourceItem; + item.url = `/files${base}` + url.encodePath(item.path); + if (item.isDir) { + item.url += "/"; + } + callback(item); + } + } } - - return item; - }); - - return data; + } catch (e) { + // Check if the error is an intentional cancellation + if (e instanceof Error && e.name === "AbortError") { + throw new StatusError("000 No connection", 0, true); + } + throw e; + } } diff --git a/frontend/src/components/Search.vue b/frontend/src/components/Search.vue index 08b40e3e..57d5ba0d 100644 --- a/frontend/src/components/Search.vue +++ b/frontend/src/components/Search.vue @@ -5,10 +5,11 @@ v-if="active" class="action" @click="close" - :aria-label="$t('buttons.close')" - :title="$t('buttons.close')" + :aria-label="closeButtonTitle" + :title="closeButtonTitle" > - arrow_back + stop_circle + arrow_back search + autorenew + + + {{ results.length }} +
@@ -57,9 +67,6 @@
-

- autorenew -

@@ -70,10 +77,11 @@ import { useLayoutStore } from "@/stores/layout"; import url from "@/utils/url"; import { search } from "@/api"; -import { computed, inject, onMounted, ref, watch } from "vue"; +import { computed, inject, onMounted, ref, watch, onUnmounted } from "vue"; import { useI18n } from "vue-i18n"; import { useRoute } from "vue-router"; import { storeToRefs } from "pinia"; +import { StatusError } from "@/api/utils"; const boxes = { image: { label: "images", icon: "insert_photo" }, @@ -84,6 +92,7 @@ const boxes = { const layoutStore = useLayoutStore(); const fileStore = useFileStore(); +let searchAbortController = new AbortController(); const { currentPromptName } = storeToRefs(layoutStore); @@ -124,9 +133,7 @@ watch(currentPromptName, (newVal, oldVal) => { }); watch(prompt, () => { - if (results.value.length) { - reset(); - } + reset(); }); // ...mapState(useFileStore, ["isListing"]), @@ -149,6 +156,10 @@ const filteredResults = computed(() => { return results.value.slice(0, resultsCount.value); }); +const closeButtonTitle = computed(() => { + return ongoing.value ? t("buttons.stopSearch") : t("buttons.close"); +}); + onMounted(() => { if (result.value === null) { return; @@ -164,14 +175,23 @@ onMounted(() => { }); }); +onUnmounted(() => { + abortLastSearch(); +}); + const open = () => { !active.value && layoutStore.showHover("search"); }; const close = (event: Event) => { - event.stopPropagation(); - event.preventDefault(); - layoutStore.closeHovers(); + if (ongoing.value) { + abortLastSearch(); + ongoing.value = false; + } else { + event.stopPropagation(); + event.preventDefault(); + layoutStore.closeHovers(); + } }; const keyup = (event: KeyboardEvent) => { @@ -188,11 +208,16 @@ const init = (string: string) => { }; const reset = () => { + abortLastSearch(); ongoing.value = false; resultsCount.value = 50; results.value = []; }; +const abortLastSearch = () => { + searchAbortController.abort(); +}; + const submit = async (event: Event) => { event.preventDefault(); @@ -208,8 +233,16 @@ const submit = async (event: Event) => { ongoing.value = true; try { - results.value = await search(path, prompt.value); + abortLastSearch(); + searchAbortController = new AbortController(); + results.value = []; + await search(path, prompt.value, searchAbortController.signal, (item) => + results.value.push(item) + ); } catch (error: any) { + if (error instanceof StatusError && error.is_canceled) { + return; + } $showError(error); } diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 9063dcde..de5368bd 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -43,6 +43,7 @@ "upload": "Upload", "openFile": "Open file", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index 141cc49f..3b38eb98 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -42,6 +42,7 @@ "update": "更新", "upload": "アップロード", "openFile": "ファイルを開く", + "stopSearch": "検索を停止", "discardChanges": "Discard", "saveChanges": "Save changes", "editAsText": "Edit as Text", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index d6732deb..ec7e5f24 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -41,6 +41,7 @@ "toggleSidebar": "사이드바 전환", "update": "업데이트", "upload": "업로드", + "stopSearch": "검색 중지", "openFile": "파일 열기", "discardChanges": "변경 사항 취소", "saveChanges": "변경사항 저장", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 50a8e2c7..213518b9 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -42,6 +42,7 @@ "update": "Обновить", "upload": "Загрузить", "openFile": "Открыть файл", + "stopSearch": "Прекратить поиск", "discardChanges": "Отказаться", "saveChanges": "Сохранить", "editAsText": "Редактировать как текст", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index a1259f99..132ac832 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -42,6 +42,7 @@ "update": "更新", "upload": "上传", "openFile": "打开文件", + "stopSearch": "停止搜索", "discardChanges": "放弃更改", "saveChanges": "保存更改", "editAsText": "以文本形式编辑", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index dc984fd4..734679f3 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -42,6 +42,7 @@ "update": "更新", "upload": "上傳", "openFile": "開啟檔案", + "stopSearch": "停止搜尋", "discardChanges": "放棄變更", "saveChanges": "Save changes", "editAsText": "Edit as Text", diff --git a/http/search.go b/http/search.go index 5b926b43..48a44c9b 100644 --- a/http/search.go +++ b/http/search.go @@ -1,28 +1,82 @@ package fbhttp import ( + "context" + "encoding/json" + "errors" "net/http" "os" + "sync" + "time" "github.com/filebrowser/filebrowser/v2/search" ) +const searchPingInterval = 5 + var searchHandler = withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { - response := []map[string]interface{}{} + response := make(chan map[string]interface{}) + ctx, cancel := context.WithCancelCause(r.Context()) + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + // Avoid connection timeout + timeout := time.NewTimer(searchPingInterval * time.Second) + defer timeout.Stop() + for { + var err error + var infoBytes []byte + select { + case info := <-response: + if info == nil { + return + } + infoBytes, err = json.Marshal(info) + case <-timeout.C: + // Send a heartbeat packet + infoBytes = nil + case <-ctx.Done(): + return + } + if err != nil { + cancel(err) + return + } + _, err = w.Write(infoBytes) + if err == nil { + _, err = w.Write([]byte("\n")) + } + if err != nil { + cancel(err) + return + } + if flusher, ok := w.(http.Flusher); ok { + flusher.Flush() + } + } + }() query := r.URL.Query().Get("query") - err := search.Search(d.user.Fs, r.URL.Path, query, d, func(path string, f os.FileInfo) error { - response = append(response, map[string]interface{}{ + err := search.Search(ctx, d.user.Fs, r.URL.Path, query, d, func(path string, f os.FileInfo) error { + select { + case <-ctx.Done(): + case response <- map[string]interface{}{ "dir": f.IsDir(), "path": path, - }) - - return nil + }: + } + return context.Cause(ctx) }) - - if err != nil { + close(response) + wg.Wait() + if err == nil { + err = context.Cause(ctx) + } + // ignore cancellation errors from user aborts + if err != nil && !errors.Is(err, context.Canceled) { return http.StatusInternalServerError, err } - return renderJSON(w, r, response) + return 0, nil }) diff --git a/search/search.go b/search/search.go index 380dcde3..c58cc22f 100644 --- a/search/search.go +++ b/search/search.go @@ -1,6 +1,7 @@ package search import ( + "context" "os" "path" "path/filepath" @@ -18,13 +19,17 @@ type searchOptions struct { } // Search searches for a query in a fs. -func Search(fs afero.Fs, scope, query string, checker rules.Checker, found func(path string, f os.FileInfo) error) error { +func Search(ctx context.Context, + fs afero.Fs, scope, query string, checker rules.Checker, found func(path string, f os.FileInfo) error) error { search := parseSearch(query) scope = filepath.ToSlash(filepath.Clean(scope)) scope = path.Join("/", scope) return afero.Walk(fs, scope, func(fPath string, f os.FileInfo, _ error) error { + if ctx.Err() != nil { + return context.Cause(ctx) + } fPath = filepath.ToSlash(filepath.Clean(fPath)) fPath = path.Join("/", fPath) relativePath := strings.TrimPrefix(fPath, scope) From 79d1aa9229b076ee8e3b71d6cf061fc90738f4da Mon Sep 17 00:00:00 2001 From: Brendan Jackman Date: Sun, 28 Dec 2025 21:04:23 +0000 Subject: [PATCH 05/34] fix: Don't crash on invalid config import (#5640) --- cmd/config_import.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmd/config_import.go b/cmd/config_import.go index 4de34c9b..9a838721 100644 --- a/cmd/config_import.go +++ b/cmd/config_import.go @@ -53,6 +53,10 @@ The path must be for a json or yaml file.`, return err } + if file.Settings == nil || file.Server == nil { + return errors.New("invalid configuration file: 'settings' or 'server' fields are missing. Please ensure you are importing a file generated by the 'config export' command") + } + file.Settings.Key = key err = st.Settings.Save(file.Settings) if err != nil { From 60b1ee8bb9e18b21d7f2c04cb1cc90046cecd3e1 Mon Sep 17 00:00:00 2001 From: Brendan Jackman Date: Sun, 28 Dec 2025 21:04:59 +0000 Subject: [PATCH 06/34] fix: fix nil deref in config set command (#5641) Co-authored-by: Henrique Dias --- cmd/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/config.go b/cmd/config.go index 4766c389..83e7620e 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 == "" { + if header == "" && defaultAuther != nil { header = defaultAuther["header"].(string) } From 9595f3939c1c129ed875a47adcc4fbcfad9a0e65 Mon Sep 17 00:00:00 2001 From: Dominik <18555104+FadedAtlas@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:07:00 +0100 Subject: [PATCH 07/34] fix: conversion of backslashes in file paths for archive creation (#5637) Co-authored-by: FadedAtlas --- http/raw.go | 1 + 1 file changed, 1 insertion(+) diff --git a/http/raw.go b/http/raw.go index bed04310..a6857ffb 100644 --- a/http/raw.go +++ b/http/raw.go @@ -123,6 +123,7 @@ func getFiles(d *data, path, commonPath string) ([]archives.FileInfo, error) { if path != commonPath { nameInArchive := strings.TrimPrefix(path, commonPath) nameInArchive = strings.TrimPrefix(nameInArchive, string(filepath.Separator)) + nameInArchive = filepath.ToSlash(nameInArchive) archiveFiles = append(archiveFiles, archives.FileInfo{ FileInfo: info, From 032d6c7520a64686c9d9b1218562256f629b4703 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:14:08 +0100 Subject: [PATCH 08/34] feat: update translations (#5631) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 1 + frontend/src/i18n/bg.json | 1 + frontend/src/i18n/ca.json | 1 + frontend/src/i18n/cs.json | 1 + frontend/src/i18n/de.json | 1 + frontend/src/i18n/el.json | 1 + frontend/src/i18n/es.json | 1 + frontend/src/i18n/fa.json | 1 + frontend/src/i18n/fr.json | 1 + frontend/src/i18n/he.json | 1 + frontend/src/i18n/hr.json | 1 + frontend/src/i18n/hu.json | 1 + frontend/src/i18n/is.json | 1 + frontend/src/i18n/it.json | 1 + frontend/src/i18n/ja.json | 1 + frontend/src/i18n/ko.json | 1 + frontend/src/i18n/lv.json | 286 +++++++++++++++++++++++++++++++++++ frontend/src/i18n/lv_LV.json | 286 +++++++++++++++++++++++++++++++++++ frontend/src/i18n/nl-be.json | 1 + frontend/src/i18n/no.json | 1 + frontend/src/i18n/pl.json | 1 + frontend/src/i18n/pt-br.json | 1 + frontend/src/i18n/pt.json | 1 + frontend/src/i18n/ro.json | 1 + frontend/src/i18n/ru.json | 1 + frontend/src/i18n/sk.json | 1 + frontend/src/i18n/sv-se.json | 1 + frontend/src/i18n/tr.json | 1 + frontend/src/i18n/uk.json | 1 + frontend/src/i18n/vi.json | 1 + frontend/src/i18n/zh-cn.json | 13 +- frontend/src/i18n/zh-tw.json | 1 + 32 files changed, 608 insertions(+), 6 deletions(-) create mode 100644 frontend/src/i18n/lv.json create mode 100644 frontend/src/i18n/lv_LV.json diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index 8e7d9a4f..b6d1d39b 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -43,6 +43,7 @@ "upload": "رفع", "openFile": "فتح الملف", "discardChanges": "إلغاء التغييرات", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index 372c8ec0..2f1b2a06 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -43,6 +43,7 @@ "upload": "Качи", "openFile": "Отвори файл", "discardChanges": "Изчисти", + "stopSearch": "Stop searching", "saveChanges": "Запиши промените", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index 13ed4482..f269f06b 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -43,6 +43,7 @@ "upload": "Pujar", "openFile": "Obrir fitxer", "discardChanges": "Descartar", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 7790eeb6..dce412dd 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -43,6 +43,7 @@ "upload": "Nahrát", "openFile": "Otevřít soubor", "discardChanges": "Zrušit změny", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index 743cc9d5..4f398cfa 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -43,6 +43,7 @@ "upload": "Upload", "openFile": "Datei öffnen", "discardChanges": "Verwerfen", + "stopSearch": "Stop searching", "saveChanges": "Änderungen speichern", "editAsText": "Als Text bearbeiten", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index a025d639..8f61e538 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -43,6 +43,7 @@ "upload": "Μεταφόρτωση", "openFile": "Άνοιγμα αρχείου", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 98d32187..a60f84a0 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -43,6 +43,7 @@ "upload": "Subir", "openFile": "Abrir archivo", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Guardar cambios", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 18872ea8..fb26f19c 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -43,6 +43,7 @@ "upload": "آپلود", "openFile": "باز کردن فایل", "discardChanges": "لغو کردن", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 5a910ed7..1710b637 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -43,6 +43,7 @@ "upload": "Importer", "openFile": "Ouvrir le fichier", "discardChanges": "Annuler", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index 0cd243ee..1f896bcf 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -43,6 +43,7 @@ "upload": "העלאה", "openFile": "פתח קובץ", "discardChanges": "זריקת השינויים", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 7c263198..42fa9bea 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -43,6 +43,7 @@ "upload": "Prenesi", "openFile": "Otvori datoteku", "discardChanges": "Odbaci", + "stopSearch": "Stop searching", "saveChanges": "Spremi promjene", "editAsText": "Uredi kao tekst", "increaseFontSize": "Povećaj veličinu fonta", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index 3fb18ca7..3a0b047a 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -43,6 +43,7 @@ "upload": "Feltöltés", "openFile": "Fájl megnyitása", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 223f5513..595098a1 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -43,6 +43,7 @@ "upload": "Hlaða upp", "openFile": "Open file", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index 532cb1b5..29798359 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -43,6 +43,7 @@ "upload": "Carica", "openFile": "Apri file", "discardChanges": "Ignora", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index 3b38eb98..0a94d2e1 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -44,6 +44,7 @@ "openFile": "ファイルを開く", "stopSearch": "検索を停止", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index ec7e5f24..acbdac95 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -44,6 +44,7 @@ "stopSearch": "검색 중지", "openFile": "파일 열기", "discardChanges": "변경 사항 취소", + "stopSearch": "Stop searching", "saveChanges": "변경사항 저장", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json new file mode 100644 index 00000000..8a57f578 --- /dev/null +++ b/frontend/src/i18n/lv.json @@ -0,0 +1,286 @@ +{ + "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", + "discardChanges": "Izmest", + "stopSearch": "Stop searching", + "saveChanges": "Saglabāt izmaiņas", + "editAsText": "Rediģēt kā tekstu", + "increaseFontSize": "Palieliniet fonta lielumu", + "decreaseFontSize": "Samaziniet fonta lielumu" + }, + "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 (;)" + } + }, + "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?" + }, + "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", + "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īgošana ir izdzēsta!", + "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" + }, + "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/lv_LV.json b/frontend/src/i18n/lv_LV.json new file mode 100644 index 00000000..8a57f578 --- /dev/null +++ b/frontend/src/i18n/lv_LV.json @@ -0,0 +1,286 @@ +{ + "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", + "discardChanges": "Izmest", + "stopSearch": "Stop searching", + "saveChanges": "Saglabāt izmaiņas", + "editAsText": "Rediģēt kā tekstu", + "increaseFontSize": "Palieliniet fonta lielumu", + "decreaseFontSize": "Samaziniet fonta lielumu" + }, + "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 (;)" + } + }, + "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?" + }, + "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", + "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īgošana ir izdzēsta!", + "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" + }, + "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/nl-be.json b/frontend/src/i18n/nl-be.json index 0cede7cc..b78ff204 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -43,6 +43,7 @@ "upload": "Uploaden", "openFile": "Open file", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index e8d1e341..eb1a1c12 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -43,6 +43,7 @@ "upload": "Last opp", "openFile": "Open file", "discardChanges": "Slett", + "stopSearch": "Stop searching", "saveChanges": "Lagre Endringane ", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 372b6542..209e68d2 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -43,6 +43,7 @@ "upload": "Wyślij", "openFile": "Otwórz plik", "discardChanges": "Odrzuć", + "stopSearch": "Stop searching", "saveChanges": "Zapisz zmiany", "editAsText": "Edytuj jako tekst", "increaseFontSize": "Zwiększ rozmiar czcionki", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 653d167b..d994cbaa 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -43,6 +43,7 @@ "upload": "Enviar", "openFile": "Abrir", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index d5e979e1..249a775a 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -43,6 +43,7 @@ "upload": "Enviar", "openFile": "Open file", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index dc8f1166..d5184d63 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -43,6 +43,7 @@ "upload": "Încarcă", "openFile": "Open file", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 213518b9..48e9fde6 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -44,6 +44,7 @@ "openFile": "Открыть файл", "stopSearch": "Прекратить поиск", "discardChanges": "Отказаться", + "stopSearch": "Stop searching", "saveChanges": "Сохранить", "editAsText": "Редактировать как текст", "increaseFontSize": "Увеличить размер шрифта", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 9ed8caa3..ee85b1d5 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -43,6 +43,7 @@ "upload": "Nahrať", "openFile": "Otvoriť súbor", "discardChanges": "Zahodiť", + "stopSearch": "Stop searching", "saveChanges": "Uložiť zmeny", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index 1d3b12d6..3e1f82cf 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -43,6 +43,7 @@ "upload": "Ladda upp", "openFile": "Öppna fil", "discardChanges": "Förkasta", + "stopSearch": "Stop searching", "saveChanges": "Spara ändringar", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index acf19df7..cdaf8e25 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -43,6 +43,7 @@ "upload": "Yükle", "openFile": "Dosyayı aç", "discardChanges": "Discard", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index c704cf5d..e53adc31 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -43,6 +43,7 @@ "upload": "Вивантажити", "openFile": "Відкрити файл", "discardChanges": "Скасувати", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index 4cebba92..8a71150d 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -43,6 +43,7 @@ "upload": "Tải lên", "openFile": "Mở tệp", "discardChanges": "Hủy bỏ thay đổi", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 132ac832..d7bb63c6 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -44,6 +44,7 @@ "openFile": "打开文件", "stopSearch": "停止搜索", "discardChanges": "放弃更改", + "stopSearch": "Stop searching", "saveChanges": "保存更改", "editAsText": "以文本形式编辑", "increaseFontSize": "增大字体大小", @@ -83,11 +84,11 @@ "csvTooLarge": "CSV文件大到无法预览(>5MB)。请下载查看。", "csvLoadFailed": "加载 CSV 文件失败。", "showingRows": "正在显示 {count} 行", - "columnSeparator": "Column Separator", + "columnSeparator": "列分隔符", "csvSeparators": { - "comma": "Comma (,)", - "semicolon": "Semicolon (;)", - "both": "Both (,) and (;)" + "comma": "逗号 (,)", + "semicolon": "分号 (;)", + "both": "逗号 (,) 和分号 (;)" } }, "help": { @@ -117,7 +118,7 @@ "wrongCredentials": "用户名或密码错误", "passwordTooShort": "密码必须至少包含 {min} 个字符", "logout_reasons": { - "inactivity": "由于未活动,您已登出。" + "inactivity": "由于未活动,您已登出。" } }, "permanent": "永久", @@ -172,7 +173,7 @@ "video": "视频" }, "settings": { - "aceEditorTheme": "Ace editor 主题", + "aceEditorTheme": "Ace编辑器主题", "admin": "管理员", "administrator": "管理员", "allowCommands": "执行命令(Shell 命令)", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 734679f3..e5a32801 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -44,6 +44,7 @@ "openFile": "開啟檔案", "stopSearch": "停止搜尋", "discardChanges": "放棄變更", + "stopSearch": "Stop searching", "saveChanges": "Save changes", "editAsText": "Edit as Text", "increaseFontSize": "Increase font size", From 7a93b2a0623555ee118a1d357a6e342519906c4a Mon Sep 17 00:00:00 2001 From: Brendan Jackman Date: Mon, 29 Dec 2025 07:20:48 +0000 Subject: [PATCH 09/34] docs: clarify scope of config file and environment variables (#5643) --- cmd/root.go | 5 +++++ www/docs/cli/filebrowser.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index dd91c1b2..13bc3192 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -135,6 +135,11 @@ file named .filebrowser.{json, toml, yaml, yml} in the following directories: - $HOME/ - /etc/filebrowser/ +**Note:** Only the options listed below can be set via the config file or +environment variables. Other configuration options live exclusively in the +database and so they must be set by the "config set" or "config +import" commands. + The precedence of the configuration values are as follows: - Flags diff --git a/www/docs/cli/filebrowser.md b/www/docs/cli/filebrowser.md index 8383ec97..e2390238 100644 --- a/www/docs/cli/filebrowser.md +++ b/www/docs/cli/filebrowser.md @@ -26,6 +26,11 @@ file named .filebrowser.{json, toml, yaml, yml} in the following directories: - $HOME/ - /etc/filebrowser/ +**Note:** Only the options listed below can be set via the config file or +environment variables. Other configuration options live exclusively in the +database and so they must be set by the "config set" or "config +import" commands. + The precedence of the configuration values are as follows: - Flags From 1faa21844f84f09d58ace7d8ffa3518d1355f22e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Dec 2025 08:25:45 +0100 Subject: [PATCH 10/34] chore(deps): update all non-major dependencies (#5639) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 140 ++++++++++++++++++++-------------------- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 0482dba3..80809665 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -71,5 +71,5 @@ "vite-plugin-compression2": "^2.3.1", "vue-tsc": "^3.1.3" }, - "packageManager": "pnpm@10.26.1+sha512.664074abc367d2c9324fdc18037097ce0a8f126034160f709928e9e9f95d98714347044e5c3164d65bd5da6c59c6be362b107546292a8eecb7999196e5ce58fa" + "packageManager": "pnpm@10.26.2+sha512.0e308ff2005fc7410366f154f625f6631ab2b16b1d2e70238444dd6ae9d630a8482d92a451144debc492416896ed16f7b114a86ec68b8404b2443869e68ffda6" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 1975d743..67088f72 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -110,7 +110,7 @@ importers: version: 24.10.4 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.50.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.50.1(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 version: 7.2.1(terser@5.44.1)(vite@7.3.0(@types/node@24.10.4)(terser@5.44.1)(yaml@2.8.2)) @@ -161,7 +161,7 @@ importers: version: 2.4.0(rollup@4.54.0) vue-tsc: specifier: ^3.1.3 - version: 3.2.0(typescript@5.9.3) + version: 3.2.1(typescript@5.9.3) packages: @@ -1283,11 +1283,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.50.0': - resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} + '@typescript-eslint/eslint-plugin@8.50.1': + resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.0 + '@typescript-eslint/parser': ^8.50.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1310,8 +1310,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.0': - resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} + '@typescript-eslint/project-service@8.50.1': + resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1324,8 +1324,8 @@ packages: resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.50.0': - resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} + '@typescript-eslint/scope-manager@8.50.1': + resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.37.0': @@ -1340,8 +1340,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.50.0': - resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} + '@typescript-eslint/tsconfig-utils@8.50.1': + resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1353,8 +1353,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.50.0': - resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} + '@typescript-eslint/type-utils@8.50.1': + resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1368,8 +1368,8 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.50.0': - resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} + '@typescript-eslint/types@8.50.1': + resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.37.0': @@ -1384,8 +1384,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.50.0': - resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} + '@typescript-eslint/typescript-estree@8.50.1': + resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1397,8 +1397,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.50.0': - resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} + '@typescript-eslint/utils@8.50.1': + resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1412,8 +1412,8 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.50.0': - resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} + '@typescript-eslint/visitor-keys@8.50.1': + resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.2': @@ -1493,8 +1493,8 @@ packages: typescript: optional: true - '@vue/language-core@3.2.0': - resolution: {integrity: sha512-CHIuDtZ04CIElAgEuLbwmq3p7QcmYoVPmBPqtdvWJCflZE5W3KHT/5DRBvDv1r2TteCjN02uYHiaAEWq9hQNiA==} + '@vue/language-core@3.2.1': + resolution: {integrity: sha512-g6oSenpnGMtpxHGAwKuu7HJJkNZpemK/zg3vZzZbJ6cnnXq1ssxuNrXSsAHYM3NvH8p4IkTw+NLmuxyeYz4r8A==} '@vue/reactivity@3.5.26': resolution: {integrity: sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==} @@ -1607,8 +1607,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - alien-signals@3.1.1: - resolution: {integrity: sha512-ogkIWbVrLwKtHY6oOAXaYkAxP+cTH7V5FZ5+Tm4NZFd8VDZ6uNMDrfzqctTZ42eTMCSR3ne3otpcxmqSnFfPYA==} + alien-signals@3.1.2: + resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -2509,8 +2509,8 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.3.0: + resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -2691,8 +2691,8 @@ packages: peerDependencies: vue: ^3.0.2 - vue-tsc@3.2.0: - resolution: {integrity: sha512-NFhcKKQZeTuG8/gc8XwFANx/lC0Dd3dCZ97TWh1a63PcD22KkFy4QLeT8JMtduaQT1NzySWmx3qXm16Hj1Xsxg==} + vue-tsc@3.2.1: + resolution: {integrity: sha512-I23Rk8dkQfmcSbxDO0dmg9ioMLjKA1pjlU3Lz6Jfk2pMGu3Uryu9810XkcZH24IzPbhzPCnkKo2rEMRX0skSrw==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -3822,23 +3822,23 @@ snapshots: graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3873,10 +3873,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -3892,10 +3892,10 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/scope-manager@8.50.0': + '@typescript-eslint/scope-manager@8.50.1': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.3)': dependencies: @@ -3905,7 +3905,7 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3916,19 +3916,19 @@ snapshots: '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3937,7 +3937,7 @@ snapshots: '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/types@8.50.0': {} + '@typescript-eslint/types@8.50.1': {} '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': dependencies: @@ -3950,7 +3950,7 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.3 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3965,22 +3965,22 @@ snapshots: minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3996,12 +3996,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -4017,9 +4017,9 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.50.0': + '@typescript-eslint/visitor-keys@8.50.1': dependencies: - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/types': 8.50.1 eslint-visitor-keys: 4.2.1 '@videojs/http-streaming@3.17.2(video.js@8.23.4)': @@ -4153,12 +4153,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/language-core@3.2.0': + '@vue/language-core@3.2.1': dependencies: '@volar/language-core': 2.4.27 '@vue/compiler-dom': 3.5.26 '@vue/shared': 3.5.26 - alien-signals: 3.1.1 + alien-signals: 3.1.2 muggle-string: 0.4.1 path-browserify: 1.0.1 picomatch: 4.0.3 @@ -4240,7 +4240,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - alien-signals@3.1.1: {} + alien-signals@3.1.2: {} ansi-styles@4.3.0: dependencies: @@ -5158,7 +5158,7 @@ snapshots: dependencies: is-number: 7.0.0 - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.3.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -5335,10 +5335,10 @@ snapshots: dependencies: vue: 3.5.26(typescript@5.9.3) - vue-tsc@3.2.0(typescript@5.9.3): + vue-tsc@3.2.1(typescript@5.9.3): dependencies: '@volar/typescript': 2.4.27 - '@vue/language-core': 3.2.0 + '@vue/language-core': 3.2.1 typescript: 5.9.3 vue@3.5.26(typescript@5.9.3): From a2d80c62c1c17962e566f68fb7cac6960ed3e4cb Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Mon, 29 Dec 2025 02:25:49 -0500 Subject: [PATCH 11/34] feat: add "disable image resolution calculation" flag (#5638) --- cmd/config.go | 3 +++ cmd/root.go | 6 ++++++ files/file.go | 25 ++++++++++++++----------- http/public.go | 1 + settings/settings.go | 1 + www/docs/cli/filebrowser-config-init.md | 1 + www/docs/cli/filebrowser-config-set.md | 1 + www/docs/cli/filebrowser.md | 1 + 8 files changed, 28 insertions(+), 11 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index 83e7620e..3fb2e7e4 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -308,6 +308,9 @@ func getSettings(flags *pflag.FlagSet, set *settings.Settings, ser *settings.Ser case "disableTypeDetectionByHeader": ser.TypeDetectionByHeader, err = flags.GetBool(flag.Name) ser.TypeDetectionByHeader = !ser.TypeDetectionByHeader + case "disableImageResolutionCalc": + ser.ImageResolutionCal, err = flags.GetBool(flag.Name) + ser.ImageResolutionCal = !ser.ImageResolutionCal // Settings flags from [addConfigFlags] case "signup": diff --git a/cmd/root.go b/cmd/root.go index 13bc3192..0f78535c 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -108,6 +108,7 @@ func addServerFlags(flags *pflag.FlagSet) { flags.Bool("disablePreviewResize", false, "disable resize of image previews") flags.Bool("disableExec", true, "disables Command Runner feature") flags.Bool("disableTypeDetectionByHeader", false, "disables type detection by reading file headers") + flags.Bool("disableImageResolutionCalc", false, "disables image resolution calculation by reading image files") } var rootCmd = &cobra.Command{ @@ -336,6 +337,10 @@ func getServerSettings(v *viper.Viper, st *storage.Storage) (*settings.Server, e server.TypeDetectionByHeader = !v.GetBool("disableTypeDetectionByHeader") } + if v.IsSet("disableImageResolutionCalc") { + server.ImageResolutionCal = !v.GetBool("disableImageResolutionCalc") + } + if v.IsSet("disableExec") { server.EnableExec = !v.GetBool("disableExec") } @@ -444,6 +449,7 @@ func quickSetup(v *viper.Viper, s *storage.Storage) error { ResizePreview: !v.GetBool("disablePreviewResize"), EnableExec: !v.GetBool("disableExec"), TypeDetectionByHeader: !v.GetBool("disableTypeDetectionByHeader"), + ImageResolutionCal: !v.GetBool("disableImageResolutionCalc"), } err = s.Settings.SaveServer(ser) diff --git a/files/file.go b/files/file.go index 5ce0aee7..2ba432dc 100644 --- a/files/file.go +++ b/files/file.go @@ -60,6 +60,7 @@ type FileOptions struct { Modify bool Expand bool ReadHeader bool + CalcImgRes bool Token string Checker rules.Checker Content bool @@ -90,13 +91,13 @@ func NewFileInfo(opts *FileOptions) (*FileInfo, error) { if opts.Expand { if file.IsDir { - if err := file.readListing(opts.Checker, opts.ReadHeader); err != nil { + if err := file.readListing(opts.Checker, opts.ReadHeader, opts.CalcImgRes); err != nil { return nil, err } return file, nil } - err = file.detectType(opts.Modify, opts.Content, true) + err = file.detectType(opts.Modify, opts.Content, true, opts.CalcImgRes) if err != nil { return nil, err } @@ -218,7 +219,7 @@ func (i *FileInfo) RealPath() string { return i.Path } -func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error { +func (i *FileInfo) detectType(modify, saveContent, readHeader bool, calcImgRes bool) error { if IsNamedPipe(i.Mode) { i.Type = "blob" return nil @@ -249,11 +250,13 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error { return nil case strings.HasPrefix(mimetype, "image"): i.Type = "image" - resolution, err := calculateImageResolution(i.Fs, i.Path) - if err != nil { - log.Printf("Error calculating image resolution: %v", err) - } else { - i.Resolution = resolution + if calcImgRes { + resolution, err := calculateImageResolution(i.Fs, i.Path) + if err != nil { + log.Printf("Error calculating image resolution: %v", err) + } else { + i.Resolution = resolution + } } return nil case strings.HasSuffix(mimetype, "pdf"): @@ -387,7 +390,7 @@ func (i *FileInfo) addSubtitle(fPath string) { i.Subtitles = append(i.Subtitles, fPath) } -func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { +func (i *FileInfo) readListing(checker rules.Checker, readHeader bool, calcImgRes bool) error { afs := &afero.Afero{Fs: i.Fs} dir, err := afs.ReadDir(i.Path) if err != nil { @@ -434,7 +437,7 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { currentDir: dir, } - if !file.IsDir && strings.HasPrefix(mime.TypeByExtension(file.Extension), "image/") { + if !file.IsDir && strings.HasPrefix(mime.TypeByExtension(file.Extension), "image/") && calcImgRes { resolution, err := calculateImageResolution(file.Fs, file.Path) if err != nil { log.Printf("Error calculating resolution for image %s: %v", file.Path, err) @@ -451,7 +454,7 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { if isInvalidLink { file.Type = "invalid_link" } else { - err := file.detectType(true, false, readHeader) + err := file.detectType(true, false, readHeader, calcImgRes) if err != nil { return err } diff --git a/http/public.go b/http/public.go index 9b344a55..6dcdaff1 100644 --- a/http/public.go +++ b/http/public.go @@ -41,6 +41,7 @@ var withHashFile = func(fn handleFunc) handleFunc { Modify: d.user.Perm.Modify, Expand: false, ReadHeader: d.server.TypeDetectionByHeader, + CalcImgRes: d.server.TypeDetectionByHeader, Checker: d, Token: link.Token, }) diff --git a/settings/settings.go b/settings/settings.go index 6bcc36f8..d71be16a 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -59,6 +59,7 @@ type Server struct { ResizePreview bool `json:"resizePreview"` EnableExec bool `json:"enableExec"` TypeDetectionByHeader bool `json:"typeDetectionByHeader"` + ImageResolutionCal bool `json:"imageResolutionCalculation"` AuthHook string `json:"authHook"` TokenExpirationTime string `json:"tokenExpirationTime"` } diff --git a/www/docs/cli/filebrowser-config-init.md b/www/docs/cli/filebrowser-config-init.md index 1029890f..c1f8734d 100644 --- a/www/docs/cli/filebrowser-config-init.md +++ b/www/docs/cli/filebrowser-config-init.md @@ -39,6 +39,7 @@ filebrowser config init [flags] --disablePreviewResize disable resize of image previews --disableThumbnails disable image thumbnails --disableTypeDetectionByHeader disables type detection by reading file headers + --disableImageResolutionCalc disables image resolution calculation by reading image files --fileMode string mode bits that new files are created with (default "0o640") -h, --help help for init --hideDotfiles hide dotfiles diff --git a/www/docs/cli/filebrowser-config-set.md b/www/docs/cli/filebrowser-config-set.md index 3cacdcef..1b5ce2f6 100644 --- a/www/docs/cli/filebrowser-config-set.md +++ b/www/docs/cli/filebrowser-config-set.md @@ -36,6 +36,7 @@ filebrowser config set [flags] --disablePreviewResize disable resize of image previews --disableThumbnails disable image thumbnails --disableTypeDetectionByHeader disables type detection by reading file headers + --disableImageResolutionCalc disables image resolution calculation by reading image files --fileMode string mode bits that new files are created with (default "0o640") -h, --help help for set --hideDotfiles hide dotfiles diff --git a/www/docs/cli/filebrowser.md b/www/docs/cli/filebrowser.md index e2390238..17980550 100644 --- a/www/docs/cli/filebrowser.md +++ b/www/docs/cli/filebrowser.md @@ -60,6 +60,7 @@ filebrowser [flags] --disablePreviewResize disable resize of image previews --disableThumbnails disable image thumbnails --disableTypeDetectionByHeader disables type detection by reading file headers + --disableImageResolutionCalc disables image resolution calculation by reading image files -h, --help help for filebrowser --imageProcessors int image processors count (default 4) -k, --key string tls key From a12a612970d6cc3dfbca1b35ef3a60a887a4effb Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Mon, 29 Dec 2025 08:29:25 +0100 Subject: [PATCH 12/34] feat: update translations Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 209e68d2..79cbb5d8 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -43,7 +43,7 @@ "upload": "Wyślij", "openFile": "Otwórz plik", "discardChanges": "Odrzuć", - "stopSearch": "Stop searching", + "stopSearch": "Zatrzymaj wyszukiwanie", "saveChanges": "Zapisz zmiany", "editAsText": "Edytuj jako tekst", "increaseFontSize": "Zwiększ rozmiar czcionki", From 88aa56f53bd02d0a451f4c5bf68e5cf121e7de94 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Mon, 29 Dec 2025 08:32:46 +0100 Subject: [PATCH 13/34] chore(docs): update CLI documentation --- www/docs/cli/filebrowser-config-init.md | 2 +- www/docs/cli/filebrowser-config-set.md | 2 +- www/docs/cli/filebrowser.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/www/docs/cli/filebrowser-config-init.md b/www/docs/cli/filebrowser-config-init.md index c1f8734d..f4ff829f 100644 --- a/www/docs/cli/filebrowser-config-init.md +++ b/www/docs/cli/filebrowser-config-init.md @@ -36,10 +36,10 @@ filebrowser config init [flags] --dateFormat use date format (true for absolute time, false for relative) --dirMode string mode bits that new directories are created with (default "0o750") --disableExec disables Command Runner feature (default true) + --disableImageResolutionCalc disables image resolution calculation by reading image files --disablePreviewResize disable resize of image previews --disableThumbnails disable image thumbnails --disableTypeDetectionByHeader disables type detection by reading file headers - --disableImageResolutionCalc disables image resolution calculation by reading image files --fileMode string mode bits that new files are created with (default "0o640") -h, --help help for init --hideDotfiles hide dotfiles diff --git a/www/docs/cli/filebrowser-config-set.md b/www/docs/cli/filebrowser-config-set.md index 1b5ce2f6..5b166d7d 100644 --- a/www/docs/cli/filebrowser-config-set.md +++ b/www/docs/cli/filebrowser-config-set.md @@ -33,10 +33,10 @@ filebrowser config set [flags] --dateFormat use date format (true for absolute time, false for relative) --dirMode string mode bits that new directories are created with (default "0o750") --disableExec disables Command Runner feature (default true) + --disableImageResolutionCalc disables image resolution calculation by reading image files --disablePreviewResize disable resize of image previews --disableThumbnails disable image thumbnails --disableTypeDetectionByHeader disables type detection by reading file headers - --disableImageResolutionCalc disables image resolution calculation by reading image files --fileMode string mode bits that new files are created with (default "0o640") -h, --help help for set --hideDotfiles hide dotfiles diff --git a/www/docs/cli/filebrowser.md b/www/docs/cli/filebrowser.md index 17980550..5d18e8d2 100644 --- a/www/docs/cli/filebrowser.md +++ b/www/docs/cli/filebrowser.md @@ -57,10 +57,10 @@ filebrowser [flags] -c, --config string config file path -d, --database string database path (default "./filebrowser.db") --disableExec disables Command Runner feature (default true) + --disableImageResolutionCalc disables image resolution calculation by reading image files --disablePreviewResize disable resize of image previews --disableThumbnails disable image thumbnails --disableTypeDetectionByHeader disables type detection by reading file headers - --disableImageResolutionCalc disables image resolution calculation by reading image files -h, --help help for filebrowser --imageProcessors int image processors count (default 4) -k, --key string tls key From 943e5340d0c9c7ff61294a21018a1e2a8632a60b Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Mon, 29 Dec 2025 08:33:04 +0100 Subject: [PATCH 14/34] chore(release): 2.53.0 --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51d50a97..c69b24aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ 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.53.0](https://github.com/filebrowser/filebrowser/compare/v2.52.0...v2.53.0) (2025-12-29) + + +### Features + +* add "disable image resolution calculation" flag ([#5638](https://github.com/filebrowser/filebrowser/issues/5638)) ([a2d80c6](https://github.com/filebrowser/filebrowser/commit/a2d80c62c1c17962e566f68fb7cac6960ed3e4cb)) +* support streaming response for search results ([#5630](https://github.com/filebrowser/filebrowser/issues/5630)) ([20bfd13](https://github.com/filebrowser/filebrowser/commit/20bfd131c6a4fca48a645b52171c2d1cc3ce92b7)) +* update translations ([a12a612](https://github.com/filebrowser/filebrowser/commit/a12a612970d6cc3dfbca1b35ef3a60a887a4effb)) +* update translations ([#5626](https://github.com/filebrowser/filebrowser/issues/5626)) ([f899756](https://github.com/filebrowser/filebrowser/commit/f89975603e29b9f1fc05aec58afb42bbd56ed696)) +* update translations ([#5631](https://github.com/filebrowser/filebrowser/issues/5631)) ([032d6c7](https://github.com/filebrowser/filebrowser/commit/032d6c7520a64686c9d9b1218562256f629b4703)) + + +### Bug Fixes + +* conversion of backslashes in file paths for archive creation ([#5637](https://github.com/filebrowser/filebrowser/issues/5637)) ([9595f39](https://github.com/filebrowser/filebrowser/commit/9595f3939c1c129ed875a47adcc4fbcfad9a0e65)) +* Don't crash on invalid config import ([#5640](https://github.com/filebrowser/filebrowser/issues/5640)) ([79d1aa9](https://github.com/filebrowser/filebrowser/commit/79d1aa9229b076ee8e3b71d6cf061fc90738f4da)) +* fix nil deref in config set command ([#5641](https://github.com/filebrowser/filebrowser/issues/5641)) ([60b1ee8](https://github.com/filebrowser/filebrowser/commit/60b1ee8bb9e18b21d7f2c04cb1cc90046cecd3e1)) + ## [2.52.0](https://github.com/filebrowser/filebrowser/compare/v2.51.2...v2.52.0) (2025-12-13) From b8151a038a1ea55afae8073b439b74e364cac12f Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sat, 3 Jan 2026 02:44:03 -0500 Subject: [PATCH 15/34] fix: request a password to change sensitive user data (#5629) --- errors/errors.go | 33 +++++++++++++------------ frontend/src/api/users.ts | 10 ++++++-- frontend/src/i18n/en.json | 3 ++- frontend/src/types/settings.d.ts | 1 + frontend/src/views/settings/Profile.vue | 19 ++++++++++++-- frontend/src/views/settings/User.vue | 28 ++++++++++++++++++--- http/http.go | 5 ++-- http/settings.go | 2 ++ http/users.go | 28 +++++++++++++++++++++ 9 files changed, 103 insertions(+), 26 deletions(-) diff --git a/errors/errors.go b/errors/errors.go index 85258e5b..748354a8 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -6,22 +6,23 @@ import ( ) var ( - ErrEmptyKey = errors.New("empty key") - ErrExist = errors.New("the resource already exists") - ErrNotExist = errors.New("the resource does not exist") - ErrEmptyPassword = errors.New("password is empty") - ErrEasyPassword = errors.New("password is too easy") - ErrEmptyUsername = errors.New("username is empty") - ErrEmptyRequest = errors.New("empty request") - ErrScopeIsRelative = errors.New("scope is a relative path") - ErrInvalidDataType = errors.New("invalid data type") - ErrIsDirectory = errors.New("file is directory") - ErrInvalidOption = errors.New("invalid option") - ErrInvalidAuthMethod = errors.New("invalid auth method") - 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") + ErrEmptyKey = errors.New("empty key") + ErrExist = errors.New("the resource already exists") + ErrNotExist = errors.New("the resource does not exist") + ErrEmptyPassword = errors.New("password is empty") + ErrEasyPassword = errors.New("password is too easy") + ErrEmptyUsername = errors.New("username is empty") + ErrEmptyRequest = errors.New("empty request") + ErrScopeIsRelative = errors.New("scope is a relative path") + ErrInvalidDataType = errors.New("invalid data type") + ErrIsDirectory = errors.New("file is directory") + ErrInvalidOption = errors.New("invalid option") + ErrInvalidAuthMethod = errors.New("invalid auth method") + 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") + ErrCurrentPasswordIncorrect = errors.New("the current password is incorrect") ) type ErrShortPassword struct { diff --git a/frontend/src/api/users.ts b/frontend/src/api/users.ts index 78096b49..56e1d0f3 100644 --- a/frontend/src/api/users.ts +++ b/frontend/src/api/users.ts @@ -8,12 +8,13 @@ export async function get(id: number) { return fetchJSON(`/api/users/${id}`, {}); } -export async function create(user: IUser) { +export async function create(user: IUser, currentPassword: string) { const res = await fetchURL(`/api/users`, { method: "POST", body: JSON.stringify({ what: "user", which: [], + current_password: currentPassword, data: user, }), }); @@ -25,12 +26,17 @@ export async function create(user: IUser) { throw new StatusError(await res.text(), res.status); } -export async function update(user: Partial, which = ["all"]) { +export async function update( + user: Partial, + which = ["all"], + currentPassword: string | null = null +) { await fetchURL(`/api/users/${user.id}`, { method: "PUT", body: JSON.stringify({ what: "user", which: which, + ...(currentPassword != null ? { current_password: currentPassword } : {}), data: user, }), }); diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index de5368bd..60fe527f 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -258,7 +258,8 @@ "userManagement": "User Management", "userUpdated": "User updated!", "username": "Username", - "users": "Users" + "users": "Users", + "currentPassword": "Your Current Password" }, "sidebar": { "help": "Help", diff --git a/frontend/src/types/settings.d.ts b/frontend/src/types/settings.d.ts index 562c718b..c213e016 100644 --- a/frontend/src/types/settings.d.ts +++ b/frontend/src/types/settings.d.ts @@ -5,6 +5,7 @@ interface ISettings { minimumPasswordLength: number; userHomeBasePath: string; defaults: SettingsDefaults; + authMethod: string; rules: any[]; branding: SettingsBranding; tus: SettingsTus; diff --git a/frontend/src/views/settings/Profile.vue b/frontend/src/views/settings/Profile.vue index 1b079473..328b2f1a 100644 --- a/frontend/src/views/settings/Profile.vue +++ b/frontend/src/views/settings/Profile.vue @@ -69,6 +69,15 @@ v-model="passwordConf" name="passwordConf" /> +
@@ -87,7 +96,7 @@ + From fda8a992929b1466e75fb2813f2c4e293c12d244 Mon Sep 17 00:00:00 2001 From: Beckam White <47697544+BJDubb@users.noreply.github.com> Date: Sat, 10 Jan 2026 20:27:54 +1100 Subject: [PATCH 24/34] feat: add "redirect after copy/move" user setting (#5662) --- auth/hook.go | 37 ++++++++++--------- cmd/config.go | 1 + cmd/root.go | 9 ++--- cmd/users.go | 6 +++- cmd/users_update.go | 16 +++++---- frontend/src/components/prompts/Copy.vue | 3 +- frontend/src/components/prompts/Move.vue | 6 ++-- frontend/src/i18n/en.json | 1 + frontend/src/types/settings.d.ts | 1 + frontend/src/types/user.d.ts | 2 ++ frontend/src/views/settings/Profile.vue | 12 +++++++ http/auth.go | 46 ++++++++++++------------ settings/defaults.go | 22 ++++++------ users/users.go | 33 ++++++++--------- www/docs/cli/filebrowser-config-init.md | 1 + www/docs/cli/filebrowser-config-set.md | 1 + www/docs/cli/filebrowser-users-add.md | 1 + www/docs/cli/filebrowser-users-update.md | 1 + 18 files changed, 119 insertions(+), 80 deletions(-) diff --git a/auth/hook.go b/auth/hook.go index 9bb38969..0c5efac5 100644 --- a/auth/hook.go +++ b/auth/hook.go @@ -158,16 +158,17 @@ func (a *HookAuth) SaveUser() (*users.User, error) { // create user with the provided credentials d := &users.User{ - Username: a.Cred.Username, - Password: pass, - Scope: a.Settings.Defaults.Scope, - Locale: a.Settings.Defaults.Locale, - ViewMode: a.Settings.Defaults.ViewMode, - SingleClick: a.Settings.Defaults.SingleClick, - Sorting: a.Settings.Defaults.Sorting, - Perm: a.Settings.Defaults.Perm, - Commands: a.Settings.Defaults.Commands, - HideDotfiles: a.Settings.Defaults.HideDotfiles, + Username: a.Cred.Username, + Password: pass, + Scope: a.Settings.Defaults.Scope, + Locale: a.Settings.Defaults.Locale, + ViewMode: a.Settings.Defaults.ViewMode, + SingleClick: a.Settings.Defaults.SingleClick, + RedirectAfterCopyMove: a.Settings.Defaults.RedirectAfterCopyMove, + Sorting: a.Settings.Defaults.Sorting, + Perm: a.Settings.Defaults.Perm, + Commands: a.Settings.Defaults.Commands, + HideDotfiles: a.Settings.Defaults.HideDotfiles, } u = a.GetUser(d) @@ -219,13 +220,14 @@ func (a *HookAuth) GetUser(d *users.User) *users.User { Download: isAdmin || a.Fields.GetBoolean("user.perm.download", d.Perm.Download), } user := users.User{ - ID: d.ID, - Username: d.Username, - Password: d.Password, - Scope: a.Fields.GetString("user.scope", d.Scope), - Locale: a.Fields.GetString("user.locale", d.Locale), - ViewMode: users.ViewMode(a.Fields.GetString("user.viewMode", string(d.ViewMode))), - SingleClick: a.Fields.GetBoolean("user.singleClick", d.SingleClick), + ID: d.ID, + Username: d.Username, + Password: d.Password, + Scope: a.Fields.GetString("user.scope", d.Scope), + Locale: a.Fields.GetString("user.locale", d.Locale), + ViewMode: users.ViewMode(a.Fields.GetString("user.viewMode", string(d.ViewMode))), + SingleClick: a.Fields.GetBoolean("user.singleClick", d.SingleClick), + RedirectAfterCopyMove: a.Fields.GetBoolean("user.redirectAfterCopyMove", d.RedirectAfterCopyMove), Sorting: files.Sorting{ Asc: a.Fields.GetBoolean("user.sorting.asc", d.Sorting.Asc), By: a.Fields.GetString("user.sorting.by", d.Sorting.By), @@ -251,6 +253,7 @@ var validHookFields = []string{ "user.locale", "user.viewMode", "user.singleClick", + "user.redirectAfterCopyMove", "user.sorting.by", "user.sorting.asc", "user.commands", diff --git a/cmd/config.go b/cmd/config.go index 3fb2e7e4..5b3314ed 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -240,6 +240,7 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut fmt.Fprintf(w, "\tLocale:\t%s\n", set.Defaults.Locale) fmt.Fprintf(w, "\tView mode:\t%s\n", set.Defaults.ViewMode) fmt.Fprintf(w, "\tSingle Click:\t%t\n", set.Defaults.SingleClick) + fmt.Fprintf(w, "\tRedirect after Copy/Move:\t%t\n", set.Defaults.RedirectAfterCopyMove) fmt.Fprintf(w, "\tFile Creation Mode:\t%O\n", set.FileMode) fmt.Fprintf(w, "\tDirectory Creation Mode:\t%O\n", set.DirMode) fmt.Fprintf(w, "\tCommands:\t%s\n", strings.Join(set.Defaults.Commands, " ")) diff --git a/cmd/root.go b/cmd/root.go index 0f78535c..981eec4f 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -393,10 +393,11 @@ func quickSetup(v *viper.Viper, s *storage.Storage) error { MinimumPasswordLength: settings.DefaultMinimumPasswordLength, UserHomeBasePath: settings.DefaultUsersHomeBasePath, Defaults: settings.UserDefaults{ - Scope: ".", - Locale: "en", - SingleClick: false, - AceEditorTheme: v.GetString("defaults.aceEditorTheme"), + Scope: ".", + Locale: "en", + SingleClick: false, + RedirectAfterCopyMove: true, + AceEditorTheme: v.GetString("defaults.aceEditorTheme"), Perm: users.Permissions{ Admin: false, Execute: true, diff --git a/cmd/users.go b/cmd/users.go index 86434a42..66487862 100644 --- a/cmd/users.go +++ b/cmd/users.go @@ -30,13 +30,14 @@ func printUsers(usrs []*users.User) { fmt.Fprintln(w, "ID\tUsername\tScope\tLocale\tV. Mode\tS.Click\tAdmin\tExecute\tCreate\tRename\tModify\tDelete\tShare\tDownload\tPwd Lock") for _, u := range usrs { - fmt.Fprintf(w, "%d\t%s\t%s\t%s\t%s\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t\n", + fmt.Fprintf(w, "%d\t%s\t%s\t%s\t%s\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t\n", u.ID, u.Username, u.Scope, u.Locale, u.ViewMode, u.SingleClick, + u.RedirectAfterCopyMove, u.Perm.Admin, u.Perm.Execute, u.Perm.Create, @@ -77,6 +78,7 @@ func addUserFlags(flags *pflag.FlagSet) { flags.String("locale", "en", "locale for users") flags.String("viewMode", string(users.ListViewMode), "view mode for users") flags.Bool("singleClick", false, "use single clicks only") + flags.Bool("redirectAfterCopyMove", false, "redirect to destination after copy/move") flags.Bool("dateFormat", false, "use date format (true for absolute time, false for relative)") flags.Bool("hideDotfiles", false, "hide dotfiles") flags.String("aceEditorTheme", "", "ace editor's syntax highlighting theme for users") @@ -110,6 +112,8 @@ func getUserDefaults(flags *pflag.FlagSet, defaults *settings.UserDefaults, all defaults.ViewMode, err = getAndParseViewMode(flags) case "singleClick": defaults.SingleClick, err = flags.GetBool(flag.Name) + case "redirectAfterCopyMove": + defaults.RedirectAfterCopyMove, err = flags.GetBool(flag.Name) case "aceEditorTheme": defaults.AceEditorTheme, err = flags.GetString(flag.Name) case "perm.admin": diff --git a/cmd/users_update.go b/cmd/users_update.go index 96f1e2d3..e9a484fc 100644 --- a/cmd/users_update.go +++ b/cmd/users_update.go @@ -52,13 +52,14 @@ options you want to change.`, } defaults := settings.UserDefaults{ - Scope: user.Scope, - Locale: user.Locale, - ViewMode: user.ViewMode, - SingleClick: user.SingleClick, - Perm: user.Perm, - Sorting: user.Sorting, - Commands: user.Commands, + Scope: user.Scope, + Locale: user.Locale, + ViewMode: user.ViewMode, + SingleClick: user.SingleClick, + RedirectAfterCopyMove: user.RedirectAfterCopyMove, + Perm: user.Perm, + Sorting: user.Sorting, + Commands: user.Commands, } err = getUserDefaults(flags, &defaults, false) @@ -70,6 +71,7 @@ options you want to change.`, user.Locale = defaults.Locale user.ViewMode = defaults.ViewMode user.SingleClick = defaults.SingleClick + user.RedirectAfterCopyMove = defaults.RedirectAfterCopyMove user.Perm = defaults.Perm user.Commands = defaults.Commands user.Sorting = defaults.Sorting diff --git a/frontend/src/components/prompts/Copy.vue b/frontend/src/components/prompts/Copy.vue index 9b5e4c63..09040e0a 100644 --- a/frontend/src/components/prompts/Copy.vue +++ b/frontend/src/components/prompts/Copy.vue @@ -109,7 +109,8 @@ export default { return; } - this.$router.push({ path: this.dest }); + if (this.user.redirectAfterCopyMove) + this.$router.push({ path: this.dest }); }) .catch((e) => { buttons.done("copy"); diff --git a/frontend/src/components/prompts/Move.vue b/frontend/src/components/prompts/Move.vue index d92e4b6e..0fec8679 100644 --- a/frontend/src/components/prompts/Move.vue +++ b/frontend/src/components/prompts/Move.vue @@ -79,7 +79,7 @@ export default { computed: { ...mapState(useFileStore, ["req", "selected"]), ...mapState(useAuthStore, ["user"]), - ...mapWritableState(useFileStore, ["preselect"]), + ...mapWritableState(useFileStore, ["reload", "preselect"]), excludedFolders() { return this.selected .filter((idx) => this.req.items[idx].isDir) @@ -108,7 +108,9 @@ export default { .then(() => { buttons.success("move"); this.preselect = removePrefix(items[0].to); - this.$router.push({ path: this.dest }); + if (this.user.redirectAfterCopyMove) + this.$router.push({ path: this.dest }); + else this.reload = true; }) .catch((e) => { buttons.done("move"); diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 60fe527f..3fcdf635 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -232,6 +232,7 @@ "permissions": "Permissions", "permissionsHelp": "You can set the user to be an administrator or choose the permissions individually. If you select \"Administrator\", all of the other options will be automatically checked. The management of users remains a privilege of an administrator.\n", "profileSettings": "Profile Settings", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "prevents the access to any dotfile (such as .git, .gitignore) in every folder.\n", "ruleExample2": "blocks the access to the file named Caddyfile on the root of the scope.", "rules": "Rules", diff --git a/frontend/src/types/settings.d.ts b/frontend/src/types/settings.d.ts index c213e016..18672bdf 100644 --- a/frontend/src/types/settings.d.ts +++ b/frontend/src/types/settings.d.ts @@ -18,6 +18,7 @@ interface SettingsDefaults { locale: string; viewMode: ViewModeType; singleClick: boolean; + redirectAfterCopyMove: boolean; sorting: Sorting; perm: Permissions; commands: any[]; diff --git a/frontend/src/types/user.d.ts b/frontend/src/types/user.d.ts index 40c453c5..317f1e43 100644 --- a/frontend/src/types/user.d.ts +++ b/frontend/src/types/user.d.ts @@ -10,6 +10,7 @@ interface IUser { lockPassword: boolean; hideDotfiles: boolean; singleClick: boolean; + redirectAfterCopyMove: boolean; dateFormat: boolean; viewMode: ViewModeType; sorting?: Sorting; @@ -30,6 +31,7 @@ interface IUserForm { lockPassword?: boolean; hideDotfiles?: boolean; singleClick?: boolean; + redirectAfterCopyMove?: boolean; dateFormat?: boolean; } diff --git a/frontend/src/views/settings/Profile.vue b/frontend/src/views/settings/Profile.vue index 8aafccb6..ffb20f0d 100644 --- a/frontend/src/views/settings/Profile.vue +++ b/frontend/src/views/settings/Profile.vue @@ -15,6 +15,14 @@ {{ t("settings.singleClick") }}

+

+ + {{ t("settings.redirectAfterCopyMove") }} +

{{ t("settings.setDateFormat") }} @@ -116,6 +124,7 @@ const currentPassword = ref(""); const isCurrentPasswordRequired = ref(false); const hideDotfiles = ref(false); const singleClick = ref(false); +const redirectAfterCopyMove = ref(false); const dateFormat = ref(false); const locale = ref(""); const aceEditorTheme = ref(""); @@ -140,6 +149,7 @@ onMounted(async () => { locale.value = authStore.user.locale; hideDotfiles.value = authStore.user.hideDotfiles; singleClick.value = authStore.user.singleClick; + redirectAfterCopyMove.value = authStore.user.redirectAfterCopyMove; dateFormat.value = authStore.user.dateFormat; aceEditorTheme.value = authStore.user.aceEditorTheme; layoutStore.loading = false; @@ -187,6 +197,7 @@ const updateSettings = async (event: Event) => { locale: locale.value, hideDotfiles: hideDotfiles.value, singleClick: singleClick.value, + redirectAfterCopyMove: redirectAfterCopyMove.value, dateFormat: dateFormat.value, aceEditorTheme: aceEditorTheme.value, }; @@ -195,6 +206,7 @@ const updateSettings = async (event: Event) => { "locale", "hideDotfiles", "singleClick", + "redirectAfterCopyMove", "dateFormat", "aceEditorTheme", ]); diff --git a/http/auth.go b/http/auth.go index 5a483a8d..4eceeafe 100644 --- a/http/auth.go +++ b/http/auth.go @@ -23,17 +23,18 @@ const ( ) type userInfo struct { - ID uint `json:"id"` - Locale string `json:"locale"` - ViewMode users.ViewMode `json:"viewMode"` - SingleClick bool `json:"singleClick"` - Perm users.Permissions `json:"perm"` - Commands []string `json:"commands"` - LockPassword bool `json:"lockPassword"` - HideDotfiles bool `json:"hideDotfiles"` - DateFormat bool `json:"dateFormat"` - Username string `json:"username"` - AceEditorTheme string `json:"aceEditorTheme"` + ID uint `json:"id"` + Locale string `json:"locale"` + ViewMode users.ViewMode `json:"viewMode"` + SingleClick bool `json:"singleClick"` + RedirectAfterCopyMove bool `json:"redirectAfterCopyMove"` + Perm users.Permissions `json:"perm"` + Commands []string `json:"commands"` + LockPassword bool `json:"lockPassword"` + HideDotfiles bool `json:"hideDotfiles"` + DateFormat bool `json:"dateFormat"` + Username string `json:"username"` + AceEditorTheme string `json:"aceEditorTheme"` } type authToken struct { @@ -204,17 +205,18 @@ func renewHandler(tokenExpireTime time.Duration) handleFunc { func printToken(w http.ResponseWriter, _ *http.Request, d *data, user *users.User, tokenExpirationTime time.Duration) (int, error) { claims := &authToken{ User: userInfo{ - ID: user.ID, - Locale: user.Locale, - ViewMode: user.ViewMode, - SingleClick: user.SingleClick, - Perm: user.Perm, - LockPassword: user.LockPassword, - Commands: user.Commands, - HideDotfiles: user.HideDotfiles, - DateFormat: user.DateFormat, - Username: user.Username, - AceEditorTheme: user.AceEditorTheme, + ID: user.ID, + Locale: user.Locale, + ViewMode: user.ViewMode, + SingleClick: user.SingleClick, + RedirectAfterCopyMove: user.RedirectAfterCopyMove, + Perm: user.Perm, + LockPassword: user.LockPassword, + Commands: user.Commands, + HideDotfiles: user.HideDotfiles, + DateFormat: user.DateFormat, + Username: user.Username, + AceEditorTheme: user.AceEditorTheme, }, RegisteredClaims: jwt.RegisteredClaims{ IssuedAt: jwt.NewNumericDate(time.Now()), diff --git a/settings/defaults.go b/settings/defaults.go index 5b6c3f2a..46024179 100644 --- a/settings/defaults.go +++ b/settings/defaults.go @@ -8,16 +8,17 @@ import ( // UserDefaults is a type that holds the default values // for some fields on User. type UserDefaults struct { - Scope string `json:"scope"` - Locale string `json:"locale"` - ViewMode users.ViewMode `json:"viewMode"` - SingleClick bool `json:"singleClick"` - Sorting files.Sorting `json:"sorting"` - Perm users.Permissions `json:"perm"` - Commands []string `json:"commands"` - HideDotfiles bool `json:"hideDotfiles"` - DateFormat bool `json:"dateFormat"` - AceEditorTheme string `json:"aceEditorTheme"` + Scope string `json:"scope"` + Locale string `json:"locale"` + ViewMode users.ViewMode `json:"viewMode"` + SingleClick bool `json:"singleClick"` + RedirectAfterCopyMove bool `json:"redirectAfterCopyMove"` + Sorting files.Sorting `json:"sorting"` + Perm users.Permissions `json:"perm"` + Commands []string `json:"commands"` + HideDotfiles bool `json:"hideDotfiles"` + DateFormat bool `json:"dateFormat"` + AceEditorTheme string `json:"aceEditorTheme"` } // Apply applies the default options to a user. @@ -26,6 +27,7 @@ func (d *UserDefaults) Apply(u *users.User) { u.Locale = d.Locale u.ViewMode = d.ViewMode u.SingleClick = d.SingleClick + u.RedirectAfterCopyMove = d.RedirectAfterCopyMove u.Perm = d.Perm u.Sorting = d.Sorting u.Commands = d.Commands diff --git a/users/users.go b/users/users.go index 0fcc26d8..7181b299 100644 --- a/users/users.go +++ b/users/users.go @@ -20,22 +20,23 @@ const ( // User describes a user. type User struct { - ID uint `storm:"id,increment" json:"id"` - Username string `storm:"unique" json:"username"` - Password string `json:"password"` - Scope string `json:"scope"` - Locale string `json:"locale"` - LockPassword bool `json:"lockPassword"` - ViewMode ViewMode `json:"viewMode"` - SingleClick bool `json:"singleClick"` - Perm Permissions `json:"perm"` - Commands []string `json:"commands"` - Sorting files.Sorting `json:"sorting"` - Fs afero.Fs `json:"-" yaml:"-"` - Rules []rules.Rule `json:"rules"` - HideDotfiles bool `json:"hideDotfiles"` - DateFormat bool `json:"dateFormat"` - AceEditorTheme string `json:"aceEditorTheme"` + ID uint `storm:"id,increment" json:"id"` + Username string `storm:"unique" json:"username"` + Password string `json:"password"` + Scope string `json:"scope"` + Locale string `json:"locale"` + LockPassword bool `json:"lockPassword"` + ViewMode ViewMode `json:"viewMode"` + SingleClick bool `json:"singleClick"` + RedirectAfterCopyMove bool `json:"redirectAfterCopyMove"` + Perm Permissions `json:"perm"` + Commands []string `json:"commands"` + Sorting files.Sorting `json:"sorting"` + Fs afero.Fs `json:"-" yaml:"-"` + Rules []rules.Rule `json:"rules"` + HideDotfiles bool `json:"hideDotfiles"` + DateFormat bool `json:"dateFormat"` + AceEditorTheme string `json:"aceEditorTheme"` } // GetRules implements rules.Provider. diff --git a/www/docs/cli/filebrowser-config-init.md b/www/docs/cli/filebrowser-config-init.md index f4ff829f..0f16efa7 100644 --- a/www/docs/cli/filebrowser-config-init.md +++ b/www/docs/cli/filebrowser-config-init.md @@ -61,6 +61,7 @@ filebrowser config init [flags] --recaptcha.host string use another host for ReCAPTCHA. recaptcha.net might be useful in China (default "https://www.google.com") --recaptcha.key string ReCaptcha site key --recaptcha.secret string ReCaptcha secret + --redirectAfterCopyMove redirect to destination after copy/move -r, --root string root to prepend to relative paths (default ".") --scope string scope for users (default ".") --shell string shell command to which other commands should be appended diff --git a/www/docs/cli/filebrowser-config-set.md b/www/docs/cli/filebrowser-config-set.md index 5b166d7d..603bb506 100644 --- a/www/docs/cli/filebrowser-config-set.md +++ b/www/docs/cli/filebrowser-config-set.md @@ -58,6 +58,7 @@ filebrowser config set [flags] --recaptcha.host string use another host for ReCAPTCHA. recaptcha.net might be useful in China (default "https://www.google.com") --recaptcha.key string ReCaptcha site key --recaptcha.secret string ReCaptcha secret + --redirectAfterCopyMove redirect to destination after copy/move -r, --root string root to prepend to relative paths (default ".") --scope string scope for users (default ".") --shell string shell command to which other commands should be appended diff --git a/www/docs/cli/filebrowser-users-add.md b/www/docs/cli/filebrowser-users-add.md index c6c5b53d..1de95e4d 100644 --- a/www/docs/cli/filebrowser-users-add.md +++ b/www/docs/cli/filebrowser-users-add.md @@ -28,6 +28,7 @@ filebrowser users add [flags] --perm.modify modify perm for users (default true) --perm.rename rename perm for users (default true) --perm.share share perm for users (default true) + --redirectAfterCopyMove redirect to destination after copy/move --scope string scope for users (default ".") --singleClick use single clicks only --sorting.asc sorting by ascending order diff --git a/www/docs/cli/filebrowser-users-update.md b/www/docs/cli/filebrowser-users-update.md index 996bdac7..4ba7d608 100644 --- a/www/docs/cli/filebrowser-users-update.md +++ b/www/docs/cli/filebrowser-users-update.md @@ -30,6 +30,7 @@ filebrowser users update [flags] --perm.modify modify perm for users (default true) --perm.rename rename perm for users (default true) --perm.share share perm for users (default true) + --redirectAfterCopyMove redirect to destination after copy/move --scope string scope for users (default ".") --singleClick use single clicks only --sorting.asc sorting by ascending order From 037e29a7084b23a3a7a16b25d70c54f710b27bec Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 10 Jan 2026 10:30:26 +0100 Subject: [PATCH 25/34] chore(release): 2.54.0 --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f98a426..13ee556f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ 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.54.0](https://github.com/filebrowser/filebrowser/compare/v2.53.1...v2.54.0) (2026-01-10) + + +### Features + +* add "redirect after copy/move" user setting ([#5662](https://github.com/filebrowser/filebrowser/issues/5662)) ([fda8a99](https://github.com/filebrowser/filebrowser/commit/fda8a992929b1466e75fb2813f2c4e293c12d244)) +* force file sync while uploading file ([#5668](https://github.com/filebrowser/filebrowser/issues/5668)) ([4fd18a3](https://github.com/filebrowser/filebrowser/commit/4fd18a382c31bbe7059d6733ffa371e70051865b)) +* update translations ([#5659](https://github.com/filebrowser/filebrowser/issues/5659)) ([464b581](https://github.com/filebrowser/filebrowser/commit/464b581953139c17e3276b774e381e4052827125)) + + +### Bug Fixes + +* clear selection by clicking on empty area ([#5663](https://github.com/filebrowser/filebrowser/issues/5663)) ([208535a](https://github.com/filebrowser/filebrowser/commit/208535a8cc23254de0013dfab9008486707ee6c2)) +* hide "change password form" in noauth setting ([#5652](https://github.com/filebrowser/filebrowser/issues/5652)) ([219582c](https://github.com/filebrowser/filebrowser/commit/219582c0b03fd90979b1d1398dba7919d086a23f)) + ## [2.53.1](https://github.com/filebrowser/filebrowser/compare/v2.53.0...v2.53.1) (2026-01-03) From 59ca0c340afc7774747c70ede9a5a5a3c9349d6b Mon Sep 17 00:00:00 2001 From: Andy <87505797+AndyBodnar@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:57:01 -0700 Subject: [PATCH 26/34] fix: prevent context menu clicks from clearing file selection (#5681) --- frontend/src/views/files/FileListing.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue index 62a6819f..c9f636ba 100644 --- a/frontend/src/views/files/FileListing.vue +++ b/frontend/src/views/files/FileListing.vue @@ -1059,6 +1059,9 @@ const handleEmptyAreaClick = (e: MouseEvent) => { if (target.closest("item") || target.closest(".item")) return; + // Do not clear selection when clicking on context menu actions + if (target.closest(".context-menu")) return; + fileStore.selected = []; }; From cfa6c5864e5e7673aa9f3180e4964e0db92cc4da Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sun, 18 Jan 2026 02:36:25 -0500 Subject: [PATCH 27/34] fix: request current password when deleting users (#5667) --- frontend/src/api/users.ts | 8 +++++++- frontend/src/views/settings/User.vue | 9 +++------ http/users.go | 20 +++++++++++++++++++- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/frontend/src/api/users.ts b/frontend/src/api/users.ts index 56e1d0f3..dc45e084 100644 --- a/frontend/src/api/users.ts +++ b/frontend/src/api/users.ts @@ -42,8 +42,14 @@ export async function update( }); } -export async function remove(id: number) { +export async function remove( + id: number, + currentPassword: string | null = null +) { await fetchURL(`/api/users/${id}`, { method: "DELETE", + body: JSON.stringify({ + ...(currentPassword != null ? { current_password: currentPassword } : {}), + }), }); } diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index be46fabb..77786e2a 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -71,6 +71,7 @@ import { computed, inject, onMounted, ref, watch } from "vue"; import { useRoute, useRouter } from "vue-router"; import { useI18n } from "vue-i18n"; import { StatusError } from "@/api/utils"; +import { authMethod } from "@/utils/constants"; const error = ref(); const originalUser = ref(); @@ -105,11 +106,7 @@ const fetchData = async () => { try { if (isNew.value) { - const { - authMethod, - defaults, - createUserDir: _createUserDir, - } = await settings.get(); + const { defaults, createUserDir: _createUserDir } = await settings.get(); isCurrentPasswordRequired.value = authMethod == "json"; createUserDir.value = _createUserDir; user.value = { @@ -146,7 +143,7 @@ const deleteUser = async (e: Event) => { return false; } try { - await api.remove(user.value.id); + await api.remove(user.value.id, currentPassword.value); router.push({ path: "/settings/users" }); $showSuccess(t("settings.userDeleted")); } catch (err) { diff --git a/http/users.go b/http/users.go index adae7729..5604dc38 100644 --- a/http/users.go +++ b/http/users.go @@ -103,7 +103,25 @@ var userGetHandler = withSelfOrAdmin(func(w http.ResponseWriter, r *http.Request return renderJSON(w, r, u) }) -var userDeleteHandler = withSelfOrAdmin(func(_ http.ResponseWriter, _ *http.Request, d *data) (int, error) { +var userDeleteHandler = withSelfOrAdmin(func(_ http.ResponseWriter, r *http.Request, d *data) (int, error) { + if r.Body == nil { + return http.StatusBadRequest, fberrors.ErrEmptyRequest + } + + var body struct { + CurrentPassword string `json:"current_password"` + } + + if err := json.NewDecoder(r.Body).Decode(&body); err != nil { + return http.StatusBadRequest, err + } + + if d.settings.AuthMethod == auth.MethodJSONAuth { + if !users.CheckPwd(body.CurrentPassword, d.user.Password) { + return http.StatusBadRequest, fberrors.ErrCurrentPasswordIncorrect + } + } + err := d.store.Users.Delete(d.raw.(uint)) if err != nil { return errToStatus(err), err From 4094fb359babac70e88d0ed4bfe3bd100744aad6 Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sun, 18 Jan 2026 02:37:12 -0500 Subject: [PATCH 28/34] fix: retain file selection when closing the editor (#5693) --- frontend/src/views/files/Editor.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index 58f0d524..fc5f9728 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -236,7 +236,6 @@ const close = () => { }; const finishClose = () => { - fileStore.updateRequest(null); const uri = url.removeLastDir(route.path) + "/"; router.push({ path: uri }); }; From 24781badd413ee20333aba5cce1919d676e01889 Mon Sep 17 00:00:00 2001 From: GUCHI <82448575+GUCHIHACKER@users.noreply.github.com> Date: Sun, 18 Jan 2026 08:44:16 +0100 Subject: [PATCH 29/34] Merge commit from fork Added a dummy bcrypt hash to prevent user enumeration timing attacks in JSON authentication. --- auth/json.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/auth/json.go b/auth/json.go index f779c476..2284dc7f 100644 --- a/auth/json.go +++ b/auth/json.go @@ -14,6 +14,10 @@ import ( // MethodJSONAuth is used to identify json auth. const MethodJSONAuth settings.AuthMethod = "json" +// dummyHash is used to prevent user enumeration timing attacks. +// It MUST be a valid bcrypt hash. +const dummyHash = "$2a$10$O4mEMeOL/nit6zqe.WQXauLRbRlzb3IgLHsa26Pf0N/GiU9b.wK1m" + type jsonCred struct { Password string `json:"password"` Username string `json:"username"` @@ -52,7 +56,17 @@ func (a JSONAuth) Auth(r *http.Request, usr users.Store, _ *settings.Settings, s } u, err := usr.Get(srv.Root, cred.Username) - if err != nil || !users.CheckPwd(cred.Password, u.Password) { + + hash := dummyHash + if err == nil { + hash = u.Password + } + + if !users.CheckPwd(cred.Password, hash) { + return nil, os.ErrPermission + } + + if err != nil { return nil, os.ErrPermission } From e7ea1ad27d3d17e249489d3338be40bfea15e2a1 Mon Sep 17 00:00:00 2001 From: "transifex-integration[bot]" <43880903+transifex-integration[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 08:45:48 +0100 Subject: [PATCH 30/34] feat: update translations (#5677) Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com> --- frontend/src/i18n/ar.json | 1 + frontend/src/i18n/bg.json | 1 + frontend/src/i18n/ca.json | 1 + frontend/src/i18n/cs.json | 1 + frontend/src/i18n/de.json | 1 + frontend/src/i18n/el.json | 1 + frontend/src/i18n/es.json | 1 + frontend/src/i18n/fa.json | 1 + frontend/src/i18n/fr.json | 1 + frontend/src/i18n/he.json | 1 + frontend/src/i18n/hr.json | 1 + frontend/src/i18n/hu.json | 1 + frontend/src/i18n/is.json | 1 + frontend/src/i18n/it.json | 1 + frontend/src/i18n/ja.json | 1 + frontend/src/i18n/ko.json | 1 + frontend/src/i18n/lv.json | 1 + frontend/src/i18n/lv_LV.json | 7 ++++--- frontend/src/i18n/nl-be.json | 1 + frontend/src/i18n/no.json | 1 + frontend/src/i18n/pl.json | 3 ++- frontend/src/i18n/pt-br.json | 1 + frontend/src/i18n/pt.json | 1 + frontend/src/i18n/ro.json | 1 + frontend/src/i18n/ru.json | 1 + frontend/src/i18n/sk.json | 1 + frontend/src/i18n/sv-se.json | 1 + frontend/src/i18n/tr.json | 1 + frontend/src/i18n/uk.json | 1 + frontend/src/i18n/vi.json | 1 + frontend/src/i18n/zh-cn.json | 5 +++-- frontend/src/i18n/zh-tw.json | 1 + 32 files changed, 38 insertions(+), 6 deletions(-) diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index bbe17461..b8f431eb 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -232,6 +232,7 @@ "permissions": "الصلاحيات", "permissionsHelp": "يمكنك تعيين المستخدم كـ \"مدير\" أو تحديد الصلاحيات بشكل منفرد.\n إذا قمت بتحديد المستخدم كـ \"مدير\"، باقي الخيارات سيتم تحديدها تلقائياً.\n إدارة المستخدمين تبقى صلاحية فريدة للـ \"مدير\" فقط.\n", "profileSettings": "إعدادات الحساب", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "منع الوصول إلى الملفات التي تبدأ بنقطة مثل (.git، و .gitignore) في كل مجلد.\n", "ruleExample2": "منع الوصول إلى الملف المسمى Caddyfile في نطاق الجذر.", "rules": "المجموعات", diff --git a/frontend/src/i18n/bg.json b/frontend/src/i18n/bg.json index afbd8a9c..d1388d3f 100644 --- a/frontend/src/i18n/bg.json +++ b/frontend/src/i18n/bg.json @@ -232,6 +232,7 @@ "permissions": "Разрешения", "permissionsHelp": "Можете да зададете потребител да бъде администратор или да изберете разрешения индивидуално. Ако изберете \"Администратор\" всички други опции ще бъдат автоматично отметнати. Управлението на потребителите е привилегия на администратор.\n", "profileSettings": "Настройки на Профила", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "предотвратете достъпа до всеки файл започващ с точка (като .git, .gitignore) във всяка папка.\n", "ruleExample2": "блокира достъпа до файл именуван Caddyfile поставен в началото за обхвата.", "rules": "Правила", diff --git a/frontend/src/i18n/ca.json b/frontend/src/i18n/ca.json index a8e88498..2ca2b5d4 100644 --- a/frontend/src/i18n/ca.json +++ b/frontend/src/i18n/ca.json @@ -232,6 +232,7 @@ "permissions": "Permisos", "permissionsHelp": "Pots nomenar l'usuari com a administrador o triar els permisos individualment. Si selecciones \"Administrador\", totes les altres opcions s'activaran automàticament. L'administració d'usuaris és un privilegi d'administrador.\n", "profileSettings": "Ajustos del perfil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "prevé l'accés a una extensió de fitxer (Com .git) en cada carpeta.\n", "ruleExample2": "bloqueja l'accés al fitxer anomenat Caddyfile a la carpeta arrel.", "rules": "Regles", diff --git a/frontend/src/i18n/cs.json b/frontend/src/i18n/cs.json index 6f489c53..d57c4336 100644 --- a/frontend/src/i18n/cs.json +++ b/frontend/src/i18n/cs.json @@ -232,6 +232,7 @@ "permissions": "Oprávnění", "permissionsHelp": "Můžete nastavit uživatele jako administrátora nebo zvolit jednotlivá oprávnění. Pokud vyberete \"Administrátor\", všechny ostatní možnosti budou automaticky zaškrtnuty. Správa uživatelů zůstává výsadou administrátora.\n", "profileSettings": "Nastavení profilu", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "zabraňuje přístupu k jakémukoli skrytému souboru (např. .git, .gitignore) v každé složce.\n", "ruleExample2": "blokuje přístup k souboru s názvem Caddyfile v kořenovém adresáři.", "rules": "Pravidla", diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index 815fbd1f..872b29e2 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -232,6 +232,7 @@ "permissions": "Berechtigungen", "permissionsHelp": "Sie können einem Benutzer Administratorrechte einräumen oder die Berechtigungen individuell festlegen. Wenn Sie \"Administrator\" auswählen, werden alle anderen Rechte automatisch vergeben. Die Nutzerverwaltung kann nur durch einen Administrator erfolgen.\n", "profileSettings": "Profileinstellungen", + "redirectAfterCopyMove": "Nach Kopieren/Verschieben zum Zielverzeichnis wechseln", "ruleExample1": "Verhindert den Zugang zu versteckten Dateien (dot-Files, wie .git, .gitignore) in allen Ordnern\n", "ruleExample2": "blockiert den Zugang auf Dateien mit dem Namen Caddyfile in der Wurzel/Basis des Scopes.", "rules": "Regeln", diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index 121452a1..04e837f3 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -232,6 +232,7 @@ "permissions": "Δικαιώματα", "permissionsHelp": "Μπορείτε να ορίσετε τον χρήστη ως διαχειριστή ή να επιλέξετε τα δικαιώματα μεμονωμένα. Αν επιλέξετε \"Διαχειριστής\", όλες οι υπόλοιπες επιλογές θα είναι αυτόματα επιλεγμένες. Η διαχείριση χρηστών παραμένει προνόμιο ενός χρήστη με τον ρόλο του διαχειριστή.\n", "profileSettings": "Ρυθμίσεις προφίλ", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "αποκλείει την πρόσβαση σε οποιοδήποτε κρυφό αρχείο (όπως .git, .gitignore) σε κάθε φάκελο.\n", "ruleExample2": "αποκλείει την πρόσβαση στο αρχείο με το όνομα Caddyfile στον ριζικό φάκελο της εμβέλειας του κανόνα.", "rules": "Κανόνες", diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 28338c98..aaab108b 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -232,6 +232,7 @@ "permissions": "Permisos", "permissionsHelp": "Puedes nombrar al usuario como administrador o elegir los permisos individualmente. Si seleccionas \"Administrador\", todas las otras opciones serán activadas automáticamente. La administración de usuarios es un privilegio de administrador.\n", "profileSettings": "Ajustes del perfil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "previene el acceso a una extensión de archivo (Como .git) en cada carpeta.\n", "ruleExample2": "bloquea el acceso al archivo llamado Caddyfile en la carpeta raíz.", "rules": "Reglas", diff --git a/frontend/src/i18n/fa.json b/frontend/src/i18n/fa.json index 4af7f205..3484d3a0 100644 --- a/frontend/src/i18n/fa.json +++ b/frontend/src/i18n/fa.json @@ -232,6 +232,7 @@ "permissions": "دسترسی ها", "permissionsHelp": "شما می‌توانید کاربر را به عنوان مدیر تنظیم کنید یا دسترسی‌ها را به صورت جداگانه انتخاب کنید. اگر \"مدیر\" را انتخاب کنید، تمام گزینه‌های دیگر به طور خودکار اعمال می‌شوند. مدیریت کاربران همچنان از اختیارات مدیر است.", "profileSettings": "تنظیمات ناحیه کاربری", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "از دسترسی به هرگونه فایل نقطه‌ای (مانند .git، .gitignore) در هر پوشه جلوگیری می‌کند.", "ruleExample2": "دسترسی به فایلی به نام Caddyfile را در ریشه دامنه مسدود می‌کند.", "rules": "قواعد", diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 148306e5..798cee50 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -232,6 +232,7 @@ "permissions": "Permissions", "permissionsHelp": "Vous pouvez définir l'utilisateur·ice comme étant administrateur·ice ou encore choisir les permissions individuellement. Si vous sélectionnez \"Administrateur·ice\", toutes les autres options seront automatiquement activées. La gestion des utilisateur·ices est un privilège que seul l'administrateur·ice possède.\n", "profileSettings": "Paramètres du profil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "Bloque l'accès à tous les fichiers commençant par un point (comme par exemple .git, .gitignore) dans tous les dossiers.\n", "ruleExample2": "Bloque l'accès au fichier nommé \"Caddyfile\" à la racine du dossier utilisateur·ice.", "rules": "Règles", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index d2deb938..f340feca 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -232,6 +232,7 @@ "permissions": "הרשאות", "permissionsHelp": "אתה יכול להגדיר את המשתמש להיות מנהל מערכת או לבחור את ההרשאות בנפרד. אם תבחר \"מנהל מערכת\", כל ההרשאות יינתנו אוטומטית. ניהול המשתמשים נשאר הרשאה של מנהל מערכת.\n", "profileSettings": "הגדרות פרופיל", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "מנע גישה לקבצים נסתרים (כל קובץ/תיקייה שמתחיל בנקודה, לדוגמא .git)", "ruleExample2": "חסימת גישה לקובץ בשם Caddyfile בהיקף הראשי.", "rules": "חוקים", diff --git a/frontend/src/i18n/hr.json b/frontend/src/i18n/hr.json index 1a467cc0..e21ffd80 100644 --- a/frontend/src/i18n/hr.json +++ b/frontend/src/i18n/hr.json @@ -232,6 +232,7 @@ "permissions": "Dopuštenja", "permissionsHelp": "Korisnika možete postaviti administratorom ili odabrati dopuštenja individualno. Odabirom na \"Administrator\", sve druge opcije bit će automatski odabrane. Upravljanje korisnicima ostaje privilegija administratora.\n", "profileSettings": "Postavke profila", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "onemogućava pristup svakoj datoteci koja započinje točkom (poput .git, .gitignore) u svakoj mapi.\n", "ruleExample2": "blokira pristup datoteci naziva Caddyfile na korijenu opsega.", "rules": "Pravila", diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index 0f2abeef..f6d856cf 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -232,6 +232,7 @@ "permissions": "Jogosultságok", "permissionsHelp": "A felhasználót beállíthatja rendszergazdának, vagy egyénileg is kiválaszthatja a jogosultságokat. Ha a \"Rendszergazda\" lehetőséget választja, az összes többi opció automatikusan be lesz jelölve. A felhasználók kezelése továbbra is a rendszergazda kiváltsága marad.\n", "profileSettings": "Profilbeállítások", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "megakadályozza a hozzáférést bármely rejtett fájlhoz (pl. .git, .gitignore) bármely mappában.\n", "ruleExample2": "blokkolja a hozzáférést a Caddyfile nevű fájlhoz a hatókör gyökerében.", "rules": "Szabályok", diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 2752b60f..01b3ace6 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -232,6 +232,7 @@ "permissions": "Heimildir", "permissionsHelp": "Þú getur stillt notenda sem stjórnanda eða valið einstaklingsbundnar heimildir. Ef þú velur \"Stjórnandi\", þá verða allir aðrir valmöguleikar valdir sjálfrafa. Aðgangstýring notenda er á hendi stjórnenda. \n", "profileSettings": "Stilla prófíl", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "kemur í veg fyrir aðgang að dot-skjali (t.d. .git, .gitignore) í öllum möppum. \n", "ruleExample2": "kemur í veg fyrir aðgang að Caddyfile-skjalinu í root-möppu í sýn notandans. ", "rules": "Reglur", diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index 29863efa..ad54172c 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -232,6 +232,7 @@ "permissions": "Permessi", "permissionsHelp": "È possibile impostare l'utente come amministratore o scegliere i permessi singolarmente. Se si seleziona \"Amministratore\", tutte le altre opzioni saranno automaticamente assegnate. La gestione degli utenti rimane un privilegio di un amministratore.\n", "profileSettings": "Impostazioni del profilo", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "impedisci l'accesso a qualsiasi file avente come prefisso un punto\n (ad esempio .git, .gitignore) presente in ogni cartella.\n", "ruleExample2": "blocca l'accesso al file denominato Caddyfile nella radice del campo di applicazione.", "rules": "Regole", diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index f6f2b886..44beb9cb 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -232,6 +232,7 @@ "permissions": "権限", "permissionsHelp": "ユーザーを管理者に設定するか、その他の権限を個別に選択することができます。「管理者」を選択すると、他のオプションはすべて自動的にチェックされます。ユーザーを管理するには管理者権限が必要です。\n", "profileSettings": "プロフィール設定", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": ".git や .gitignore のようなドットから始まるファイルへのアクセスを禁止します。\n", "ruleExample2": "スコープのルートにある Caddyfile という名前のファイルへのアクセスを禁止します。", "rules": "ルール", diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index fe1e6ec2..c1d49b18 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -232,6 +232,7 @@ "permissions": "권한", "permissionsHelp": "사용자를 관리자로 만들거나 권한을 부여할 수 있습니다. 관리자를 선택하면, 모든 옵션이 자동으로 선택됩니다. 사용자 관리는 현재 관리자만 할 수 있습니다.\n", "profileSettings": "프로필 설정", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "점(.)으로 시작하는 모든 파일의 접근을 방지합니다.(예 .git, .gitignore)\n", "ruleExample2": "Caddyfile파일의 접근을 방지합니다.", "rules": "룰", diff --git a/frontend/src/i18n/lv.json b/frontend/src/i18n/lv.json index fabd4a86..c7e1d02f 100644 --- a/frontend/src/i18n/lv.json +++ b/frontend/src/i18n/lv.json @@ -232,6 +232,7 @@ "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": "Redirect to destination after copy/move", "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", diff --git a/frontend/src/i18n/lv_LV.json b/frontend/src/i18n/lv_LV.json index fabd4a86..c6af9aed 100644 --- a/frontend/src/i18n/lv_LV.json +++ b/frontend/src/i18n/lv_LV.json @@ -43,7 +43,7 @@ "upload": "Augšupielādēt", "openFile": "Atvērt failu", "discardChanges": "Izmest", - "stopSearch": "Stop searching", + "stopSearch": "Beigt meklēšanu", "saveChanges": "Saglabāt izmaiņas", "editAsText": "Rediģēt kā tekstu", "increaseFontSize": "Palieliniet fonta lielumu", @@ -232,6 +232,7 @@ "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", @@ -241,7 +242,7 @@ "settingsUpdated": "Iestatījumi atjaunināti!", "shareDuration": "Kopīgošanas ilgums", "shareManagement": "Kopīgošanas pārvaldība", - "shareDeleted": "Kopīgošana ir izdzēsta!", + "shareDeleted": "Kopīgojums izdzēsts!", "singleClick": "Failu un direktoriju atvēršanai izmantojiet vienus klikšķi", "themes": { "default": "Sistēmas noklusējums", @@ -259,7 +260,7 @@ "userUpdated": "Lietotājs atjaunināts!", "username": "Lietotājvārds", "users": "Lietotāji", - "currentPassword": "Your Current Password" + "currentPassword": "Esošā Parole" }, "sidebar": { "help": "Palīdzība", diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index 6b2b5384..a5fcb062 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -232,6 +232,7 @@ "permissions": "Permissies", "permissionsHelp": "U kunt de gebruiker instellen als beheerder of de machtigingen afzonderlijk kiezen. Als u \"Beheerder\" selecteert, worden alle andere opties automatisch gecontroleerd. Het beheer van gebruikers blijft een privilege van een beheerder.\n", "profileSettings": "Profielinstellingen", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "voorkomt de toegang tot elk puntbestand (zoals .git, .gitignore) in elke map.\n", "ruleExample2": "blokkeert de toegang tot het bestand met de naam Caddyfile in de hoofdmap van het bereik.", "rules": "Regels", diff --git a/frontend/src/i18n/no.json b/frontend/src/i18n/no.json index 79b6f958..3a5e7bdd 100644 --- a/frontend/src/i18n/no.json +++ b/frontend/src/i18n/no.json @@ -232,6 +232,7 @@ "permissions": "Tilaterser", "permissionsHelp": "Du kan angi brukeren som administrator eller velge tillatelsene individuelt. Hvis du velger «Administrator», vil alle de andre alternativene bli automatisk avkrysset. Administrasjon av brukere er fortsatt et privilegium for en administrator.\n", "profileSettings": "Profil Innstilinger", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "forhindrer tilgang til noen dotfiler (som .git, .gitignore) i alle mapper.\n", "ruleExample2": "blokkerer tilgangen til filen med navnet Caddyfile på roten av omfanget.", "rules": "Regler", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index 2d43d91a..64b9f04a 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -231,7 +231,8 @@ }, "permissions": "Uprawnienia", "permissionsHelp": "Możesz ustawić użytkownika jako administratora lub wybrać uprawnienia indywidualnie. Jeśli wybierzesz „Administrator”, wszystkie pozostałe opcje zostaną automatycznie zaznaczone. Zarządzanie użytkownikami pozostaje przywilejem administratora.\n", - "profileSettings": "Twój profil", + "profileSettings": "Ustawienia profilu", + "redirectAfterCopyMove": "Przekieruj do miejsca docelowego po skopiowaniu lub przeniesieniu", "ruleExample1": "uniemożliwia dostęp do plików poprzedzonych kropką (takich jak .git, .gitignore) we wszystkich folderach.\n", "ruleExample2": "blokuje dostęp do pliku o nazwie Caddyfile w katalogu głównym zakresu.", "rules": "Uprawnienia", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 2f563354..f6aa8f4e 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -232,6 +232,7 @@ "permissions": "Permissões", "permissionsHelp": "Pode definir o usuário como administrador ou escolher as permissões manualmente. Se selecionar a opção \"Administrador\", todas as outras opções serão automaticamente selecionadas. A gestão dos usuários é um privilégio restringido aos administradores.\n", "profileSettings": "Configurações do usuário", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "previne o acesso a qualquer \"dotfile\" (como .git, .gitignore) em qualquer pasta\n", "ruleExample2": "bloqueia o acesso ao arquivo chamado Caddyfile.", "rules": "Regras", diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index 4c076622..dcacf3b6 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -232,6 +232,7 @@ "permissions": "Permissões", "permissionsHelp": "Pode definir o utilizador como administrador ou escolher as permissões manualmente. Se selecionar a opção \"Administrador\", todas as outras opções serão automaticamente selecionadas. A gestão dos utilizadores é um privilégio restringido aos administradores.\n", "profileSettings": "Configurações do utilizador", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "previne o acesso a qualquer \"dotfile\" (como .git, .gitignore) em qualquer pasta\n", "ruleExample2": "bloqueia o acesso ao ficheiro chamado Caddyfile na raiz.", "rules": "Regras", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index 82b5c388..c80c4e28 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -232,6 +232,7 @@ "permissions": "Permisiuni", "permissionsHelp": "Poți alege ca un utilizator să fie administrator sau să-i alegi permisiunile individual. Dacă alegi \"Administrator\", toate celelalte opțiuni vor fi bifate automat. Gestionarea utilizatorilor rămâne un privilegiu exclusiv al administratorilor.\n", "profileSettings": "Setări profil", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "împiedică accesul la fisiere cu punct in față (.), cum ar fi .git, .gitignore în orice director.\n", "ruleExample2": "împiedică accesul la fișierul Caddyfile din rădăcina domeniului.", "rules": "Reguli", diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 359fd228..60b211f6 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -232,6 +232,7 @@ "permissions": "Права доступа", "permissionsHelp": "Можно настроить пользователя как администратора или выбрать разрешения индивидуально. При выборе \"Администратор\", все остальные параметры будут автоматически выбраны. Управление пользователями - привилегия администратора.\n", "profileSettings": "Настройки профиля", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "предотвратить доступ к любому скрытому файлу (например: .git, .gitignore) в каждой папке.\n", "ruleExample2": "блокирует доступ к файлу с именем Caddyfile в корневой области.", "rules": "Права", diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 0031b730..201d2d3d 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -232,6 +232,7 @@ "permissions": "Práva", "permissionsHelp": "Môžete nastaviť používateľa, aby bol administrátorom alebo vybrať práva jednotlivo. Ak zvolíte \"Administrator\", všetky ďalšie budú automaticky zaškrtnuté. Manažment používateľov ostáva v správe administrátora.\n", "profileSettings": "Nastavenia profilu", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "blokuje prístup ku všetkým súborom začínajúcim bodkou (napríklad .git, .gitignore) v každom priečinku.\n", "ruleExample2": "blokuje prístup k súborom s názvom Caddyfile v koreňovom priečinku.", "rules": "Pravidlá", diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index 8e823b43..642252d9 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -232,6 +232,7 @@ "permissions": "Rättigheter", "permissionsHelp": "Du kan ange att användaren ska vara administratör eller välja behörigheterna individuellt. Om du väljer \"administratör \" kommer alla andra alternativ att kontrolleras automatiskt. Hanteringen av användare är fortfarande ett privilegium för en administratör.\n", "profileSettings": "Profil inställningar", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "förhindrar åtkomst till en dot-fil (till exempel. git,. gitignore) i varje mapp.\n", "ruleExample2": "blockerar åtkomsten till filen som heter Caddyfilen i roten av scopet.", "rules": "Regler", diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index ac18f211..f83e7103 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -232,6 +232,7 @@ "permissions": "İzinler", "permissionsHelp": "Kullanıcıyı yönetici olarak ayarlayabilir veya izinleri ayrı ayrı seçebilirsiniz. \"Yönetici\"yi seçerseniz, diğer tüm seçenekler otomatik olarak kontrol edilecektir. Kullanıcıların yönetimi, bir yöneticinin yetkisi olarak kalır.\n", "profileSettings": "Profil ayarları", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "her klasördeki herhangi bir noktalı dosyaya (.git, .gitignore gibi) erişimi engeller.\n", "ruleExample2": "Root erişimidenki CaddyFile dosyalarına erişimi engelle.", "rules": "Kurallar", diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index 2ae93f00..782b86e9 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -232,6 +232,7 @@ "permissions": "Дозволи", "permissionsHelp": "Можна налаштувати користувача як адміністратора чи вибрати індивідуальні дозволи. При виборі \"Адміністратор\" всі інші параметри будуть автоматично вибрані. Керування користувачами - привілей адміністратора.\n", "profileSettings": "Налаштування профілю", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "запобігти доступу до будь-якого прихованого файлу (наприклад: .git, .gitignore) у кожній папці.\n", "ruleExample2": "блокує доступ до файлу з ім'ям Caddyfile у кореневій області.", "rules": "Права", diff --git a/frontend/src/i18n/vi.json b/frontend/src/i18n/vi.json index 793f2120..65e7fe01 100644 --- a/frontend/src/i18n/vi.json +++ b/frontend/src/i18n/vi.json @@ -232,6 +232,7 @@ "permissions": "Quyền", "permissionsHelp": "Bạn có thể đặt người dùng làm quản trị viên hoặc chọn quyền riêng lẻ. Nếu chọn \"Người quản trị\", tất cả các tùy chọn khác sẽ tự động được chọn. Việc quản lý người dùng vẫn là đặc quyền của quản trị viên.\n", "profileSettings": "Cài đặt hồ sơ", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "ngăn truy cập vào bất kỳ tệp ẩn nào (chẳng hạn như .git, .gitignore) trong mọi thư mục.\n", "ruleExample2": "chặn truy cập vào tệp có tên Caddyfile trong thư mục gốc của phạm vi.", "rules": "Quy tắc", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 57178911..93486c21 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -43,7 +43,7 @@ "upload": "上传", "openFile": "打开文件", "discardChanges": "放弃更改", - "stopSearch": "Stop searching", + "stopSearch": "停止搜索", "saveChanges": "保存更改", "editAsText": "以文本形式编辑", "increaseFontSize": "增大字体大小", @@ -232,6 +232,7 @@ "permissions": "权限", "permissionsHelp": "你可以将该用户设置为管理员或单独选择各项权限。如果你选择了“管理员”,则其他的选项会被自动选中,同时该用户可以管理其他用户。\n", "profileSettings": "个人设置", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。\n", "ruleExample2": "阻止用户访问其目录范围的根目录下名为 Caddyfile 的文件。", "rules": "规则", @@ -259,7 +260,7 @@ "userUpdated": "用户已更新!", "username": "用户名", "users": "用户", - "currentPassword": "Your Current Password" + "currentPassword": "您当前的密码" }, "sidebar": { "help": "帮助", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index d8630129..c0cafc3d 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -232,6 +232,7 @@ "permissions": "權限", "permissionsHelp": "您可以將該使用者設置為管理員,也可以單獨選擇各項權限。如果選擇了“管理員”,則其他的選項會被自動勾上,同時該使用者可以管理其他使用者。", "profileSettings": "個人設定", + "redirectAfterCopyMove": "Redirect to destination after copy/move", "ruleExample1": "封鎖使用者存取所有資料夾下任何以 . 開頭的檔案(隱藏文件, 例如: .git, .gitignore)。", "ruleExample2": "封鎖使用者存取其目錄範圍的根目錄下名為 Caddyfile 的檔案。", "rules": "規則", From 550a73b6ba705946ff30bfa7d1219abf8f08450d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 08:54:42 +0100 Subject: [PATCH 31/34] chore(deps): update all non-major dependencies (#5679) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- frontend/pnpm-lock.yaml | 202 ++++++++++++++++++++-------------------- go.mod | 8 +- go.sum | 16 ++-- 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 37dab7ae..d3b79699 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -101,28 +101,28 @@ importers: version: 11.0.3(@vue/compiler-dom@3.5.26)(eslint@9.39.2)(rollup@4.55.1)(typescript@5.9.3)(vue-i18n@11.2.8(vue@3.5.26(typescript@5.9.3)))(vue@3.5.26(typescript@5.9.3)) '@tsconfig/node24': specifier: ^24.0.2 - version: 24.0.3 + version: 24.0.4 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/node': specifier: ^24.10.1 - version: 24.10.6 + version: 24.10.9 '@typescript-eslint/eslint-plugin': specifier: ^8.37.0 - version: 8.52.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + version: 8.53.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.44.1)(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2)) + version: 7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2)) '@vitejs/plugin-vue': specifier: ^6.0.1 - version: 6.0.3(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) + version: 6.0.3(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3)) '@vue/eslint-config-prettier': specifier: ^10.2.0 - version: 10.2.0(eslint@9.39.2)(prettier@3.7.4) + version: 10.2.0(eslint@9.39.2)(prettier@3.8.0) '@vue/eslint-config-typescript': specifier: ^14.6.0 - version: 14.6.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) + version: 14.6.0(eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.26(typescript@5.9.3)) @@ -137,25 +137,25 @@ importers: version: 10.1.8(eslint@9.39.2) eslint-plugin-prettier: specifier: ^5.5.1 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.7.4) + version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.0) eslint-plugin-vue: specifier: ^10.5.1 - version: 10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + version: 10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) postcss: specifier: ^8.5.6 version: 8.5.6 prettier: specifier: ^3.6.2 - version: 3.7.4 + version: 3.8.0 terser: specifier: ^5.43.1 - version: 5.44.1 + version: 5.46.0 typescript: specifier: ^5.9.3 version: 5.9.3 vite: specifier: ^7.2.2 - version: 7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2) + version: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) vite-plugin-compression2: specifier: ^2.3.1 version: 2.4.0(rollup@4.55.1) @@ -1268,8 +1268,8 @@ packages: cpu: [x64] os: [win32] - '@tsconfig/node24@24.0.3': - resolution: {integrity: sha512-vcERKtKQKHgzt/vfS3Gjasd8SUI2a0WZXpgJURdJsMySpS5+ctgbPfuLj2z/W+w4lAfTWxoN4upKfu2WzIRYnw==} + '@tsconfig/node24@24.0.4': + resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1287,8 +1287,8 @@ packages: '@types/lodash@4.17.13': resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} - '@types/node@24.10.6': - resolution: {integrity: sha512-B8h60xgJMR/xmgyX9fncRzEW9gCxoJjdenUhke2v1JGOd/V66KopmWrLPXi5oUI4VuiGK+d+HlXJjDRZMj21EQ==} + '@types/node@24.10.9': + resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1304,11 +1304,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.52.0': - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + '@typescript-eslint/eslint-plugin@8.53.0': + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -1331,8 +1331,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.52.0': - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + '@typescript-eslint/project-service@8.53.0': + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1345,8 +1345,8 @@ packages: resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.52.0': - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + '@typescript-eslint/scope-manager@8.53.0': + resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.37.0': @@ -1361,8 +1361,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.52.0': - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + '@typescript-eslint/tsconfig-utils@8.53.0': + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1374,8 +1374,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.52.0': - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + '@typescript-eslint/type-utils@8.53.0': + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1389,8 +1389,8 @@ packages: resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.52.0': - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + '@typescript-eslint/types@8.53.0': + resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.37.0': @@ -1405,8 +1405,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.52.0': - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + '@typescript-eslint/typescript-estree@8.53.0': + resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -1418,8 +1418,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.52.0': - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + '@typescript-eslint/utils@8.53.0': + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1433,8 +1433,8 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.52.0': - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + '@typescript-eslint/visitor-keys@8.53.0': + resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@videojs/http-streaming@3.17.2': @@ -1846,8 +1846,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.5.4: - resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} + eslint-plugin-prettier@5.5.5: + resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -1860,8 +1860,8 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-vue@10.6.2: - resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==} + eslint-plugin-vue@10.7.0: + resolution: {integrity: sha512-r2XFCK4qlo1sxEoAMIoTTX0PZAdla0JJDt1fmYiworZUX67WeEGqm+JbyAg3M+pGiJ5U6Mp5WQbontXWtIW7TA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -2351,12 +2351,12 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.0: + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} engines: {node: '>=14'} hasBin: true @@ -2504,8 +2504,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} systemjs@6.15.1: @@ -2517,8 +2517,8 @@ packages: tar-mini@0.2.0: resolution: {integrity: sha512-+qfUHz700DWnRutdUsxRRVZ38G1Qr27OetwaMYTdg8hcPxf46U0S1Zf76dQMWRBmusOt2ZCK5kbIaiLkoGO7WQ==} - terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -3820,7 +3820,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true - '@tsconfig/node24@24.0.3': {} + '@tsconfig/node24@24.0.4': {} '@types/estree@1.0.8': {} @@ -3836,7 +3836,7 @@ snapshots: '@types/lodash@4.17.13': {} - '@types/node@24.10.6': + '@types/node@24.10.9': dependencies: undici-types: 7.16.0 @@ -3862,14 +3862,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.37.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -3908,10 +3908,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -3927,10 +3927,10 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - '@typescript-eslint/scope-manager@8.52.0': + '@typescript-eslint/scope-manager@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 '@typescript-eslint/tsconfig-utils@8.37.0(typescript@5.9.3)': dependencies: @@ -3940,7 +3940,7 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 @@ -3956,11 +3956,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -3972,7 +3972,7 @@ snapshots: '@typescript-eslint/types@8.49.0': {} - '@typescript-eslint/types@8.52.0': {} + '@typescript-eslint/types@8.53.0': {} '@typescript-eslint/typescript-estree@8.37.0(typescript@5.9.3)': dependencies: @@ -4005,12 +4005,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -4022,7 +4022,7 @@ snapshots: '@typescript-eslint/utils@8.37.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) '@typescript-eslint/scope-manager': 8.37.0 '@typescript-eslint/types': 8.37.0 '@typescript-eslint/typescript-estree': 8.37.0(typescript@5.9.3) @@ -4031,12 +4031,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -4052,9 +4052,9 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.52.0': + '@typescript-eslint/visitor-keys@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint-visitor-keys: 4.2.1 '@videojs/http-streaming@3.17.2(video.js@8.23.4)': @@ -4079,7 +4079,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-legacy@7.2.1(terser@5.44.1)(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2))': + '@vitejs/plugin-legacy@7.2.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) @@ -4093,15 +4093,15 @@ snapshots: magic-string: 0.30.21 regenerator-runtime: 0.14.1 systemjs: 6.15.1 - terser: 5.44.1 - vite: 7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2) + terser: 5.46.0 + vite: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.3(vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.3(vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2))(vue@3.5.26(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.53 - vite: 7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2) vue: 3.5.26(typescript@5.9.3) '@volar/language-core@2.4.27': @@ -4166,20 +4166,20 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@10.2.0(eslint@9.39.2)(prettier@3.7.4)': + '@vue/eslint-config-prettier@10.2.0(eslint@9.39.2)(prettier@3.8.0)': dependencies: eslint: 9.39.2 eslint-config-prettier: 10.1.8(eslint@9.39.2) - eslint-plugin-prettier: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.7.4) - prettier: 3.7.4 + eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.0) + prettier: 3.8.0 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': + '@vue/eslint-config-typescript@14.6.0(eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@typescript-eslint/utils': 8.37.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 - eslint-plugin-vue: 10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) + eslint-plugin-vue: 10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)) fast-glob: 3.3.3 typescript-eslint: 8.37.0(eslint@9.39.2)(typescript@5.9.3) vue-eslint-parser: 10.2.0(eslint@9.39.2) @@ -4543,18 +4543,18 @@ snapshots: dependencies: eslint: 9.39.2 - eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.7.4): + eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.8.0): dependencies: eslint: 9.39.2 - prettier: 3.7.4 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 + prettier: 3.8.0 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.12 optionalDependencies: eslint-config-prettier: 10.1.8(eslint@9.39.2) - eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)): + eslint-plugin-vue@10.7.0(@typescript-eslint/parser@8.37.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(vue-eslint-parser@10.2.0(eslint@9.39.2)): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) eslint: 9.39.2 natural-compare: 1.4.0 nth-check: 2.1.1 @@ -5015,11 +5015,11 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 - prettier@3.7.4: {} + prettier@3.8.0: {} pretty-bytes@7.1.0: {} @@ -5170,7 +5170,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.11.11: + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -5180,7 +5180,7 @@ snapshots: tar-mini@0.2.0: {} - terser@5.44.1: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -5316,7 +5316,7 @@ snapshots: transitivePeerDependencies: - rollup - vite@7.3.1(@types/node@24.10.6)(terser@5.44.1)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.9)(terser@5.46.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -5325,9 +5325,9 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.6 + '@types/node': 24.10.9 fsevents: 2.3.3 - terser: 5.44.1 + terser: 5.46.0 yaml: 2.8.2 vscode-uri@3.1.0: {} diff --git a/go.mod b/go.mod index 44741833..edf46277 100644 --- a/go.mod +++ b/go.mod @@ -24,8 +24,8 @@ 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.46.0 - golang.org/x/image v0.34.0 + golang.org/x/crypto v0.47.0 + golang.org/x/image v0.35.0 golang.org/x/text v0.33.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 @@ -73,9 +73,9 @@ require ( go.etcd.io/bbolt v1.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org v0.0.0-20230225012048-214862532bf5 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect + golang.org/x/sys v0.40.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 443fb17c..45dff859 100644 --- a/go.sum +++ b/go.sum @@ -266,8 +266,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.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= 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= @@ -279,8 +279,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.34.0 h1:33gCkyw9hmwbZJeZkct8XyR11yH889EQt/QH4VmXMn8= -golang.org/x/image v0.34.0/go.mod h1:2RNFBZRB+vnwwFil8GkMdRvrJOFd1AzdZI6vOY+eJVU= +golang.org/x/image v0.35.0 h1:LKjiHdgMtO8z7Fh18nGY6KDcoEtVfsgLDPeLyguqb7I= +golang.org/x/image v0.35.0/go.mod h1:MwPLTVgvxSASsxdLzKrl8BRFuyqMyGhLwmC+TO1Sybk= 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= @@ -319,8 +319,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.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= 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= @@ -360,8 +360,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.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 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= From 785b7abb7ba7a86cc0deae1052c319ff714c222c Mon Sep 17 00:00:00 2001 From: Ariel Leyva Date: Sun, 18 Jan 2026 02:55:20 -0500 Subject: [PATCH 32/34] feat: added cut, copy, paste and show command palette functions in header (#5648) --- frontend/src/css/base.css | 4 ++ frontend/src/utils/clipboard.ts | 14 +++++ frontend/src/views/files/Editor.vue | 88 ++++++++++++++++++++++++++++- 3 files changed, 105 insertions(+), 1 deletion(-) diff --git a/frontend/src/css/base.css b/frontend/src/css/base.css index be5b0b98..f0b8ef0c 100644 --- a/frontend/src/css/base.css +++ b/frontend/src/css/base.css @@ -185,3 +185,7 @@ html[dir="rtl"] .breadcrumbs a { .vfm-modal { z-index: 9999999 !important; } + +body > div[style*="z-index: 9990"] { + z-index: 10000 !important; +} diff --git a/frontend/src/utils/clipboard.ts b/frontend/src/utils/clipboard.ts index 23bb7895..53e03589 100644 --- a/frontend/src/utils/clipboard.ts +++ b/frontend/src/utils/clipboard.ts @@ -51,6 +51,20 @@ export function copy(data: ClipboardArgs, opts?: ClipboardOpts) { }); } +export function read() { + return new Promise((resolve, reject) => { + if ( + // Clipboard API requires secure context + window.isSecureContext && + typeof navigator.clipboard !== "undefined" + ) { + navigator.clipboard.readText().then(resolve).catch(reject); + } else { + reject(); + } + }); +} + function getPermission(name: string) { return new Promise((resolve, reject) => { typeof navigator.permissions !== "undefined" && diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index fc5f9728..7d3a8dfc 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -41,7 +41,30 @@