diff --git a/.goreleaser.yml b/.goreleaser.yml index debf6fa5..57b7b44a 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -131,7 +131,7 @@ dockers: - "filebrowser/filebrowser:v{{ .Major }}-amd64-s6" extra_files: - docker - - dockerfile: Dockerfile.s6.aarch64 + - dockerfile: Dockerfile.s6 use: buildx build_flag_templates: - "--pull" diff --git a/CHANGELOG.md b/CHANGELOG.md index c0479f15..139a0872 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,43 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.37.0](https://github.com/filebrowser/filebrowser/compare/v2.36.3...v2.37.0) (2025-07-08) + + +### Features + +* Translate frontend/src/i18n/en.json in zh_CN ([65bbf44](https://github.com/filebrowser/filebrowser/commit/65bbf44e3c0bff83e64193d46e9d6ad302952276)) +* Translate frontend/src/i18n/en.json in zh_TW ([b28952c](https://github.com/filebrowser/filebrowser/commit/b28952cb2582bd4eb44e91d0676e2803c458cf31)) +* Translate frontend/src/i18n/en.json in zh_TW ([1e96fd9](https://github.com/filebrowser/filebrowser/commit/1e96fd9035d5185dc80970a2826ccb573b5f000e)) + + +### Bug Fixes + +* long file name overlap ([fcb248a](https://github.com/filebrowser/filebrowser/commit/fcb248a5feb7b7404ca5923aae17f6d3f8d3cc96)) +* preview PDF is correctly displayed ([bf73e4d](https://github.com/filebrowser/filebrowser/commit/bf73e4dea3b27c01c8f6e60fb2048e1a2122a70e)) +* Upload progress size calculation ([e423395](https://github.com/filebrowser/filebrowser/commit/e423395ef0bcd106ddc7d460c055b95b5208415e)) + +### [2.36.3](https://github.com/filebrowser/filebrowser/compare/v2.36.2...v2.36.3) (2025-07-06) + + +### Bug Fixes + +* log error if branding file exists but cannot be loaded ([3645b57](https://github.com/filebrowser/filebrowser/commit/3645b578cddb9fc8f25a00e0153fb600ad1b9266)) + +### [2.36.2](https://github.com/filebrowser/filebrowser/compare/v2.36.1...v2.36.2) (2025-07-06) + + +### Bug Fixes + +* lookup directory name if blank when downloading shared directory ([046d619](https://github.com/filebrowser/filebrowser/commit/046d6193c57b4df0e3dc583b6518b43d29d302c9)) + +### [2.36.1](https://github.com/filebrowser/filebrowser/compare/v2.36.0...v2.36.1) (2025-07-03) + + +### Bug Fixes + +* remove associated shares when deleting file/folder ([e99e0b3](https://github.com/filebrowser/filebrowser/commit/e99e0b3028e1c8a50e1744bb07ecc8e809bdb8e6)) + ## [2.36.0](https://github.com/filebrowser/filebrowser/compare/v2.35.0...v2.36.0) (2025-07-02) diff --git a/Dockerfile.s6.aarch64 b/Dockerfile.s6.aarch64 deleted file mode 100644 index 0378d57c..00000000 --- a/Dockerfile.s6.aarch64 +++ /dev/null @@ -1,23 +0,0 @@ -FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.22 - -RUN apk update && \ - apk --no-cache add ca-certificates mailcap curl jq - -# Make user and create necessary directories -RUN mkdir -p /config /database /srv && \ - chown -R abc:abc /config /database /srv - -# Copy files and set permissions -COPY filebrowser /bin/filebrowser -COPY docker/common/ / -COPY docker/s6/ / - -RUN chown -R abc:abc /bin/filebrowser /defaults healthcheck.sh - -# Define healthcheck script -HEALTHCHECK --start-period=2s --interval=5s --timeout=3s CMD /healthcheck.sh - -# Set the volumes and exposed ports -VOLUME /srv /config /database - -EXPOSE 80 diff --git a/frontend/src/css/listing.css b/frontend/src/css/listing.css index fa1c01a8..d55fe67c 100644 --- a/frontend/src/css/listing.css +++ b/frontend/src/css/listing.css @@ -195,10 +195,6 @@ html[dir="rtl"] #listing { align-items: center; } -#listing.list .item p.name:not(#listing.list .item.header .name) { - margin-right: -3em; -} - #listing.list .item .name { width: 50%; } @@ -227,18 +223,18 @@ html[dir="rtl"] #listing { border-bottom: 1px solid var(--borderPrimary); } -#listing.list .item.header > div:first-child { - width: 0; +#listing.list .item.header > div { + width: 100%; +} + +#listing.list .item.header .name { + margin-right: 3em; } #listing.list .header a { color: inherit; } -#listing.list .item.header > div:first-child { - width: 0; -} - #listing.list .name { font-weight: normal; word-wrap: break-word; diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json index 6ef74a4f..aa4080df 100644 --- a/frontend/src/i18n/uk.json +++ b/frontend/src/i18n/uk.json @@ -3,17 +3,17 @@ "cancel": "Відмінити", "clear": "Очистити", "close": "Закрити", - "continue": "Continue", + "continue": "Продовжити", "copy": "Копіювати", "copyFile": "Копіювати файл", "copyToClipboard": "Копіювати в буфер обміну", - "copyDownloadLinkToClipboard": "Copy download link to clipboard", + "copyDownloadLinkToClipboard": "Скопіювати завантажувальне посилання в буфер обміну", "create": "Створити", "delete": "Видалити", "download": "Завантажити", "file": "Файл", "folder": "Папка", - "fullScreen": "Toggle full screen", + "fullScreen": "Перемкнути повноекранний режим", "hideDotfiles": "Приховати точкові файли", "info": "Інфо", "more": "Більше", @@ -24,7 +24,7 @@ "ok": "ОК", "permalink": "Отримати постійне посилання", "previous": "Назад", - "preview": "Preview", + "preview": "Попередній перегляд", "publish": "Опублікувати", "rename": "Перейменувати", "replace": "Замінити", @@ -42,7 +42,7 @@ "update": "Оновити", "upload": "Вивантажити", "openFile": "Відкрити файл", - "discardChanges": "Discard" + "discardChanges": "Скасувати" }, "download": { "downloadFile": "Завантажити файл", @@ -50,7 +50,7 @@ "downloadSelected": "Завантажити вибране" }, "upload": { - "abortUpload": "Are you sure you wish to abort?" + "abortUpload": "Ви впевнені, що хочете перервати?" }, "errors": { "forbidden": "У вас немає прав доступу до цього.", @@ -66,7 +66,7 @@ "home": "Домівка", "lastModified": "Останній раз змінено", "loading": "Завантаження...", - "lonely": "Тут пусто...", + "lonely": "Тут порожньо...", "metadata": "Метадані", "multipleSelectionEnabled": "Мультивибір включений", "name": "Ім'я", @@ -81,7 +81,7 @@ "ctrl": { "click": "вибрати кілька файлів чи каталогів", "f": "відкрити пошук", - "s": "скачати файл або поточний каталог" + "s": "завантажити файл або поточний каталог" }, "del": "видалити вибрані елементи", "doubleClick": "відкрити файл чи каталог", @@ -100,7 +100,7 @@ "submit": "Увійти", "username": "Ім'я користувача", "usernameTaken": "Ім'я користувача вже використовується", - "wrongCredentials": "Невірне ім'я користувача або пароль" + "wrongCredentials": "Неправильне ім'я користувача або пароль" }, "permanent": "Постійний", "prompts": { @@ -110,7 +110,7 @@ "deleteMessageMultiple": "Видалити ці файли ({count})?", "deleteMessageSingle": "Видалити цей файл/каталог?", "deleteMessageShare": "Видалити цей спільний файл/каталог ({path})?", - "deleteUser": "Are you sure you want to delete this user?", + "deleteUser": "Видалити цього користувача?", "deleteTitle": "Видалити файли", "displayName": "Відображене ім'я:", "download": "Завантажити файли", @@ -137,11 +137,11 @@ "show": "Показати", "size": "Розмір", "upload": "Вивантажити", - "uploadFiles": "Uploading {files} files...", + "uploadFiles": "Вивантаження {files} файлів...", "uploadMessage": "Виберіть варіант для вивантаження.", "optionalPassword": "Необов'язковий пароль", - "resolution": "Resolution", - "discardEditorChanges": "Are you sure you wish to discard the changes you've made?" + "resolution": "Розширення", + "discardEditorChanges": "Чи дійсно ви хочете скасувати поточні зміни?" }, "search": { "images": "Зображення", @@ -170,14 +170,14 @@ "commandRunnerHelp": "Тут ви можете встановити команди, які будуть виконуватися у зазначених подіях. Ви повинні вказати по одній команді в кожному рядку. Змінні середовища {0} та {1} будуть доступні, будучи {0} щодо {1}. Додаткові відомості про цю функцію та доступні змінні середовища див. у {2}.", "commandsUpdated": "Команди оновлені!", "createUserDir": "Автоматичне створення домашнього каталогу користувача при додаванні нового користувача", - "minimumPasswordLength": "Minimum password length", - "tusUploads": "Chunked Uploads", - "tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.", - "tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.", - "tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.", - "userHomeBasePath": "Base path for user home directories", - "userScopeGenerationPlaceholder": "The scope will be auto generated", - "createUserHomeDirectory": "Create user home directory", + "minimumPasswordLength": "Мінімальна довжина паролю", + "tusUploads": "Фрагментовані завантаження", + "tusUploadsHelp": "File Browser підтримує завантаження частинами, дозволяючи створення ефективних, надійних, відновлюваних та фрагментованих завантажень навіть при ненадійному з'єднанні.", + "tusUploadsChunkSize": "Вказує на максимальний розмір запиту (для менших завантажень використовуватиметься пряме завантаження). Ви можете ввести цілочисельне значення у байтах або ж рядок на кшталт 10MB, 1GB тощо.", + "tusUploadsRetryCount": "Кількість повторних спроб які потрібно виконати, якщо фрагмент не вдалося завантажити.", + "userHomeBasePath": "Основний шлях для домашніх каталогів користувачів", + "userScopeGenerationPlaceholder": "Кореневий каталог буде згенеровано автоматично", + "createUserHomeDirectory": "Створити домашній каталог користувача", "customStylesheet": "Свій стиль", "defaultUserDescription": "Це налаштування за замовчуванням для нових користувачів.", "disableExternalLinks": "Вимкнути зовнішні посилання (крім документації)", @@ -210,12 +210,12 @@ "share": "Ділітися файлами" }, "permissions": "Дозволи", - "permissionsHelp": "Можна настроїти користувача як адміністратора або вибрати індивідуальні дозволи. При виборі \"Адміністратор\" всі інші параметри будуть автоматично вибрані. Керування користувачами - привілей адміністратора.\n", + "permissionsHelp": "Можна налаштувати користувача як адміністратора чи вибрати індивідуальні дозволи. При виборі \"Адміністратор\" всі інші параметри будуть автоматично вибрані. Керування користувачами - привілей адміністратора.\n", "profileSettings": "Налаштування профілю", "ruleExample1": "запобігти доступу до будь-якого прихованого файлу (наприклад: .git, .gitignore) у кожній папці.\n", "ruleExample2": "блокує доступ до файлу з ім'ям Caddyfile у кореневій області.", "rules": "Права", - "rulesHelp": "Тут ви можете визначити набір дозволяючих та забороняючих правил для цього конкретного користувача. Блоковані файли не відображатимуться у списках, і не будуть доступні для користувача. Є підтримка регулярних виразів та відносних шляхів.\n", + "rulesHelp": "Тут ви можете визначити набір дозволів та заборон для цього конкретного користувача. Блоковані файли не відображатимуться у списках і не будуть доступними для користувача. Є підтримка регулярних виразів та відносних шляхів.\n", "scope": "Корінь", "setDateFormat": "Встановити точний формат дати", "settingsUpdated": "Налаштування застосовані!", @@ -224,7 +224,7 @@ "shareDeleted": "Спільне посилання видалено!", "singleClick": "Відкриття файлів та каталогів одним кліком", "themes": { - "default": "System default", + "default": "За замовчуванням (системна)", "dark": "Темна", "light": "Світла", "title": "Тема" @@ -232,11 +232,11 @@ "user": "Користувач", "userCommands": "Команди", "userCommandsHelp": "Список команд, доступних користувачу, розділений пробілами. Приклад:\n", - "userCreated": "Користувач створений!", + "userCreated": "Користувача створено!", "userDefaults": "Налаштування користувача за замовчуванням", - "userDeleted": "Користувач видалений!", + "userDeleted": "Користувача видалено!", "userManagement": "Керування користувачами", - "userUpdated": "Користувач змінений!", + "userUpdated": "Користувача змінено!", "username": "Ім'я користувача", "users": "Користувачі" }, diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index daa45619..fac470e8 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -170,7 +170,7 @@ "commandRunnerHelp": "你可以在此设置在下列事件中执行的命令。每行必须写一条命令。可以在命令中使用环境变量 {0} 和 {1},使 {0} 与 {1} 相关联。关于此功能和可用环境变量的更多信息,请阅读 {2}。", "commandsUpdated": "命令已更新!", "createUserDir": "在添加新用户的同时自动创建用户的主目录", - "minimumPasswordLength": "Minimum password length", + "minimumPasswordLength": "最小密码长度", "tusUploads": "分块上传", "tusUploadsHelp": "File Browser 支持分块上传,在不佳的网络下也可进行高效、可靠、可续的文件上传", "tusUploadsChunkSize": "分块上传大小,例如 10MB 或 1GB", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 7566675d..966cb14e 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -24,7 +24,7 @@ "ok": "確認", "permalink": "獲取永久連結", "previous": "上一個", - "preview": "Preview", + "preview": "預覽", "publish": "發佈", "rename": "重新命名", "replace": "更換", @@ -170,7 +170,7 @@ "commandRunnerHelp": "在這裡你可以設定在下面的事件中執行的命令。每行必須寫一條命令。可以在命令中使用環境變數 {0} 和 {1}。關於此功能和可用環境變數的更多資訊,請閱讀{2}.", "commandsUpdated": "命令已更新!", "createUserDir": "在新增新使用者的同時自動建立使用者的個人目錄", - "minimumPasswordLength": "Minimum password length", + "minimumPasswordLength": "密碼最短長度", "tusUploads": "分塊上傳", "tusUploadsHelp": "File Browser 支援分塊上傳,在不佳的網絡環境下也可進行高效、可靠、可續的檔案上傳", "tusUploadsChunkSize": "分塊上傳大小,例如 10MB 或 1GB", diff --git a/frontend/src/stores/upload.ts b/frontend/src/stores/upload.ts index 3ea93037..d9698255 100644 --- a/frontend/src/stores/upload.ts +++ b/frontend/src/stores/upload.ts @@ -74,7 +74,12 @@ export const useUploadStore = defineStore("upload", { if (state.progress.length === 0 || state.sizes.length === 0) { return "0 Bytes"; } - const sum = state.progress.reduce((acc, val) => +acc + +val, 0) as number; + const sum = state.progress.reduce( + (sum, p, i) => + (sum as number) + + (typeof p === "number" ? p : p ? state.sizes[i] : 0), + 0 + ) as number; return formatSize(sum); }, getTotalSize: (state) => { diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue index 60d74169..93853408 100644 --- a/frontend/src/views/files/FileListing.vue +++ b/frontend/src/views/files/FileListing.vue @@ -162,7 +162,6 @@ >