Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4dbdfe8133 | ||
|
|
51e6951b58 |
No files matched your search
@@ -45,12 +45,6 @@ DB_URL='FULL_PATH_TO_YOUR_SQLITE_DB_FILE'
|
||||
|
||||
TURBO_TELEMETRY_DISABLED=1
|
||||
|
||||
# Comma-separated paths to Docker-compatible Unix sockets.
|
||||
# Useful for connecting to multiple runtimes (Docker + Podman) simultaneously.
|
||||
# When unset and no TCP hosts configured, defaults to /var/run/docker.sock.
|
||||
# Example: DOCKER_SOCKET_PATHS=/var/run/docker.sock,/run/user/1000/podman/podman.sock
|
||||
# DOCKER_SOCKET_PATHS=
|
||||
|
||||
# Enable kubernetes tool
|
||||
# ENABLE_KUBERNETES=true
|
||||
|
||||
|
||||
@@ -1,28 +1,3 @@
|
||||
## [1.61.0](https://github.com/homarr-labs/homarr/compare/v1.60.0...v1.61.0) (2026-05-08)
|
||||
|
||||
### Features
|
||||
|
||||
* add auto/system appearance mode + fix dark mode system resources charts ([#5492](https://github.com/homarr-labs/homarr/issues/5492)) ([831b622](https://github.com/homarr-labs/homarr/commit/831b6221fdf21fe4913b0f165ef551afeada4f33))
|
||||
* add pwa support ([#5530](https://github.com/homarr-labs/homarr/issues/5530)) ([277a509](https://github.com/homarr-labs/homarr/commit/277a509f490d57bb6547c86c417c29c0e7af7e40))
|
||||
* add Umami Analytics integration and widget ([#5362](https://github.com/homarr-labs/homarr/issues/5362)) ([43cc68b](https://github.com/homarr-labs/homarr/commit/43cc68bdd49c4877012e39e23355f6506aea7f4e))
|
||||
* **docker:** Podman compatibility, multi-socket support, per-host error isolation ([#5425](https://github.com/homarr-labs/homarr/issues/5425)) ([56af6bc](https://github.com/homarr-labs/homarr/commit/56af6bcaf00e980e4c7a40d8e912901cd1395f5a))
|
||||
* **entity-state:** add data attributes for custom-css styling ([#5655](https://github.com/homarr-labs/homarr/issues/5655)) ([0937555](https://github.com/homarr-labs/homarr/commit/0937555d49c29455bc33307ae5e50bf5b812c7c7))
|
||||
* **installations:** support secrets file for all environment variables ([#5125](https://github.com/homarr-labs/homarr/issues/5125)) ([4d30a2e](https://github.com/homarr-labs/homarr/commit/4d30a2e8c48f818bb4947a651b0fec5f64cbf569))
|
||||
* **qbittorrent:** add api-key support ([#5677](https://github.com/homarr-labs/homarr/issues/5677)) ([756e8d1](https://github.com/homarr-labs/homarr/commit/756e8d172455f91e40cd8fb5faff6953cc9778c5))
|
||||
* **spotlight:** rework !bang search UX ([#4813](https://github.com/homarr-labs/homarr/issues/4813)) ([b5c316b](https://github.com/homarr-labs/homarr/commit/b5c316b825bdffa267fd173a3c39a12269142665))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **apps:** creation on the fly broken ([#5605](https://github.com/homarr-labs/homarr/issues/5605)) ([3183914](https://github.com/homarr-labs/homarr/commit/3183914a1502555681b73975062ed6ca8a48cb75))
|
||||
* **calendar:** keep working integrations when one fails ([#5629](https://github.com/homarr-labs/homarr/issues/5629)) ([44bd16d](https://github.com/homarr-labs/homarr/commit/44bd16d6770d289054df6c7c93adff42d2243252))
|
||||
* **lang:** portuguese is linked to brazilian portuguese on crowdin ([#5622](https://github.com/homarr-labs/homarr/issues/5622)) ([62be81e](https://github.com/homarr-labs/homarr/commit/62be81ea607a609a816157686700c54540e1568b))
|
||||
* **qbittorrent:** support version 5.2 ([#5672](https://github.com/homarr-labs/homarr/issues/5672)) ([00a0552](https://github.com/homarr-labs/homarr/commit/00a055283e8848542b67d88a656a99fdd0bcb444))
|
||||
* **update-checker:** hide prereleases on non-prerelease versions ([#5645](https://github.com/homarr-labs/homarr/issues/5645)) ([b07a4a0](https://github.com/homarr-labs/homarr/commit/b07a4a0f3e3af384ec477bf5c505a705b003de47))
|
||||
|
||||
### Reverts
|
||||
|
||||
* **deps:** downgrade pnpm to v10 ([#5673](https://github.com/homarr-labs/homarr/issues/5673)) ([44a2973](https://github.com/homarr-labs/homarr/commit/44a2973b1aba1e2c6bd818be022205f3cdb7c943))
|
||||
|
||||
## [1.60.0](https://github.com/homarr-labs/homarr/compare/v1.59.3...v1.60.0) (2026-05-01)
|
||||
|
||||
### Features
|
||||
|
||||
@@ -3,11 +3,7 @@
|
||||
|
||||
# Exempt Renovate‑managed files (no owners)
|
||||
package.json
|
||||
**/package.json
|
||||
package-lock.json
|
||||
**/package-lock.json
|
||||
pnpm-lock.yaml
|
||||
**/pnpm-lock.yaml
|
||||
pnpm-workspace.yaml
|
||||
Dockerfile
|
||||
docker-compose.yml
|
||||
@@ -58,18 +58,6 @@ const createColumns = (
|
||||
return <ContainerStateBadge state={cell.row.original.state} />;
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "host",
|
||||
header: t("docker.field.host.label"),
|
||||
size: 140,
|
||||
Cell({ row }) {
|
||||
return (
|
||||
<Text truncate="end" title={row.original.host}>
|
||||
{row.original.host}
|
||||
</Text>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: "image",
|
||||
header: t("docker.field.containerImage.label"),
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "homarr",
|
||||
"version": "1.61.0",
|
||||
"version": "1.60.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "cross-env CI=true turbo build",
|
||||
|
||||
@@ -138,7 +138,6 @@ const getContainerOrThrowAsync = async (id: string) => {
|
||||
interface DockerContainer {
|
||||
name: string;
|
||||
id: string;
|
||||
host: string;
|
||||
state: ContainerState;
|
||||
image: string;
|
||||
ports: Port[] | undefined;
|
||||
|
||||
@@ -61,7 +61,7 @@ export const integrationDefs = {
|
||||
},
|
||||
qBittorrent: {
|
||||
name: "qBittorrent",
|
||||
secretKinds: [["apiKey"], ["username", "password"]],
|
||||
secretKinds: [["username", "password"]],
|
||||
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/qbittorrent.svg",
|
||||
category: ["downloadClient", "torrent"],
|
||||
documentationUrl: createDocumentationLink("/docs/integrations/q-bittorent"),
|
||||
|
||||
@@ -4,11 +4,9 @@ import { createBooleanSchema, createEnv } from "@homarr/core/infrastructure/env"
|
||||
|
||||
export const env = createEnv({
|
||||
server: {
|
||||
// Comma separated list of docker hostnames that can be used to connect to query the docker endpoints (localhost,host.docker.internal, ...)
|
||||
// Comma separated list of docker hostnames that can be used to connect to query the docker endpoints (localhost:2375,host.docker.internal:2375, ...)
|
||||
DOCKER_HOSTNAMES: z.string().optional(),
|
||||
DOCKER_PORTS: z.string().optional(),
|
||||
// Comma separated paths to Docker-compatible Unix sockets (e.g., /var/run/docker.sock,/run/user/1000/podman/podman.sock)
|
||||
DOCKER_SOCKET_PATHS: z.string().optional(),
|
||||
ENABLE_DOCKER: createBooleanSchema(true),
|
||||
ENABLE_KUBERNETES: createBooleanSchema(false),
|
||||
},
|
||||
|
||||
@@ -11,43 +11,31 @@ export class DockerSingleton {
|
||||
private static instances: DockerInstance[] | null = null;
|
||||
|
||||
private createInstances() {
|
||||
const socketPaths = env.DOCKER_SOCKET_PATHS;
|
||||
const hostVariable = env.DOCKER_HOSTNAMES;
|
||||
const portVariable = env.DOCKER_PORTS;
|
||||
|
||||
// Socket instances from DOCKER_SOCKET_PATHS
|
||||
const socketInstances: DockerInstance[] = socketPaths
|
||||
? socketPaths.split(",").map((socketPath) => ({
|
||||
host: socketPath,
|
||||
instance: new Docker({ socketPath }),
|
||||
}))
|
||||
: [];
|
||||
|
||||
// TCP instances from existing DOCKER_HOSTNAMES/DOCKER_PORTS
|
||||
let tcpInstances: DockerInstance[] = [];
|
||||
if (hostVariable !== undefined && portVariable !== undefined) {
|
||||
const hostnames = hostVariable.split(",");
|
||||
const ports = portVariable.split(",");
|
||||
|
||||
if (hostnames.length !== ports.length) {
|
||||
throw new Error("The number of hosts and ports must match");
|
||||
}
|
||||
|
||||
tcpInstances = hostnames.map((host, i) => ({
|
||||
host: `${host}:${ports[i]}`,
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
instance: new Docker({ host, port: parseInt(ports[i]!, 10) }),
|
||||
}));
|
||||
}
|
||||
|
||||
const instances = [...socketInstances, ...tcpInstances];
|
||||
|
||||
// Default: local socket if nothing else configured
|
||||
if (instances.length === 0) {
|
||||
if (hostVariable === undefined || portVariable === undefined) {
|
||||
return [{ host: "socket", instance: new Docker() }];
|
||||
}
|
||||
const hostnames = hostVariable.split(",");
|
||||
const ports = portVariable.split(",");
|
||||
|
||||
return instances;
|
||||
if (hostnames.length !== ports.length) {
|
||||
throw new Error("The number of hosts and ports must match");
|
||||
}
|
||||
|
||||
return hostnames.map((host, i) => {
|
||||
// Check above ensures that ports[i] is not undefined
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const port = ports[i]!;
|
||||
|
||||
return {
|
||||
host: `${host}:${port}`,
|
||||
instance: new Docker({
|
||||
host,
|
||||
port: parseInt(port, 10),
|
||||
}),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
public static findInstance(host: string): DockerInstance | undefined {
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
import { beforeEach, describe, expect, test, vi } from "vitest";
|
||||
|
||||
import { DockerSingleton } from "../singleton";
|
||||
|
||||
const mockEnv = vi.hoisted(() => ({
|
||||
DOCKER_SOCKET_PATHS: undefined as string | undefined,
|
||||
DOCKER_HOSTNAMES: undefined as string | undefined,
|
||||
DOCKER_PORTS: undefined as string | undefined,
|
||||
ENABLE_DOCKER: true,
|
||||
ENABLE_KUBERNETES: false,
|
||||
}));
|
||||
|
||||
vi.mock("dockerode", () => {
|
||||
return {
|
||||
default: class MockDocker {
|
||||
constructor(public opts?: Record<string, unknown>) {}
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("../env", () => ({
|
||||
env: mockEnv,
|
||||
}));
|
||||
|
||||
describe("DockerSingleton", () => {
|
||||
beforeEach(() => {
|
||||
// Reset singleton cache between tests
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
|
||||
(DockerSingleton as any).instances = null;
|
||||
|
||||
// Reset env to defaults
|
||||
mockEnv.DOCKER_SOCKET_PATHS = undefined;
|
||||
mockEnv.DOCKER_HOSTNAMES = undefined;
|
||||
mockEnv.DOCKER_PORTS = undefined;
|
||||
});
|
||||
|
||||
test("should return default socket when no env vars set", () => {
|
||||
const instances = DockerSingleton.getInstances();
|
||||
|
||||
expect(instances).toHaveLength(1);
|
||||
expect(instances[0]?.host).toBe("socket");
|
||||
});
|
||||
|
||||
test("should return TCP instances only when DOCKER_HOSTNAMES and DOCKER_PORTS set", () => {
|
||||
mockEnv.DOCKER_HOSTNAMES = "remote-host";
|
||||
mockEnv.DOCKER_PORTS = "2375";
|
||||
|
||||
const instances = DockerSingleton.getInstances();
|
||||
|
||||
expect(instances).toHaveLength(1);
|
||||
expect(instances[0]?.host).toBe("remote-host:2375");
|
||||
});
|
||||
|
||||
test("should return multiple TCP instances", () => {
|
||||
mockEnv.DOCKER_HOSTNAMES = "host1,host2";
|
||||
mockEnv.DOCKER_PORTS = "2375,2376";
|
||||
|
||||
const instances = DockerSingleton.getInstances();
|
||||
|
||||
expect(instances).toHaveLength(2);
|
||||
expect(instances[0]?.host).toBe("host1:2375");
|
||||
expect(instances[1]?.host).toBe("host2:2376");
|
||||
});
|
||||
|
||||
test("should throw when hostname and port counts do not match", () => {
|
||||
mockEnv.DOCKER_HOSTNAMES = "host1,host2";
|
||||
mockEnv.DOCKER_PORTS = "2375";
|
||||
|
||||
expect(() => DockerSingleton.getInstances()).toThrow("The number of hosts and ports must match");
|
||||
});
|
||||
|
||||
test("should return socket instances when DOCKER_SOCKET_PATHS set", () => {
|
||||
mockEnv.DOCKER_SOCKET_PATHS = "/var/run/docker.sock";
|
||||
|
||||
const instances = DockerSingleton.getInstances();
|
||||
|
||||
expect(instances).toHaveLength(1);
|
||||
expect(instances[0]?.host).toBe("/var/run/docker.sock");
|
||||
});
|
||||
|
||||
test("should return multiple socket instances", () => {
|
||||
mockEnv.DOCKER_SOCKET_PATHS = "/var/run/docker.sock,/run/user/1000/podman/podman.sock";
|
||||
|
||||
const instances = DockerSingleton.getInstances();
|
||||
|
||||
expect(instances).toHaveLength(2);
|
||||
expect(instances[0]?.host).toBe("/var/run/docker.sock");
|
||||
expect(instances[1]?.host).toBe("/run/user/1000/podman/podman.sock");
|
||||
});
|
||||
|
||||
test("should combine socket and TCP instances", () => {
|
||||
mockEnv.DOCKER_SOCKET_PATHS = "/var/run/docker.sock,/run/user/1000/podman/podman.sock";
|
||||
mockEnv.DOCKER_HOSTNAMES = "remote-host";
|
||||
mockEnv.DOCKER_PORTS = "2375";
|
||||
|
||||
const instances = DockerSingleton.getInstances();
|
||||
|
||||
expect(instances).toHaveLength(3);
|
||||
expect(instances[0]?.host).toBe("/var/run/docker.sock");
|
||||
expect(instances[1]?.host).toBe("/run/user/1000/podman/podman.sock");
|
||||
expect(instances[2]?.host).toBe("remote-host:2375");
|
||||
});
|
||||
|
||||
test("should cache instances on subsequent calls", () => {
|
||||
const first = DockerSingleton.getInstances();
|
||||
const second = DockerSingleton.getInstances();
|
||||
|
||||
expect(first).toBe(second);
|
||||
});
|
||||
});
|
||||
@@ -90,18 +90,10 @@ export class QBitTorrentIntegration extends Integration implements IDownloadClie
|
||||
}
|
||||
|
||||
private async getClientAsync(dispatcher?: Dispatcher) {
|
||||
const credentials = this.hasSecretValue("apiKey")
|
||||
? {
|
||||
apiKey: this.getSecretValue("apiKey"),
|
||||
}
|
||||
: {
|
||||
username: this.getSecretValue("username"),
|
||||
password: this.getSecretValue("password"),
|
||||
};
|
||||
|
||||
return new QBittorrent({
|
||||
...credentials,
|
||||
baseUrl: this.url("/").toString(),
|
||||
username: this.getSecretValue("username"),
|
||||
password: this.getSecretValue("password"),
|
||||
dispatcher: dispatcher ?? (await createCertificateAgentAsync()),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ import dayjs from "dayjs";
|
||||
import type { ContainerInfo, ContainerStats } from "dockerode";
|
||||
import type Dockerode from "dockerode";
|
||||
|
||||
import { createLogger } from "@homarr/core/infrastructure/logs";
|
||||
import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error";
|
||||
import { db, like, or } from "@homarr/db";
|
||||
import { icons } from "@homarr/db/schema";
|
||||
import type { ContainerState } from "@homarr/docker";
|
||||
@@ -11,8 +9,6 @@ import { dockerLabels, DockerSingleton } from "@homarr/docker";
|
||||
|
||||
import { createCachedWidgetRequestHandler } from "./lib/cached-widget-request-handler";
|
||||
|
||||
const logger = createLogger({ module: "dockerRequestHandler" });
|
||||
|
||||
export const dockerContainersRequestHandler = createCachedWidgetRequestHandler({
|
||||
queryKey: "dockerContainersResult",
|
||||
widgetKind: "dockerContainers",
|
||||
@@ -22,34 +18,19 @@ export const dockerContainersRequestHandler = createCachedWidgetRequestHandler({
|
||||
cacheDuration: dayjs.duration(20, "seconds"),
|
||||
});
|
||||
|
||||
const dockerInstances = DockerSingleton.getInstances();
|
||||
|
||||
const extractImage = (container: ContainerInfo) => container.Image.split("/").at(-1)?.split(":").at(0) ?? "";
|
||||
|
||||
async function getContainersWithStatsAsync() {
|
||||
const dockerInstances = DockerSingleton.getInstances();
|
||||
const results = await Promise.allSettled(
|
||||
const containers = await Promise.all(
|
||||
dockerInstances.map(async ({ instance, host }) => {
|
||||
const instanceContainers = await instance.listContainers({ all: true });
|
||||
return instanceContainers
|
||||
.filter((container) => !(dockerLabels.hide in container.Labels))
|
||||
.map((container) => ({ ...container, instance: host }));
|
||||
}),
|
||||
);
|
||||
|
||||
const containers = results.flatMap((result, index) => {
|
||||
if (result.status === "fulfilled") return result.value;
|
||||
logger.warn(
|
||||
new ErrorWithMetadata(
|
||||
"Failed to list containers from Docker host",
|
||||
{
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
host: dockerInstances[index]!.host,
|
||||
},
|
||||
{ cause: result.reason },
|
||||
),
|
||||
);
|
||||
|
||||
return [];
|
||||
});
|
||||
).then((res) => res.flat());
|
||||
const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`));
|
||||
|
||||
const dbIcons =
|
||||
@@ -63,6 +44,8 @@ async function getContainersWithStatsAsync() {
|
||||
const instance = dockerInstances.find(({ host }) => host === container.instance)?.instance;
|
||||
if (!instance) return null;
|
||||
|
||||
// Get stats, falling back to an empty stats object if fetch fails
|
||||
// calculateCpuUsage and calculateMemoryUsage will return 0 for invalid/missing stats
|
||||
const stats = await instance
|
||||
.getContainer(container.Id)
|
||||
.stats({ stream: false, "one-shot": true })
|
||||
@@ -80,7 +63,6 @@ async function getContainersWithStatsAsync() {
|
||||
return {
|
||||
id: container.Id,
|
||||
name: container.Names[0]?.split("/")[1] ?? "Unknown",
|
||||
host: container.instance,
|
||||
state: container.State as ContainerState,
|
||||
iconUrl:
|
||||
dbIcons.find((icon) => {
|
||||
@@ -98,10 +80,9 @@ async function getContainersWithStatsAsync() {
|
||||
return (await Promise.all(containerStatsPromises)).filter((container) => container !== null);
|
||||
}
|
||||
|
||||
export function calculateCpuUsage(stats: ContainerStats): number {
|
||||
// Handle containers with missing or invalid stats (e.g., exited, dead containers, Podman responses)
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
if (!stats.cpu_stats?.online_cpus || stats.cpu_stats.online_cpus === 0 || !stats.cpu_stats.cpu_usage?.total_usage) {
|
||||
function calculateCpuUsage(stats: ContainerStats): number {
|
||||
// Handle containers with missing or invalid stats (e.g., exited, dead containers)
|
||||
if (!stats.cpu_stats.online_cpus || stats.cpu_stats.online_cpus === 0 || !stats.cpu_stats.cpu_usage.total_usage) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -114,10 +95,9 @@ export function calculateCpuUsage(stats: ContainerStats): number {
|
||||
return (stats.cpu_stats.cpu_usage.total_usage / usage) * numberOfCpus * 100;
|
||||
}
|
||||
|
||||
export function calculateMemoryUsage(stats: ContainerStats): number {
|
||||
// Handle containers with missing or invalid stats (e.g., exited, dead containers, Podman responses)
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
if (!stats.memory_stats?.usage) {
|
||||
function calculateMemoryUsage(stats: ContainerStats): number {
|
||||
// Handle containers with missing or invalid stats (e.g., exited, dead containers)
|
||||
if (!stats.memory_stats.usage) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
import type { ContainerStats } from "dockerode";
|
||||
import { describe, expect, test, vi } from "vitest";
|
||||
|
||||
import { createDb } from "@homarr/db/test";
|
||||
|
||||
import { calculateCpuUsage, calculateMemoryUsage } from "../docker";
|
||||
|
||||
vi.mock("@homarr/db", async (importActual) => {
|
||||
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
|
||||
const actual = await importActual<typeof import("@homarr/db")>();
|
||||
return {
|
||||
...actual,
|
||||
db: createDb(),
|
||||
};
|
||||
});
|
||||
|
||||
// Helper to create a partial stats object, cast to ContainerStats.
|
||||
// This mirrors what Podman and other Docker-compatible runtimes may return
|
||||
// at runtime, even though @types/dockerode declares all fields as required.
|
||||
const createStats = (overrides: Record<string, unknown> = {}) => overrides as unknown as ContainerStats;
|
||||
|
||||
describe("calculateCpuUsage", () => {
|
||||
test("should return 0 when cpu_stats is undefined (Podman)", () => {
|
||||
const stats = createStats({ cpu_stats: undefined });
|
||||
expect(calculateCpuUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should return 0 when online_cpus is 0", () => {
|
||||
const stats = createStats({
|
||||
cpu_stats: { online_cpus: 0, cpu_usage: { total_usage: 1000 }, system_cpu_usage: 5000 },
|
||||
});
|
||||
expect(calculateCpuUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should return 0 when online_cpus is undefined", () => {
|
||||
const stats = createStats({
|
||||
cpu_stats: { cpu_usage: { total_usage: 1000 }, system_cpu_usage: 5000 },
|
||||
});
|
||||
expect(calculateCpuUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should return 0 when cpu_usage is undefined", () => {
|
||||
const stats = createStats({
|
||||
cpu_stats: { online_cpus: 4, system_cpu_usage: 5000 },
|
||||
});
|
||||
expect(calculateCpuUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should return 0 when total_usage is 0", () => {
|
||||
const stats = createStats({
|
||||
cpu_stats: { online_cpus: 4, cpu_usage: { total_usage: 0 }, system_cpu_usage: 5000 },
|
||||
});
|
||||
expect(calculateCpuUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should return 0 when system_cpu_usage is 0", () => {
|
||||
const stats = createStats({
|
||||
cpu_stats: { online_cpus: 4, cpu_usage: { total_usage: 1000 }, system_cpu_usage: 0 },
|
||||
});
|
||||
expect(calculateCpuUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should calculate correct CPU percentage for valid stats", () => {
|
||||
const stats = createStats({
|
||||
cpu_stats: { online_cpus: 4, cpu_usage: { total_usage: 2000 }, system_cpu_usage: 10000 },
|
||||
});
|
||||
// (2000 / 10000) * 4 * 100 = 80
|
||||
expect(calculateCpuUsage(stats)).toBe(80);
|
||||
});
|
||||
|
||||
test("should handle fractional CPU usage", () => {
|
||||
const stats = createStats({
|
||||
cpu_stats: { online_cpus: 2, cpu_usage: { total_usage: 500 }, system_cpu_usage: 100000 },
|
||||
});
|
||||
// (500 / 100000) * 2 * 100 = 1
|
||||
expect(calculateCpuUsage(stats)).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("calculateMemoryUsage", () => {
|
||||
test("should return 0 when memory_stats is undefined (Podman)", () => {
|
||||
const stats = createStats({ memory_stats: undefined });
|
||||
expect(calculateMemoryUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should return 0 when memory_stats.usage is 0", () => {
|
||||
const stats = createStats({ memory_stats: { usage: 0 } });
|
||||
expect(calculateMemoryUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should return 0 when memory_stats.usage is undefined", () => {
|
||||
const stats = createStats({ memory_stats: {} });
|
||||
expect(calculateMemoryUsage(stats)).toBe(0);
|
||||
});
|
||||
|
||||
test("should subtract cache from usage", () => {
|
||||
const stats = createStats({
|
||||
memory_stats: { usage: 1000, stats: { cache: 200 } },
|
||||
});
|
||||
expect(calculateMemoryUsage(stats)).toBe(800);
|
||||
});
|
||||
|
||||
test("should use total_inactive_file when cache is absent", () => {
|
||||
const stats = createStats({
|
||||
memory_stats: { usage: 1000, stats: { total_inactive_file: 300 } },
|
||||
});
|
||||
expect(calculateMemoryUsage(stats)).toBe(700);
|
||||
});
|
||||
|
||||
test("should use inactive_file as last fallback", () => {
|
||||
const stats = createStats({
|
||||
memory_stats: { usage: 1000, stats: { inactive_file: 150 } },
|
||||
});
|
||||
expect(calculateMemoryUsage(stats)).toBe(850);
|
||||
});
|
||||
|
||||
test("should return raw usage when memory_stats.stats is undefined", () => {
|
||||
const stats = createStats({ memory_stats: { usage: 512 } });
|
||||
expect(calculateMemoryUsage(stats)).toBe(512);
|
||||
});
|
||||
});
|
||||
@@ -3970,9 +3970,6 @@
|
||||
},
|
||||
"ports": {
|
||||
"label": "Ports"
|
||||
},
|
||||
"host": {
|
||||
"label": "Host"
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
|
||||
@@ -79,19 +79,6 @@ const createColumns = (
|
||||
return <ContainerStateBadge state={row.original.state} />;
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "host",
|
||||
accessorKey: "host",
|
||||
size: 100,
|
||||
header: t("field.host.label"),
|
||||
Cell({ row }) {
|
||||
return (
|
||||
<Text size="xs" truncate="end">
|
||||
{row.original.host}
|
||||
</Text>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "cpuUsage",
|
||||
sortingFn: (rowA, rowB) => {
|
||||
|
||||
Generated
+143
-133
@@ -16,8 +16,8 @@ catalogs:
|
||||
specifier: ^8.0.0
|
||||
version: 8.0.0
|
||||
'@ctrl/qbittorrent':
|
||||
specifier: ^9.12.1
|
||||
version: 9.12.1
|
||||
specifier: ^9.11.2
|
||||
version: 9.11.2
|
||||
'@ctrl/transmission':
|
||||
specifier: ^7.4.0
|
||||
version: 7.4.0
|
||||
@@ -40,8 +40,8 @@ catalogs:
|
||||
specifier: 10.0.1
|
||||
version: 10.0.1
|
||||
'@extractus/feed-extractor':
|
||||
specifier: 7.2.1
|
||||
version: 7.2.1
|
||||
specifier: 7.1.7
|
||||
version: 7.1.7
|
||||
'@gitbeaker/rest':
|
||||
specifier: ^43.8.0
|
||||
version: 43.8.0
|
||||
@@ -133,14 +133,14 @@ catalogs:
|
||||
specifier: ^3.41.1
|
||||
version: 3.41.1
|
||||
'@tanstack/react-query':
|
||||
specifier: ^5.100.9
|
||||
version: 5.100.9
|
||||
specifier: ^5.100.8
|
||||
version: 5.100.8
|
||||
'@tanstack/react-query-devtools':
|
||||
specifier: ^5.100.9
|
||||
version: 5.100.9
|
||||
specifier: ^5.100.8
|
||||
version: 5.100.8
|
||||
'@tanstack/react-query-next-experimental':
|
||||
specifier: ^5.100.9
|
||||
version: 5.100.9
|
||||
specifier: ^5.100.8
|
||||
version: 5.100.8
|
||||
'@testcontainers/mysql':
|
||||
specifier: ^11.14.0
|
||||
version: 11.14.0
|
||||
@@ -214,7 +214,7 @@ catalogs:
|
||||
specifier: ^11.17.0
|
||||
version: 11.17.0
|
||||
'@turbo/gen':
|
||||
specifier: ^2.9.8
|
||||
specifier: ^2.9.7
|
||||
version: 2.9.8
|
||||
'@types/adm-zip':
|
||||
specifier: 0.5.8
|
||||
@@ -367,7 +367,7 @@ catalogs:
|
||||
specifier: ^10.1.8
|
||||
version: 10.1.8
|
||||
eslint-config-turbo:
|
||||
specifier: ^2.9.8
|
||||
specifier: ^2.9.7
|
||||
version: 2.9.8
|
||||
eslint-plugin-import:
|
||||
specifier: ^2.32.0
|
||||
@@ -517,7 +517,7 @@ catalogs:
|
||||
specifier: 4.20.4
|
||||
version: 4.20.4
|
||||
turbo:
|
||||
specifier: ^2.9.8
|
||||
specifier: ^2.9.7
|
||||
version: 2.9.8
|
||||
typescript:
|
||||
specifier: ^5.9.3
|
||||
@@ -553,8 +553,8 @@ catalogs:
|
||||
specifier: 2.8.4
|
||||
version: 2.8.4
|
||||
zod:
|
||||
specifier: ^4.4.3
|
||||
version: 4.4.3
|
||||
specifier: ^4.4.2
|
||||
version: 4.4.2
|
||||
zod-form-data:
|
||||
specifier: ^3.0.1
|
||||
version: 3.0.1
|
||||
@@ -792,22 +792,22 @@ importers:
|
||||
version: 3.41.1(react@19.2.5)
|
||||
'@tanstack/react-query':
|
||||
specifier: 'catalog:'
|
||||
version: 5.100.9(react@19.2.5)
|
||||
version: 5.100.8(react@19.2.5)
|
||||
'@tanstack/react-query-devtools':
|
||||
specifier: 'catalog:'
|
||||
version: 5.100.9(@tanstack/react-query@5.100.9(react@19.2.5))(react@19.2.5)
|
||||
version: 5.100.8(@tanstack/react-query@5.100.8(react@19.2.5))(react@19.2.5)
|
||||
'@tanstack/react-query-next-experimental':
|
||||
specifier: 'catalog:'
|
||||
version: 5.100.9(@tanstack/react-query@5.100.9(react@19.2.5))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react@19.2.5)
|
||||
version: 5.100.8(@tanstack/react-query@5.100.8(react@19.2.5))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react@19.2.5)
|
||||
'@trpc/client':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3)
|
||||
'@trpc/next':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
|
||||
version: 11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)
|
||||
'@trpc/react-query':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
version: 11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
'@trpc/server':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(typescript@5.9.3)
|
||||
@@ -888,7 +888,7 @@ importers:
|
||||
version: 2.8.4
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1204,19 +1204,19 @@ importers:
|
||||
version: 1.4.0
|
||||
'@tanstack/react-query':
|
||||
specifier: 'catalog:'
|
||||
version: 5.100.9(react@19.2.5)
|
||||
version: 5.100.8(react@19.2.5)
|
||||
'@trpc/client':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3)
|
||||
'@trpc/react-query':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
version: 11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
'@trpc/server':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(typescript@5.9.3)
|
||||
'@trpc/tanstack-react-query':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
version: 11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
lodash.clonedeep:
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0
|
||||
@@ -1234,10 +1234,10 @@ importers:
|
||||
version: 2.2.6
|
||||
trpc-to-openapi:
|
||||
specifier: 'catalog:'
|
||||
version: 3.2.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.17.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.4.3))(zod@4.4.3)
|
||||
version: 3.2.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.17.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.4.2))(zod@4.4.2)
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1304,7 +1304,7 @@ importers:
|
||||
version: 19.2.5(react@19.2.5)
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1430,10 +1430,10 @@ importers:
|
||||
version: 7.24.6
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
zod-validation-error:
|
||||
specifier: 'catalog:'
|
||||
version: 5.0.0(zod@4.4.3)
|
||||
version: 5.0.0(zod@4.4.2)
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1455,7 +1455,7 @@ importers:
|
||||
dependencies:
|
||||
'@t3-oss/env-nextjs':
|
||||
specifier: 'catalog:'
|
||||
version: 0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.3)
|
||||
version: 0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.2)
|
||||
better-sqlite3:
|
||||
specifier: 'catalog:'
|
||||
version: 12.9.0
|
||||
@@ -1482,7 +1482,7 @@ importers:
|
||||
version: 3.19.0
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1519,7 +1519,7 @@ importers:
|
||||
version: link:../cron-jobs
|
||||
'@tanstack/react-query':
|
||||
specifier: 'catalog:'
|
||||
version: 5.100.9(react@19.2.5)
|
||||
version: 5.100.8(react@19.2.5)
|
||||
'@trpc/client':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3)
|
||||
@@ -1528,13 +1528,13 @@ importers:
|
||||
version: 11.17.0(typescript@5.9.3)
|
||||
'@trpc/tanstack-react-query':
|
||||
specifier: 'catalog:'
|
||||
version: 11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
version: 11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
react:
|
||||
specifier: 'catalog:'
|
||||
version: 19.2.5
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1721,7 +1721,7 @@ importers:
|
||||
version: 0.45.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.9.0)(gel@2.0.0)(mysql2@3.22.3(@types/node@24.12.2))(pg@8.20.0)
|
||||
drizzle-zod:
|
||||
specifier: 'catalog:'
|
||||
version: 0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.9.0)(gel@2.0.0)(mysql2@3.22.3(@types/node@24.12.2))(pg@8.20.0))(zod@4.4.3)
|
||||
version: 0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.9.0)(gel@2.0.0)(mysql2@3.22.3(@types/node@24.12.2))(pg@8.20.0))(zod@4.4.2)
|
||||
mysql2:
|
||||
specifier: 'catalog:'
|
||||
version: 3.22.3(@types/node@24.12.2)
|
||||
@@ -1776,7 +1776,7 @@ importers:
|
||||
version: 5.7.2
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1844,10 +1844,10 @@ importers:
|
||||
version: 8.3.18(react@19.2.5)
|
||||
mantine-form-zod-resolver:
|
||||
specifier: 'catalog:'
|
||||
version: 1.3.0(@mantine/form@8.3.18(react@19.2.5))(zod@4.4.3)
|
||||
version: 1.3.0(@mantine/form@8.3.18(react@19.2.5))(zod@4.4.2)
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1899,7 +1899,7 @@ importers:
|
||||
version: 19.2.5
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -1986,7 +1986,7 @@ importers:
|
||||
version: 8.0.0
|
||||
'@ctrl/qbittorrent':
|
||||
specifier: 'catalog:'
|
||||
version: 9.12.1
|
||||
version: 9.11.2
|
||||
'@ctrl/transmission':
|
||||
specifier: 'catalog:'
|
||||
version: 7.4.0
|
||||
@@ -2055,7 +2055,7 @@ importers:
|
||||
version: 0.6.2
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -2168,7 +2168,7 @@ importers:
|
||||
version: 19.2.5(react@19.2.5)
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -2272,10 +2272,10 @@ importers:
|
||||
version: 2.2.6
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
zod-form-data:
|
||||
specifier: 'catalog:'
|
||||
version: 3.0.1(zod@4.4.3)
|
||||
version: 3.0.1(zod@4.4.2)
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -2303,7 +2303,7 @@ importers:
|
||||
version: link:../common
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -2387,7 +2387,7 @@ importers:
|
||||
dependencies:
|
||||
'@extractus/feed-extractor':
|
||||
specifier: 'catalog:'
|
||||
version: 7.2.1
|
||||
version: 7.1.7
|
||||
'@homarr/common':
|
||||
specifier: workspace:^0.1.0
|
||||
version: link:../common
|
||||
@@ -2423,7 +2423,7 @@ importers:
|
||||
version: 7.24.6
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -2705,10 +2705,10 @@ importers:
|
||||
version: link:../translation
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
zod-form-data:
|
||||
specifier: 'catalog:'
|
||||
version: 3.0.1(zod@4.4.3)
|
||||
version: 3.0.1(zod@4.4.2)
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -2865,7 +2865,7 @@ importers:
|
||||
version: 1.11.20
|
||||
mantine-form-zod-resolver:
|
||||
specifier: 'catalog:'
|
||||
version: 1.3.0(@mantine/form@8.3.18(react@19.2.5))(zod@4.4.3)
|
||||
version: 1.3.0(@mantine/form@8.3.18(react@19.2.5))(zod@4.4.2)
|
||||
mantine-react-table:
|
||||
specifier: 'catalog:'
|
||||
version: 2.0.0-beta.9(@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@mantine/dates@8.3.18(@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@mantine/hooks@8.3.18(react@19.2.5))(dayjs@1.11.20)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@mantine/hooks@8.3.18(react@19.2.5))(@tabler/icons-react@3.41.1(react@19.2.5))(clsx@2.1.1)(dayjs@1.11.20)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||
@@ -2892,7 +2892,7 @@ importers:
|
||||
version: 8.23.7
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
version: 4.4.2
|
||||
devDependencies:
|
||||
'@homarr/eslint-config':
|
||||
specifier: workspace:^0.2.0
|
||||
@@ -3216,8 +3216,8 @@ packages:
|
||||
resolution: {integrity: sha512-fEfw3AeQ8XhVsNzogZrnyTNDD/Tpbfl3ybHsspBMvj0UKctabApv1JV3JJUQG/hoX6hiO+DtQS+acN7dMPX01g==}
|
||||
engines: {node: '>20'}
|
||||
|
||||
'@ctrl/qbittorrent@9.12.1':
|
||||
resolution: {integrity: sha512-6rSTWPV0UwehqLCyBLh9Avw5FPA1nh8SO+aTxrEXu6okZPjz+3tn7EGZdLhOfy+6poIc7miX/1g1VAOVo3JSTA==}
|
||||
'@ctrl/qbittorrent@9.11.2':
|
||||
resolution: {integrity: sha512-ZIayGA72R4rzXaCcEYrxBwOMYZ1iT0EABJPwjTkwaO3VYRBBltwHSAxNfMWaz4GVmqLA12/WCfx+IPXBN9Gtxg==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@ctrl/shared-torrent@6.5.1':
|
||||
@@ -3801,8 +3801,8 @@ packages:
|
||||
'@noble/hashes':
|
||||
optional: true
|
||||
|
||||
'@extractus/feed-extractor@7.2.1':
|
||||
resolution: {integrity: sha512-vc84NZST31wLDTesAkmHL8GBxSB2zw2/h9ZKiQMB71az13sC65EeAcDeLJ2z3atsIhtxESnCMaKmQdOrFiFLcg==}
|
||||
'@extractus/feed-extractor@7.1.7':
|
||||
resolution: {integrity: sha512-eNeddvKK9rBxWSHj5zBo6ODihJqJtq+QzEQdVeadkOK48avmdela+c2JAfMcPEBMFaWcAYV4bUMhI9Tqi8mX2Q==}
|
||||
engines: {node: '>= 20'}
|
||||
|
||||
'@fastify/ajv-compiler@4.0.5':
|
||||
@@ -4385,9 +4385,11 @@ packages:
|
||||
|
||||
'@million/lint@1.0.14':
|
||||
resolution: {integrity: sha512-u6/kglVwZRu5+GMmtkNlGLqJVkgTl0TtM+hLa9rBg7pldx+5NG5bk45NvL37uZmAr2Xfa1C6qHb7GrFwfP372g==}
|
||||
deprecated: This package is no longer maintained
|
||||
hasBin: true
|
||||
|
||||
'@ndaidong/bellajs@12.0.1':
|
||||
resolution: {integrity: sha512-1iY42uiHz0cxNMbde7O3zVN+ZX1viOOUOBRt6ht6lkRZbSjwOnFV34Zv4URp3hGzEe6L9Byk7BOq/41H0PzAOQ==}
|
||||
|
||||
'@next/env@16.2.4':
|
||||
resolution: {integrity: sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw==}
|
||||
|
||||
@@ -4718,10 +4720,6 @@ packages:
|
||||
'@protobufjs/utf8@1.1.0':
|
||||
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
|
||||
|
||||
'@pwshub/bellajs@13.0.2':
|
||||
resolution: {integrity: sha512-OWOaE7Ieufo7VMv957iahOzv/w5oXyyXO28Jh2x6rLU96ZLqC508kAKTgdMJRXgVjda2s+/0C6Kno+k16OmJsQ==}
|
||||
engines: {bun: '>=1.0.0', node: '>=20.0.0'}
|
||||
|
||||
'@reduxjs/toolkit@2.11.2':
|
||||
resolution: {integrity: sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==}
|
||||
peerDependencies:
|
||||
@@ -5215,27 +5213,27 @@ packages:
|
||||
resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@tanstack/query-core@5.100.9':
|
||||
resolution: {integrity: sha512-SJSFw1S8+kQ0+knv/XGfrbocWoAlT7vDKsSImtLx3ZPQmEcR46hkDjLSvynSy25N8Ms4tIEini1FuBd5k7IscQ==}
|
||||
'@tanstack/query-core@5.100.8':
|
||||
resolution: {integrity: sha512-ceYwSFOqjPwET5TA6IOYxzxlGc0ekyH/gfOtWkP0PX43rzX9bxW48Iuw8KAduKCToi4rJAQ6nRy2kAe8gszdmg==}
|
||||
|
||||
'@tanstack/query-devtools@5.100.9':
|
||||
resolution: {integrity: sha512-gqiptrTIhbK2PuCaPRHmWXfJG1NGYVFpAr0HqogEqiSBNB5xDz6fmesQt7w4WgMOqOQPnPHJ3ZDMuhDaXvNO8g==}
|
||||
'@tanstack/query-devtools@5.100.8':
|
||||
resolution: {integrity: sha512-29D6k564h7eudwNdfRcq6Je2VFUWGxHwADPg1xC2yHxrovYBwZiqzIv/DkPRsK/EMoOIPIvPq+IU0uCxiQXYPA==}
|
||||
|
||||
'@tanstack/react-query-devtools@5.100.9':
|
||||
resolution: {integrity: sha512-mM3slaVGXJmz+pOLgXdANj75ikgQCyudyl3kmFvm6brI1JyVeY/+IeD17uDHIvZrD8hfoO2sdZ54RFsHdYAuhA==}
|
||||
'@tanstack/react-query-devtools@5.100.8':
|
||||
resolution: {integrity: sha512-BKpysWo1u3kVMtv92XOv/Gu6eCbE/IxBLJPs0GG/qyySUQvZI2h7mqRwyf8Aa6WfUoX8Yf2AAh0uugQLAr8KtQ==}
|
||||
peerDependencies:
|
||||
'@tanstack/react-query': ^5.100.9
|
||||
'@tanstack/react-query': ^5.100.8
|
||||
react: ^18 || ^19
|
||||
|
||||
'@tanstack/react-query-next-experimental@5.100.9':
|
||||
resolution: {integrity: sha512-cXkeZW/lEQaVmB3l0eiej5lJUNix4xxWWxOzgIJYC8D4fwgl1Kwf/bb9Av92hm6MKjWyixNCJ1wmjWrhFtuCGA==}
|
||||
'@tanstack/react-query-next-experimental@5.100.8':
|
||||
resolution: {integrity: sha512-B1p5yeqWeLrWasZ0s2pG7b7do37XNXIlzHnj8RcEsoJ8DsGWXvAfSjXgnLvG0HdZUTPWjHrVRMIJ0Pgmy+bCtw==}
|
||||
peerDependencies:
|
||||
'@tanstack/react-query': ^5.100.9
|
||||
'@tanstack/react-query': ^5.100.8
|
||||
next: ^13 || ^14 || ^15 || ^16
|
||||
react: ^18 || ^19
|
||||
|
||||
'@tanstack/react-query@5.100.9':
|
||||
resolution: {integrity: sha512-Oa44XkaI3kCNN6ME0KByU3xT3SEUNOMfZpHxL6+wFoTm+OeUFYHKdeYVe0aOXlRDm/f15sgLwEt2HDorIdW8+A==}
|
||||
'@tanstack/react-query@5.100.8':
|
||||
resolution: {integrity: sha512-iNNEekixXU5vtAGKKZX2lx3jTooG5yNY+kv0wSgEdEYG0Mj0JM5bcuQtC35ZAP3nDopT6jciUK3xeX65U7AnfA==}
|
||||
peerDependencies:
|
||||
react: ^18 || ^19
|
||||
|
||||
@@ -6662,6 +6660,9 @@ packages:
|
||||
engines: {node: '>=20'}
|
||||
hasBin: true
|
||||
|
||||
cross-fetch@4.1.0:
|
||||
resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
|
||||
|
||||
cross-spawn@7.0.6:
|
||||
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
||||
engines: {node: '>= 8'}
|
||||
@@ -10552,8 +10553,8 @@ packages:
|
||||
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
|
||||
engines: {node: '>=16'}
|
||||
|
||||
type-fest@5.6.0:
|
||||
resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==}
|
||||
type-fest@5.5.0:
|
||||
resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
type-is@1.6.18:
|
||||
@@ -10594,8 +10595,8 @@ packages:
|
||||
engines: {node: '>=14.17'}
|
||||
hasBin: true
|
||||
|
||||
ufo@1.6.4:
|
||||
resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==}
|
||||
ufo@1.6.3:
|
||||
resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==}
|
||||
|
||||
uglify-js@3.19.3:
|
||||
resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
|
||||
@@ -11186,8 +11187,8 @@ packages:
|
||||
peerDependencies:
|
||||
zod: ^3.25.0 || ^4.0.0
|
||||
|
||||
zod@4.4.3:
|
||||
resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
|
||||
zod@4.4.2:
|
||||
resolution: {integrity: sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==}
|
||||
|
||||
zwitch@2.0.4:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
@@ -11479,8 +11480,8 @@ snapshots:
|
||||
cookie-es: 3.0.1
|
||||
node-fetch-native: 1.6.7
|
||||
ofetch: 1.5.1
|
||||
type-fest: 5.6.0
|
||||
ufo: 1.6.4
|
||||
type-fest: 5.5.0
|
||||
ufo: 1.6.3
|
||||
uint8array-extras: 1.5.0
|
||||
|
||||
'@ctrl/magnet-link@4.3.0':
|
||||
@@ -11488,7 +11489,7 @@ snapshots:
|
||||
rfc4648: 1.5.4
|
||||
uint8array-extras: 1.5.0
|
||||
|
||||
'@ctrl/qbittorrent@9.12.1':
|
||||
'@ctrl/qbittorrent@9.11.2':
|
||||
dependencies:
|
||||
'@ctrl/magnet-link': 4.3.0
|
||||
'@ctrl/shared-torrent': 6.5.1(ofetch@1.5.1)
|
||||
@@ -11496,8 +11497,8 @@ snapshots:
|
||||
cookie: 1.1.1
|
||||
node-fetch-native: 1.6.7
|
||||
ofetch: 1.5.1
|
||||
type-fest: 5.6.0
|
||||
ufo: 1.6.4
|
||||
type-fest: 5.5.0
|
||||
ufo: 1.6.3
|
||||
uint8array-extras: 1.5.0
|
||||
|
||||
'@ctrl/shared-torrent@6.5.1(ofetch@1.5.1)':
|
||||
@@ -11512,7 +11513,7 @@ snapshots:
|
||||
'@ctrl/shared-torrent': 6.5.1(ofetch@1.5.1)
|
||||
ofetch: 1.5.1
|
||||
type-fest: 4.41.0
|
||||
ufo: 1.6.4
|
||||
ufo: 1.6.3
|
||||
uint8array-extras: 1.5.0
|
||||
|
||||
'@dabh/diagnostics@2.0.8':
|
||||
@@ -11846,11 +11847,14 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@noble/hashes': 2.0.1
|
||||
|
||||
'@extractus/feed-extractor@7.2.1':
|
||||
'@extractus/feed-extractor@7.1.7':
|
||||
dependencies:
|
||||
'@pwshub/bellajs': 13.0.2
|
||||
'@ndaidong/bellajs': 12.0.1
|
||||
cross-fetch: 4.1.0
|
||||
fast-xml-parser: 5.7.2
|
||||
html-entities: 2.6.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
|
||||
'@fastify/ajv-compiler@4.0.5':
|
||||
dependencies:
|
||||
@@ -12469,6 +12473,8 @@ snapshots:
|
||||
- utf-8-validate
|
||||
- webpack-sources
|
||||
|
||||
'@ndaidong/bellajs@12.0.1': {}
|
||||
|
||||
'@next/env@16.2.4': {}
|
||||
|
||||
'@next/eslint-plugin-next@16.2.4':
|
||||
@@ -12773,8 +12779,6 @@ snapshots:
|
||||
|
||||
'@protobufjs/utf8@1.1.0': {}
|
||||
|
||||
'@pwshub/bellajs@13.0.2': {}
|
||||
|
||||
'@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.5)':
|
||||
dependencies:
|
||||
'@standard-schema/spec': 1.1.0
|
||||
@@ -13488,19 +13492,19 @@ snapshots:
|
||||
dependencies:
|
||||
'@swc/counter': 0.1.3
|
||||
|
||||
'@t3-oss/env-core@0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.3)':
|
||||
'@t3-oss/env-core@0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.2)':
|
||||
optionalDependencies:
|
||||
arktype: 2.1.20
|
||||
typescript: 5.9.3
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
'@t3-oss/env-nextjs@0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.3)':
|
||||
'@t3-oss/env-nextjs@0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.2)':
|
||||
dependencies:
|
||||
'@t3-oss/env-core': 0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.3)
|
||||
'@t3-oss/env-core': 0.13.11(arktype@2.1.20)(typescript@5.9.3)(zod@4.4.2)
|
||||
optionalDependencies:
|
||||
arktype: 2.1.20
|
||||
typescript: 5.9.3
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
'@tabler/icons-react@3.41.1(react@19.2.5)':
|
||||
dependencies:
|
||||
@@ -13513,25 +13517,25 @@ snapshots:
|
||||
dependencies:
|
||||
remove-accents: 0.5.0
|
||||
|
||||
'@tanstack/query-core@5.100.9': {}
|
||||
'@tanstack/query-core@5.100.8': {}
|
||||
|
||||
'@tanstack/query-devtools@5.100.9': {}
|
||||
'@tanstack/query-devtools@5.100.8': {}
|
||||
|
||||
'@tanstack/react-query-devtools@5.100.9(@tanstack/react-query@5.100.9(react@19.2.5))(react@19.2.5)':
|
||||
'@tanstack/react-query-devtools@5.100.8(@tanstack/react-query@5.100.8(react@19.2.5))(react@19.2.5)':
|
||||
dependencies:
|
||||
'@tanstack/query-devtools': 5.100.9
|
||||
'@tanstack/react-query': 5.100.9(react@19.2.5)
|
||||
'@tanstack/query-devtools': 5.100.8
|
||||
'@tanstack/react-query': 5.100.8(react@19.2.5)
|
||||
react: 19.2.5
|
||||
|
||||
'@tanstack/react-query-next-experimental@5.100.9(@tanstack/react-query@5.100.9(react@19.2.5))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react@19.2.5)':
|
||||
'@tanstack/react-query-next-experimental@5.100.8(@tanstack/react-query@5.100.8(react@19.2.5))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react@19.2.5)':
|
||||
dependencies:
|
||||
'@tanstack/react-query': 5.100.9(react@19.2.5)
|
||||
'@tanstack/react-query': 5.100.8(react@19.2.5)
|
||||
next: 16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0)
|
||||
react: 19.2.5
|
||||
|
||||
'@tanstack/react-query@5.100.9(react@19.2.5)':
|
||||
'@tanstack/react-query@5.100.8(react@19.2.5)':
|
||||
dependencies:
|
||||
'@tanstack/query-core': 5.100.9
|
||||
'@tanstack/query-core': 5.100.8
|
||||
react: 19.2.5
|
||||
|
||||
'@tanstack/react-table@8.20.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
|
||||
@@ -13804,7 +13808,7 @@ snapshots:
|
||||
'@trpc/server': 11.17.0(typescript@5.9.3)
|
||||
typescript: 5.9.3
|
||||
|
||||
'@trpc/next@11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)':
|
||||
'@trpc/next@11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(next@16.2.4(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(sass@1.99.0))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@trpc/client': 11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3)
|
||||
'@trpc/server': 11.17.0(typescript@5.9.3)
|
||||
@@ -13813,12 +13817,12 @@ snapshots:
|
||||
react-dom: 19.2.5(react@19.2.5)
|
||||
typescript: 5.9.3
|
||||
optionalDependencies:
|
||||
'@tanstack/react-query': 5.100.9(react@19.2.5)
|
||||
'@trpc/react-query': 11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
'@tanstack/react-query': 5.100.8(react@19.2.5)
|
||||
'@trpc/react-query': 11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)
|
||||
|
||||
'@trpc/react-query@11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)':
|
||||
'@trpc/react-query@11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@tanstack/react-query': 5.100.9(react@19.2.5)
|
||||
'@tanstack/react-query': 5.100.8(react@19.2.5)
|
||||
'@trpc/client': 11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3)
|
||||
'@trpc/server': 11.17.0(typescript@5.9.3)
|
||||
react: 19.2.5
|
||||
@@ -13828,9 +13832,9 @@ snapshots:
|
||||
dependencies:
|
||||
typescript: 5.9.3
|
||||
|
||||
'@trpc/tanstack-react-query@11.17.0(@tanstack/react-query@5.100.9(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)':
|
||||
'@trpc/tanstack-react-query@11.17.0(@tanstack/react-query@5.100.8(react@19.2.5))(@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.17.0(typescript@5.9.3))(react@19.2.5)(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@tanstack/react-query': 5.100.9(react@19.2.5)
|
||||
'@tanstack/react-query': 5.100.8(react@19.2.5)
|
||||
'@trpc/client': 11.17.0(@trpc/server@11.17.0(typescript@5.9.3))(typescript@5.9.3)
|
||||
'@trpc/server': 11.17.0(typescript@5.9.3)
|
||||
react: 19.2.5
|
||||
@@ -15104,6 +15108,12 @@ snapshots:
|
||||
'@epic-web/invariant': 1.0.0
|
||||
cross-spawn: 7.0.6
|
||||
|
||||
cross-fetch@4.1.0:
|
||||
dependencies:
|
||||
node-fetch: 2.7.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
|
||||
cross-spawn@7.0.6:
|
||||
dependencies:
|
||||
path-key: 3.1.1
|
||||
@@ -15374,10 +15384,10 @@ snapshots:
|
||||
mysql2: 3.22.3(@types/node@24.12.2)
|
||||
pg: 8.20.0
|
||||
|
||||
drizzle-zod@0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.9.0)(gel@2.0.0)(mysql2@3.22.3(@types/node@24.12.2))(pg@8.20.0))(zod@4.4.3):
|
||||
drizzle-zod@0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.9.0)(gel@2.0.0)(mysql2@3.22.3(@types/node@24.12.2))(pg@8.20.0))(zod@4.4.2):
|
||||
dependencies:
|
||||
drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.9.0)(gel@2.0.0)(mysql2@3.22.3(@types/node@24.12.2))(pg@8.20.0)
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
dunder-proto@1.0.1:
|
||||
dependencies:
|
||||
@@ -15755,8 +15765,8 @@ snapshots:
|
||||
'@babel/core': 7.29.0
|
||||
'@babel/parser': 7.29.2
|
||||
eslint: 10.3.0
|
||||
zod: 4.4.3
|
||||
zod-validation-error: 4.0.2(zod@4.4.3)
|
||||
zod: 4.4.2
|
||||
zod-validation-error: 4.0.2(zod@4.4.2)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -16266,7 +16276,7 @@ snapshots:
|
||||
iron-webcrypto: 1.2.1
|
||||
node-mock-http: 1.0.2
|
||||
radix3: 1.1.2
|
||||
ufo: 1.6.4
|
||||
ufo: 1.6.3
|
||||
uncrypto: 0.1.3
|
||||
|
||||
handlebars@4.7.8:
|
||||
@@ -17005,10 +17015,10 @@ snapshots:
|
||||
dependencies:
|
||||
semver: 7.7.4
|
||||
|
||||
mantine-form-zod-resolver@1.3.0(@mantine/form@8.3.18(react@19.2.5))(zod@4.4.3):
|
||||
mantine-form-zod-resolver@1.3.0(@mantine/form@8.3.18(react@19.2.5))(zod@4.4.2):
|
||||
dependencies:
|
||||
'@mantine/form': 8.3.18(react@19.2.5)
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@mantine/dates@8.3.18(@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@mantine/hooks@8.3.18(react@19.2.5))(dayjs@1.11.20)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@mantine/hooks@8.3.18(react@19.2.5))(@tabler/icons-react@3.41.1(react@19.2.5))(clsx@2.1.1)(dayjs@1.11.20)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
|
||||
dependencies:
|
||||
@@ -17611,7 +17621,7 @@ snapshots:
|
||||
dependencies:
|
||||
destr: 2.0.5
|
||||
node-fetch-native: 1.6.7
|
||||
ufo: 1.6.4
|
||||
ufo: 1.6.3
|
||||
|
||||
ohash@1.1.4: {}
|
||||
|
||||
@@ -18328,14 +18338,14 @@ snapshots:
|
||||
dependencies:
|
||||
find-up-simple: 1.0.1
|
||||
read-pkg: 10.0.0
|
||||
type-fest: 5.6.0
|
||||
type-fest: 5.5.0
|
||||
|
||||
read-pkg@10.0.0:
|
||||
dependencies:
|
||||
'@types/normalize-package-data': 2.4.4
|
||||
normalize-package-data: 8.0.0
|
||||
parse-json: 8.3.0
|
||||
type-fest: 5.6.0
|
||||
type-fest: 5.5.0
|
||||
unicorn-magic: 0.3.0
|
||||
|
||||
read-pkg@9.0.1:
|
||||
@@ -19423,14 +19433,14 @@ snapshots:
|
||||
|
||||
trough@2.2.0: {}
|
||||
|
||||
trpc-to-openapi@3.2.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.17.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.4.3))(zod@4.4.3):
|
||||
trpc-to-openapi@3.2.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.17.0(typescript@5.9.3))(zod-openapi@5.3.0(zod@4.4.2))(zod@4.4.2):
|
||||
dependencies:
|
||||
'@trpc/server': 11.17.0(typescript@5.9.3)
|
||||
co-body: 6.2.0
|
||||
h3: 1.15.1
|
||||
openapi3-ts: 4.4.0
|
||||
zod: 4.4.3
|
||||
zod-openapi: 5.3.0(zod@4.4.3)
|
||||
zod: 4.4.2
|
||||
zod-openapi: 5.3.0(zod@4.4.2)
|
||||
optionalDependencies:
|
||||
'@rollup/rollup-linux-x64-gnu': 4.6.1
|
||||
|
||||
@@ -19508,7 +19518,7 @@ snapshots:
|
||||
|
||||
type-fest@4.41.0: {}
|
||||
|
||||
type-fest@5.6.0:
|
||||
type-fest@5.5.0:
|
||||
dependencies:
|
||||
tagged-tag: 1.0.0
|
||||
|
||||
@@ -19571,7 +19581,7 @@ snapshots:
|
||||
|
||||
typescript@5.9.3: {}
|
||||
|
||||
ufo@1.6.4: {}
|
||||
ufo@1.6.3: {}
|
||||
|
||||
uglify-js@3.19.3:
|
||||
optional: true
|
||||
@@ -20160,23 +20170,23 @@ snapshots:
|
||||
compress-commons: 6.0.2
|
||||
readable-stream: 4.5.2
|
||||
|
||||
zod-form-data@3.0.1(zod@4.4.3):
|
||||
zod-form-data@3.0.1(zod@4.4.2):
|
||||
dependencies:
|
||||
'@rvf/set-get': 7.0.1
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
zod-openapi@5.3.0(zod@4.4.3):
|
||||
zod-openapi@5.3.0(zod@4.4.2):
|
||||
dependencies:
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
zod-validation-error@4.0.2(zod@4.4.3):
|
||||
zod-validation-error@4.0.2(zod@4.4.2):
|
||||
dependencies:
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
zod-validation-error@5.0.0(zod@4.4.3):
|
||||
zod-validation-error@5.0.0(zod@4.4.2):
|
||||
dependencies:
|
||||
zod: 4.4.3
|
||||
zod: 4.4.2
|
||||
|
||||
zod@4.4.3: {}
|
||||
zod@4.4.2: {}
|
||||
|
||||
zwitch@2.0.4: {}
|
||||
+9
-9
@@ -6,7 +6,7 @@ catalog:
|
||||
"@auth/core": ^0.41.2
|
||||
"@auth/drizzle-adapter": ^1.11.2
|
||||
"@ctrl/deluge": ^8.0.0
|
||||
"@ctrl/qbittorrent": ^9.12.1
|
||||
"@ctrl/qbittorrent": ^9.11.2
|
||||
"@ctrl/transmission": ^7.4.0
|
||||
"@dnd-kit/core": ^6.3.1
|
||||
"@dnd-kit/modifiers": ^9.0.0
|
||||
@@ -14,7 +14,7 @@ catalog:
|
||||
"@dnd-kit/utilities": ^3.2.2
|
||||
"@drizzle-team/brocli": ^0.12.0
|
||||
'@eslint/js': 10.0.1
|
||||
"@extractus/feed-extractor": 7.2.1
|
||||
"@extractus/feed-extractor": 7.1.7
|
||||
"@gitbeaker/rest": ^43.8.0
|
||||
"@homarr/gridstack": ^1.12.0
|
||||
"@homarr/node-unifi": ^2.6.0
|
||||
@@ -45,9 +45,9 @@ catalog:
|
||||
"@semantic-release/release-notes-generator": ^14.1.0
|
||||
"@t3-oss/env-nextjs": ^0.13.11
|
||||
"@tabler/icons-react": ^3.41.1
|
||||
"@tanstack/react-query": ^5.100.9
|
||||
"@tanstack/react-query-devtools": ^5.100.9
|
||||
"@tanstack/react-query-next-experimental": ^5.100.9
|
||||
"@tanstack/react-query": ^5.100.8
|
||||
"@tanstack/react-query-devtools": ^5.100.8
|
||||
"@tanstack/react-query-next-experimental": ^5.100.8
|
||||
"@testcontainers/mysql": ^11.14.0
|
||||
"@testcontainers/postgresql": ^11.14.0
|
||||
"@testcontainers/redis": ^11.14.0
|
||||
@@ -72,7 +72,7 @@ catalog:
|
||||
"@trpc/react-query": ^11.17.0
|
||||
"@trpc/server": ^11.17.0
|
||||
"@trpc/tanstack-react-query": ^11.17.0
|
||||
"@turbo/gen": ^2.9.8
|
||||
"@turbo/gen": ^2.9.7
|
||||
"@types/adm-zip": 0.5.8
|
||||
"@types/bcrypt": 6.0.0
|
||||
"@types/better-sqlite3": 7.6.13
|
||||
@@ -123,7 +123,7 @@ catalog:
|
||||
esbuild: ^0.28.0
|
||||
eslint: ^10.3.0
|
||||
eslint-config-prettier: ^10.1.8
|
||||
eslint-config-turbo: ^2.9.8
|
||||
eslint-config-turbo: ^2.9.7
|
||||
eslint-plugin-import: ^2.32.0
|
||||
eslint-plugin-jsx-a11y: ^6.10.2
|
||||
eslint-plugin-react: ^7.37.5
|
||||
@@ -173,7 +173,7 @@ catalog:
|
||||
trpc-to-openapi: ^3.2.0
|
||||
tsdav: ^2.2.0
|
||||
tsx: 4.20.4
|
||||
turbo: ^2.9.8
|
||||
turbo: ^2.9.7
|
||||
typescript: ^5.9.3
|
||||
typescript-eslint: ^8.58.2
|
||||
undici: 7.24.6
|
||||
@@ -185,7 +185,7 @@ catalog:
|
||||
ws: ^8.20.0
|
||||
xml2js: ^0.6.2
|
||||
yaml: 2.8.4
|
||||
zod: ^4.4.3
|
||||
zod: ^4.4.2
|
||||
zod-form-data: ^3.0.1
|
||||
zod-validation-error: ^5.0.0
|
||||
catalogMode: strict
|
||||
|
||||
@@ -18,19 +18,6 @@ if [ "${PUID}" != "0" ] || [ "${PGID}" != "0" ]; then
|
||||
echo "Changing owner to $PUID:$PGID, done."
|
||||
fi
|
||||
|
||||
# support _FILE Suffix for environment variables
|
||||
for file_var in $(env | cut -d '=' -f 1 | grep "_FILE$"); do
|
||||
target_var=$(echo "$file_var" | cut -d'=' -f1 | sed 's/_FILE//')
|
||||
file_path=$(printenv "$file_var")
|
||||
|
||||
if [ -f "$file_path" ]; then
|
||||
export "$target_var"=$(cat "$file_path" | tr -d '\n\r')
|
||||
echo "Info: Loaded secret for $target_var from $file_path"
|
||||
else
|
||||
echo "Warning: Secret file $file_path not found for $target_var"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${PUID}" != "0" ]; then
|
||||
exec su-exec $PUID:$PGID "$@"
|
||||
else
|
||||
|
||||
@@ -19,6 +19,11 @@ export AUTH_SECRET=$(openssl rand -base64 32)
|
||||
# Cron job API key is generated every time the container starts as it is required for communication between nextjs-api and tasks-api
|
||||
export CRON_JOB_API_KEY=$(openssl rand -base64 32)
|
||||
|
||||
# Support secret file for encryption key (is not empty and file exists)
|
||||
if [ -n "$SECRET_ENCRYPTION_KEY_FILE" ] && [ -f "$SECRET_ENCRYPTION_KEY_FILE" ]; then
|
||||
export SECRET_ENCRYPTION_KEY=$(cat $SECRET_ENCRYPTION_KEY_FILE)
|
||||
fi
|
||||
|
||||
# Start nginx proxy
|
||||
# 1. Replace the HOSTNAME in the nginx template file
|
||||
# 2. Create the nginx configuration file from the template
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.cLine truncated
|
||||
[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.cLine truncated
|
||||
@@ -37,7 +37,6 @@
|
||||
"DB_DRIVER",
|
||||
"DOCKER_HOSTNAMES",
|
||||
"DOCKER_PORTS",
|
||||
"DOCKER_SOCKET_PATHS",
|
||||
"NODE_ENV",
|
||||
"PORT",
|
||||
"LOCAL_CERTIFICATE_PATH",
|
||||
|
||||
Reference in new issue
Block a user