chore(release): automatic release v1.17.0
This commit is contained in:
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -31,6 +31,7 @@ body:
|
||||
label: Version
|
||||
description: What version of Homarr are you running?
|
||||
options:
|
||||
- 1.16.0
|
||||
- 1.15.0
|
||||
- 1.14.0
|
||||
- 1.13.1
|
||||
|
||||
@@ -56,9 +56,9 @@
|
||||
"@mantine/tiptap": "^7.17.4",
|
||||
"@million/lint": "1.0.14",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"@tanstack/react-query": "^5.72.2",
|
||||
"@tanstack/react-query-devtools": "^5.72.2",
|
||||
"@tanstack/react-query-next-experimental": "^5.72.2",
|
||||
"@tanstack/react-query": "^5.74.4",
|
||||
"@tanstack/react-query-devtools": "^5.74.4",
|
||||
"@tanstack/react-query-next-experimental": "^5.74.4",
|
||||
"@trpc/client": "^11.1.0",
|
||||
"@trpc/next": "^11.1.0",
|
||||
"@trpc/react-query": "^11.1.0",
|
||||
@@ -72,9 +72,9 @@
|
||||
"dotenv": "^16.5.0",
|
||||
"flag-icons": "^7.3.2",
|
||||
"glob": "^11.0.1",
|
||||
"jotai": "^2.12.2",
|
||||
"jotai": "^2.12.3",
|
||||
"mantine-react-table": "2.0.0-beta.9",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"postcss-preset-mantine": "^1.17.0",
|
||||
"prismjs": "^1.30.0",
|
||||
"react": "19.1.0",
|
||||
@@ -83,22 +83,22 @@
|
||||
"react-simple-code-editor": "^0.14.1",
|
||||
"sass": "^1.86.3",
|
||||
"superjson": "2.2.2",
|
||||
"swagger-ui-react": "^5.20.8",
|
||||
"swagger-ui-react": "^5.21.0",
|
||||
"use-deep-compare-effect": "^1.8.1",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/chroma-js": "3.1.1",
|
||||
"@types/node": "^22.14.0",
|
||||
"@types/node": "^22.14.1",
|
||||
"@types/prismjs": "^1.26.5",
|
||||
"@types/react": "19.1.1",
|
||||
"@types/react": "19.1.2",
|
||||
"@types/react-dom": "19.1.2",
|
||||
"@types/swagger-ui-react": "^5.18.0",
|
||||
"concurrently": "^9.1.2",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"node-loader": "^2.1.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
|
||||
@@ -123,7 +123,7 @@ export const ColorSettingsContent = ({ board }: Props) => {
|
||||
</Grid.Col>
|
||||
</Grid>
|
||||
<Group justify="end">
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -159,7 +159,7 @@ export const BackgroundSettingsContent = ({ board }: Props) => {
|
||||
</Grid>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -38,7 +38,7 @@ export const BehaviorSettingsContent = ({ board }: Props) => {
|
||||
/>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -46,7 +46,7 @@ export const CustomCssSettingsContent = ({ board }: Props) => {
|
||||
</Alert>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -116,7 +116,7 @@ export const GeneralSettingsContent = ({ board }: Props) => {
|
||||
</Grid.Col>
|
||||
</Grid>
|
||||
<Group justify="end">
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -105,7 +105,7 @@ export const LayoutSettingsContent = ({ board }: Props) => {
|
||||
</Stack>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -73,7 +73,7 @@ export const ChangeHomeBoardForm = ({ user, boardsData }: ChangeHomeBoardFormPro
|
||||
/>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.save")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -66,7 +66,7 @@ export const ChangeSearchPreferencesForm = ({ user, searchEnginesData }: ChangeS
|
||||
/>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.save")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -71,7 +71,7 @@ export const FirstDayOfWeek = ({ user }: FirstDayOfWeekProps) => {
|
||||
</Radio.Group>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.save")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -57,7 +57,7 @@ export const PingIconsEnabled = ({ user }: PingIconsEnabledProps) => {
|
||||
/>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.save")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -81,7 +81,7 @@ export const UserProfileForm = ({ user }: UserProfileFormProps) => {
|
||||
|
||||
{isProviderCredentials && (
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" disabled={!form.isDirty()} loading={isPending}>
|
||||
<Button type="submit" disabled={!form.isDirty()} loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -85,7 +85,7 @@ export const ChangePasswordForm = ({ user }: ChangePasswordFormProps) => {
|
||||
/>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.confirm")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -68,7 +68,7 @@ export const RenameGroupForm = ({ group, disabled }: RenameGroupFormProps) => {
|
||||
|
||||
{!disabled && (
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -40,9 +40,5 @@ export const AddGroupMember = ({ groupId, presentUserIds }: AddGroupMemberProps)
|
||||
);
|
||||
}, [openModal, presentUserIds, groupId, mutateAsync, tMembersAdd]);
|
||||
|
||||
return (
|
||||
<MobileAffixButton color="teal" onClick={handleAddMember}>
|
||||
{tMembersAdd("label")}
|
||||
</MobileAffixButton>
|
||||
);
|
||||
return <MobileAffixButton onClick={handleAddMember}>{tMembersAdd("label")}</MobileAffixButton>;
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use client";
|
||||
|
||||
import { useCallback } from "react";
|
||||
import type { PropsWithChildren } from "react";
|
||||
import { useCallback } from "react";
|
||||
import { Button, Card, Group, Switch, Text, Transition } from "@mantine/core";
|
||||
|
||||
import { clientApi } from "@homarr/api/client";
|
||||
@@ -108,7 +108,7 @@ export const SaveAffix = ({ groupId }: SaveAffixProps) => {
|
||||
<Button disabled={isPending} onClick={form.reset}>
|
||||
{t("common.action.discard")}
|
||||
</Button>
|
||||
<Button color="teal" loading={isPending} onClick={handleSubmit}>
|
||||
<Button loading={isPending} onClick={handleSubmit}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -71,7 +71,7 @@ export const GroupHomeBoards = ({ homeBoardId, mobileHomeBoardId, groupId }: Gro
|
||||
/>
|
||||
|
||||
<Group justify="end">
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.save")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -57,9 +57,5 @@ const AddGroup = () => {
|
||||
openModal();
|
||||
}, [openModal]);
|
||||
|
||||
return (
|
||||
<MobileAffixButton onClick={handleAddGroup} color="teal">
|
||||
{t("group.action.create.label")}
|
||||
</MobileAffixButton>
|
||||
);
|
||||
return <MobileAffixButton onClick={handleAddGroup}>{t("group.action.create.label")}</MobileAffixButton>;
|
||||
};
|
||||
|
||||
@@ -264,7 +264,7 @@ const SaveAffix = ({ visible, isPending, onDiscard, onSave }: SaveAffixProps) =>
|
||||
<Button disabled={isPending} onClick={onDiscard}>
|
||||
{t("common.action.discard")}
|
||||
</Button>
|
||||
<Button color="teal" loading={isPending} onClick={onSave}>
|
||||
<Button loading={isPending} onClick={onSave}>
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -89,11 +89,7 @@ const RenderTopToolbarCustomActions = () => {
|
||||
openModal();
|
||||
}, [openModal]);
|
||||
|
||||
return (
|
||||
<Button color="teal" onClick={handleNewInvite}>
|
||||
{t("action.new.title")}
|
||||
</Button>
|
||||
);
|
||||
return <Button onClick={handleNewInvite}>{t("action.new.title")}</Button>;
|
||||
};
|
||||
|
||||
const RenderRowActions = ({ row }: { row: MRT_Row<RouterOutputs["invite"]["getAll"][number]> }) => {
|
||||
|
||||
@@ -82,7 +82,7 @@ export const GroupAccessForm = <TPermission extends string>({
|
||||
<Button rightSection={<IconPlus size="1rem" />} variant="light" onClick={handleAddUser}>
|
||||
{t("common.action.add")}
|
||||
</Button>
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("permission.action.saveGroup")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -104,7 +104,7 @@ export const UsersAccessForm = <TPermission extends string>({
|
||||
<Button rightSection={<IconPlus size="1rem" />} variant="light" onClick={handleAddUser}>
|
||||
{t("common.action.add")}
|
||||
</Button>
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("permission.action.saveUser")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -40,9 +40,7 @@ export const CategoryEditModal = createModal<InnerProps>(({ actions, innerProps
|
||||
<Button onClick={actions.closeModal} variant="subtle" color="gray">
|
||||
{t("common.action.cancel")}
|
||||
</Button>
|
||||
<Button type="submit" color="teal">
|
||||
{innerProps.submitLabel}
|
||||
</Button>
|
||||
<Button type="submit">{innerProps.submitLabel}</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
</form>
|
||||
|
||||
@@ -48,9 +48,7 @@ export const DynamicSectionEditModal = createModal<ModalProps>(({ actions, inner
|
||||
<Button onClick={actions.closeModal} variant="subtle" color="gray">
|
||||
{t("common.action.cancel")}
|
||||
</Button>
|
||||
<Button type="submit" color="teal">
|
||||
{t("common.action.saveChanges")}
|
||||
</Button>
|
||||
<Button type="submit">{t("common.action.saveChanges")}</Button>
|
||||
</Group>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
@@ -44,9 +44,9 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/node": "^22.14.0",
|
||||
"@types/node": "^22.14.1",
|
||||
"dotenv-cli": "^8.0.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"prettier": "^3.5.3",
|
||||
"tsx": "4.19.3",
|
||||
"typescript": "^5.8.3"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/ws": "^8.18.1",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
|
||||
@@ -39,12 +39,12 @@
|
||||
"@semantic-release/npm": "^12.0.1",
|
||||
"@semantic-release/release-notes-generator": "^14.0.3",
|
||||
"@turbo/gen": "^2.5.0",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"@vitejs/plugin-react": "^4.4.0",
|
||||
"@vitest/coverage-v8": "^3.1.1",
|
||||
"@vitest/ui": "^3.1.1",
|
||||
"conventional-changelog-conventionalcommits": "^8.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"jsdom": "^26.0.0",
|
||||
"jsdom": "^26.1.0",
|
||||
"prettier": "^3.5.3",
|
||||
"semantic-release": "^24.2.3",
|
||||
"testcontainers": "^10.24.2",
|
||||
@@ -53,7 +53,7 @@
|
||||
"vite-tsconfig-paths": "^5.1.4",
|
||||
"vitest": "^3.1.1"
|
||||
},
|
||||
"packageManager": "pnpm@10.8.0",
|
||||
"packageManager": "pnpm@10.8.1",
|
||||
"engines": {
|
||||
"node": ">=22.14.0"
|
||||
},
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,19 +45,19 @@
|
||||
"@trpc/react-query": "^11.1.0",
|
||||
"@trpc/server": "^11.1.0",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"pretty-print-error": "^1.1.2",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"superjson": "2.2.2",
|
||||
"trpc-to-openapi": "^2.1.5",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
|
||||
@@ -101,6 +101,18 @@ const getSecretKindOption = (kind: IntegrationKind, sourcedSecrets: SourcedInteg
|
||||
);
|
||||
|
||||
if (onlyFormSecretsKindOptions.length >= 1) {
|
||||
// If the first option is no secret it would always be selected even if we want to have a secret
|
||||
if (
|
||||
onlyFormSecretsKindOptions.length >= 2 &&
|
||||
onlyFormSecretsKindOptions.some((secretKinds) => secretKinds.length === 0)
|
||||
) {
|
||||
return (
|
||||
// Will never be undefined because of the check above
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
onlyFormSecretsKindOptions.find((secretKinds) => secretKinds.length >= 1) ?? onlyFormSecretsKindOptions[0]!
|
||||
);
|
||||
}
|
||||
|
||||
// Will never be undefined because of the check above
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
return onlyFormSecretsKindOptions[0]!;
|
||||
|
||||
@@ -35,12 +35,12 @@
|
||||
"bcrypt": "^5.1.1",
|
||||
"cookies": "^0.9.1",
|
||||
"ldapts": "7.4.0",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"next-auth": "5.0.0-beta.25",
|
||||
"pretty-print-error": "^1.1.2",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
@@ -48,7 +48,7 @@
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/bcrypt": "5.0.2",
|
||||
"@types/cookies": "0.9.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"prettier": "^3.5.3",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,17 +30,17 @@
|
||||
"@homarr/env": "workspace:^0.1.0",
|
||||
"@homarr/log": "workspace:^0.1.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"undici": "7.8.0",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/node-cron": "^3.0.11",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
"@testcontainers/mysql": "^10.24.2",
|
||||
"better-sqlite3": "^11.9.1",
|
||||
"dotenv": "^16.5.0",
|
||||
"drizzle-kit": "^0.30.6",
|
||||
"drizzle-orm": "^0.41.0",
|
||||
"drizzle-kit": "^0.31.0",
|
||||
"drizzle-orm": "^0.42.0",
|
||||
"drizzle-zod": "^0.7.1",
|
||||
"mysql2": "3.14.0"
|
||||
},
|
||||
@@ -60,7 +60,7 @@
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/better-sqlite3": "7.6.13",
|
||||
"dotenv-cli": "^8.0.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"prettier": "^3.5.3",
|
||||
"tsx": "4.19.3",
|
||||
"typescript": "^5.8.3"
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,883 +37,6 @@ export type HomarrDocumentationPath =
|
||||
| "/blog/tags/version"
|
||||
| "/blog/translations"
|
||||
| "/search"
|
||||
| "/docs/1.10.0/tags"
|
||||
| "/docs/1.10.0/tags/active-directory"
|
||||
| "/docs/1.10.0/tags/ad-guard"
|
||||
| "/docs/1.10.0/tags/ad-guard-home"
|
||||
| "/docs/1.10.0/tags/administration"
|
||||
| "/docs/1.10.0/tags/advanced"
|
||||
| "/docs/1.10.0/tags/analytics"
|
||||
| "/docs/1.10.0/tags/api"
|
||||
| "/docs/1.10.0/tags/apps"
|
||||
| "/docs/1.10.0/tags/banner"
|
||||
| "/docs/1.10.0/tags/blocking"
|
||||
| "/docs/1.10.0/tags/boards"
|
||||
| "/docs/1.10.0/tags/bookmark"
|
||||
| "/docs/1.10.0/tags/bookmarks"
|
||||
| "/docs/1.10.0/tags/caddy"
|
||||
| "/docs/1.10.0/tags/certificates"
|
||||
| "/docs/1.10.0/tags/checklist"
|
||||
| "/docs/1.10.0/tags/code"
|
||||
| "/docs/1.10.0/tags/community"
|
||||
| "/docs/1.10.0/tags/configuration"
|
||||
| "/docs/1.10.0/tags/connections"
|
||||
| "/docs/1.10.0/tags/customization"
|
||||
| "/docs/1.10.0/tags/data-sources"
|
||||
| "/docs/1.10.0/tags/database"
|
||||
| "/docs/1.10.0/tags/developer"
|
||||
| "/docs/1.10.0/tags/development"
|
||||
| "/docs/1.10.0/tags/dns"
|
||||
| "/docs/1.10.0/tags/docker"
|
||||
| "/docs/1.10.0/tags/donation"
|
||||
| "/docs/1.10.0/tags/edit-mode"
|
||||
| "/docs/1.10.0/tags/env"
|
||||
| "/docs/1.10.0/tags/environment-variables"
|
||||
| "/docs/1.10.0/tags/feeds"
|
||||
| "/docs/1.10.0/tags/getting-started"
|
||||
| "/docs/1.10.0/tags/google"
|
||||
| "/docs/1.10.0/tags/grafana"
|
||||
| "/docs/1.10.0/tags/groups"
|
||||
| "/docs/1.10.0/tags/hardware"
|
||||
| "/docs/1.10.0/tags/health"
|
||||
| "/docs/1.10.0/tags/help"
|
||||
| "/docs/1.10.0/tags/icon-picker"
|
||||
| "/docs/1.10.0/tags/icon-repositories"
|
||||
| "/docs/1.10.0/tags/icons"
|
||||
| "/docs/1.10.0/tags/iframe"
|
||||
| "/docs/1.10.0/tags/images"
|
||||
| "/docs/1.10.0/tags/installation"
|
||||
| "/docs/1.10.0/tags/integrade"
|
||||
| "/docs/1.10.0/tags/integration"
|
||||
| "/docs/1.10.0/tags/integrations"
|
||||
| "/docs/1.10.0/tags/interface"
|
||||
| "/docs/1.10.0/tags/jellyserr"
|
||||
| "/docs/1.10.0/tags/layout"
|
||||
| "/docs/1.10.0/tags/ldap"
|
||||
| "/docs/1.10.0/tags/links"
|
||||
| "/docs/1.10.0/tags/lists"
|
||||
| "/docs/1.10.0/tags/management"
|
||||
| "/docs/1.10.0/tags/media"
|
||||
| "/docs/1.10.0/tags/minecraft"
|
||||
| "/docs/1.10.0/tags/monitoring"
|
||||
| "/docs/1.10.0/tags/news"
|
||||
| "/docs/1.10.0/tags/notebook"
|
||||
| "/docs/1.10.0/tags/notes"
|
||||
| "/docs/1.10.0/tags/oidc"
|
||||
| "/docs/1.10.0/tags/open-collective"
|
||||
| "/docs/1.10.0/tags/open-media-vault"
|
||||
| "/docs/1.10.0/tags/overseerr"
|
||||
| "/docs/1.10.0/tags/permissions"
|
||||
| "/docs/1.10.0/tags/pgid"
|
||||
| "/docs/1.10.0/tags/pi-hole"
|
||||
| "/docs/1.10.0/tags/ping"
|
||||
| "/docs/1.10.0/tags/programming"
|
||||
| "/docs/1.10.0/tags/proxmox"
|
||||
| "/docs/1.10.0/tags/proxy"
|
||||
| "/docs/1.10.0/tags/puid"
|
||||
| "/docs/1.10.0/tags/responsive"
|
||||
| "/docs/1.10.0/tags/roles"
|
||||
| "/docs/1.10.0/tags/rss"
|
||||
| "/docs/1.10.0/tags/search"
|
||||
| "/docs/1.10.0/tags/search-engines"
|
||||
| "/docs/1.10.0/tags/security"
|
||||
| "/docs/1.10.0/tags/self-signed"
|
||||
| "/docs/1.10.0/tags/seo"
|
||||
| "/docs/1.10.0/tags/server"
|
||||
| "/docs/1.10.0/tags/settings"
|
||||
| "/docs/1.10.0/tags/sinkhole"
|
||||
| "/docs/1.10.0/tags/sso"
|
||||
| "/docs/1.10.0/tags/system"
|
||||
| "/docs/1.10.0/tags/table"
|
||||
| "/docs/1.10.0/tags/technical-documentation"
|
||||
| "/docs/1.10.0/tags/text"
|
||||
| "/docs/1.10.0/tags/torrent"
|
||||
| "/docs/1.10.0/tags/traefik"
|
||||
| "/docs/1.10.0/tags/translations"
|
||||
| "/docs/1.10.0/tags/unraid"
|
||||
| "/docs/1.10.0/tags/uploads"
|
||||
| "/docs/1.10.0/tags/usenet"
|
||||
| "/docs/1.10.0/tags/users"
|
||||
| "/docs/1.10.0/tags/variables"
|
||||
| "/docs/1.10.0/tags/widgets"
|
||||
| "/docs/1.10.0/advanced/command-line"
|
||||
| "/docs/1.10.0/advanced/command-line/fix-usernames"
|
||||
| "/docs/1.10.0/advanced/command-line/password-recovery"
|
||||
| "/docs/1.10.0/advanced/development/getting-started"
|
||||
| "/docs/1.10.0/advanced/environment-variables"
|
||||
| "/docs/1.10.0/advanced/icons"
|
||||
| "/docs/1.10.0/advanced/keyboard-shortcuts"
|
||||
| "/docs/1.10.0/advanced/proxy"
|
||||
| "/docs/1.10.0/advanced/running-as-different-user"
|
||||
| "/docs/1.10.0/advanced/single-sign-on"
|
||||
| "/docs/1.10.0/category/advanced"
|
||||
| "/docs/1.10.0/category/community"
|
||||
| "/docs/1.10.0/category/developer-guides"
|
||||
| "/docs/1.10.0/category/getting-started"
|
||||
| "/docs/1.10.0/category/installation"
|
||||
| "/docs/1.10.0/category/installation-1"
|
||||
| "/docs/1.10.0/category/integrations"
|
||||
| "/docs/1.10.0/category/management"
|
||||
| "/docs/1.10.0/category/widgets"
|
||||
| "/docs/1.10.0/community/donate"
|
||||
| "/docs/1.10.0/community/faq"
|
||||
| "/docs/1.10.0/community/get-in-touch"
|
||||
| "/docs/1.10.0/community/license"
|
||||
| "/docs/1.10.0/community/translations"
|
||||
| "/docs/1.10.0/getting-started"
|
||||
| "/docs/1.10.0/getting-started/after-the-installation"
|
||||
| "/docs/1.10.0/getting-started/glossary"
|
||||
| "/docs/1.10.0/getting-started/installation/docker"
|
||||
| "/docs/1.10.0/getting-started/installation/easy-panel"
|
||||
| "/docs/1.10.0/getting-started/installation/helm"
|
||||
| "/docs/1.10.0/getting-started/installation/home-assistant"
|
||||
| "/docs/1.10.0/getting-started/installation/portainer"
|
||||
| "/docs/1.10.0/getting-started/installation/qnap"
|
||||
| "/docs/1.10.0/getting-started/installation/railway"
|
||||
| "/docs/1.10.0/getting-started/installation/saltbox"
|
||||
| "/docs/1.10.0/getting-started/installation/source"
|
||||
| "/docs/1.10.0/getting-started/installation/synology"
|
||||
| "/docs/1.10.0/getting-started/installation/unraid"
|
||||
| "/docs/1.10.0/integrations/containers"
|
||||
| "/docs/1.10.0/integrations/dns"
|
||||
| "/docs/1.10.0/integrations/hardware"
|
||||
| "/docs/1.10.0/integrations/media-requester"
|
||||
| "/docs/1.10.0/integrations/media-server"
|
||||
| "/docs/1.10.0/integrations/servarr"
|
||||
| "/docs/1.10.0/integrations/torrent"
|
||||
| "/docs/1.10.0/integrations/usenet"
|
||||
| "/docs/1.10.0/management/api"
|
||||
| "/docs/1.10.0/management/apps"
|
||||
| "/docs/1.10.0/management/boards"
|
||||
| "/docs/1.10.0/management/certificates"
|
||||
| "/docs/1.10.0/management/integrations"
|
||||
| "/docs/1.10.0/management/media"
|
||||
| "/docs/1.10.0/management/search-engines"
|
||||
| "/docs/1.10.0/management/settings"
|
||||
| "/docs/1.10.0/management/users"
|
||||
| "/docs/1.10.0/widgets/bookmarks"
|
||||
| "/docs/1.10.0/widgets/calendar"
|
||||
| "/docs/1.10.0/widgets/clock"
|
||||
| "/docs/1.10.0/widgets/dns-hole"
|
||||
| "/docs/1.10.0/widgets/downloads"
|
||||
| "/docs/1.10.0/widgets/health-monitoring"
|
||||
| "/docs/1.10.0/widgets/home-assistant"
|
||||
| "/docs/1.10.0/widgets/iframe"
|
||||
| "/docs/1.10.0/widgets/indexer-manager"
|
||||
| "/docs/1.10.0/widgets/media-requests"
|
||||
| "/docs/1.10.0/widgets/media-server"
|
||||
| "/docs/1.10.0/widgets/minecraft-server-status"
|
||||
| "/docs/1.10.0/widgets/notebook"
|
||||
| "/docs/1.10.0/widgets/rss"
|
||||
| "/docs/1.10.0/widgets/video"
|
||||
| "/docs/1.10.0/widgets/weather"
|
||||
| "/docs/1.11.0/tags"
|
||||
| "/docs/1.11.0/tags/active-directory"
|
||||
| "/docs/1.11.0/tags/ad-guard"
|
||||
| "/docs/1.11.0/tags/ad-guard-home"
|
||||
| "/docs/1.11.0/tags/administration"
|
||||
| "/docs/1.11.0/tags/advanced"
|
||||
| "/docs/1.11.0/tags/analytics"
|
||||
| "/docs/1.11.0/tags/api"
|
||||
| "/docs/1.11.0/tags/apps"
|
||||
| "/docs/1.11.0/tags/banner"
|
||||
| "/docs/1.11.0/tags/blocking"
|
||||
| "/docs/1.11.0/tags/boards"
|
||||
| "/docs/1.11.0/tags/bookmark"
|
||||
| "/docs/1.11.0/tags/bookmarks"
|
||||
| "/docs/1.11.0/tags/caddy"
|
||||
| "/docs/1.11.0/tags/certificates"
|
||||
| "/docs/1.11.0/tags/checklist"
|
||||
| "/docs/1.11.0/tags/code"
|
||||
| "/docs/1.11.0/tags/community"
|
||||
| "/docs/1.11.0/tags/configuration"
|
||||
| "/docs/1.11.0/tags/connections"
|
||||
| "/docs/1.11.0/tags/customization"
|
||||
| "/docs/1.11.0/tags/data-sources"
|
||||
| "/docs/1.11.0/tags/database"
|
||||
| "/docs/1.11.0/tags/developer"
|
||||
| "/docs/1.11.0/tags/development"
|
||||
| "/docs/1.11.0/tags/dns"
|
||||
| "/docs/1.11.0/tags/docker"
|
||||
| "/docs/1.11.0/tags/donation"
|
||||
| "/docs/1.11.0/tags/edit-mode"
|
||||
| "/docs/1.11.0/tags/env"
|
||||
| "/docs/1.11.0/tags/environment-variables"
|
||||
| "/docs/1.11.0/tags/feeds"
|
||||
| "/docs/1.11.0/tags/getting-started"
|
||||
| "/docs/1.11.0/tags/google"
|
||||
| "/docs/1.11.0/tags/grafana"
|
||||
| "/docs/1.11.0/tags/groups"
|
||||
| "/docs/1.11.0/tags/hardware"
|
||||
| "/docs/1.11.0/tags/health"
|
||||
| "/docs/1.11.0/tags/help"
|
||||
| "/docs/1.11.0/tags/icon-picker"
|
||||
| "/docs/1.11.0/tags/icon-repositories"
|
||||
| "/docs/1.11.0/tags/icons"
|
||||
| "/docs/1.11.0/tags/iframe"
|
||||
| "/docs/1.11.0/tags/images"
|
||||
| "/docs/1.11.0/tags/installation"
|
||||
| "/docs/1.11.0/tags/integrade"
|
||||
| "/docs/1.11.0/tags/integration"
|
||||
| "/docs/1.11.0/tags/integrations"
|
||||
| "/docs/1.11.0/tags/interface"
|
||||
| "/docs/1.11.0/tags/jellyserr"
|
||||
| "/docs/1.11.0/tags/layout"
|
||||
| "/docs/1.11.0/tags/ldap"
|
||||
| "/docs/1.11.0/tags/links"
|
||||
| "/docs/1.11.0/tags/lists"
|
||||
| "/docs/1.11.0/tags/management"
|
||||
| "/docs/1.11.0/tags/media"
|
||||
| "/docs/1.11.0/tags/minecraft"
|
||||
| "/docs/1.11.0/tags/monitoring"
|
||||
| "/docs/1.11.0/tags/news"
|
||||
| "/docs/1.11.0/tags/notebook"
|
||||
| "/docs/1.11.0/tags/notes"
|
||||
| "/docs/1.11.0/tags/oidc"
|
||||
| "/docs/1.11.0/tags/open-collective"
|
||||
| "/docs/1.11.0/tags/open-media-vault"
|
||||
| "/docs/1.11.0/tags/overseerr"
|
||||
| "/docs/1.11.0/tags/permissions"
|
||||
| "/docs/1.11.0/tags/pgid"
|
||||
| "/docs/1.11.0/tags/pi-hole"
|
||||
| "/docs/1.11.0/tags/ping"
|
||||
| "/docs/1.11.0/tags/programming"
|
||||
| "/docs/1.11.0/tags/proxmox"
|
||||
| "/docs/1.11.0/tags/proxy"
|
||||
| "/docs/1.11.0/tags/puid"
|
||||
| "/docs/1.11.0/tags/responsive"
|
||||
| "/docs/1.11.0/tags/roles"
|
||||
| "/docs/1.11.0/tags/rss"
|
||||
| "/docs/1.11.0/tags/search"
|
||||
| "/docs/1.11.0/tags/search-engines"
|
||||
| "/docs/1.11.0/tags/security"
|
||||
| "/docs/1.11.0/tags/self-signed"
|
||||
| "/docs/1.11.0/tags/seo"
|
||||
| "/docs/1.11.0/tags/server"
|
||||
| "/docs/1.11.0/tags/settings"
|
||||
| "/docs/1.11.0/tags/sinkhole"
|
||||
| "/docs/1.11.0/tags/sso"
|
||||
| "/docs/1.11.0/tags/system"
|
||||
| "/docs/1.11.0/tags/table"
|
||||
| "/docs/1.11.0/tags/technical-documentation"
|
||||
| "/docs/1.11.0/tags/text"
|
||||
| "/docs/1.11.0/tags/torrent"
|
||||
| "/docs/1.11.0/tags/traefik"
|
||||
| "/docs/1.11.0/tags/translations"
|
||||
| "/docs/1.11.0/tags/unraid"
|
||||
| "/docs/1.11.0/tags/uploads"
|
||||
| "/docs/1.11.0/tags/usenet"
|
||||
| "/docs/1.11.0/tags/users"
|
||||
| "/docs/1.11.0/tags/variables"
|
||||
| "/docs/1.11.0/tags/widgets"
|
||||
| "/docs/1.11.0/advanced/command-line"
|
||||
| "/docs/1.11.0/advanced/command-line/fix-usernames"
|
||||
| "/docs/1.11.0/advanced/command-line/password-recovery"
|
||||
| "/docs/1.11.0/advanced/development/getting-started"
|
||||
| "/docs/1.11.0/advanced/development/kubernetes"
|
||||
| "/docs/1.11.0/advanced/environment-variables"
|
||||
| "/docs/1.11.0/advanced/icons"
|
||||
| "/docs/1.11.0/advanced/keyboard-shortcuts"
|
||||
| "/docs/1.11.0/advanced/proxy"
|
||||
| "/docs/1.11.0/advanced/running-as-different-user"
|
||||
| "/docs/1.11.0/advanced/single-sign-on"
|
||||
| "/docs/1.11.0/category/advanced"
|
||||
| "/docs/1.11.0/category/community"
|
||||
| "/docs/1.11.0/category/developer-guides"
|
||||
| "/docs/1.11.0/category/getting-started"
|
||||
| "/docs/1.11.0/category/installation"
|
||||
| "/docs/1.11.0/category/installation-1"
|
||||
| "/docs/1.11.0/category/integrations"
|
||||
| "/docs/1.11.0/category/management"
|
||||
| "/docs/1.11.0/category/widgets"
|
||||
| "/docs/1.11.0/community/donate"
|
||||
| "/docs/1.11.0/community/faq"
|
||||
| "/docs/1.11.0/community/get-in-touch"
|
||||
| "/docs/1.11.0/community/license"
|
||||
| "/docs/1.11.0/community/translations"
|
||||
| "/docs/1.11.0/getting-started"
|
||||
| "/docs/1.11.0/getting-started/after-the-installation"
|
||||
| "/docs/1.11.0/getting-started/glossary"
|
||||
| "/docs/1.11.0/getting-started/installation/docker"
|
||||
| "/docs/1.11.0/getting-started/installation/easy-panel"
|
||||
| "/docs/1.11.0/getting-started/installation/helm"
|
||||
| "/docs/1.11.0/getting-started/installation/home-assistant"
|
||||
| "/docs/1.11.0/getting-started/installation/portainer"
|
||||
| "/docs/1.11.0/getting-started/installation/qnap"
|
||||
| "/docs/1.11.0/getting-started/installation/railway"
|
||||
| "/docs/1.11.0/getting-started/installation/saltbox"
|
||||
| "/docs/1.11.0/getting-started/installation/source"
|
||||
| "/docs/1.11.0/getting-started/installation/synology"
|
||||
| "/docs/1.11.0/getting-started/installation/unraid"
|
||||
| "/docs/1.11.0/integrations/containers"
|
||||
| "/docs/1.11.0/integrations/dns"
|
||||
| "/docs/1.11.0/integrations/hardware"
|
||||
| "/docs/1.11.0/integrations/kubernetes"
|
||||
| "/docs/1.11.0/integrations/media-requester"
|
||||
| "/docs/1.11.0/integrations/media-server"
|
||||
| "/docs/1.11.0/integrations/servarr"
|
||||
| "/docs/1.11.0/integrations/torrent"
|
||||
| "/docs/1.11.0/integrations/usenet"
|
||||
| "/docs/1.11.0/management/api"
|
||||
| "/docs/1.11.0/management/apps"
|
||||
| "/docs/1.11.0/management/boards"
|
||||
| "/docs/1.11.0/management/certificates"
|
||||
| "/docs/1.11.0/management/integrations"
|
||||
| "/docs/1.11.0/management/media"
|
||||
| "/docs/1.11.0/management/search-engines"
|
||||
| "/docs/1.11.0/management/settings"
|
||||
| "/docs/1.11.0/management/users"
|
||||
| "/docs/1.11.0/widgets/bookmarks"
|
||||
| "/docs/1.11.0/widgets/calendar"
|
||||
| "/docs/1.11.0/widgets/clock"
|
||||
| "/docs/1.11.0/widgets/dns-hole"
|
||||
| "/docs/1.11.0/widgets/downloads"
|
||||
| "/docs/1.11.0/widgets/health-monitoring"
|
||||
| "/docs/1.11.0/widgets/home-assistant"
|
||||
| "/docs/1.11.0/widgets/iframe"
|
||||
| "/docs/1.11.0/widgets/indexer-manager"
|
||||
| "/docs/1.11.0/widgets/media-requests"
|
||||
| "/docs/1.11.0/widgets/media-server"
|
||||
| "/docs/1.11.0/widgets/minecraft-server-status"
|
||||
| "/docs/1.11.0/widgets/notebook"
|
||||
| "/docs/1.11.0/widgets/rss"
|
||||
| "/docs/1.11.0/widgets/video"
|
||||
| "/docs/1.11.0/widgets/weather"
|
||||
| "/docs/1.12.0/tags"
|
||||
| "/docs/1.12.0/tags/active-directory"
|
||||
| "/docs/1.12.0/tags/ad-guard"
|
||||
| "/docs/1.12.0/tags/ad-guard-home"
|
||||
| "/docs/1.12.0/tags/administration"
|
||||
| "/docs/1.12.0/tags/advanced"
|
||||
| "/docs/1.12.0/tags/analytics"
|
||||
| "/docs/1.12.0/tags/api"
|
||||
| "/docs/1.12.0/tags/apps"
|
||||
| "/docs/1.12.0/tags/banner"
|
||||
| "/docs/1.12.0/tags/blocking"
|
||||
| "/docs/1.12.0/tags/boards"
|
||||
| "/docs/1.12.0/tags/bookmark"
|
||||
| "/docs/1.12.0/tags/bookmarks"
|
||||
| "/docs/1.12.0/tags/caddy"
|
||||
| "/docs/1.12.0/tags/certificates"
|
||||
| "/docs/1.12.0/tags/checklist"
|
||||
| "/docs/1.12.0/tags/code"
|
||||
| "/docs/1.12.0/tags/community"
|
||||
| "/docs/1.12.0/tags/configuration"
|
||||
| "/docs/1.12.0/tags/connections"
|
||||
| "/docs/1.12.0/tags/customization"
|
||||
| "/docs/1.12.0/tags/data-sources"
|
||||
| "/docs/1.12.0/tags/database"
|
||||
| "/docs/1.12.0/tags/developer"
|
||||
| "/docs/1.12.0/tags/development"
|
||||
| "/docs/1.12.0/tags/dns"
|
||||
| "/docs/1.12.0/tags/docker"
|
||||
| "/docs/1.12.0/tags/donation"
|
||||
| "/docs/1.12.0/tags/edit-mode"
|
||||
| "/docs/1.12.0/tags/env"
|
||||
| "/docs/1.12.0/tags/environment-variables"
|
||||
| "/docs/1.12.0/tags/feeds"
|
||||
| "/docs/1.12.0/tags/finance"
|
||||
| "/docs/1.12.0/tags/getting-started"
|
||||
| "/docs/1.12.0/tags/google"
|
||||
| "/docs/1.12.0/tags/grafana"
|
||||
| "/docs/1.12.0/tags/groups"
|
||||
| "/docs/1.12.0/tags/hardware"
|
||||
| "/docs/1.12.0/tags/health"
|
||||
| "/docs/1.12.0/tags/help"
|
||||
| "/docs/1.12.0/tags/icon-picker"
|
||||
| "/docs/1.12.0/tags/icon-repositories"
|
||||
| "/docs/1.12.0/tags/icons"
|
||||
| "/docs/1.12.0/tags/iframe"
|
||||
| "/docs/1.12.0/tags/images"
|
||||
| "/docs/1.12.0/tags/installation"
|
||||
| "/docs/1.12.0/tags/integrade"
|
||||
| "/docs/1.12.0/tags/integration"
|
||||
| "/docs/1.12.0/tags/integrations"
|
||||
| "/docs/1.12.0/tags/interface"
|
||||
| "/docs/1.12.0/tags/jellyserr"
|
||||
| "/docs/1.12.0/tags/layout"
|
||||
| "/docs/1.12.0/tags/ldap"
|
||||
| "/docs/1.12.0/tags/links"
|
||||
| "/docs/1.12.0/tags/lists"
|
||||
| "/docs/1.12.0/tags/management"
|
||||
| "/docs/1.12.0/tags/market"
|
||||
| "/docs/1.12.0/tags/media"
|
||||
| "/docs/1.12.0/tags/minecraft"
|
||||
| "/docs/1.12.0/tags/monitoring"
|
||||
| "/docs/1.12.0/tags/news"
|
||||
| "/docs/1.12.0/tags/notebook"
|
||||
| "/docs/1.12.0/tags/notes"
|
||||
| "/docs/1.12.0/tags/oidc"
|
||||
| "/docs/1.12.0/tags/open-collective"
|
||||
| "/docs/1.12.0/tags/open-media-vault"
|
||||
| "/docs/1.12.0/tags/overseerr"
|
||||
| "/docs/1.12.0/tags/permissions"
|
||||
| "/docs/1.12.0/tags/pgid"
|
||||
| "/docs/1.12.0/tags/pi-hole"
|
||||
| "/docs/1.12.0/tags/ping"
|
||||
| "/docs/1.12.0/tags/programming"
|
||||
| "/docs/1.12.0/tags/proxmox"
|
||||
| "/docs/1.12.0/tags/proxy"
|
||||
| "/docs/1.12.0/tags/puid"
|
||||
| "/docs/1.12.0/tags/responsive"
|
||||
| "/docs/1.12.0/tags/roles"
|
||||
| "/docs/1.12.0/tags/rss"
|
||||
| "/docs/1.12.0/tags/search"
|
||||
| "/docs/1.12.0/tags/search-engines"
|
||||
| "/docs/1.12.0/tags/security"
|
||||
| "/docs/1.12.0/tags/self-signed"
|
||||
| "/docs/1.12.0/tags/seo"
|
||||
| "/docs/1.12.0/tags/server"
|
||||
| "/docs/1.12.0/tags/settings"
|
||||
| "/docs/1.12.0/tags/sinkhole"
|
||||
| "/docs/1.12.0/tags/sso"
|
||||
| "/docs/1.12.0/tags/stocks"
|
||||
| "/docs/1.12.0/tags/system"
|
||||
| "/docs/1.12.0/tags/table"
|
||||
| "/docs/1.12.0/tags/technical-documentation"
|
||||
| "/docs/1.12.0/tags/text"
|
||||
| "/docs/1.12.0/tags/torrent"
|
||||
| "/docs/1.12.0/tags/traefik"
|
||||
| "/docs/1.12.0/tags/translations"
|
||||
| "/docs/1.12.0/tags/unraid"
|
||||
| "/docs/1.12.0/tags/uploads"
|
||||
| "/docs/1.12.0/tags/usenet"
|
||||
| "/docs/1.12.0/tags/users"
|
||||
| "/docs/1.12.0/tags/variables"
|
||||
| "/docs/1.12.0/tags/widgets"
|
||||
| "/docs/1.12.0/advanced/command-line"
|
||||
| "/docs/1.12.0/advanced/command-line/fix-usernames"
|
||||
| "/docs/1.12.0/advanced/command-line/password-recovery"
|
||||
| "/docs/1.12.0/advanced/development/getting-started"
|
||||
| "/docs/1.12.0/advanced/development/kubernetes"
|
||||
| "/docs/1.12.0/advanced/environment-variables"
|
||||
| "/docs/1.12.0/advanced/icons"
|
||||
| "/docs/1.12.0/advanced/keyboard-shortcuts"
|
||||
| "/docs/1.12.0/advanced/proxy"
|
||||
| "/docs/1.12.0/advanced/running-as-different-user"
|
||||
| "/docs/1.12.0/advanced/single-sign-on"
|
||||
| "/docs/1.12.0/category/advanced"
|
||||
| "/docs/1.12.0/category/community"
|
||||
| "/docs/1.12.0/category/developer-guides"
|
||||
| "/docs/1.12.0/category/getting-started"
|
||||
| "/docs/1.12.0/category/installation"
|
||||
| "/docs/1.12.0/category/installation-1"
|
||||
| "/docs/1.12.0/category/integrations"
|
||||
| "/docs/1.12.0/category/management"
|
||||
| "/docs/1.12.0/category/widgets"
|
||||
| "/docs/1.12.0/community/donate"
|
||||
| "/docs/1.12.0/community/faq"
|
||||
| "/docs/1.12.0/community/get-in-touch"
|
||||
| "/docs/1.12.0/community/license"
|
||||
| "/docs/1.12.0/community/translations"
|
||||
| "/docs/1.12.0/getting-started"
|
||||
| "/docs/1.12.0/getting-started/after-the-installation"
|
||||
| "/docs/1.12.0/getting-started/glossary"
|
||||
| "/docs/1.12.0/getting-started/installation/docker"
|
||||
| "/docs/1.12.0/getting-started/installation/easy-panel"
|
||||
| "/docs/1.12.0/getting-started/installation/helm"
|
||||
| "/docs/1.12.0/getting-started/installation/home-assistant"
|
||||
| "/docs/1.12.0/getting-started/installation/portainer"
|
||||
| "/docs/1.12.0/getting-started/installation/proxmox"
|
||||
| "/docs/1.12.0/getting-started/installation/qnap"
|
||||
| "/docs/1.12.0/getting-started/installation/railway"
|
||||
| "/docs/1.12.0/getting-started/installation/saltbox"
|
||||
| "/docs/1.12.0/getting-started/installation/source"
|
||||
| "/docs/1.12.0/getting-started/installation/synology"
|
||||
| "/docs/1.12.0/getting-started/installation/unraid"
|
||||
| "/docs/1.12.0/integrations/containers"
|
||||
| "/docs/1.12.0/integrations/dns"
|
||||
| "/docs/1.12.0/integrations/hardware"
|
||||
| "/docs/1.12.0/integrations/kubernetes"
|
||||
| "/docs/1.12.0/integrations/media-requester"
|
||||
| "/docs/1.12.0/integrations/media-server"
|
||||
| "/docs/1.12.0/integrations/servarr"
|
||||
| "/docs/1.12.0/integrations/torrent"
|
||||
| "/docs/1.12.0/integrations/usenet"
|
||||
| "/docs/1.12.0/management/api"
|
||||
| "/docs/1.12.0/management/apps"
|
||||
| "/docs/1.12.0/management/boards"
|
||||
| "/docs/1.12.0/management/certificates"
|
||||
| "/docs/1.12.0/management/integrations"
|
||||
| "/docs/1.12.0/management/media"
|
||||
| "/docs/1.12.0/management/search-engines"
|
||||
| "/docs/1.12.0/management/settings"
|
||||
| "/docs/1.12.0/management/users"
|
||||
| "/docs/1.12.0/widgets/bookmarks"
|
||||
| "/docs/1.12.0/widgets/calendar"
|
||||
| "/docs/1.12.0/widgets/clock"
|
||||
| "/docs/1.12.0/widgets/dns-hole"
|
||||
| "/docs/1.12.0/widgets/downloads"
|
||||
| "/docs/1.12.0/widgets/health-monitoring"
|
||||
| "/docs/1.12.0/widgets/home-assistant"
|
||||
| "/docs/1.12.0/widgets/iframe"
|
||||
| "/docs/1.12.0/widgets/indexer-manager"
|
||||
| "/docs/1.12.0/widgets/media-requests"
|
||||
| "/docs/1.12.0/widgets/media-server"
|
||||
| "/docs/1.12.0/widgets/minecraft-server-status"
|
||||
| "/docs/1.12.0/widgets/notebook"
|
||||
| "/docs/1.12.0/widgets/rss"
|
||||
| "/docs/1.12.0/widgets/stocks"
|
||||
| "/docs/1.12.0/widgets/video"
|
||||
| "/docs/1.12.0/widgets/weather"
|
||||
| "/docs/1.13.1/tags"
|
||||
| "/docs/1.13.1/tags/active-directory"
|
||||
| "/docs/1.13.1/tags/ad-guard"
|
||||
| "/docs/1.13.1/tags/ad-guard-home"
|
||||
| "/docs/1.13.1/tags/administration"
|
||||
| "/docs/1.13.1/tags/advanced"
|
||||
| "/docs/1.13.1/tags/analytics"
|
||||
| "/docs/1.13.1/tags/api"
|
||||
| "/docs/1.13.1/tags/apps"
|
||||
| "/docs/1.13.1/tags/banner"
|
||||
| "/docs/1.13.1/tags/blocking"
|
||||
| "/docs/1.13.1/tags/boards"
|
||||
| "/docs/1.13.1/tags/bookmark"
|
||||
| "/docs/1.13.1/tags/bookmarks"
|
||||
| "/docs/1.13.1/tags/caddy"
|
||||
| "/docs/1.13.1/tags/certificates"
|
||||
| "/docs/1.13.1/tags/checklist"
|
||||
| "/docs/1.13.1/tags/code"
|
||||
| "/docs/1.13.1/tags/community"
|
||||
| "/docs/1.13.1/tags/configuration"
|
||||
| "/docs/1.13.1/tags/connections"
|
||||
| "/docs/1.13.1/tags/customization"
|
||||
| "/docs/1.13.1/tags/data-sources"
|
||||
| "/docs/1.13.1/tags/database"
|
||||
| "/docs/1.13.1/tags/developer"
|
||||
| "/docs/1.13.1/tags/development"
|
||||
| "/docs/1.13.1/tags/dns"
|
||||
| "/docs/1.13.1/tags/docker"
|
||||
| "/docs/1.13.1/tags/donation"
|
||||
| "/docs/1.13.1/tags/edit-mode"
|
||||
| "/docs/1.13.1/tags/env"
|
||||
| "/docs/1.13.1/tags/environment-variables"
|
||||
| "/docs/1.13.1/tags/feeds"
|
||||
| "/docs/1.13.1/tags/finance"
|
||||
| "/docs/1.13.1/tags/getting-started"
|
||||
| "/docs/1.13.1/tags/google"
|
||||
| "/docs/1.13.1/tags/grafana"
|
||||
| "/docs/1.13.1/tags/groups"
|
||||
| "/docs/1.13.1/tags/hardware"
|
||||
| "/docs/1.13.1/tags/health"
|
||||
| "/docs/1.13.1/tags/help"
|
||||
| "/docs/1.13.1/tags/icon-picker"
|
||||
| "/docs/1.13.1/tags/icon-repositories"
|
||||
| "/docs/1.13.1/tags/icons"
|
||||
| "/docs/1.13.1/tags/iframe"
|
||||
| "/docs/1.13.1/tags/images"
|
||||
| "/docs/1.13.1/tags/installation"
|
||||
| "/docs/1.13.1/tags/integrade"
|
||||
| "/docs/1.13.1/tags/integration"
|
||||
| "/docs/1.13.1/tags/integrations"
|
||||
| "/docs/1.13.1/tags/interface"
|
||||
| "/docs/1.13.1/tags/jellyserr"
|
||||
| "/docs/1.13.1/tags/layout"
|
||||
| "/docs/1.13.1/tags/ldap"
|
||||
| "/docs/1.13.1/tags/links"
|
||||
| "/docs/1.13.1/tags/lists"
|
||||
| "/docs/1.13.1/tags/management"
|
||||
| "/docs/1.13.1/tags/market"
|
||||
| "/docs/1.13.1/tags/media"
|
||||
| "/docs/1.13.1/tags/minecraft"
|
||||
| "/docs/1.13.1/tags/monitoring"
|
||||
| "/docs/1.13.1/tags/news"
|
||||
| "/docs/1.13.1/tags/notebook"
|
||||
| "/docs/1.13.1/tags/notes"
|
||||
| "/docs/1.13.1/tags/oidc"
|
||||
| "/docs/1.13.1/tags/open-collective"
|
||||
| "/docs/1.13.1/tags/open-media-vault"
|
||||
| "/docs/1.13.1/tags/overseerr"
|
||||
| "/docs/1.13.1/tags/permissions"
|
||||
| "/docs/1.13.1/tags/pgid"
|
||||
| "/docs/1.13.1/tags/pi-hole"
|
||||
| "/docs/1.13.1/tags/ping"
|
||||
| "/docs/1.13.1/tags/programming"
|
||||
| "/docs/1.13.1/tags/proxmox"
|
||||
| "/docs/1.13.1/tags/proxy"
|
||||
| "/docs/1.13.1/tags/puid"
|
||||
| "/docs/1.13.1/tags/responsive"
|
||||
| "/docs/1.13.1/tags/roles"
|
||||
| "/docs/1.13.1/tags/rss"
|
||||
| "/docs/1.13.1/tags/search"
|
||||
| "/docs/1.13.1/tags/search-engines"
|
||||
| "/docs/1.13.1/tags/security"
|
||||
| "/docs/1.13.1/tags/self-signed"
|
||||
| "/docs/1.13.1/tags/seo"
|
||||
| "/docs/1.13.1/tags/server"
|
||||
| "/docs/1.13.1/tags/settings"
|
||||
| "/docs/1.13.1/tags/sinkhole"
|
||||
| "/docs/1.13.1/tags/sso"
|
||||
| "/docs/1.13.1/tags/stocks"
|
||||
| "/docs/1.13.1/tags/system"
|
||||
| "/docs/1.13.1/tags/table"
|
||||
| "/docs/1.13.1/tags/technical-documentation"
|
||||
| "/docs/1.13.1/tags/text"
|
||||
| "/docs/1.13.1/tags/torrent"
|
||||
| "/docs/1.13.1/tags/traefik"
|
||||
| "/docs/1.13.1/tags/translations"
|
||||
| "/docs/1.13.1/tags/unraid"
|
||||
| "/docs/1.13.1/tags/uploads"
|
||||
| "/docs/1.13.1/tags/usenet"
|
||||
| "/docs/1.13.1/tags/users"
|
||||
| "/docs/1.13.1/tags/variables"
|
||||
| "/docs/1.13.1/tags/widgets"
|
||||
| "/docs/1.13.1/advanced/command-line"
|
||||
| "/docs/1.13.1/advanced/command-line/fix-usernames"
|
||||
| "/docs/1.13.1/advanced/command-line/password-recovery"
|
||||
| "/docs/1.13.1/advanced/development/getting-started"
|
||||
| "/docs/1.13.1/advanced/development/kubernetes"
|
||||
| "/docs/1.13.1/advanced/environment-variables"
|
||||
| "/docs/1.13.1/advanced/icons"
|
||||
| "/docs/1.13.1/advanced/keyboard-shortcuts"
|
||||
| "/docs/1.13.1/advanced/proxy"
|
||||
| "/docs/1.13.1/advanced/running-as-different-user"
|
||||
| "/docs/1.13.1/advanced/single-sign-on"
|
||||
| "/docs/1.13.1/advanced/styling"
|
||||
| "/docs/1.13.1/category/advanced"
|
||||
| "/docs/1.13.1/category/community"
|
||||
| "/docs/1.13.1/category/developer-guides"
|
||||
| "/docs/1.13.1/category/getting-started"
|
||||
| "/docs/1.13.1/category/installation"
|
||||
| "/docs/1.13.1/category/installation-1"
|
||||
| "/docs/1.13.1/category/integrations"
|
||||
| "/docs/1.13.1/category/management"
|
||||
| "/docs/1.13.1/category/widgets"
|
||||
| "/docs/1.13.1/community/donate"
|
||||
| "/docs/1.13.1/community/faq"
|
||||
| "/docs/1.13.1/community/get-in-touch"
|
||||
| "/docs/1.13.1/community/license"
|
||||
| "/docs/1.13.1/community/translations"
|
||||
| "/docs/1.13.1/getting-started"
|
||||
| "/docs/1.13.1/getting-started/after-the-installation"
|
||||
| "/docs/1.13.1/getting-started/glossary"
|
||||
| "/docs/1.13.1/getting-started/installation/docker"
|
||||
| "/docs/1.13.1/getting-started/installation/easy-panel"
|
||||
| "/docs/1.13.1/getting-started/installation/helm"
|
||||
| "/docs/1.13.1/getting-started/installation/home-assistant"
|
||||
| "/docs/1.13.1/getting-started/installation/portainer"
|
||||
| "/docs/1.13.1/getting-started/installation/proxmox"
|
||||
| "/docs/1.13.1/getting-started/installation/qnap"
|
||||
| "/docs/1.13.1/getting-started/installation/railway"
|
||||
| "/docs/1.13.1/getting-started/installation/saltbox"
|
||||
| "/docs/1.13.1/getting-started/installation/source"
|
||||
| "/docs/1.13.1/getting-started/installation/synology"
|
||||
| "/docs/1.13.1/getting-started/installation/unraid"
|
||||
| "/docs/1.13.1/integrations/cloud"
|
||||
| "/docs/1.13.1/integrations/containers"
|
||||
| "/docs/1.13.1/integrations/dns"
|
||||
| "/docs/1.13.1/integrations/hardware"
|
||||
| "/docs/1.13.1/integrations/kubernetes"
|
||||
| "/docs/1.13.1/integrations/media-requester"
|
||||
| "/docs/1.13.1/integrations/media-server"
|
||||
| "/docs/1.13.1/integrations/servarr"
|
||||
| "/docs/1.13.1/integrations/torrent"
|
||||
| "/docs/1.13.1/integrations/usenet"
|
||||
| "/docs/1.13.1/management/api"
|
||||
| "/docs/1.13.1/management/apps"
|
||||
| "/docs/1.13.1/management/boards"
|
||||
| "/docs/1.13.1/management/certificates"
|
||||
| "/docs/1.13.1/management/integrations"
|
||||
| "/docs/1.13.1/management/media"
|
||||
| "/docs/1.13.1/management/search-engines"
|
||||
| "/docs/1.13.1/management/settings"
|
||||
| "/docs/1.13.1/management/users"
|
||||
| "/docs/1.13.1/widgets/bookmarks"
|
||||
| "/docs/1.13.1/widgets/calendar"
|
||||
| "/docs/1.13.1/widgets/clock"
|
||||
| "/docs/1.13.1/widgets/dns-hole"
|
||||
| "/docs/1.13.1/widgets/downloads"
|
||||
| "/docs/1.13.1/widgets/health-monitoring"
|
||||
| "/docs/1.13.1/widgets/home-assistant"
|
||||
| "/docs/1.13.1/widgets/iframe"
|
||||
| "/docs/1.13.1/widgets/indexer-manager"
|
||||
| "/docs/1.13.1/widgets/media-requests"
|
||||
| "/docs/1.13.1/widgets/media-server"
|
||||
| "/docs/1.13.1/widgets/minecraft-server-status"
|
||||
| "/docs/1.13.1/widgets/notebook"
|
||||
| "/docs/1.13.1/widgets/rss"
|
||||
| "/docs/1.13.1/widgets/stocks"
|
||||
| "/docs/1.13.1/widgets/video"
|
||||
| "/docs/1.13.1/widgets/weather"
|
||||
| "/docs/next/tags"
|
||||
| "/docs/next/tags/active-directory"
|
||||
| "/docs/next/tags/ad-guard"
|
||||
| "/docs/next/tags/ad-guard-home"
|
||||
| "/docs/next/tags/administration"
|
||||
| "/docs/next/tags/advanced"
|
||||
| "/docs/next/tags/analytics"
|
||||
| "/docs/next/tags/api"
|
||||
| "/docs/next/tags/apps"
|
||||
| "/docs/next/tags/banner"
|
||||
| "/docs/next/tags/blocking"
|
||||
| "/docs/next/tags/boards"
|
||||
| "/docs/next/tags/bookmark"
|
||||
| "/docs/next/tags/bookmarks"
|
||||
| "/docs/next/tags/caddy"
|
||||
| "/docs/next/tags/certificates"
|
||||
| "/docs/next/tags/checklist"
|
||||
| "/docs/next/tags/code"
|
||||
| "/docs/next/tags/community"
|
||||
| "/docs/next/tags/configuration"
|
||||
| "/docs/next/tags/connections"
|
||||
| "/docs/next/tags/customization"
|
||||
| "/docs/next/tags/data-sources"
|
||||
| "/docs/next/tags/database"
|
||||
| "/docs/next/tags/developer"
|
||||
| "/docs/next/tags/development"
|
||||
| "/docs/next/tags/dns"
|
||||
| "/docs/next/tags/docker"
|
||||
| "/docs/next/tags/donation"
|
||||
| "/docs/next/tags/edit-mode"
|
||||
| "/docs/next/tags/env"
|
||||
| "/docs/next/tags/environment-variables"
|
||||
| "/docs/next/tags/feeds"
|
||||
| "/docs/next/tags/finance"
|
||||
| "/docs/next/tags/getting-started"
|
||||
| "/docs/next/tags/google"
|
||||
| "/docs/next/tags/grafana"
|
||||
| "/docs/next/tags/groups"
|
||||
| "/docs/next/tags/hardware"
|
||||
| "/docs/next/tags/health"
|
||||
| "/docs/next/tags/help"
|
||||
| "/docs/next/tags/icon-picker"
|
||||
| "/docs/next/tags/icon-repositories"
|
||||
| "/docs/next/tags/icons"
|
||||
| "/docs/next/tags/iframe"
|
||||
| "/docs/next/tags/images"
|
||||
| "/docs/next/tags/installation"
|
||||
| "/docs/next/tags/integrade"
|
||||
| "/docs/next/tags/integration"
|
||||
| "/docs/next/tags/integrations"
|
||||
| "/docs/next/tags/interface"
|
||||
| "/docs/next/tags/jellyserr"
|
||||
| "/docs/next/tags/layout"
|
||||
| "/docs/next/tags/ldap"
|
||||
| "/docs/next/tags/links"
|
||||
| "/docs/next/tags/lists"
|
||||
| "/docs/next/tags/management"
|
||||
| "/docs/next/tags/market"
|
||||
| "/docs/next/tags/media"
|
||||
| "/docs/next/tags/minecraft"
|
||||
| "/docs/next/tags/monitoring"
|
||||
| "/docs/next/tags/news"
|
||||
| "/docs/next/tags/notebook"
|
||||
| "/docs/next/tags/notes"
|
||||
| "/docs/next/tags/oidc"
|
||||
| "/docs/next/tags/open-collective"
|
||||
| "/docs/next/tags/open-media-vault"
|
||||
| "/docs/next/tags/overseerr"
|
||||
| "/docs/next/tags/permissions"
|
||||
| "/docs/next/tags/pgid"
|
||||
| "/docs/next/tags/pi-hole"
|
||||
| "/docs/next/tags/ping"
|
||||
| "/docs/next/tags/programming"
|
||||
| "/docs/next/tags/proxmox"
|
||||
| "/docs/next/tags/proxy"
|
||||
| "/docs/next/tags/puid"
|
||||
| "/docs/next/tags/responsive"
|
||||
| "/docs/next/tags/roles"
|
||||
| "/docs/next/tags/rss"
|
||||
| "/docs/next/tags/search"
|
||||
| "/docs/next/tags/search-engines"
|
||||
| "/docs/next/tags/security"
|
||||
| "/docs/next/tags/self-signed"
|
||||
| "/docs/next/tags/seo"
|
||||
| "/docs/next/tags/server"
|
||||
| "/docs/next/tags/settings"
|
||||
| "/docs/next/tags/sinkhole"
|
||||
| "/docs/next/tags/sso"
|
||||
| "/docs/next/tags/stocks"
|
||||
| "/docs/next/tags/system"
|
||||
| "/docs/next/tags/table"
|
||||
| "/docs/next/tags/technical-documentation"
|
||||
| "/docs/next/tags/text"
|
||||
| "/docs/next/tags/torrent"
|
||||
| "/docs/next/tags/traefik"
|
||||
| "/docs/next/tags/translations"
|
||||
| "/docs/next/tags/unraid"
|
||||
| "/docs/next/tags/uploads"
|
||||
| "/docs/next/tags/usenet"
|
||||
| "/docs/next/tags/users"
|
||||
| "/docs/next/tags/variables"
|
||||
| "/docs/next/tags/widgets"
|
||||
| "/docs/next/advanced/command-line"
|
||||
| "/docs/next/advanced/command-line/fix-usernames"
|
||||
| "/docs/next/advanced/command-line/password-recovery"
|
||||
| "/docs/next/advanced/development/getting-started"
|
||||
| "/docs/next/advanced/development/kubernetes"
|
||||
| "/docs/next/advanced/environment-variables"
|
||||
| "/docs/next/advanced/icons"
|
||||
| "/docs/next/advanced/keyboard-shortcuts"
|
||||
| "/docs/next/advanced/proxy"
|
||||
| "/docs/next/advanced/running-as-different-user"
|
||||
| "/docs/next/advanced/single-sign-on"
|
||||
| "/docs/next/advanced/styling"
|
||||
| "/docs/next/category/advanced"
|
||||
| "/docs/next/category/community"
|
||||
| "/docs/next/category/developer-guides"
|
||||
| "/docs/next/category/getting-started"
|
||||
| "/docs/next/category/installation"
|
||||
| "/docs/next/category/installation-1"
|
||||
| "/docs/next/category/integrations"
|
||||
| "/docs/next/category/management"
|
||||
| "/docs/next/category/widgets"
|
||||
| "/docs/next/community/donate"
|
||||
| "/docs/next/community/faq"
|
||||
| "/docs/next/community/get-in-touch"
|
||||
| "/docs/next/community/license"
|
||||
| "/docs/next/community/translations"
|
||||
| "/docs/next/getting-started"
|
||||
| "/docs/next/getting-started/after-the-installation"
|
||||
| "/docs/next/getting-started/glossary"
|
||||
| "/docs/next/getting-started/installation/docker"
|
||||
| "/docs/next/getting-started/installation/easy-panel"
|
||||
| "/docs/next/getting-started/installation/helm"
|
||||
| "/docs/next/getting-started/installation/home-assistant"
|
||||
| "/docs/next/getting-started/installation/portainer"
|
||||
| "/docs/next/getting-started/installation/proxmox"
|
||||
| "/docs/next/getting-started/installation/qnap"
|
||||
| "/docs/next/getting-started/installation/railway"
|
||||
| "/docs/next/getting-started/installation/saltbox"
|
||||
| "/docs/next/getting-started/installation/source"
|
||||
| "/docs/next/getting-started/installation/synology"
|
||||
| "/docs/next/getting-started/installation/unraid"
|
||||
| "/docs/next/integrations/cloud"
|
||||
| "/docs/next/integrations/containers"
|
||||
| "/docs/next/integrations/dns"
|
||||
| "/docs/next/integrations/hardware"
|
||||
| "/docs/next/integrations/kubernetes"
|
||||
| "/docs/next/integrations/media-requester"
|
||||
| "/docs/next/integrations/media-server"
|
||||
| "/docs/next/integrations/servarr"
|
||||
| "/docs/next/integrations/torrent"
|
||||
| "/docs/next/integrations/usenet"
|
||||
| "/docs/next/management/api"
|
||||
| "/docs/next/management/apps"
|
||||
| "/docs/next/management/boards"
|
||||
| "/docs/next/management/certificates"
|
||||
| "/docs/next/management/integrations"
|
||||
| "/docs/next/management/media"
|
||||
| "/docs/next/management/search-engines"
|
||||
| "/docs/next/management/settings"
|
||||
| "/docs/next/management/users"
|
||||
| "/docs/next/widgets/bookmarks"
|
||||
| "/docs/next/widgets/calendar"
|
||||
| "/docs/next/widgets/clock"
|
||||
| "/docs/next/widgets/dns-hole"
|
||||
| "/docs/next/widgets/downloads"
|
||||
| "/docs/next/widgets/health-monitoring"
|
||||
| "/docs/next/widgets/home-assistant"
|
||||
| "/docs/next/widgets/iframe"
|
||||
| "/docs/next/widgets/indexer-manager"
|
||||
| "/docs/next/widgets/media-requests"
|
||||
| "/docs/next/widgets/media-server"
|
||||
| "/docs/next/widgets/minecraft-server-status"
|
||||
| "/docs/next/widgets/notebook"
|
||||
| "/docs/next/widgets/rss"
|
||||
| "/docs/next/widgets/stocks"
|
||||
| "/docs/next/widgets/video"
|
||||
| "/docs/next/widgets/weather"
|
||||
| "/docs/tags"
|
||||
| "/docs/tags/active-directory"
|
||||
| "/docs/tags/ad-guard"
|
||||
|
||||
@@ -142,26 +142,26 @@ export const integrationDefs = {
|
||||
dashDot: {
|
||||
name: "Dash.",
|
||||
secretKinds: [[]],
|
||||
category: ["healthMonitoring"],
|
||||
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/dashdot.png",
|
||||
category: ["healthMonitoring"],
|
||||
},
|
||||
tdarr: {
|
||||
name: "Tdarr",
|
||||
secretKinds: [[]],
|
||||
category: ["mediaTranscoding"],
|
||||
secretKinds: [[], ["apiKey"]],
|
||||
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/tdarr.png",
|
||||
category: ["mediaTranscoding"],
|
||||
},
|
||||
proxmox: {
|
||||
name: "Proxmox",
|
||||
secretKinds: [["username", "tokenId", "apiKey", "realm"]],
|
||||
category: ["healthMonitoring"],
|
||||
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/proxmox.svg",
|
||||
category: ["healthMonitoring"],
|
||||
},
|
||||
nextcloud: {
|
||||
name: "Nextcloud",
|
||||
secretKinds: [["username", "password"]],
|
||||
category: ["calendar"],
|
||||
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/nextcloud.svg",
|
||||
category: ["calendar"],
|
||||
},
|
||||
unifiController: {
|
||||
name: "Unifi Controller",
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/dockerode": "^3.3.37",
|
||||
"eslint": "^9.24.0",
|
||||
"@types/dockerode": "^3.3.38",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
4
packages/env/package.json
vendored
4
packages/env/package.json
vendored
@@ -24,13 +24,13 @@
|
||||
"prettier": "@homarr/prettier-config",
|
||||
"dependencies": {
|
||||
"@t3-oss/env-nextjs": "^0.12.0",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,13 +27,13 @@
|
||||
"@homarr/translation": "workspace:^0.1.0",
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/form": "^7.17.4",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,13 +31,13 @@
|
||||
"@homarr/validation": "workspace:^0.1.0",
|
||||
"@mantine/core": "^7.17.4",
|
||||
"react": "19.1.0",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,14 +42,14 @@
|
||||
"tsdav": "^2.1.3",
|
||||
"undici": "7.8.0",
|
||||
"xml2js": "^0.6.2",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/xml2js": "^0.4.14",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,13 +30,15 @@ export class DashDotIntegration extends Integration {
|
||||
cpuUtilization: cpuLoad.sumLoad,
|
||||
memUsed: `${memoryLoad.loadInBytes}`,
|
||||
memAvailable: `${info.maxAvailableMemoryBytes - memoryLoad.loadInBytes}`,
|
||||
fileSystem: info.storage.map((storage, index) => ({
|
||||
deviceName: `Storage ${index + 1}: (${storage.disks.map((disk) => disk.device).join(", ")})`,
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
used: humanFileSize(storageLoad[index]!),
|
||||
available: `${storage.size}`,
|
||||
percentage: storageLoad[index] ? (storageLoad[index] / storage.size) * 100 : 0,
|
||||
})),
|
||||
fileSystem: info.storage
|
||||
.filter((_, index) => storageLoad[index] !== -1) // filter out undermoutned drives, they display as -1 in the load API
|
||||
.map((storage, index) => ({
|
||||
deviceName: `Storage ${index + 1}: (${storage.disks.map((disk) => disk.device).join(", ")})`,
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
used: humanFileSize(storageLoad[index]!),
|
||||
available: storageLoad[index] ? `${storage.size - storageLoad[index]}` : `${storage.size}`,
|
||||
percentage: storageLoad[index] ? (storageLoad[index] / storage.size) * 100 : 0,
|
||||
})),
|
||||
cpuModelName: info.cpuModel === "" ? `Unknown Model (${info.cpuBrand})` : `${info.cpuModel} (${info.cpuBrand})`,
|
||||
cpuTemp: cpuLoad.averageTemperature,
|
||||
availablePkgUpdates: 0,
|
||||
|
||||
@@ -4,6 +4,7 @@ export interface TdarrPieSegment {
|
||||
}
|
||||
|
||||
export interface TdarrStatistics {
|
||||
libraryName: string;
|
||||
totalFileCount: number;
|
||||
totalTranscodeCount: number;
|
||||
totalHealthCheckCount: number;
|
||||
@@ -11,19 +12,12 @@ export interface TdarrStatistics {
|
||||
failedHealthCheckCount: number;
|
||||
stagedTranscodeCount: number;
|
||||
stagedHealthCheckCount: number;
|
||||
pies: {
|
||||
libraryName: string;
|
||||
libraryId: string;
|
||||
totalFiles: number;
|
||||
totalTranscodes: number;
|
||||
savedSpace: number;
|
||||
totalHealthChecks: number;
|
||||
transcodeStatus: TdarrPieSegment[];
|
||||
healthCheckStatus: TdarrPieSegment[];
|
||||
videoCodecs: TdarrPieSegment[];
|
||||
videoContainers: TdarrPieSegment[];
|
||||
videoResolutions: TdarrPieSegment[];
|
||||
audioCodecs: TdarrPieSegment[];
|
||||
audioContainers: TdarrPieSegment[];
|
||||
}[];
|
||||
totalSavedSpace: number;
|
||||
transcodeStatus: TdarrPieSegment[];
|
||||
healthCheckStatus: TdarrPieSegment[];
|
||||
videoCodecs: TdarrPieSegment[];
|
||||
videoContainers: TdarrPieSegment[];
|
||||
videoResolutions: TdarrPieSegment[];
|
||||
audioCodecs: TdarrPieSegment[];
|
||||
audioContainers: TdarrPieSegment[];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { z } from "zod";
|
||||
|
||||
import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server";
|
||||
|
||||
import { Integration } from "../base/integration";
|
||||
@@ -10,25 +8,34 @@ import { getNodesResponseSchema, getStatisticsSchema, getStatusTableSchema } fro
|
||||
|
||||
export class TdarrIntegration extends Integration {
|
||||
public async testConnectionAsync(): Promise<void> {
|
||||
const url = this.url("/api/v2/status");
|
||||
const response = await fetchWithTrustedCertificatesAsync(url);
|
||||
if (response.status !== 200) {
|
||||
throw new Error(`Unexpected status code: ${response.status}`);
|
||||
}
|
||||
|
||||
await z.object({ status: z.string() }).parseAsync(await response.json());
|
||||
await super.handleTestConnectionResponseAsync({
|
||||
queryFunctionAsync: async () => {
|
||||
return await fetchWithTrustedCertificatesAsync(this.url("/api/v2/is-server-alive"), {
|
||||
method: "POST",
|
||||
headers: {
|
||||
accept: "application/json",
|
||||
"X-Api-Key": super.hasSecretValue("apiKey") ? super.getSecretValue("apiKey") : "",
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
public async getStatisticsAsync(): Promise<TdarrStatistics> {
|
||||
const url = this.url("/api/v2/cruddb");
|
||||
const url = this.url("/api/v2/stats/get-pies");
|
||||
|
||||
const headerParams = {
|
||||
accept: "application/json",
|
||||
"Content-Type": "application/json",
|
||||
...(super.hasSecretValue("apiKey") ? { "X-Api-Key": super.getSecretValue("apiKey") } : {}),
|
||||
};
|
||||
|
||||
const response = await fetchWithTrustedCertificatesAsync(url, {
|
||||
method: "POST",
|
||||
headers: { "content-type": "application/json" },
|
||||
headers: headerParams,
|
||||
body: JSON.stringify({
|
||||
data: {
|
||||
collection: "StatisticsJSONDB",
|
||||
mode: "getById",
|
||||
docID: "statistics",
|
||||
libraryId: "", // empty string to get all libraries
|
||||
},
|
||||
}),
|
||||
});
|
||||
@@ -36,36 +43,41 @@ export class TdarrIntegration extends Integration {
|
||||
const statisticsData = await getStatisticsSchema.parseAsync(await response.json());
|
||||
|
||||
return {
|
||||
totalFileCount: statisticsData.totalFileCount,
|
||||
totalTranscodeCount: statisticsData.totalTranscodeCount,
|
||||
totalHealthCheckCount: statisticsData.totalHealthCheckCount,
|
||||
failedTranscodeCount: statisticsData.table3Count,
|
||||
failedHealthCheckCount: statisticsData.table6Count,
|
||||
stagedTranscodeCount: statisticsData.table1Count,
|
||||
stagedHealthCheckCount: statisticsData.table4Count,
|
||||
pies: statisticsData.pies.map((pie) => ({
|
||||
libraryName: pie[0],
|
||||
libraryId: pie[1],
|
||||
totalFiles: pie[2],
|
||||
totalTranscodes: pie[3],
|
||||
savedSpace: pie[4] * 1_000_000_000, // file_size is in GB, convert to bytes,
|
||||
totalHealthChecks: pie[5],
|
||||
transcodeStatus: pie[6],
|
||||
healthCheckStatus: pie[7],
|
||||
videoCodecs: pie[8],
|
||||
videoContainers: pie[9],
|
||||
videoResolutions: pie[10],
|
||||
audioCodecs: pie[11],
|
||||
audioContainers: pie[12],
|
||||
})),
|
||||
libraryName: "All",
|
||||
totalFileCount: statisticsData.pieStats.totalFiles,
|
||||
totalTranscodeCount: statisticsData.pieStats.totalTranscodeCount,
|
||||
totalHealthCheckCount: statisticsData.pieStats.totalHealthCheckCount,
|
||||
// The Tdarr API only returns a category if there is at least one item in it
|
||||
failedTranscodeCount:
|
||||
statisticsData.pieStats.status.transcode.find((transcode) => transcode.name === "Transcode error")?.value ?? 0,
|
||||
failedHealthCheckCount:
|
||||
statisticsData.pieStats.status.healthcheck.find((healthcheck) => healthcheck.name === "Error")?.value ?? 0,
|
||||
stagedTranscodeCount:
|
||||
statisticsData.pieStats.status.transcode.find((transcode) => transcode.name === "Transcode success")?.value ??
|
||||
0,
|
||||
stagedHealthCheckCount:
|
||||
statisticsData.pieStats.status.healthcheck.find((healthcheck) => healthcheck.name === "Queued")?.value ?? 0,
|
||||
|
||||
totalSavedSpace: statisticsData.pieStats.sizeDiff * 1_000_000_000, // sizeDiff is in GB, convert to bytes
|
||||
transcodeStatus: statisticsData.pieStats.status.transcode,
|
||||
healthCheckStatus: statisticsData.pieStats.status.healthcheck,
|
||||
videoCodecs: statisticsData.pieStats.video.codecs,
|
||||
videoContainers: statisticsData.pieStats.video.containers,
|
||||
videoResolutions: statisticsData.pieStats.video.resolutions,
|
||||
audioCodecs: statisticsData.pieStats.audio.codecs,
|
||||
audioContainers: statisticsData.pieStats.audio.containers,
|
||||
};
|
||||
}
|
||||
|
||||
public async getWorkersAsync(): Promise<TdarrWorker[]> {
|
||||
const url = this.url("/api/v2/get-nodes");
|
||||
const headerParams = {
|
||||
"Content-Type": "application/json",
|
||||
...(super.hasSecretValue("apiKey") ? { "X-Api-Key": super.getSecretValue("apiKey") } : {}),
|
||||
};
|
||||
const response = await fetchWithTrustedCertificatesAsync(url, {
|
||||
method: "GET",
|
||||
headers: { "content-type": "application/json" },
|
||||
headers: headerParams,
|
||||
});
|
||||
|
||||
const nodesData = await getNodesResponseSchema.parseAsync(await response.json());
|
||||
@@ -103,9 +115,13 @@ export class TdarrIntegration extends Integration {
|
||||
|
||||
private async getTranscodingQueueAsync(firstItemIndex: number, pageSize: number) {
|
||||
const url = this.url("/api/v2/client/status-tables");
|
||||
const headerParams = {
|
||||
"Content-Type": "application/json",
|
||||
...(super.hasSecretValue("apiKey") ? { "X-Api-Key": super.getSecretValue("apiKey") } : {}),
|
||||
};
|
||||
const response = await fetchWithTrustedCertificatesAsync(url, {
|
||||
method: "POST",
|
||||
headers: { "content-type": "application/json" },
|
||||
headers: headerParams,
|
||||
body: JSON.stringify({
|
||||
data: {
|
||||
start: firstItemIndex,
|
||||
@@ -124,7 +140,7 @@ export class TdarrIntegration extends Integration {
|
||||
healthCheck: item.HealthCheck,
|
||||
transcode: item.TranscodeDecisionMaker,
|
||||
filePath: item.file,
|
||||
fileSize: item.file_size * 1_000_000, // file_size is in MB, convert to bytes
|
||||
fileSize: Math.floor(item.file_size * 1_000_000), // file_size is in MB, convert to bytes, floor because it returns as float
|
||||
container: item.container,
|
||||
codec: item.video_codec_name,
|
||||
resolution: item.video_resolution,
|
||||
@@ -138,9 +154,13 @@ export class TdarrIntegration extends Integration {
|
||||
|
||||
private async getHealthCheckDataAsync(firstItemIndex: number, pageSize: number, totalQueueCount: number) {
|
||||
const url = this.url("/api/v2/client/status-tables");
|
||||
const headerParams = {
|
||||
"Content-Type": "application/json",
|
||||
...(super.hasSecretValue("apiKey") ? { "X-Api-Key": super.getSecretValue("apiKey") } : {}),
|
||||
};
|
||||
const response = await fetchWithTrustedCertificatesAsync(url, {
|
||||
method: "POST",
|
||||
headers: { "content-type": "application/json" },
|
||||
headers: headerParams,
|
||||
body: JSON.stringify({
|
||||
data: {
|
||||
start: Math.max(firstItemIndex - totalQueueCount, 0),
|
||||
@@ -162,7 +182,7 @@ export class TdarrIntegration extends Integration {
|
||||
healthCheck: item.HealthCheck,
|
||||
transcode: item.TranscodeDecisionMaker,
|
||||
filePath: item.file,
|
||||
fileSize: item.file_size * 1_000_000, // file_size is in MB, convert to bytes
|
||||
fileSize: Math.floor(item.file_size * 1_000_000), // file_size is in MB, convert to bytes, floor because it returns as float
|
||||
container: item.container,
|
||||
codec: item.video_codec_name,
|
||||
resolution: item.video_resolution,
|
||||
|
||||
@@ -1,72 +1,60 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const getStatisticsSchema = z.object({
|
||||
totalFileCount: z.number(),
|
||||
totalTranscodeCount: z.number(),
|
||||
totalHealthCheckCount: z.number(),
|
||||
table3Count: z.number(),
|
||||
table6Count: z.number(),
|
||||
table1Count: z.number(),
|
||||
table4Count: z.number(),
|
||||
pies: z.array(
|
||||
z.tuple([
|
||||
z.string(), // Library Name
|
||||
z.string(), // Library ID
|
||||
z.number(), // File count
|
||||
z.number(), // Number of transcodes
|
||||
z.number(), // Space saved (in GB)
|
||||
z.number(), // Number of health checks
|
||||
z.array(
|
||||
pieStats: z.object({
|
||||
totalFiles: z.number(),
|
||||
totalTranscodeCount: z.number(),
|
||||
sizeDiff: z.number(),
|
||||
totalHealthCheckCount: z.number(),
|
||||
status: z.object({
|
||||
transcode: z.array(
|
||||
z.object({
|
||||
// Transcode Status (Pie segments)
|
||||
name: z.string(),
|
||||
value: z.number(),
|
||||
}),
|
||||
),
|
||||
z.array(
|
||||
healthcheck: z.array(
|
||||
z.object({
|
||||
// Health Status (Pie segments)
|
||||
name: z.string(),
|
||||
value: z.number(),
|
||||
}),
|
||||
),
|
||||
z.array(
|
||||
}),
|
||||
video: z.object({
|
||||
codecs: z.array(
|
||||
z.object({
|
||||
// Video files - Codecs (Pie segments)
|
||||
name: z.string(),
|
||||
value: z.number(),
|
||||
}),
|
||||
),
|
||||
z.array(
|
||||
containers: z.array(
|
||||
z.object({
|
||||
// Video files - Containers (Pie segments)
|
||||
name: z.string(),
|
||||
value: z.number(),
|
||||
}),
|
||||
),
|
||||
z.array(
|
||||
resolutions: z.array(
|
||||
z.object({
|
||||
// Video files - Resolutions (Pie segments)
|
||||
name: z.string(),
|
||||
value: z.number(),
|
||||
}),
|
||||
),
|
||||
z.array(
|
||||
}),
|
||||
audio: z.object({
|
||||
codecs: z.array(
|
||||
z.object({
|
||||
// Audio files - Codecs (Pie segments)
|
||||
name: z.string(),
|
||||
value: z.number(),
|
||||
}),
|
||||
),
|
||||
z.array(
|
||||
containers: z.array(
|
||||
z.object({
|
||||
// Audio files - Containers (Pie segments)
|
||||
name: z.string(),
|
||||
value: z.number(),
|
||||
}),
|
||||
),
|
||||
]),
|
||||
),
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
export const getNodesResponseSchema = z.record(
|
||||
|
||||
@@ -27,13 +27,13 @@
|
||||
"ioredis": "5.6.1",
|
||||
"superjson": "2.2.2",
|
||||
"winston": "3.17.0",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,16 +36,16 @@
|
||||
"@mantine/core": "^7.17.4",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ export const AddBoardModal = createModal(({ actions }) => {
|
||||
<Button onClick={actions.closeModal} variant="subtle" color="gray">
|
||||
{t("common.action.cancel")}
|
||||
</Button>
|
||||
<Button type="submit" color="teal" loading={isPending}>
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.create")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -44,7 +44,7 @@ export const AddGroupModal = createModal<void>(({ actions }) => {
|
||||
<Button onClick={actions.closeModal} variant="subtle" color="gray">
|
||||
{t("common.action.cancel")}
|
||||
</Button>
|
||||
<Button loading={isPending} type="submit" color="teal">
|
||||
<Button loading={isPending} type="submit">
|
||||
{t("common.action.create")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import React from "react";
|
||||
import { Button, Group, Stack, Text } from "@mantine/core";
|
||||
import { DateTimePicker } from "@mantine/dates";
|
||||
import dayjs from "dayjs";
|
||||
@@ -63,7 +62,7 @@ export const InviteCreateModal = createModal<void>(({ actions }) => {
|
||||
<Button onClick={actions.closeModal} variant="subtle" color="gray">
|
||||
{t("common.action.cancel")}
|
||||
</Button>
|
||||
<Button type="submit" loading={isPending} color="teal">
|
||||
<Button type="submit" loading={isPending}>
|
||||
{t("common.action.create")}
|
||||
</Button>
|
||||
</Group>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,11 +40,11 @@
|
||||
"@mantine/core": "^7.17.4",
|
||||
"@mantine/hooks": "^7.17.4",
|
||||
"adm-zip": "0.5.16",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"superjson": "2.2.2",
|
||||
"zod": "^3.24.2",
|
||||
"zod": "^3.24.3",
|
||||
"zod-form-data": "^2.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -52,7 +52,7 @@
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"@types/adm-zip": "0.5.7",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
"prettier": "@homarr/prettier-config",
|
||||
"dependencies": {
|
||||
"@homarr/common": "workspace:^0.1.0",
|
||||
"zod": "^3.24.2"
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"@homarr/db": "workspace:^0.1.0",
|
||||
"@homarr/server-settings": "workspace:^0.1.0",
|
||||
"@mantine/dates": "^7.17.4",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0"
|
||||
},
|
||||
@@ -34,7 +34,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
"@mantine/hooks": "^7.17.4",
|
||||
"@mantine/spotlight": "^7.17.4",
|
||||
"@tabler/icons-react": "^3.31.0",
|
||||
"jotai": "^2.12.2",
|
||||
"next": "15.3.0",
|
||||
"jotai": "^2.12.3",
|
||||
"next": "15.3.1",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"use-deep-compare-effect": "^1.8.1"
|
||||
@@ -47,7 +47,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"dayjs": "^1.11.13",
|
||||
"deepmerge": "4.3.1",
|
||||
"mantine-react-table": "2.0.0-beta.9",
|
||||
"next": "15.3.0",
|
||||
"next": "15.3.1",
|
||||
"next-intl": "4.0.2",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0"
|
||||
@@ -41,7 +41,7 @@
|
||||
"@homarr/eslint-config": "workspace:^0.2.0",
|
||||
"@homarr/prettier-config": "workspace:^0.1.0",
|
||||
"@homarr/tsconfig": "workspace:^0.1.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint": "^9.25.0",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Seleccioneu l'aplicació",
|
||||
"notFound": "No s'ha trobat cap aplicació"
|
||||
}
|
||||
"notFound": "No s'ha trobat cap aplicació",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "选择应用",
|
||||
"notFound": "未找到应用"
|
||||
}
|
||||
"notFound": "未找到应用",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
@@ -2212,7 +2222,7 @@
|
||||
"label": "背景图片 URL",
|
||||
"placeholder": "",
|
||||
"group": {
|
||||
"your": "",
|
||||
"your": "你的图像",
|
||||
"other": ""
|
||||
}
|
||||
},
|
||||
@@ -2852,7 +2862,7 @@
|
||||
"label": "媒体转码"
|
||||
},
|
||||
"networkController": {
|
||||
"label": ""
|
||||
"label": "网络控制器"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Vybrat aplikaci",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Vælg app",
|
||||
"notFound": "Ingen app fundet"
|
||||
}
|
||||
"notFound": "Ingen app fundet",
|
||||
"search": "Søg efter en app",
|
||||
"noResults": "Ingen resultater",
|
||||
"action": "Vælg {app}",
|
||||
"title": "Vælg en app, der skal tilføjes til denne tavle"
|
||||
},
|
||||
"create": {
|
||||
"title": "Opret ny app",
|
||||
"description": "Opret en ny app ",
|
||||
"action": "Åbn app-oprettelse"
|
||||
},
|
||||
"add": "Tilføj en app"
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
@@ -759,8 +769,8 @@
|
||||
"message": "Stien er sandsynligvis ikke korrekt"
|
||||
},
|
||||
"tooManyRequests": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "For mange anmodninger i et givet tidsrum",
|
||||
"message": "Der var for mange anmodninger. Du bliver sandsynligvis rate-limited eller afvist af målsystemet"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1787,7 +1797,7 @@
|
||||
"label": "Vis torrent poster markeret som fuldførte"
|
||||
},
|
||||
"showCompletedHttp": {
|
||||
"label": ""
|
||||
"label": "Vis Diverse poster markeret som færdige"
|
||||
},
|
||||
"activeTorrentThreshold": {
|
||||
"label": "Skjul afsluttet torrent under denne tærskel (i kiB/s)"
|
||||
@@ -2038,56 +2048,56 @@
|
||||
"option": {},
|
||||
"card": {
|
||||
"vpn": {
|
||||
"countConnected": ""
|
||||
"countConnected": "{count} tilsluttet"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"integrationsDisconnected": "",
|
||||
"unknownContentOption": ""
|
||||
"integrationsDisconnected": "Ingen tilgængelige data, alle integrationer afbrudt",
|
||||
"unknownContentOption": "Ukendt indhold indstilling for netværkscontroller resumé widget: "
|
||||
},
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Netværkskontroller Oversigt",
|
||||
"description": "Viser resuméet af en netværkskontroller (som UniFi Controller)"
|
||||
},
|
||||
"networkControllerStatus": {
|
||||
"card": {
|
||||
"variants": {
|
||||
"wired": {
|
||||
"name": ""
|
||||
"name": "Kablet"
|
||||
},
|
||||
"wifi": {
|
||||
"name": ""
|
||||
"name": "WiFi"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"label": ""
|
||||
"label": "Brugere"
|
||||
},
|
||||
"guests": {
|
||||
"label": ""
|
||||
"label": "Gæster"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
"content": {
|
||||
"option": {
|
||||
"wifi": {
|
||||
"label": ""
|
||||
"label": "WiFi"
|
||||
},
|
||||
"wired": {
|
||||
"label": ""
|
||||
"label": "Kablet"
|
||||
}
|
||||
},
|
||||
"label": ""
|
||||
"label": "Widget indhold"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"integrationsDisconnected": "",
|
||||
"unknownContentOption": ""
|
||||
"integrationsDisconnected": "Ingen tilgængelige data, alle integrationer afbrudt",
|
||||
"unknownContentOption": "Ukendt indhold indstilling for netværksstatuswidget: "
|
||||
},
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Status for netværk",
|
||||
"description": "Vis tilsluttede enheder på et netværk"
|
||||
},
|
||||
"networkController": {
|
||||
"error": {
|
||||
"internalServerError": ""
|
||||
"internalServerError": "Kunne ikke hente Netværkskontroloversigt"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2210,10 +2220,10 @@
|
||||
},
|
||||
"backgroundImageUrl": {
|
||||
"label": "Baggrundsbillede URL",
|
||||
"placeholder": "",
|
||||
"placeholder": "Begynd at skrive for at søge efter lokale billeder",
|
||||
"group": {
|
||||
"your": "",
|
||||
"other": ""
|
||||
"your": "Dine billeder",
|
||||
"other": "Andre billeder"
|
||||
}
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
@@ -2852,7 +2862,7 @@
|
||||
"label": "Omkodning af medier"
|
||||
},
|
||||
"networkController": {
|
||||
"label": ""
|
||||
"label": "Netværkskontroller"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "App wähle",
|
||||
"notFound": "Keni app gfunge"
|
||||
}
|
||||
"notFound": "Keni app gfunge",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "App auswählen",
|
||||
"notFound": "Keine App gefunden"
|
||||
}
|
||||
"notFound": "Keine App gefunden",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Select an application",
|
||||
"notFound": "No application found"
|
||||
}
|
||||
"notFound": "No application found",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Sélectionner l'app",
|
||||
"notFound": "Aucune app trouvée"
|
||||
}
|
||||
"notFound": "Aucune app trouvée",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
@@ -3363,7 +3373,7 @@
|
||||
"label": "Espaces de noms"
|
||||
},
|
||||
"ingresses": {
|
||||
"label": ""
|
||||
"label": "Routes"
|
||||
},
|
||||
"services": {
|
||||
"label": "Services"
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "בחר אפליקציה",
|
||||
"notFound": "לא נמצאה אפליקציה"
|
||||
}
|
||||
"notFound": "לא נמצאה אפליקציה",
|
||||
"search": "חפש אפליקציה",
|
||||
"noResults": "אין תוצאות",
|
||||
"action": "בחר {app}",
|
||||
"title": "בחר אפליקציה להוספה ללוח זה"
|
||||
},
|
||||
"create": {
|
||||
"title": "צור אפליקציה חדשה",
|
||||
"description": "צור אפליקציה חדשה",
|
||||
"action": "פתח את יצירת האפליקציה"
|
||||
},
|
||||
"add": "הוסף אפליקציה"
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
@@ -759,8 +769,8 @@
|
||||
"message": "כנראה שהנתיב שגוי"
|
||||
},
|
||||
"tooManyRequests": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "יותר מדי בקשות בזמן נתון",
|
||||
"message": "היו יותר מדי בקשות. סביר להניח שמערכת היעד מגבילה את הבקשות או דחתה אותך"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -985,7 +995,7 @@
|
||||
},
|
||||
"option": {
|
||||
"title": {
|
||||
"label": ""
|
||||
"label": "כותרת"
|
||||
},
|
||||
"borderColor": {
|
||||
"label": "צבע מסגרת"
|
||||
@@ -1787,7 +1797,7 @@
|
||||
"label": "הצג ערכי טורנט שסומנו כהשלמה"
|
||||
},
|
||||
"showCompletedHttp": {
|
||||
"label": ""
|
||||
"label": "הצג ערכים שונים שסומנו כהשלמה"
|
||||
},
|
||||
"activeTorrentThreshold": {
|
||||
"label": "הסתר טורנט שהושלם מתחת לסף הזה (בקיB/s)"
|
||||
@@ -2038,56 +2048,56 @@
|
||||
"option": {},
|
||||
"card": {
|
||||
"vpn": {
|
||||
"countConnected": ""
|
||||
"countConnected": "{count} מחובר"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"integrationsDisconnected": "",
|
||||
"unknownContentOption": ""
|
||||
"integrationsDisconnected": "אין נתונים זמינים, כל האינטגרציות מנותקות",
|
||||
"unknownContentOption": "אפשרות תוכן לא ידוע עבור ווידג'ט סיכום בקר רשת: "
|
||||
},
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "סיכום בקר רשת",
|
||||
"description": "מציג את הסיכום של בקר רשת (כמו בקר UniFi)"
|
||||
},
|
||||
"networkControllerStatus": {
|
||||
"card": {
|
||||
"variants": {
|
||||
"wired": {
|
||||
"name": ""
|
||||
"name": "חוטי"
|
||||
},
|
||||
"wifi": {
|
||||
"name": ""
|
||||
"name": "אלחוטי"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"label": ""
|
||||
"label": "משתמשים"
|
||||
},
|
||||
"guests": {
|
||||
"label": ""
|
||||
"label": "אורחים"
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
"content": {
|
||||
"option": {
|
||||
"wifi": {
|
||||
"label": ""
|
||||
"label": "אלחוטי"
|
||||
},
|
||||
"wired": {
|
||||
"label": ""
|
||||
"label": "חוטי"
|
||||
}
|
||||
},
|
||||
"label": ""
|
||||
"label": "תוכן יישומון"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"integrationsDisconnected": "",
|
||||
"unknownContentOption": ""
|
||||
"integrationsDisconnected": "אין נתונים זמינים, כל האינטגרציות מנותקות",
|
||||
"unknownContentOption": "אפשרות תוכן לא ידוע עבור ווידג'ט סיכום בקר רשת: "
|
||||
},
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "סטטוס רשת",
|
||||
"description": "הצג מכשירים מחוברים ברשת"
|
||||
},
|
||||
"networkController": {
|
||||
"error": {
|
||||
"internalServerError": ""
|
||||
"internalServerError": "אחזור תקציר בקר הרשת נכשל"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2210,10 +2220,10 @@
|
||||
},
|
||||
"backgroundImageUrl": {
|
||||
"label": "כתובת אתר של תמונת רקע",
|
||||
"placeholder": "",
|
||||
"placeholder": "התחל להקליד כדי לחפש תמונות מקומיות",
|
||||
"group": {
|
||||
"your": "",
|
||||
"other": ""
|
||||
"your": "התמונות שלך",
|
||||
"other": "תמונות אחרות"
|
||||
}
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
@@ -2852,7 +2862,7 @@
|
||||
"label": "המרת קידוד מדיה"
|
||||
},
|
||||
"networkController": {
|
||||
"label": ""
|
||||
"label": "בקר רשת"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Alkalmazás kiválasztása",
|
||||
"notFound": "Nem található alkalmazás"
|
||||
}
|
||||
"notFound": "Nem található alkalmazás",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Seleziona App",
|
||||
"notFound": "Nessuna app trovata"
|
||||
}
|
||||
"notFound": "Nessuna app trovata",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "App selecteren",
|
||||
"notFound": "Geen app gevonden"
|
||||
}
|
||||
"notFound": "Geen app gevonden",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Velg app",
|
||||
"notFound": "Ingen app funnet"
|
||||
}
|
||||
"notFound": "Ingen app funnet",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Wybierz aplikację",
|
||||
"notFound": "Nie znaleziono aplikacji"
|
||||
}
|
||||
"notFound": "Nie znaleziono aplikacji",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Выбрать приложение",
|
||||
"notFound": "Приложения не найдены"
|
||||
}
|
||||
"notFound": "Приложения не найдены",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Vybrať aplikáciu",
|
||||
"notFound": "Nenašla sa žiadna aplikácia"
|
||||
}
|
||||
"notFound": "Nenašla sa žiadna aplikácia",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
@@ -2,130 +2,130 @@
|
||||
"init": {
|
||||
"step": {
|
||||
"start": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"description": "",
|
||||
"title": "Välkommen till Homarr",
|
||||
"subtitle": "Låt oss komma igång med att sätta upp din installation av Homarr.",
|
||||
"description": "För att komma igång, välj hur du vill ställa in din Homarr-installation.",
|
||||
"action": {
|
||||
"scratch": "",
|
||||
"importOldmarr": ""
|
||||
"scratch": "Börja från början",
|
||||
"importOldmarr": "Importera från Homarr äldre än version 1.0"
|
||||
}
|
||||
},
|
||||
"import": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"title": "Importera data",
|
||||
"subtitle": "Du kan importera data från en befintlig installation av Homarr.",
|
||||
"dropzone": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "Dra ZIP-filen hit eller klicka för att bläddra",
|
||||
"description": "Den uppladdade ZIP-filen kommer att bearbetas och du kommer att kunna välja vad du vill importera"
|
||||
},
|
||||
"fileInfo": {
|
||||
"action": {
|
||||
"change": ""
|
||||
"change": "Byt fil"
|
||||
}
|
||||
},
|
||||
"importSettings": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "Importera inställningar",
|
||||
"description": "Konfigurera hur importen skall genomföras"
|
||||
},
|
||||
"boardSelection": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"title": "Hittade {count} tavlor",
|
||||
"description": "Välj alla tavlor med den storlek du vill importera",
|
||||
"action": {
|
||||
"selectAll": "",
|
||||
"unselectAll": ""
|
||||
"selectAll": "Välj alla",
|
||||
"unselectAll": "Avmarkera alla"
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"title": "Summering av importen",
|
||||
"description": "I sammanfattningen nedan kan du se vad som kommer att importeras",
|
||||
"action": {
|
||||
"import": ""
|
||||
"import": "Bekräfta importen och fortsätt"
|
||||
},
|
||||
"entities": {
|
||||
"apps": "Appar",
|
||||
"apps": "Applikationer",
|
||||
"boards": "Tavlor",
|
||||
"integrations": "",
|
||||
"credentialUsers": ""
|
||||
"integrations": "Integrationer",
|
||||
"credentialUsers": "Användaruppgifter"
|
||||
}
|
||||
},
|
||||
"tokenModal": {
|
||||
"title": "",
|
||||
"title": "Ange 'Token' för importen",
|
||||
"field": {
|
||||
"token": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Token",
|
||||
"description": "Ange 'import-token' från din tidigare installation av Homarr"
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Felaktig 'Token'",
|
||||
"message": "Den 'Token' som du angivit är felaktig"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"title": "Administratör",
|
||||
"subtitle": "Ange inloggningsuppgifter för administratören.",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Användare har adderats",
|
||||
"message": "Användaren adderades"
|
||||
},
|
||||
"error": {
|
||||
"title": ""
|
||||
"title": "Misslyckades med att addera användaren"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"title": "Extern grupp",
|
||||
"subtitle": "Ange vilken grupp som skall användas för externa användare.",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "",
|
||||
"label": "Gruppens namn",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"title": "Inställningar",
|
||||
"subtitle": ""
|
||||
"subtitle": "Konfigurera serverinställningar."
|
||||
},
|
||||
"finish": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"description": "",
|
||||
"title": "Slutför installationen",
|
||||
"subtitle": "Du är redo att sätta igång!",
|
||||
"description": "Du har slutfört installationen. Du kan nu börja använda Homarr. Välj din nästa åtgärd:",
|
||||
"action": {
|
||||
"goToBoard": "",
|
||||
"createBoard": "",
|
||||
"inviteUser": "",
|
||||
"docs": ""
|
||||
"goToBoard": "Gå till tavlan {name}",
|
||||
"createBoard": "Addera din första tavla",
|
||||
"inviteUser": "Bjud in andra användare",
|
||||
"docs": "Läs dokumentationen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"backToStart": ""
|
||||
"backToStart": "Tillbaka till början"
|
||||
},
|
||||
"user": {
|
||||
"title": "Användare",
|
||||
"name": "Användare",
|
||||
"page": {
|
||||
"login": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "Logga in på ditt konto",
|
||||
"subtitle": "Välkommen tillbaka! Vänligen ange dina inloggningsuppgifter"
|
||||
},
|
||||
"invite": {
|
||||
"title": "",
|
||||
"subtitle": "",
|
||||
"description": ""
|
||||
"title": "Gå med i Homarr",
|
||||
"subtitle": "Välkommen till Homarr! Vänligen addera ditt konto",
|
||||
"description": "Du har blivit inbjuden av {username}"
|
||||
},
|
||||
"init": {
|
||||
"title": "",
|
||||
"subtitle": ""
|
||||
"title": "Ny installation av Homarr",
|
||||
"subtitle": "Vänligen addera den första administratören"
|
||||
}
|
||||
},
|
||||
"field": {
|
||||
"email": {
|
||||
"label": "E-post",
|
||||
"verified": ""
|
||||
"label": "E-postadress",
|
||||
"verified": "Verifierad"
|
||||
},
|
||||
"username": {
|
||||
"label": "Användarnamn"
|
||||
@@ -133,34 +133,34 @@
|
||||
"password": {
|
||||
"label": "Lösenord",
|
||||
"requirement": {
|
||||
"length": "",
|
||||
"lowercase": "Inkluderar liten bokstav",
|
||||
"uppercase": "Inkluderar stor bokstav",
|
||||
"number": "Inkluderar nummer",
|
||||
"special": ""
|
||||
"length": "Använd minst 8 tecken",
|
||||
"lowercase": "Använd liten bokstav",
|
||||
"uppercase": "Använd stor bokstav",
|
||||
"number": "Använd siffra",
|
||||
"special": "Använd specialtecken"
|
||||
}
|
||||
},
|
||||
"passwordConfirm": {
|
||||
"label": "Bekräfta lösenord"
|
||||
"label": "Bekräfta lösenordet"
|
||||
},
|
||||
"previousPassword": {
|
||||
"label": ""
|
||||
"label": "Föregående lösenord"
|
||||
},
|
||||
"homeBoard": {
|
||||
"label": ""
|
||||
"label": "Starttavla"
|
||||
},
|
||||
"pingIconsEnabled": {
|
||||
"label": ""
|
||||
"label": "Använd ikoner för \"onlinekontroll\" (pings)"
|
||||
},
|
||||
"defaultSearchEngine": {
|
||||
"label": ""
|
||||
"label": "Förvald sökmotor"
|
||||
},
|
||||
"openSearchInNewTab": {
|
||||
"label": ""
|
||||
"label": "Visa sökresultat i ny flik"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"usernameTaken": ""
|
||||
"usernameTaken": "Användarnamnet finns redan"
|
||||
},
|
||||
"action": {
|
||||
"login": {
|
||||
@@ -168,41 +168,41 @@
|
||||
"labelWith": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Inloggning lyckades",
|
||||
"message": "Du är nu inloggad"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Inloggning misslyckades",
|
||||
"message": "Din inloggning misslyckades"
|
||||
}
|
||||
},
|
||||
"forgotPassword": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Glömt ditt lösenord?",
|
||||
"description": "En administratör kan använda följande kommando för att återställa ditt lösenord:"
|
||||
}
|
||||
},
|
||||
"register": {
|
||||
"label": "Skapa konto",
|
||||
"label": "Addera konto",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "Konto skapat",
|
||||
"message": ""
|
||||
"title": "Kontot har adderats",
|
||||
"message": "Var vänlig logga in för att fortsätta"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Misslyckades att addera kontot",
|
||||
"message": "Ditt konto kunde inte adderas"
|
||||
}
|
||||
}
|
||||
},
|
||||
"create": "Skapa användare",
|
||||
"create": "Addera användare",
|
||||
"changePassword": {
|
||||
"label": "",
|
||||
"label": "Ändra lösenordet",
|
||||
"notification": {
|
||||
"success": {
|
||||
"message": ""
|
||||
"message": "Lösenordet har ändrats"
|
||||
},
|
||||
"error": {
|
||||
"message": ""
|
||||
"message": "Kunde inte ändra lösenordet"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -257,7 +257,7 @@
|
||||
"message": ""
|
||||
},
|
||||
"toLarge": {
|
||||
"title": "",
|
||||
"title": "Bilden är för stor",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
@@ -300,14 +300,14 @@
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"title": "",
|
||||
"title": "Grupper",
|
||||
"name": "",
|
||||
"search": "",
|
||||
"field": {
|
||||
"name": "Namn",
|
||||
"members": "",
|
||||
"homeBoard": {
|
||||
"label": "",
|
||||
"label": "Starttavla",
|
||||
"description": ""
|
||||
},
|
||||
"mobileBoard": {
|
||||
@@ -326,7 +326,7 @@
|
||||
}
|
||||
},
|
||||
"app": {
|
||||
"title": "Appar",
|
||||
"title": "Applikationer",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
@@ -368,15 +368,15 @@
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"title": "",
|
||||
"title": "Integrationer",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Addera integrationer",
|
||||
"description": "Tillåt medlemmar att addera integrationer"
|
||||
},
|
||||
"use-all": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Använd alla integrationer",
|
||||
"description": "Tillåter medlemmar att addera valfri integration till sina tavlor"
|
||||
},
|
||||
"interact-all": {
|
||||
"label": "",
|
||||
@@ -415,7 +415,7 @@
|
||||
}
|
||||
},
|
||||
"search-engine": {
|
||||
"title": "",
|
||||
"title": "Sökmotorer",
|
||||
"item": {
|
||||
"create": {
|
||||
"label": "",
|
||||
@@ -541,17 +541,17 @@
|
||||
}
|
||||
},
|
||||
"app": {
|
||||
"search": "",
|
||||
"search": "Sök efter en applikation",
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "Appar",
|
||||
"title": "Applikationer",
|
||||
"noResults": {
|
||||
"title": "",
|
||||
"action": ""
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "Addera applikation",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
@@ -567,11 +567,11 @@
|
||||
"title": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "Ändringarna har sparats",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"title": "Misslyckades med att spara ändringarna",
|
||||
"message": ""
|
||||
}
|
||||
}
|
||||
@@ -596,7 +596,7 @@
|
||||
"label": "Namn"
|
||||
},
|
||||
"description": {
|
||||
"label": ""
|
||||
"label": "Beskrivning"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
@@ -611,14 +611,24 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "",
|
||||
"notFound": ""
|
||||
}
|
||||
"notFound": "",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "Addera en ny applikation",
|
||||
"description": "Addera en ny applikation ",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"page": {
|
||||
"list": {
|
||||
"title": "",
|
||||
"title": "Integrationer",
|
||||
"search": "",
|
||||
"noResults": {
|
||||
"title": ""
|
||||
@@ -815,7 +825,7 @@
|
||||
"field": {
|
||||
"name": "Namn",
|
||||
"size": "Storlek",
|
||||
"creator": "Skapare"
|
||||
"creator": "Adderad av"
|
||||
},
|
||||
"action": {
|
||||
"upload": {
|
||||
@@ -855,18 +865,18 @@
|
||||
"error": "Fel",
|
||||
"action": {
|
||||
"add": "Lägg till",
|
||||
"apply": "Verkställ",
|
||||
"backToOverview": "",
|
||||
"create": "Skapa",
|
||||
"createAnother": "",
|
||||
"apply": "Använd",
|
||||
"backToOverview": "Tillbaka till översikten",
|
||||
"create": "Addera",
|
||||
"createAnother": "Addera och börja om",
|
||||
"edit": "Redigera",
|
||||
"import": "",
|
||||
"insert": "Infoga",
|
||||
"remove": "Ta bort",
|
||||
"save": "Spara",
|
||||
"saveChanges": "Spara ändringar",
|
||||
"saveChanges": "Spara",
|
||||
"cancel": "Avbryt",
|
||||
"delete": "Radera",
|
||||
"delete": "Ta bort",
|
||||
"discard": "",
|
||||
"confirm": "Bekräfta",
|
||||
"continue": "",
|
||||
@@ -931,15 +941,15 @@
|
||||
"switchToDarkMode": "",
|
||||
"switchToLightMode": "",
|
||||
"management": "",
|
||||
"preferences": "Dina Inställningar",
|
||||
"logout": "",
|
||||
"preferences": "Dina inställningar",
|
||||
"logout": "Logga ut",
|
||||
"login": "Logga in",
|
||||
"homeBoard": "",
|
||||
"homeBoard": "Din starttavla",
|
||||
"loggedOut": "",
|
||||
"updateAvailable": ""
|
||||
}
|
||||
},
|
||||
"dangerZone": "Farozon",
|
||||
"dangerZone": "Kritiska inställningar",
|
||||
"noResults": "Hittade inga resultat",
|
||||
"unsavedChanges": "",
|
||||
"preview": {
|
||||
@@ -1040,7 +1050,7 @@
|
||||
"action": {
|
||||
"create": "",
|
||||
"import": "",
|
||||
"edit": "",
|
||||
"edit": "Redigera objekt",
|
||||
"moveResize": "",
|
||||
"duplicate": "",
|
||||
"remove": ""
|
||||
@@ -1051,7 +1061,7 @@
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"title": "Välj objekt du vill lägga till",
|
||||
"search": "",
|
||||
"addToBoard": ""
|
||||
},
|
||||
@@ -1073,20 +1083,20 @@
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "",
|
||||
"title": "Redigera objekt",
|
||||
"advancedOptions": {
|
||||
"label": "",
|
||||
"title": ""
|
||||
"label": "Avancerade inställningar",
|
||||
"title": "Avancerade inställningar för objektet"
|
||||
},
|
||||
"field": {
|
||||
"integrations": {
|
||||
"label": ""
|
||||
"label": "Integrationer"
|
||||
},
|
||||
"customCssClasses": {
|
||||
"label": ""
|
||||
"label": "Egna CSS-klasser"
|
||||
},
|
||||
"borderColor": {
|
||||
"label": ""
|
||||
"label": "Färg på kantlinje"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1101,7 +1111,7 @@
|
||||
"description": "",
|
||||
"option": {
|
||||
"appId": {
|
||||
"label": ""
|
||||
"label": "Välj applikation"
|
||||
},
|
||||
"openInNewTab": {
|
||||
"label": "Öppna i ny flik"
|
||||
@@ -1124,17 +1134,17 @@
|
||||
}
|
||||
},
|
||||
"bookmarks": {
|
||||
"name": "",
|
||||
"name": "Bokmärken",
|
||||
"description": "",
|
||||
"option": {
|
||||
"title": {
|
||||
"label": ""
|
||||
"label": "Titel"
|
||||
},
|
||||
"layout": {
|
||||
"label": "",
|
||||
"option": {
|
||||
"row": {
|
||||
"label": "Horisontal"
|
||||
"label": "Horisontell"
|
||||
},
|
||||
"column": {
|
||||
"label": "Vertikal"
|
||||
@@ -1148,20 +1158,20 @@
|
||||
}
|
||||
},
|
||||
"hideTitle": {
|
||||
"label": ""
|
||||
"label": "Dölj titel"
|
||||
},
|
||||
"hideIcon": {
|
||||
"label": ""
|
||||
"label": "Dölj ikoner"
|
||||
},
|
||||
"hideHostname": {
|
||||
"label": ""
|
||||
},
|
||||
"openNewTab": {
|
||||
"label": ""
|
||||
"label": "Öppna i en ny flik"
|
||||
},
|
||||
"items": {
|
||||
"label": "",
|
||||
"add": ""
|
||||
"label": "Bokmärken",
|
||||
"add": "Addera bokmärke"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1207,7 +1217,7 @@
|
||||
"label": "",
|
||||
"option": {
|
||||
"row": {
|
||||
"label": "Horisontal"
|
||||
"label": "Horisontell"
|
||||
},
|
||||
"column": {
|
||||
"label": "Vertikal"
|
||||
@@ -1261,7 +1271,7 @@
|
||||
},
|
||||
"timezone": {
|
||||
"label": "Tidszon",
|
||||
"description": ""
|
||||
"description": "Välj tidszon som följer IANA-standarden"
|
||||
},
|
||||
"showDate": {
|
||||
"label": ""
|
||||
@@ -1304,17 +1314,17 @@
|
||||
"description": "",
|
||||
"option": {
|
||||
"showToolbar": {
|
||||
"label": "Visa verktygsfältet för att hjälpa dig skriva markdown"
|
||||
"label": "Visa verktygsfältet för att hjälpa dig formatera texten"
|
||||
},
|
||||
"allowReadOnlyCheck": {
|
||||
"label": "Tillåt check i skrivskyddat läge"
|
||||
"label": "Tillåt bocka av i en lista i skrivskyddat läge"
|
||||
},
|
||||
"content": {
|
||||
"label": "Innehållet i anteckningsboken"
|
||||
}
|
||||
},
|
||||
"controls": {
|
||||
"bold": "Fet",
|
||||
"bold": "Fetstil",
|
||||
"italic": "Kursiv",
|
||||
"strikethrough": "Genomstruken",
|
||||
"underline": "Understruken",
|
||||
@@ -1351,7 +1361,7 @@
|
||||
"right": "Höger"
|
||||
},
|
||||
"popover": {
|
||||
"clearColor": "Rensa färg",
|
||||
"clearColor": "Ta bort färg",
|
||||
"source": "Källa",
|
||||
"widthPlaceholder": "Värde i % eller pixlar",
|
||||
"columns": "Kolumner",
|
||||
@@ -1721,7 +1731,7 @@
|
||||
},
|
||||
"app": {
|
||||
"noData": "",
|
||||
"description": "",
|
||||
"description": "Klicka på <here></here> för att addera en ny applikation",
|
||||
"quickCreate": ""
|
||||
},
|
||||
"error": {
|
||||
@@ -1750,7 +1760,7 @@
|
||||
},
|
||||
"error": {
|
||||
"noUrl": "",
|
||||
"forYoutubeUseIframe": ""
|
||||
"forYoutubeUseIframe": "För YouTube-videor använd iframe-alternativet"
|
||||
}
|
||||
},
|
||||
"mediaServer": {
|
||||
@@ -1812,7 +1822,7 @@
|
||||
},
|
||||
"added": {
|
||||
"columnTitle": "",
|
||||
"detailsTitle": "Datum tillagt"
|
||||
"detailsTitle": "Datum har adderats"
|
||||
},
|
||||
"category": {
|
||||
"columnTitle": "",
|
||||
@@ -2108,7 +2118,7 @@
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"message": "Tavlan har duplicerats"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
@@ -2120,7 +2130,7 @@
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"message": "Tavlan sparades"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
@@ -2137,7 +2147,7 @@
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"message": "Tavlan har importerats"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
@@ -2150,7 +2160,7 @@
|
||||
"invalidError": ""
|
||||
},
|
||||
"apps": {
|
||||
"label": "Appar",
|
||||
"label": "Applikationer",
|
||||
"avoidDuplicates": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
@@ -2165,7 +2175,7 @@
|
||||
},
|
||||
"screenSize": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"description": "I versioner äldre än version 1.0 fanns tre olika lägen, så du kunde välja antalet kolumner för varje skärmstorlek.",
|
||||
"option": {
|
||||
"sm": "Liten",
|
||||
"md": "Mellan",
|
||||
@@ -2403,14 +2413,14 @@
|
||||
},
|
||||
"error": {
|
||||
"noBoard": {
|
||||
"title": "",
|
||||
"title": "Välkommen till Homarr",
|
||||
"description": "",
|
||||
"link": "",
|
||||
"notice": ""
|
||||
},
|
||||
"notFound": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"description": "Tavlan som angavs hittades inte eller så har du inte tillgång till den.",
|
||||
"link": "",
|
||||
"notice": ""
|
||||
},
|
||||
@@ -2423,7 +2433,7 @@
|
||||
},
|
||||
"user": {
|
||||
"description": "",
|
||||
"link": "",
|
||||
"link": "Konfigurera din starttavla",
|
||||
"notice": ""
|
||||
},
|
||||
"anonymous": {
|
||||
@@ -2463,7 +2473,7 @@
|
||||
"items": {
|
||||
"home": "Hem",
|
||||
"boards": "Tavlor",
|
||||
"apps": "Appar",
|
||||
"apps": "Applikationer",
|
||||
"integrations": "",
|
||||
"searchEngies": "",
|
||||
"medias": "",
|
||||
@@ -2506,7 +2516,7 @@
|
||||
"user": "Användare",
|
||||
"invite": "Inbjudningar",
|
||||
"integration": "",
|
||||
"app": "Appar",
|
||||
"app": "Applikationer",
|
||||
"group": ""
|
||||
},
|
||||
"statisticLabel": {
|
||||
@@ -2529,10 +2539,10 @@
|
||||
"label": "Inställningar"
|
||||
},
|
||||
"setHomeBoard": {
|
||||
"label": "",
|
||||
"label": "Ange som din starttavla",
|
||||
"badge": {
|
||||
"label": "Hem",
|
||||
"tooltip": ""
|
||||
"tooltip": "Den här tavlan kommer att visas som din starttavla"
|
||||
}
|
||||
},
|
||||
"setMobileHomeBoard": {
|
||||
@@ -2605,7 +2615,7 @@
|
||||
"metaTitle": ""
|
||||
},
|
||||
"create": {
|
||||
"metaTitle": "Skapa användare",
|
||||
"metaTitle": "Addera användare",
|
||||
"title": "",
|
||||
"step": {
|
||||
"personalInformation": {
|
||||
@@ -2639,7 +2649,7 @@
|
||||
"action": {
|
||||
"new": {
|
||||
"title": "",
|
||||
"description": "Efter utgångsdatumet är en inbjudan inte längre giltig och mottagaren av inbjudan kan inte skapa ett konto."
|
||||
"description": "Efter utgångsdatumet är en inbjudan inte längre giltig och mottagaren kan inte addera ett konto."
|
||||
},
|
||||
"copy": {
|
||||
"title": "",
|
||||
@@ -2649,7 +2659,7 @@
|
||||
},
|
||||
"delete": {
|
||||
"title": "Ta bort inbjudan",
|
||||
"description": "Är du säker på att du vill ta bort den här inbjudan? Användare med den här länken kommer inte längre att kunna skapa ett konto med hjälp av den länken."
|
||||
"description": "Är du säker på att du vill ta bort denna inbjudan? Användare som fått en inbjudan kommer inte längre att kunna addera ett konto med hjälp av länken."
|
||||
}
|
||||
},
|
||||
"field": {
|
||||
@@ -2657,7 +2667,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"creator": {
|
||||
"label": "Skapare"
|
||||
"label": "Adderad av"
|
||||
},
|
||||
"expirationDate": {
|
||||
"label": "Utgångsdatum"
|
||||
@@ -2740,7 +2750,7 @@
|
||||
},
|
||||
"noTranslate": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"text": "När webbplatsens språk sannolikt inte att användaren vill läsa, kommer Google att visa en översättningslänk i sökresultaten"
|
||||
},
|
||||
"noSiteLinksSearchBox": {
|
||||
"title": "",
|
||||
@@ -2926,7 +2936,7 @@
|
||||
"state": {
|
||||
"label": "Läge",
|
||||
"option": {
|
||||
"created": "Skapad",
|
||||
"created": "Adderad",
|
||||
"running": "Körs",
|
||||
"paused": "Pausad",
|
||||
"restarting": "Startar om",
|
||||
@@ -3012,7 +3022,7 @@
|
||||
"label": "",
|
||||
"notification": {
|
||||
"success": {
|
||||
"title": "",
|
||||
"title": "Adderades till Homarr",
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
@@ -3326,9 +3336,9 @@
|
||||
"label": ""
|
||||
},
|
||||
"apps": {
|
||||
"label": "Appar",
|
||||
"label": "Applikationer",
|
||||
"new": {
|
||||
"label": ""
|
||||
"label": "Ny"
|
||||
},
|
||||
"edit": {
|
||||
"label": "Redigera"
|
||||
@@ -3337,7 +3347,7 @@
|
||||
"users": {
|
||||
"label": "Användare",
|
||||
"create": {
|
||||
"label": "Skapa"
|
||||
"label": "Addera"
|
||||
},
|
||||
"general": "Allmänt",
|
||||
"security": "Säkerhet",
|
||||
@@ -3407,7 +3417,7 @@
|
||||
"help": "",
|
||||
"group": {
|
||||
"app": {
|
||||
"title": "Appar",
|
||||
"title": "Applikationer",
|
||||
"children": {
|
||||
"action": {
|
||||
"open": {
|
||||
@@ -3477,7 +3487,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"newApp": {
|
||||
"label": ""
|
||||
"label": "Addera en ny applikation"
|
||||
},
|
||||
"newIntegration": {
|
||||
"label": "",
|
||||
@@ -3525,8 +3535,8 @@
|
||||
},
|
||||
"option": {
|
||||
"google": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Google",
|
||||
"description": "Sök på webben med Google"
|
||||
},
|
||||
"bing": {
|
||||
"name": "",
|
||||
@@ -3541,8 +3551,8 @@
|
||||
"description": ""
|
||||
},
|
||||
"youTube": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "YouTube",
|
||||
"description": "Sök efter videoklipp på YouTube"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Uygulama seç",
|
||||
"notFound": "Uygulama bulunamadı"
|
||||
}
|
||||
"notFound": "Uygulama bulunamadı",
|
||||
"search": "Uygulama bul",
|
||||
"noResults": "Sonuç bulunamadı",
|
||||
"action": "{app} uygulamasını seç",
|
||||
"title": "Bu panele eklemek üzere bir uygulama seçin"
|
||||
},
|
||||
"create": {
|
||||
"title": "Yeni uygulama oluştur",
|
||||
"description": "Yeni bir uygulama oluştur ",
|
||||
"action": "Uygulama oluşturmayı başlat"
|
||||
},
|
||||
"add": "Bir uygulama ekle"
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
@@ -1781,13 +1791,13 @@
|
||||
"label": "Ters sıralama"
|
||||
},
|
||||
"showCompletedUsenet": {
|
||||
"label": "Tamamlanmış olarak işaretlenen usenet girdilerini göster"
|
||||
"label": "Tamamlanmış olarak işaretlenmiş usenet girdilerini göster"
|
||||
},
|
||||
"showCompletedTorrent": {
|
||||
"label": "Tamamlanmış olarak işaretlenen torrent girdilerini göster"
|
||||
"label": "Tamamlanmış olarak işaretlenmiş torrent girdilerini göster"
|
||||
},
|
||||
"showCompletedHttp": {
|
||||
"label": ""
|
||||
"label": "Tamamlanmış olarak işaretlenmiş çeşitli girişleri göster"
|
||||
},
|
||||
"activeTorrentThreshold": {
|
||||
"label": "Tamamlanan torrent'i bu eşik değerinin altına gizle (kiB/s cinsinden)"
|
||||
|
||||
@@ -611,8 +611,18 @@
|
||||
"action": {
|
||||
"select": {
|
||||
"label": "Оберіть додаток",
|
||||
"notFound": "Додатків не знайдено"
|
||||
}
|
||||
"notFound": "Додатків не знайдено",
|
||||
"search": "",
|
||||
"noResults": "",
|
||||
"action": "",
|
||||
"title": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"action": ""
|
||||
},
|
||||
"add": ""
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user