diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index c28588081..9890fbee8 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -15,7 +15,7 @@ export HOMEPAGE_BUILDTIME=$(date +%s) # Set privileges for /app but only if pid 1 user is root and we are dropping privileges. # If container is run as an unprivileged user, it means owner already handled ownership setup on their own. # Running chown in that case (as non-root) will cause error -[ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ] && chown -R ${PUID}:${PGID} /app +[ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ] && chown -R ${PUID}:${PGID} /app/config /app/public # Drop privileges (when asked to) if root, otherwise run as current user if [ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ]; then diff --git a/docs/configs/settings.md b/docs/configs/settings.md index 93aa7f8f1..c1605f4db 100644 --- a/docs/configs/settings.md +++ b/docs/configs/settings.md @@ -78,7 +78,7 @@ background: You can apply a blur filter to the service & bookmark cards. Note this option is incompatible with the background blur, saturate and brightness filters. ```yaml -cardBlur: sm # sm, "", md, etc... see https://tailwindcss.com/docs/backdrop-blur +cardBlur: xs # xs, md, etc... see https://tailwindcss.com/docs/backdrop-blur ``` ## Favicon @@ -254,15 +254,29 @@ layout: columns: 4 ``` -### Five Columns +### Full Width -You can add a fifth column to services (when `style: columns` which is default) by adding: +You can make homepage take up the entire window width by adding: ```yaml -fiveColumns: true +fullWidth: true ``` -By default homepage will max out at 4 columns for services with `columns` style +### Maximum Group Columns + +You can set the maximum number of columns of groups on larger screen sizes (note this is only for groups with the default `style: columns`, not groups with `stle: row`) by adding: + +```yaml +maxGroupColumns: 8 # default is 4 for services, 6 for bookmarks, max 8 +``` + +By default homepage will max out at 4 columns for services and 6 for bookmarks, thus the minimum for this setting is _5_. Of course, if you're setting this to higher numbers, you may want to consider enabling the [fullWidth](#full-width) option as well. + +If you want to set the maximum columns for bookmark groups separately, you can do so by adding: + +```yaml +maxBookmarkGroupColumns: 6 # default is 6, max 8 +``` ### Collapsible sections diff --git a/docs/troubleshooting/index.md b/docs/troubleshooting/index.md index 7f73f2dd5..815504390 100644 --- a/docs/troubleshooting/index.md +++ b/docs/troubleshooting/index.md @@ -70,7 +70,9 @@ If, after correctly adding and mapping your custom icons via the [Icons](../conf ## Disabling IPv6 -If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), you may need to disable IPv6 on your host machine. This can be done by adding the following to your `docker-compose.yml` file (or for docker run, the equivalent flag): +If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), in certain setups you may need to disable IPv6. You can set the environment variable `HOMEPAGE_PROXY_DISABLE_IPV6` to `true` to disable IPv6 for the homepage proxy. + +Alternatively, you can use the `sysctls` option in your docker-compose file to disable IPv6 for the homepage container completely: ```yaml services: @@ -79,12 +81,3 @@ services: sysctls: - net.ipv6.conf.all.disable_ipv6=1 ``` - -or disable IPv6 for the docker network: - -```yaml -networks: - some_network: - driver: bridge - enable_ipv6: false -``` diff --git a/docs/widgets/services/customapi.md b/docs/widgets/services/customapi.md index 0deb8294e..70947a101 100644 --- a/docs/widgets/services/customapi.md +++ b/docs/widgets/services/customapi.md @@ -19,27 +19,22 @@ widget: requestBody: # optional, can be string or object, see below display: # optional, default to block, see below mappings: - - field: key # needs to be YAML string or object + - field: key label: Field 1 format: text # optional - defaults to text - - field: # needs to be YAML string or object - path: - to: key2 + - field: path.to.key2 format: number # optional - defaults to text label: Field 2 - - field: # needs to be YAML string or object - path: - to: - another: key3 + - field: path.to.another.key3 label: Field 3 format: percent # optional - defaults to text - - field: key # needs to be YAML string or object + - field: key label: Field 4 format: date # optional - defaults to text locale: nl # optional dateStyle: long # optional - defaults to "long". Allowed values: `["full", "long", "medium", "short"]`. timeStyle: medium # optional - Allowed values: `["full", "long", "medium", "short"]`. - - field: key # needs to be YAML string or object + - field: key label: Field 5 format: relativeDate # optional - defaults to text locale: nl # optional @@ -49,9 +44,7 @@ widget: label: Field 6 format: text additionalField: # optional - field: - hourly: - time: other key + field: hourly.time.key color: theme # optional - defaults to "". Allowed values: `["theme", "adaptive", "black", "white"]`. format: date # optional - field: key @@ -103,9 +96,16 @@ mappings: label: Name - field: status # Alive label: Status - - field: - origin: name # Earth (C-137) + - field: origin.name # Earth (C-137) label: Origin + - field: locations.1.name # Citadel of Ricks + label: Location +``` + +Note that older versions of the widget accepted fields as a yaml object, which is still supported. E.g.: + +```yaml +mappings: - field: locations: 1: name # Citadel of Ricks @@ -138,7 +138,15 @@ You can manipulate data with the following tools `remap`, `scale`, `prefix` and prefix: "$" ``` -## List View +## Display Options + +The widget supports different display modes that can be set using the `display` property. + +### Block View (Default) + +The default display mode is `block`, which shows fields in a block format. + +### List View You can change the default block view to a list view by setting the `display` option to `list`. @@ -162,13 +170,53 @@ The list view can optionally display an additional field next to the primary fie - any: true # will map all other values to: Unknown additionalField: - field: - hourly: - time: key + field: hourly.time.key color: theme format: date ``` +### Dynamic List View + +To display a list of items from an array in the API response, set the `display` property to `dynamic-list` and configure the `mappings` object with the following properties: + +```yaml +widget: + type: customapi + url: https://example.com/api/servers + display: dynamic-list + mappings: + items: data # optional, the path to the array in the API response. Omit this option if the array is at the root level + name: id # required, field in each item to use as the item name (left side) + label: ip_address # required, field in each item to use as the item label (right side) + limit: 5 # optional, limit the number of items to display + target: https://example.com/server/{id} # optional, makes items clickable with template support +``` + +This configuration would work with an API that returns a response like: + +```json +{ + "data": [ + { "id": "server1", "name": "Server 1", "ip_address": "192.168.0.1" }, + { "id": "server2", "name": "Server 2", "ip_address": "192.168.0.2" } + ] +} +``` + +The widget would display a list with two items: + +- "Server 1" on the left and "192.168.0.1" on the right, clickable to "https://example.com/server/server1" +- "Server 2" on the left and "192.168.0.2" on the right, clickable to "https://example.com/server/server2" + +For nested fields in the items, you can use dot notation: + +```yaml +mappings: + items: data.results.servers + name: details.id + label: details.name +``` + ## Custom Headers Pass custom headers using the `headers` option, for example: diff --git a/docs/widgets/services/gitea.md b/docs/widgets/services/gitea.md index 140c4ee7d..eb47849de 100644 --- a/docs/widgets/services/gitea.md +++ b/docs/widgets/services/gitea.md @@ -7,7 +7,7 @@ Learn more about [Gitea](https://gitea.com). API token requires `notifications`, `repository` and `issue` permissions. See the [gitea documentation](https://docs.gitea.com/development/api-usage#generating-and-listing-api-tokens) for details on generating tokens. -Allowed fields: `["notifications", "issues", "pulls"]`. +Allowed fields: `["repositories", "notifications", "issues", "pulls"]`. ```yaml widget: diff --git a/docs/widgets/services/index.md b/docs/widgets/services/index.md index 15caadc2e..beb6d4917 100644 --- a/docs/widgets/services/index.md +++ b/docs/widgets/services/index.md @@ -117,6 +117,7 @@ You can also find a list of all available service widgets in the sidebar navigat - [ruTorrent](rutorrent.md) - [SABnzbd](sabnzbd.md) - [Scrutiny](scrutiny.md) +- [Slskd](slskd.md) - [Sonarr](sonarr.md) - [Speedtest Tracker](speedtest-tracker.md) - [Stash](stash.md) diff --git a/docs/widgets/services/slskd.md b/docs/widgets/services/slskd.md new file mode 100644 index 000000000..7afb07605 --- /dev/null +++ b/docs/widgets/services/slskd.md @@ -0,0 +1,25 @@ +--- +title: Slskd +description: Slskd Widget Configuration +--- + +Learn more about [Slskd](https://github.com/slskd/slskd). + +Generate an API key for slskd with `openssl rand -base64 48`. +Add it to your `path/to/config/slskd.yml` in `web > authentication > api_keys`: + +```yaml +homepage_widget: + key: + role: readonly + cidr: +``` + +Allowed fields: `["slskStatus", "updateStatus", "downloads", "uploads", "sharedFiles"]` (maximum of 4). + +```yaml +widget: + type: slskd + url: http[s]://slskd.host.or.ip[:5030] + key: generatedapikey +``` diff --git a/package.json b/package.json index 44fc1b354..209aea33d 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "luxon": "^3.5.0", "memory-cache": "^0.2.0", "minecraftstatuspinger": "^1.2.2", - "next": "^15.1.7", + "next": "^15.2.3", "next-i18next": "^12.1.0", "ping": "^0.4.4", "pretty-bytes": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b5c5910f..2848e2391 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,11 +51,11 @@ importers: specifier: ^1.2.2 version: 1.2.2 next: - specifier: ^15.1.7 - version: 15.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^15.2.3 + version: 15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-i18next: specifier: ^12.1.0 - version: 12.1.0(next@15.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.1.0(next@15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ping: specifier: ^0.4.4 version: 0.4.4 @@ -101,6 +101,10 @@ importers: xml-js: specifier: ^1.6.11 version: 1.6.11 + optionalDependencies: + osx-temperature-sensor: + specifier: ^1.0.8 + version: 1.0.8 devDependencies: '@tailwindcss/forms': specifier: ^0.5.10 @@ -147,10 +151,6 @@ importers: typescript: specifier: ^5.7.3 version: 5.7.3 - optionalDependencies: - osx-temperature-sensor: - specifier: ^1.0.8 - version: 1.0.8 packages: @@ -376,56 +376,56 @@ packages: '@kubernetes/client-node@1.0.0': resolution: {integrity: sha512-a8NSvFDSHKFZ0sR1hbPSf8IDFNJwctEU5RodSCNiq/moRXWmrdmqhb1RRQzF+l+TSBaDgHw3YsYNxxE92STBzw==} - '@next/env@15.1.7': - resolution: {integrity: sha512-d9jnRrkuOH7Mhi+LHav2XW91HOgTAWHxjMPkXMGBc9B2b7614P7kjt8tAplRvJpbSt4nbO1lugcT/kAaWzjlLQ==} + '@next/env@15.2.3': + resolution: {integrity: sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==} '@next/eslint-plugin-next@15.1.7': resolution: {integrity: sha512-kRP7RjSxfTO13NE317ek3mSGzoZlI33nc/i5hs1KaWpK+egs85xg0DJ4p32QEiHnR0mVjuUfhRIun7awqfL7pQ==} - '@next/swc-darwin-arm64@15.1.7': - resolution: {integrity: sha512-hPFwzPJDpA8FGj7IKV3Yf1web3oz2YsR8du4amKw8d+jAOHfYHYFpMkoF6vgSY4W6vB29RtZEklK9ayinGiCmQ==} + '@next/swc-darwin-arm64@15.2.3': + resolution: {integrity: sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.1.7': - resolution: {integrity: sha512-2qoas+fO3OQKkU0PBUfwTiw/EYpN+kdAx62cePRyY1LqKtP09Vp5UcUntfZYajop5fDFTjSxCHfZVRxzi+9FYQ==} + '@next/swc-darwin-x64@15.2.3': + resolution: {integrity: sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.1.7': - resolution: {integrity: sha512-sKLLwDX709mPdzxMnRIXLIT9zaX2w0GUlkLYQnKGoXeWUhcvpCrK+yevcwCJPdTdxZEUA0mOXGLdPsGkudGdnA==} + '@next/swc-linux-arm64-gnu@15.2.3': + resolution: {integrity: sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.1.7': - resolution: {integrity: sha512-zblK1OQbQWdC8fxdX4fpsHDw+VSpBPGEUX4PhSE9hkaWPrWoeIJn+baX53vbsbDRaDKd7bBNcXRovY1hEhFd7w==} + '@next/swc-linux-arm64-musl@15.2.3': + resolution: {integrity: sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.1.7': - resolution: {integrity: sha512-GOzXutxuLvLHFDAPsMP2zDBMl1vfUHHpdNpFGhxu90jEzH6nNIgmtw/s1MDwpTOiM+MT5V8+I1hmVFeAUhkbgQ==} + '@next/swc-linux-x64-gnu@15.2.3': + resolution: {integrity: sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.1.7': - resolution: {integrity: sha512-WrZ7jBhR7ATW1z5iEQ0ZJfE2twCNSXbpCSaAunF3BKcVeHFADSI/AW1y5Xt3DzTqPF1FzQlwQTewqetAABhZRQ==} + '@next/swc-linux-x64-musl@15.2.3': + resolution: {integrity: sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.1.7': - resolution: {integrity: sha512-LDnj1f3OVbou1BqvvXVqouJZKcwq++mV2F+oFHptToZtScIEnhNRJAhJzqAtTE2dB31qDYL45xJwrc+bLeKM2Q==} + '@next/swc-win32-arm64-msvc@15.2.3': + resolution: {integrity: sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.1.7': - resolution: {integrity: sha512-dC01f1quuf97viOfW05/K8XYv2iuBgAxJZl7mbCKEjMgdQl5JjAKJ0D2qMKZCgPWDeFbFT0Q0nYWwytEW0DWTQ==} + '@next/swc-win32-x64-msvc@15.2.3': + resolution: {integrity: sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -882,8 +882,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001700: - resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} + caniuse-lite@1.0.30001706: + resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1955,6 +1955,11 @@ packages: nan@2.22.0: resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1970,8 +1975,8 @@ packages: next: '>= 10.0.0' react: '>= 16.8.0' - next@15.1.7: - resolution: {integrity: sha512-GNeINPGS9c6OZKCvKypbL8GTsT5GhWPp4DM0fzkXJuXMilOO2EeFxuAY6JZbtk6XIl6Ws10ag3xRINDjSO5+wg==} + next@15.2.3: + resolution: {integrity: sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -2977,34 +2982,34 @@ snapshots: - encoding - utf-8-validate - '@next/env@15.1.7': {} + '@next/env@15.2.3': {} '@next/eslint-plugin-next@15.1.7': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.1.7': + '@next/swc-darwin-arm64@15.2.3': optional: true - '@next/swc-darwin-x64@15.1.7': + '@next/swc-darwin-x64@15.2.3': optional: true - '@next/swc-linux-arm64-gnu@15.1.7': + '@next/swc-linux-arm64-gnu@15.2.3': optional: true - '@next/swc-linux-arm64-musl@15.1.7': + '@next/swc-linux-arm64-musl@15.2.3': optional: true - '@next/swc-linux-x64-gnu@15.1.7': + '@next/swc-linux-x64-gnu@15.2.3': optional: true - '@next/swc-linux-x64-musl@15.1.7': + '@next/swc-linux-x64-musl@15.2.3': optional: true - '@next/swc-win32-arm64-msvc@15.1.7': + '@next/swc-win32-arm64-msvc@15.2.3': optional: true - '@next/swc-win32-x64-msvc@15.1.7': + '@next/swc-win32-x64-msvc@15.2.3': optional: true '@nodelib/fs.scandir@2.1.5': @@ -3486,7 +3491,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001700: {} + caniuse-lite@1.0.30001706: {} chalk@4.1.2: dependencies: @@ -4684,11 +4689,13 @@ snapshots: nan@2.22.0: optional: true + nanoid@3.3.11: {} + nanoid@3.3.8: {} natural-compare@1.4.0: {} - next-i18next@12.1.0(next@15.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-i18next@12.1.0(next@15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.26.9 '@types/hoist-non-react-statics': 3.3.6 @@ -4696,33 +4703,33 @@ snapshots: hoist-non-react-statics: 3.3.2 i18next: 21.10.0 i18next-fs-backend: 1.2.0 - next: 15.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + next: 15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-i18next: 11.18.6(i18next@21.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react-dom - react-native - next@15.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@15.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 15.1.7 + '@next/env': 15.2.3 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001700 + caniuse-lite: 1.0.30001706 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.6(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.7 - '@next/swc-darwin-x64': 15.1.7 - '@next/swc-linux-arm64-gnu': 15.1.7 - '@next/swc-linux-arm64-musl': 15.1.7 - '@next/swc-linux-x64-gnu': 15.1.7 - '@next/swc-linux-x64-musl': 15.1.7 - '@next/swc-win32-arm64-msvc': 15.1.7 - '@next/swc-win32-x64-msvc': 15.1.7 + '@next/swc-darwin-arm64': 15.2.3 + '@next/swc-darwin-x64': 15.2.3 + '@next/swc-linux-arm64-gnu': 15.2.3 + '@next/swc-linux-arm64-musl': 15.2.3 + '@next/swc-linux-x64-gnu': 15.2.3 + '@next/swc-linux-x64-musl': 15.2.3 + '@next/swc-win32-arm64-msvc': 15.2.3 + '@next/swc-win32-x64-msvc': 15.2.3 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' @@ -4860,7 +4867,7 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 diff --git a/public/locales/af/common.json b/public/locales/af/common.json index 20f3d1705..bf1e5f9cb 100644 --- a/public/locales/af/common.json +++ b/public/locales/af/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Kennisgewings", "issues": "Kwessies", - "pulls": "Trek Versoeke" + "pulls": "Trek Versoeke", + "repositories": "Bewaarplekke" }, "stash": { "scenes": "Tonele", @@ -1024,11 +1025,22 @@ "timeleft": "Oorblywende Tyd" }, "hoarder": { - "bookmarks": "Bookmarks", - "favorites": "Favorites", - "archived": "Archived", - "highlights": "Highlights", - "lists": "Lists", + "bookmarks": "Boekmerke", + "favorites": "Gunstelinge", + "archived": "Geargiveer", + "highlights": "Hoogtepunte", + "lists": "Lyste", "tags": "Merkers" + }, + "slskd": { + "slskStatus": "Netwerk", + "connected": "Gekoppel", + "disconnected": "Ontkoppel", + "updateStatus": "Opdateer", + "update_yes": "Beskikbaar", + "update_no": "Op Datum", + "downloads": "Aflaaie", + "uploads": "Oplaaie", + "sharedFiles": "Lêers" } } diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 7c7344f86..baa4d5930 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "الإشعارات", "issues": "المُشكِلات", - "pulls": "طلبات السحب" + "pulls": "طلبات السحب", + "repositories": "Repositories" }, "stash": { "scenes": "المشاهد", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "التصنيفات" + }, + "slskd": { + "slskStatus": "الشبكة", + "connected": "متصل", + "disconnected": "غير متصل", + "updateStatus": "Update", + "update_yes": "متاح", + "update_no": "حتى الآن", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "ملفات" } } diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 74505cc69..3c721bceb 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Известия", "issues": "Издания", - "pulls": "Заявки за сливане" + "pulls": "Заявки за сливане", + "repositories": "Repositories" }, "stash": { "scenes": "Сцени", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Тагове" + }, + "slskd": { + "slskStatus": "Мрежа", + "connected": "Свързан", + "disconnected": "Не е свързан", + "updateStatus": "Update", + "update_yes": "Наличен", + "update_no": "Актуално", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Файлове" } } diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 620a0df58..07b1f6118 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notificacions", "issues": "Problemes", - "pulls": "Sol·licitud de Canvis" + "pulls": "Sol·licitud de Canvis", + "repositories": "Repositories" }, "stash": { "scenes": "Escenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Etiquetes" + }, + "slskd": { + "slskStatus": "Xarxa", + "connected": "Connectat", + "disconnected": "Desconnectat", + "updateStatus": "Update", + "update_yes": "Disponible", + "update_no": "Actualitzat", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Fitxers" } } diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 31c7921ad..e9a8061d5 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Problémy", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "", + "disconnected": "Odpojeno", + "updateStatus": "Update", + "update_yes": "Dostupné", + "update_no": "Žádné", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Soubory" } } diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 8a354b914..901d0ce4a 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Problemer", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Tilgængelig", + "update_no": "Opdateret", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Filer" } } diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 69c0fe7c2..94fb91aac 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -447,7 +447,7 @@ "write": "Schreiben", "gpu": "GPU", "mem": "RAM", - "swap": "Swap" + "swap": "Auslagerung" }, "quicklaunch": { "bookmark": "Lesezeichen", @@ -885,7 +885,8 @@ "gitea": { "notifications": "Benachrichtigungen", "issues": "Probleme", - "pulls": "Pull-Requests" + "pulls": "Pull-Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Szenen", @@ -1024,11 +1025,22 @@ "timeleft": "Verbleibende Zeit" }, "hoarder": { - "bookmarks": "Bookmarks", - "favorites": "Favorites", - "archived": "Archived", + "bookmarks": "Lesezeichen", + "favorites": "Favoriten", + "archived": "Archiviert", "highlights": "Highlights", - "lists": "Lists", + "lists": "Listen", "tags": "Schlagwörter" + }, + "slskd": { + "slskStatus": "Netzwerk", + "connected": "Verbunden", + "disconnected": "Getrennt", + "updateStatus": "Update", + "update_yes": "Verfügbar", + "update_no": "Aktuell", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Dateien" } } diff --git a/public/locales/el/common.json b/public/locales/el/common.json index c582f49fd..b1cbe307c 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Ετικέτες" + }, + "slskd": { + "slskStatus": "Δίκτυο", + "connected": "Συνδέθηκε", + "disconnected": "Αποσυνδέθηκε", + "updateStatus": "Update", + "update_yes": "Διαθέσιμο", + "update_no": "Ενημερωμένο", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Αρχεία" } } diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 2bc4cf9c0..4a9c33d54 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -883,9 +883,10 @@ "species": "Species" }, "gitea": { - "notifications": "Notifications", - "issues": "Issues", - "pulls": "Pull Requests" + "notifications": "Notifications", + "issues": "Issues", + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Available", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 8a7bb8316..908bd124d 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Havebla", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 9d23e3436..a5ac67ed9 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notificaciones", "issues": "Números", - "pulls": "Solicitudes de cambios" + "pulls": "Solicitudes de cambios", + "repositories": "Repositories" }, "stash": { "scenes": "Escenas", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Etiquetas" + }, + "slskd": { + "slskStatus": "Red", + "connected": "Conectado", + "disconnected": "Desconectado", + "updateStatus": "Update", + "update_yes": "Disponible", + "update_no": "Actualizado", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Archivos" } } diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index f935b928d..f0654ebbe 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Jakinarazpenak", "issues": "Arazoak", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Zerrendak", "tags": "Etiketak" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Konektatuta", + "disconnected": "Deskonektatuta", + "updateStatus": "Update", + "update_yes": "Available", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 782bc2c4c..b1ff23b41 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Saatavilla", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 191706b26..f0cd54f6c 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -149,8 +149,8 @@ "received": "Reçu", "sent": "Envoyé", "externalIPAddress": "IP externe", - "externalIPv6Address": "Ext. IPv6", - "externalIPv6Prefix": "Ext. IPv6-Prefix" + "externalIPv6Address": "IPv6 externe", + "externalIPv6Prefix": "Préfixe IPv6 externe" }, "caddy": { "upstreams": "En amont", @@ -178,7 +178,7 @@ "connectedAp": "AP connectés", "activeUser": "Périphériques actifs", "alerts": "Alertes", - "connectedGateways": "Connected gateways", + "connectedGateways": "Passerelles connectées", "connectedSwitches": "Switchs connectés" }, "nzbget": { @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Anomalies", - "pulls": "Demandes de tirage" + "pulls": "Demandes de tirage", + "repositories": "Repositories" }, "stash": { "scenes": "Scènes", @@ -1024,11 +1025,22 @@ "timeleft": "Temps restant" }, "hoarder": { - "bookmarks": "Bookmarks", - "favorites": "Favorites", - "archived": "Archived", + "bookmarks": "Marque-pages", + "favorites": "Favoris", + "archived": "Archivé", "highlights": "Highlights", - "lists": "Lists", + "lists": "Listes", "tags": "Étiquettes" + }, + "slskd": { + "slskStatus": "Réseau", + "connected": "Connecté", + "disconnected": "Déconnecté", + "updateStatus": "Mise à jour", + "update_yes": "Disponible", + "update_no": "À jour", + "downloads": "Téléchargements", + "uploads": "Téléversements", + "sharedFiles": "Fichiers" } } diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 57ce66b92..2751430c1 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "זמין", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 0744578a2..19f419cdd 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Available", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 31f92935f..2b1c013c7 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Obavijesti", "issues": "Problemi", - "pulls": "Zahtjevi za povlačenje" + "pulls": "Zahtjevi za povlačenje", + "repositories": "Repositories" }, "stash": { "scenes": "Scene", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Oznake" + }, + "slskd": { + "slskStatus": "Mreža", + "connected": "Povezano", + "disconnected": "Odspojeno", + "updateStatus": "Update", + "update_yes": "Dostupno", + "update_no": "Aktualno", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Datoteke" } } diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index e21689aa5..f6b5e183c 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Üzenetek", "issues": "Problémák", - "pulls": "Pull request-ek" + "pulls": "Pull request-ek", + "repositories": "Repositories" }, "stash": { "scenes": "Jelenetek", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Címkék" + }, + "slskd": { + "slskStatus": "Hálózat", + "connected": "Csatlakozva", + "disconnected": "Kapcsolat bontva", + "updateStatus": "Update", + "update_yes": "Elérhető", + "update_no": "Naprakész", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Fájlok" } } diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 7d049bec2..fa4d64591 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -342,7 +342,7 @@ "totalNxDomain": "Domain NX", "totalRefused": "Ditolak", "totalAuthoritative": "Authoritative", - "totalRecursive": "Recursive", + "totalRecursive": "Rekursif", "totalCached": "Cached", "totalBlocked": "Terblokir", "totalDropped": "Dropped", @@ -705,8 +705,8 @@ "time": "Waktu" }, "firefly": { - "networth": "Net Worth", - "budget": "Budget" + "networth": "Kekayaan Bersih", + "budget": "Anggaran" }, "grafana": { "dashboards": "Dasbor", @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifikasi", "issues": "Isu", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Adegan", @@ -965,7 +966,7 @@ "lubelogger": { "vehicle": "Kendaraan", "vehicles": "Kendaraan", - "serviceRecords": "Service Records", + "serviceRecords": "Catatan Servis", "reminders": "Pengingat", "nextReminder": "Pengingat Berikutnya", "none": "Tidak ada" @@ -1024,11 +1025,22 @@ "timeleft": "Sisa Waktu" }, "hoarder": { - "bookmarks": "Bookmarks", - "favorites": "Favorites", - "archived": "Archived", - "highlights": "Highlights", - "lists": "Lists", + "bookmarks": "Markah", + "favorites": "Favorit", + "archived": "Diarsipkan", + "highlights": "Sorotan", + "lists": "Daftar", "tags": "Tag" + }, + "slskd": { + "slskStatus": "Jaringan", + "connected": "Tersambung", + "disconnected": "Terputus", + "updateStatus": "Update", + "update_yes": "Tersedia", + "update_no": "Terbaru", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "File" } } diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 3d0dc4500..4b0672f9e 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifiche", "issues": "Problemi", - "pulls": "Richieste di Pull" + "pulls": "Richieste di Pull", + "repositories": "Repositories" }, "stash": { "scenes": "Scene", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tag" + }, + "slskd": { + "slskStatus": "Rete", + "connected": "Connesso", + "disconnected": "Disconnesso", + "updateStatus": "Update", + "update_yes": "Disponibili", + "update_no": "Aggiornato", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "File" } } diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 020d7d3b9..58869e846 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "通知", "issues": "課題", - "pulls": "プルリクエスト" + "pulls": "プルリクエスト", + "repositories": "Repositories" }, "stash": { "scenes": "シーン", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "タグ" + }, + "slskd": { + "slskStatus": "ネットワーク", + "connected": "接続済", + "disconnected": "切断されました", + "updateStatus": "Update", + "update_yes": "利用可", + "update_no": "最新", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "ファイル" } } diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 00ff2ea1b..5f5523ff2 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "알림", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "장면", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "태그" + }, + "slskd": { + "slskStatus": "네트워크", + "connected": "연결됨", + "disconnected": "연결 끊김", + "updateStatus": "Update", + "update_yes": "이용 가능", + "update_no": "최신 상태", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "파일" } } diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 538febf18..85d9a359e 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Available", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index ba32381f9..4ebfd6d8a 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Adegan", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tanda nama" + }, + "slskd": { + "slskStatus": "Rangkaian", + "connected": "Connected", + "disconnected": "Sambungan Terputus", + "updateStatus": "Update", + "update_yes": "Sudah Ada", + "update_no": "Terkemaskini", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index dfa15f100..e26ad05ed 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notificaties", "issues": "Problemen", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scènes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Label" + }, + "slskd": { + "slskStatus": "Netwerk", + "connected": "Verbonden", + "disconnected": "Verbinding verbroken", + "updateStatus": "Update", + "update_yes": "Beschikbaar", + "update_no": "Bijgewerkt", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Bestanden" } } diff --git a/public/locales/no/common.json b/public/locales/no/common.json index b179110bc..67710fe11 100644 --- a/public/locales/no/common.json +++ b/public/locales/no/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Varslinger", "issues": "Issues", - "pulls": "Forespørsel" + "pulls": "Forespørsel", + "repositories": "Repositories" }, "stash": { "scenes": "Scener", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Stikkord" + }, + "slskd": { + "slskStatus": "Nettverk", + "connected": "Tilkoblet", + "disconnected": "Frakoblet", + "updateStatus": "Update", + "update_yes": "Tilgjengelig", + "update_no": "Oppdatert", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 9d669f8ad..1316d5c9b 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Powiadomienia", "issues": "Zgłoszenia", - "pulls": "Żądania Pull" + "pulls": "Żądania Pull", + "repositories": "Repositories" }, "stash": { "scenes": "Sceny", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tagi" + }, + "slskd": { + "slskStatus": "Sieć", + "connected": "Połączono", + "disconnected": "Rozłączono", + "updateStatus": "Update", + "update_yes": "Dostępne", + "update_no": "Aktualny", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Pliki" } } diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 66439545c..acbf2d96f 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notificações", "issues": "Problemas", - "pulls": "Solicitar pull" + "pulls": "Solicitar pull", + "repositories": "Repositories" }, "stash": { "scenes": "Cenas", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Etiquetas" + }, + "slskd": { + "slskStatus": "Rede", + "connected": "Conectado", + "disconnected": "Desconectado", + "updateStatus": "Update", + "update_yes": "Disponível", + "update_no": "Atualizado", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Ficheiros" } } diff --git a/public/locales/pt_BR/common.json b/public/locales/pt_BR/common.json index 23c5c3dc3..92a1dfcf8 100644 --- a/public/locales/pt_BR/common.json +++ b/public/locales/pt_BR/common.json @@ -47,7 +47,7 @@ "load": "Carga", "temp": "TEMP", "max": "Máximo", - "uptime": "CIMA" + "uptime": "ATIVO" }, "unifi": { "users": "Usuários", @@ -61,7 +61,7 @@ "wlan_devices": "Dispositivos WLAN", "lan_users": "Usuários de LAN", "wlan_users": "Usuários de WLAN", - "up": "CIMA", + "up": "ATIVO", "down": "Desligado", "wait": "Por favor, aguarde", "empty_data": "Status do Subsistema desconhecido" @@ -149,8 +149,8 @@ "received": "Recebido", "sent": "Enviado", "externalIPAddress": "IP Externo", - "externalIPv6Address": "Ext. IPv6", - "externalIPv6Prefix": "Ext. IPv6-Prefix" + "externalIPv6Address": "IPv6 Externo", + "externalIPv6Prefix": "Prefixo IPv6 Externo" }, "caddy": { "upstreams": "Streams de Envio", @@ -178,7 +178,7 @@ "connectedAp": "APs Ligados", "activeUser": "Dispositivos ativos", "alerts": "Alertas", - "connectedGateways": "Connected gateways", + "connectedGateways": "Gateways conectados", "connectedSwitches": "Switches conectados" }, "nzbget": { @@ -229,8 +229,8 @@ "seed": "Semente" }, "develancacheui": { - "cachehitbytes": "Cache Hit Bytes", - "cachemissbytes": "Cache Miss Bytes" + "cachehitbytes": "Bytes de Acerto de Cache", + "cachemissbytes": "Bytes de Falha de Cache" }, "downloadstation": { "download": "Descarregar", @@ -313,13 +313,13 @@ }, "suwayomi": { "download": "Baixado", - "nondownload": "Non-Downloaded", + "nondownload": "Não Baixado", "read": "Lido", "unread": "Não lida", - "downloadedread": "Downloaded & Read", - "downloadedunread": "Downloaded & Unread", - "nondownloadedread": "Non-Downloaded & Read", - "nondownloadedunread": "Non-Downloaded & Unread" + "downloadedread": "Baixado e Lido", + "downloadedunread": "Baixado e Não Lido", + "nondownloadedread": "Não Baixado e Lido", + "nondownloadedunread": "Não Baixado e Não Lido" }, "tailscale": { "address": "Endereço", @@ -337,15 +337,15 @@ }, "technitium": { "totalQueries": "Consultas", - "totalNoError": "Success", - "totalServerFailure": "Failures", - "totalNxDomain": "NX Domains", - "totalRefused": "Refused", - "totalAuthoritative": "Authoritative", - "totalRecursive": "Recursive", - "totalCached": "Cached", + "totalNoError": "Sucesso", + "totalServerFailure": "Falhas", + "totalNxDomain": "Domínios NX", + "totalRefused": "Recusado", + "totalAuthoritative": "Autoritativo", + "totalRecursive": "Recursivo", + "totalCached": "Em cache", "totalBlocked": "Bloqueado", - "totalDropped": "Dropped", + "totalDropped": "Perdidos", "totalClients": "Clientes" }, "tdarr": { @@ -436,7 +436,7 @@ "temp": "TEMP", "_temp": "Temperatura", "warn": "Aviso", - "uptime": "CIMA", + "uptime": "ATIVO", "total": "Total", "free": "Livre", "used": "Utilizado", @@ -705,8 +705,8 @@ "time": "Hora" }, "firefly": { - "networth": "Net Worth", - "budget": "Budget" + "networth": "Valor Líquido", + "budget": "Orçamento" }, "grafana": { "dashboards": "Painéis", @@ -860,16 +860,16 @@ }, "romm": { "platforms": "Plataformas", - "totalRoms": "Games", + "totalRoms": "Jogos", "saves": "Saves", - "states": "States", - "screenshots": "Screenshots", - "totalfilesize": "Total Size" + "states": "Estados", + "screenshots": "Capturas de Tela", + "totalfilesize": "Tamanho total" }, "mailcow": { "domains": "Domínios", - "mailboxes": "Mailboxes", - "mails": "Mails", + "mailboxes": "Caixas de e-mail", + "mails": "Mensagens", "storage": "Armazenamento" }, "netdata": { @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notificações", "issues": "Problemas", - "pulls": "Solicitações de Envio" + "pulls": "Solicitações de Envio", + "repositories": "Repositories" }, "stash": { "scenes": "Cenas", @@ -951,30 +952,30 @@ }, "linkwarden": { "links": "Links", - "collections": "Collections", + "collections": "Coleções", "tags": "Marcadores" }, "zabbix": { - "unclassified": "Not classified", + "unclassified": "Não classificado", "information": "Informação", - "warning": "Warning", - "average": "Average", - "high": "High", - "disaster": "Disaster" + "warning": "Aviso", + "average": "Médio", + "high": "Alto", + "disaster": "Desastre" }, "lubelogger": { - "vehicle": "Vehicle", - "vehicles": "Vehicles", - "serviceRecords": "Service Records", - "reminders": "Reminders", - "nextReminder": "Next Reminder", - "none": "None" + "vehicle": "Veículo", + "vehicles": "Veículos", + "serviceRecords": "Registros de Serviço", + "reminders": "Lembretes", + "nextReminder": "Próximo Lembrete", + "none": "Nenhum" }, "vikunja": { - "projects": "Active Projects", - "tasks7d": "Tasks Due This Week", - "tasksOverdue": "Overdue Tasks", - "tasksInProgress": "Tasks In Progress" + "projects": "Projetos Ativos", + "tasks7d": "Tarefas que vencem nesta semana", + "tasksOverdue": "Tarefas Atrasadas", + "tasksInProgress": "Tarefas em Andamento" }, "headscale": { "name": "Nome", @@ -986,7 +987,7 @@ }, "beszel": { "name": "Nome", - "systems": "Systems", + "systems": "Sistemas", "up": "Ativo", "down": "Inativo", "paused": "Pausado", @@ -995,27 +996,27 @@ "updated": "Atualizado", "cpu": "CPU", "memory": "MEM", - "disk": "Disk", - "network": "NET" + "disk": "Disco", + "network": "Rede" }, "argocd": { - "apps": "Apps", - "synced": "Synced", - "outOfSync": "Out Of Sync", + "apps": "Aplicativos", + "synced": "Sincronizado", + "outOfSync": "Fora de sincronia", "healthy": "Saudável", - "degraded": "Degraded", - "progressing": "Progressing", + "degraded": "Degradado", + "progressing": "Progredindo", "missing": "Faltando", - "suspended": "Suspended" + "suspended": "Suspenso" }, "spoolman": { "loading": "Carregando" }, "gitlab": { - "groups": "Groups", + "groups": "Grupos", "issues": "Problemas", - "merges": "Merge Requests", - "projects": "Projects" + "merges": "Solicitações de mesclagem", + "projects": "Projetos" }, "apcups": { "status": "Status", @@ -1024,11 +1025,22 @@ "timeleft": "Tempo restante" }, "hoarder": { - "bookmarks": "Bookmarks", - "favorites": "Favorites", - "archived": "Archived", - "highlights": "Highlights", - "lists": "Lists", + "bookmarks": "Favoritos", + "favorites": "Favoritos", + "archived": "Arquivados", + "highlights": "Destaques", + "lists": "Listas", "tags": "Marcadores" + }, + "slskd": { + "slskStatus": "Rede", + "connected": "Conectado", + "disconnected": "Desconectado", + "updateStatus": "Update", + "update_yes": "Disponível", + "update_no": "Atualizado", + "downloads": "Transferências", + "uploads": "Envios", + "sharedFiles": "Arquivos" } } diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 4d38502dd..b0eb77472 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Disponibile", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 72785a96c..e1e1a94fe 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -149,8 +149,8 @@ "received": "Получено", "sent": "Отправлено", "externalIPAddress": "Внеш. IP", - "externalIPv6Address": "Ext. IPv6", - "externalIPv6Prefix": "Ext. IPv6-Prefix" + "externalIPv6Address": "Внешний IPv6", + "externalIPv6Prefix": "Внешний IPv6 префикс" }, "caddy": { "upstreams": "Входящие каналы", @@ -178,7 +178,7 @@ "connectedAp": "Подключенные точки доступа", "activeUser": "Активные устройства", "alerts": "Предупреждения", - "connectedGateways": "Connected gateways", + "connectedGateways": "Подключенные шлюзы", "connectedSwitches": "Подключенные коммутаторы" }, "nzbget": { @@ -705,8 +705,8 @@ "time": "Время" }, "firefly": { - "networth": "Net Worth", - "budget": "Budget" + "networth": "Общая средства", + "budget": "Бюджет" }, "grafana": { "dashboards": "Панели", @@ -861,7 +861,7 @@ "romm": { "platforms": "Платформы", "totalRoms": "Игры", - "saves": "Сейвы", + "saves": "Сохранения", "states": "Состояния", "screenshots": "Скриншоты", "totalfilesize": "Общий объем" @@ -885,7 +885,8 @@ "gitea": { "notifications": "Уведомления", "issues": "Вопросы", - "pulls": "Запросы на слияние (Pull Request)" + "pulls": "Запросы на слияние (Pull Request)", + "repositories": "Repositories" }, "stash": { "scenes": "Сцены", @@ -927,7 +928,7 @@ "total": "Всего" }, "swagdashboard": { - "proxied": "Прокси", + "proxied": "Проксировано", "auth": "С Авторизацией", "outdated": "Устаревшие", "banned": "Заблокированные" @@ -958,17 +959,17 @@ "unclassified": "Не классифицировано", "information": "Информация", "warning": "Предупреждение", - "average": "Средняя", + "average": "Среднее", "high": "Высокая", - "disaster": "Чрезвычайная" + "disaster": "Чрезвычайное" }, "lubelogger": { - "vehicle": "Автомобиль", - "vehicles": "Автомобили", - "serviceRecords": "Сервисные работы", + "vehicle": "Транспорт", + "vehicles": "Транспорты", + "serviceRecords": "Сервисные записи", "reminders": "Напоминания", "nextReminder": "Следующее напоминание", - "none": "Нет" + "none": "Отсутствует" }, "vikunja": { "projects": "Активные Проекты", @@ -1024,11 +1025,22 @@ "timeleft": "Осталось" }, "hoarder": { - "bookmarks": "Bookmarks", - "favorites": "Favorites", - "archived": "Archived", - "highlights": "Highlights", - "lists": "Lists", + "bookmarks": "Закладки", + "favorites": "Избранное", + "archived": "Архивированное", + "highlights": "События", + "lists": "Список", "tags": "Теги" + }, + "slskd": { + "slskStatus": "Сеть", + "connected": "Подключено", + "disconnected": "Отключено", + "updateStatus": "Обновление", + "update_yes": "Доступно", + "update_no": "Последняя версия", + "downloads": "Скачивания", + "uploads": "Загрузки", + "sharedFiles": "Файлов" } } diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 4272c51ff..9c154ccea 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Oznámenia", "issues": "Problémy", - "pulls": "Pull requesty" + "pulls": "Pull requesty", + "repositories": "Repositories" }, "stash": { "scenes": "Scény", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Štítky" + }, + "slskd": { + "slskStatus": "Sieť", + "connected": "Pripojené", + "disconnected": "Odpojené", + "updateStatus": "Update", + "update_yes": "Dostupné", + "update_no": "Aktuálny", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Súborov" } } diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 34db459df..a32aa0dd2 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Obvestila", "issues": "Težave", - "pulls": "Zahteve za prenos" + "pulls": "Zahteve za prenos", + "repositories": "Repositories" }, "stash": { "scenes": "Scene", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Značke" + }, + "slskd": { + "slskStatus": "Omrežje", + "connected": "Povezan", + "disconnected": "Prekinjeno", + "updateStatus": "Update", + "update_yes": "Na voljo", + "update_no": "Posodobljeno", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Datotek" } } diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index ba50eef1f..4e3f5fb02 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Available", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index ead80b0bc..caa18acd5 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Tillgänglig", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 2cd066a6e..e34d6fae9 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "అందుబాటులో వున్నవి", + "update_no": "తాజాగా", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 42a0b6a20..b37b662d2 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Available", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 40611dac9..815b91507 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Bildirimler", "issues": "Sorunlar", - "pulls": "Değişiklik İstekleri" + "pulls": "Değişiklik İstekleri", + "repositories": "Repositories" }, "stash": { "scenes": "Sahneler", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Etiketler" + }, + "slskd": { + "slskStatus": "Ağ", + "connected": "Bağlandı", + "disconnected": "Bağlantı kesildi", + "updateStatus": "Update", + "update_yes": "Kullanılabilir", + "update_no": "Güncel", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Dosyalar" } } diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 0914c49f2..3412d591c 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Сповіщення", "issues": "Питання", - "pulls": "Pull-запити" + "pulls": "Pull-запити", + "repositories": "Repositories" }, "stash": { "scenes": "Сцени", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Теги" + }, + "slskd": { + "slskStatus": "Мережа", + "connected": "З'єднано", + "disconnected": "Відключено", + "updateStatus": "Update", + "update_yes": "Доступно", + "update_no": "Актуально", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Файли" } } diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index d2753c97d..7e8974f8d 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "Notifications", "issues": "Issues", - "pulls": "Pull Requests" + "pulls": "Pull Requests", + "repositories": "Repositories" }, "stash": { "scenes": "Scenes", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "Network", + "connected": "Connected", + "disconnected": "Disconnected", + "updateStatus": "Update", + "update_yes": "Available", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 64bc1e721..dfe604dd8 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "信息", "issues": "出版", - "pulls": "提取請求" + "pulls": "提取請求", + "repositories": "Repositories" }, "stash": { "scenes": "場景", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "標籤" + }, + "slskd": { + "slskStatus": "網絡", + "connected": "Connected", + "disconnected": "連接已中斷", + "updateStatus": "Update", + "update_yes": "可用", + "update_no": "已更新至最新", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "檔案" } } diff --git a/public/locales/zh-Hans/common.json b/public/locales/zh-Hans/common.json index 5e54cd8d7..064e2c1c8 100644 --- a/public/locales/zh-Hans/common.json +++ b/public/locales/zh-Hans/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "通知", "issues": "问题", - "pulls": "PR" + "pulls": "PR", + "repositories": "Repositories" }, "stash": { "scenes": "场景", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "Tags" + }, + "slskd": { + "slskStatus": "网络", + "connected": "已连接", + "disconnected": "未连接", + "updateStatus": "Update", + "update_yes": "可用", + "update_no": "Up to Date", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "Files" } } diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 5a356009a..eb1f74237 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -885,7 +885,8 @@ "gitea": { "notifications": "信息", "issues": "出版", - "pulls": "提取請求" + "pulls": "提取請求", + "repositories": "Repositories" }, "stash": { "scenes": "場景", @@ -1030,5 +1031,16 @@ "highlights": "Highlights", "lists": "Lists", "tags": "標籤" + }, + "slskd": { + "slskStatus": "網絡", + "connected": "Connected", + "disconnected": "連接已中斷", + "updateStatus": "Update", + "update_yes": "可觀看", + "update_no": "已更新至最新", + "downloads": "Downloads", + "uploads": "Uploads", + "sharedFiles": "檔案" } } diff --git a/src/components/bookmarks/group.jsx b/src/components/bookmarks/group.jsx index d8eb296d4..726f54e8d 100644 --- a/src/components/bookmarks/group.jsx +++ b/src/components/bookmarks/group.jsx @@ -12,6 +12,7 @@ export default function BookmarksGroup({ disableCollapse, groupsInitiallyCollapsed, bookmarksStyle, + maxGroupColumns, }) { const panel = useRef(); @@ -25,6 +26,9 @@ export default function BookmarksGroup({ className={classNames( "bookmark-group flex-1 overflow-hidden", layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/4 lg:basis-1/5 xl:basis-1/6", + layout?.style !== "row" && maxGroupColumns && parseInt(maxGroupColumns, 10) > 6 + ? `3xl:basis-1/${maxGroupColumns}` + : "", layout?.header === false ? "px-1" : "p-1 pb-0", )} > diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index 06fb83e18..3e6327a44 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -10,7 +10,7 @@ import { columnMap } from "../../utils/layout/columns"; export default function ServicesGroup({ group, layout, - fiveColumns, + maxGroupColumns, disableCollapse, useEqualHeights, groupsInitiallyCollapsed, @@ -31,7 +31,7 @@ export default function ServicesGroup({ className={classNames( "services-group flex-1", layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4", - layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "", + layout?.style !== "row" && maxGroupColumns ? `3xl:basis-1/${maxGroupColumns}` : "", groupPadding, isSubgroup ? "subgroup" : "", )} @@ -97,7 +97,7 @@ export default function ServicesGroup({ key={subgroup.name} group={subgroup} layout={layout?.[subgroup.name]} - fiveColumns={fiveColumns} + maxGroupColumns={maxGroupColumns} disableCollapse={disableCollapse} useEqualHeights={useEqualHeights} groupsInitiallyCollapsed={groupsInitiallyCollapsed} diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index 052412d90..c5465a804 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -16,6 +16,7 @@ import nextI18nextConfig from "../../next-i18next.config"; const tailwindSafelist = [ // TODO: remove pending https://github.com/tailwindlabs/tailwindcss/pull/17147 "backdrop-blur", + "backdrop-blur-xs", "backdrop-blur-sm", "backdrop-blur-md", "backdrop-blur-xl", @@ -52,6 +53,11 @@ const tailwindSafelist = [ "dark:bg-white", "bg-orange-400", "dark:bg-orange-400", + // maxGroupColumns + "3xl:basis-1/5", + "3xl:basis-1/6", + "3xl:basis-1/7", + "3xl:basis-1/8", // yep "h-0 h-1 h-2 h-3 h-4 h-5 h-6 h-7 h-8 h-9 h-10 h-11 h-12 h-13 h-14 h-15 h-16 h-17 h-18 h-19 h-20 h-21 h-22 h-23 h-24 h-25 h-26 h-27 h-28 h-29 h-30 h-31 h-32 h-33 h-34 h-35 h-36 h-37 h-38 h-39 h-40 h-41 h-42 h-43 h-44 h-45 h-46 h-47 h-48 h-49 h-50 h-51 h-52 h-53 h-54 h-55 h-56 h-57 h-58 h-59 h-60 h-61 h-62 h-63 h-64 h-65 h-66 h-67 h-68 h-69 h-70 h-71 h-72 h-73 h-74 h-75 h-76 h-77 h-78 h-79 h-80 h-81 h-82 h-83 h-84 h-85 h-86 h-87 h-88 h-89 h-90 h-91 h-92 h-93 h-94 h-95 h-96", "sm:h-0 sm:h-1 sm:h-2 sm:h-3 sm:h-4 sm:h-5 sm:h-6 sm:h-7 sm:h-8 sm:h-9 sm:h-10 sm:h-11 sm:h-12 sm:h-13 sm:h-14 sm:h-15 sm:h-16 sm:h-17 sm:h-18 sm:h-19 sm:h-20 sm:h-21 sm:h-22 sm:h-23 sm:h-24 sm:h-25 sm:h-26 sm:h-27 sm:h-28 sm:h-29 sm:h-30 sm:h-31 sm:h-32 sm:h-33 sm:h-34 sm:h-35 sm:h-36 sm:h-37 sm:h-38 sm:h-39 sm:h-40 sm:h-41 sm:h-42 sm:h-43 sm:h-44 sm:h-45 sm:h-46 sm:h-47 sm:h-48 sm:h-49 sm:h-50 sm:h-51 sm:h-52 sm:h-53 sm:h-54 sm:h-55 sm:h-56 sm:h-57 sm:h-58 sm:h-59 sm:h-60 sm:h-61 sm:h-62 sm:h-63 sm:h-64 sm:h-65 sm:h-66 sm:h-67 sm:h-68 sm:h-69 sm:h-70 sm:h-71 sm:h-72 sm:h-73 sm:h-74 sm:h-75 sm:h-76 sm:h-77 sm:h-78 sm:h-79 sm:h-80 sm:h-81 sm:h-82 sm:h-83 sm:h-84 sm:h-85 sm:h-86 sm:h-87 sm:h-88 sm:h-89 sm:h-90 sm:h-91 sm:h-92 sm:h-93 sm:h-94 sm:h-95 sm:h-96", diff --git a/src/pages/api/releases.js b/src/pages/api/releases.js index f15930c21..372ace9d5 100644 --- a/src/pages/api/releases.js +++ b/src/pages/api/releases.js @@ -1,4 +1,4 @@ -import cachedFetch from "utils/proxy/cached-fetch"; +import { cachedRequest } from "utils/proxy/http"; import createLogger from "utils/logger"; const logger = createLogger("releases"); @@ -6,7 +6,7 @@ const logger = createLogger("releases"); export default async function handler(req, res) { const releasesURL = "https://api.github.com/repos/gethomepage/homepage/releases"; try { - return res.send(await cachedFetch(releasesURL, 5)); + return res.send(await cachedRequest(releasesURL, 5)); } catch (e) { logger.error(`Error checking GitHub releases: ${e}`); return res.send([]); diff --git a/src/pages/api/search/searchSuggestion.js b/src/pages/api/search/searchSuggestion.js index dbe072ea7..209d1f2cf 100644 --- a/src/pages/api/search/searchSuggestion.js +++ b/src/pages/api/search/searchSuggestion.js @@ -1,7 +1,7 @@ import { searchProviders } from "components/widgets/search/search"; import { getSettings } from "utils/config/config"; -import cachedFetch from "utils/proxy/cached-fetch"; +import { cachedRequest } from "utils/proxy/http"; import { widgetsFromConfig } from "utils/config/widget-helpers"; export default async function handler(req, res) { @@ -29,5 +29,5 @@ export default async function handler(req, res) { return res.json([query, []]); // Responde with the same array format but with no suggestions. } - return res.send(await cachedFetch(`${provider.suggestionUrl}${encodeURIComponent(query)}`, 5, "Mozilla/5.0")); + return res.send(await cachedRequest(`${provider.suggestionUrl}${encodeURIComponent(query)}`, 5, "Mozilla/5.0")); } diff --git a/src/pages/api/widgets/openmeteo.js b/src/pages/api/widgets/openmeteo.js index e63847b43..28f2e4f00 100644 --- a/src/pages/api/widgets/openmeteo.js +++ b/src/pages/api/widgets/openmeteo.js @@ -1,9 +1,9 @@ -import cachedFetch from "utils/proxy/cached-fetch"; +import { cachedRequest } from "utils/proxy/http"; export default async function handler(req, res) { const { latitude, longitude, units, cache, timezone } = req.query; const degrees = units === "metric" ? "celsius" : "fahrenheit"; const timezeone = timezone ?? "auto"; const apiUrl = `https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}&daily=sunrise,sunset¤t_weather=true&temperature_unit=${degrees}&timezone=${timezeone}`; - return res.send(await cachedFetch(apiUrl, cache)); + return res.send(await cachedRequest(apiUrl, cache)); } diff --git a/src/pages/api/widgets/openweathermap.js b/src/pages/api/widgets/openweathermap.js index 089ee804e..3bdc7a822 100644 --- a/src/pages/api/widgets/openweathermap.js +++ b/src/pages/api/widgets/openweathermap.js @@ -1,4 +1,4 @@ -import cachedFetch from "utils/proxy/cached-fetch"; +import { cachedRequest } from "utils/proxy/http"; import { getSettings } from "utils/config/config"; import { getPrivateWidgetOptions } from "utils/config/widget-helpers"; @@ -26,5 +26,5 @@ export default async function handler(req, res) { const apiUrl = `https://api.openweathermap.org/data/2.5/weather?lat=${latitude}&lon=${longitude}&appid=${apiKey}&units=${units}&lang=${lang}`; - return res.send(await cachedFetch(apiUrl, cache)); + return res.send(await cachedRequest(apiUrl, cache)); } diff --git a/src/pages/api/widgets/stocks.js b/src/pages/api/widgets/stocks.js index 3941a773d..4e9f3f55e 100644 --- a/src/pages/api/widgets/stocks.js +++ b/src/pages/api/widgets/stocks.js @@ -1,4 +1,4 @@ -import cachedFetch from "utils/proxy/cached-fetch"; +import { cachedRequest } from "utils/proxy/http"; import { getSettings } from "utils/config/config"; import createLogger from "utils/logger"; @@ -60,7 +60,7 @@ export default async function handler(req, res) { const apiUrl = `https://finnhub.io/api/v1/quote?symbol=${ticker}&token=${apiKey}`; // Finnhub free accounts allow up to 60 calls/minute // https://finnhub.io/pricing - const { c, dp } = await cachedFetch(apiUrl, cache || 1); + const { c, dp } = await cachedRequest(apiUrl, cache || 1); logger.debug("Finnhub API response for %s: %o", ticker, { c, dp }); // API sometimes returns 200, but values returned are `null` diff --git a/src/pages/api/widgets/weather.js b/src/pages/api/widgets/weather.js index 9d0451ce9..9e63e48d9 100644 --- a/src/pages/api/widgets/weather.js +++ b/src/pages/api/widgets/weather.js @@ -1,4 +1,4 @@ -import cachedFetch from "utils/proxy/cached-fetch"; +import { cachedRequest } from "utils/proxy/http"; import { getSettings } from "utils/config/config"; import { getPrivateWidgetOptions } from "utils/config/widget-helpers"; @@ -26,5 +26,5 @@ export default async function handler(req, res) { const apiUrl = `http://api.weatherapi.com/v1/current.json?q=${latitude},${longitude}&key=${apiKey}&lang=${lang}`; - return res.send(await cachedFetch(apiUrl, cache)); + return res.send(await cachedRequest(apiUrl, cache)); } diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 5055a22b1..78702796d 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -323,7 +323,7 @@ function Home({ initialSettings }) { key={group.name} group={group} layout={settings.layout?.[group.name]} - fiveColumns={settings.fiveColumns} + maxGroupColumns={settings.fiveColumns ? 5 : settings.maxGroupColumns} disableCollapse={settings.disableCollapse} useEqualHeights={settings.useEqualHeights} groupsInitiallyCollapsed={settings.groupsInitiallyCollapsed} @@ -334,6 +334,7 @@ function Home({ initialSettings }) { bookmarks={group} layout={settings.layout?.[group.name]} disableCollapse={settings.disableCollapse} + maxGroupColumns={settings.maxBookmarkGroupColumns ?? settings.maxGroupColumns} groupsInitiallyCollapsed={settings.groupsInitiallyCollapsed} /> ), @@ -347,7 +348,7 @@ function Home({ initialSettings }) { key={group.name} group={group} layout={settings.layout?.[group.name]} - fiveColumns={settings.fiveColumns} + maxGroupColumns={settings.fiveColumns ? 5 : settings.maxGroupColumns} disableCollapse={settings.disableCollapse} groupsInitiallyCollapsed={settings.groupsInitiallyCollapsed} /> @@ -362,6 +363,7 @@ function Home({ initialSettings }) { bookmarks={group} layout={settings.layout?.[group.name]} disableCollapse={settings.disableCollapse} + maxGroupColumns={settings.maxBookmarkGroupColumns ?? settings.maxGroupColumns} groupsInitiallyCollapsed={settings.groupsInitiallyCollapsed} bookmarksStyle={settings.bookmarksStyle} /> @@ -377,6 +379,8 @@ function Home({ initialSettings }) { bookmarks, settings.layout, settings.fiveColumns, + settings.maxGroupColumns, + settings.maxBookmarkGroupColumns, settings.disableCollapse, settings.useEqualHeights, settings.cardBlur, @@ -417,7 +421,12 @@ function Home({ initialSettings }) {