From 9cb2b2a58232194b8358f9aad8ead00a95c58cea Mon Sep 17 00:00:00 2001 From: Ikiae <64362443+IkiaeM@users.noreply.github.com> Date: Sat, 10 Jan 2026 13:43:37 +0000 Subject: [PATCH 1/3] fix: Remove force uppercase, remove

balise (preview + footer), improve default field system --- app/components/admin/Branding.vue | 10 +++++----- app/layouts/default.vue | 23 ++++++----------------- server/utils/settings.ts | 7 ++++--- 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/app/components/admin/Branding.vue b/app/components/admin/Branding.vue index ed17f74..6dbf4f6 100644 --- a/app/components/admin/Branding.vue +++ b/app/components/admin/Branding.vue @@ -38,17 +38,17 @@

+ - {{ - siteSubtitle || `v${useRuntimeConfig().public.appVersion}` - }}
diff --git a/app/layouts/default.vue b/app/layouts/default.vue index 54e3c5e..3c47eb0 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -27,20 +27,16 @@
-
@@ -299,7 +295,7 @@ class="[&>p]:inline [&>p]:m-0" v-html=" branding?.footerText || - `© ${new Date().getFullYear()} ${(branding?.siteName || 'Trackarr').toUpperCase()}` + `© ${new Date().getFullYear()} ${(branding?.siteName || 'Trackarr')}` " > @@ -355,15 +351,8 @@ const { data: branding } = await useFetch<{ pageTitleSuffix: string | null; }>('/api/branding'); -// Set dynamic favicon and title template +// Set dynamic favicon useHead({ - titleTemplate: computed(() => { - const suffix = - branding.value?.pageTitleSuffix || - `- ${branding.value?.siteName || 'Trackarr'}`; - return (title?: string) => - title ? `${title} ${suffix}` : suffix.replace(/^- /, ''); - }), link: [ { rel: 'icon', diff --git a/server/utils/settings.ts b/server/utils/settings.ts index 4c8d074..b4ffa39 100644 --- a/server/utils/settings.ts +++ b/server/utils/settings.ts @@ -1,6 +1,7 @@ import { eq } from 'drizzle-orm'; import { db } from '../db'; import { settings } from '../db/schema'; +import pkg from '../../package.json'; /** * Check if HTML content is effectively empty (just empty tags like

or whitespace) @@ -169,7 +170,7 @@ export async function getDefaultInvites(): Promise { */ export async function getSiteName(): Promise { const value = await getSetting(SETTINGS_KEYS.SITE_NAME); - return value || 'Trackarr'; + return isEmptyHtml(value) ? 'TRACKARR' : value!; } /** @@ -199,9 +200,9 @@ export async function getSiteFavicon(): Promise { /** * Get site subtitle (displayed below site name) */ -export async function getSiteSubtitle(): Promise { +export async function getSiteSubtitle(): Promise { const value = await getSetting(SETTINGS_KEYS.SITE_SUBTITLE); - return isEmptyHtml(value) ? null : value; + return isEmptyHtml(value) ? `v${pkg.version}` : value!; } /** From d63b83b0a97cc7c93577a79c7f779dea7ed875ec Mon Sep 17 00:00:00 2001 From: Ikiae <64362443+IkiaeM@users.noreply.github.com> Date: Sat, 10 Jan 2026 14:01:23 +0000 Subject: [PATCH 2/3] fix: remove

balise in titlePageSuffix --- app/components/admin/Branding.vue | 6 +++--- app/layouts/default.vue | 9 ++++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/components/admin/Branding.vue b/app/components/admin/Branding.vue index 6dbf4f6..2b7047f 100644 --- a/app/components/admin/Branding.vue +++ b/app/components/admin/Branding.vue @@ -405,11 +405,11 @@ type="text" maxlength="100" class="w-full bg-bg-tertiary border border-border rounded px-3 py-2 text-sm text-text-primary focus:outline-none focus:border-white/20" - :placeholder="`- ${siteName || 'Trackarr'}`" + :placeholder="`- ${siteName?.replace(/<[^>]*>/g, '') || 'Trackarr'}`" />

- Example: "Search Torrents{{ - pageTitleSuffix || ` - ${siteName || 'Trackarr'}` + Example: "Search Torrents {{ + pageTitleSuffix || ` - ${siteName?.replace(/<[^>]*>/g, '') || 'Trackarr'}` }}"

diff --git a/app/layouts/default.vue b/app/layouts/default.vue index 3c47eb0..90d8d3e 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -351,8 +351,15 @@ const { data: branding } = await useFetch<{ pageTitleSuffix: string | null; }>('/api/branding'); -// Set dynamic favicon +// Set dynamic favicon and title template useHead({ + titleTemplate: computed(() => { + const suffix = + branding.value?.pageTitleSuffix || + `- ${branding.value?.siteName?.replace(/<[^>]*>/g, '') || 'TRACKARR'}`; + return (title?: string) => + title ? `${title} ${suffix}` : suffix.replace(/^- /, ''); + }), link: [ { rel: 'icon', From 02dafa199d6c453d8f226cfb78c102426b87d361 Mon Sep 17 00:00:00 2001 From: Ikiae <64362443+IkiaeM@users.noreply.github.com> Date: Sat, 10 Jan 2026 14:47:27 +0000 Subject: [PATCH 3/3] fix: Remove uppercase class from auth pages, update default hero title to TRACKARR, and improve placeholder text --- app/components/admin/Branding.vue | 2 +- app/pages/auth/login.vue | 4 ++-- app/pages/auth/register.vue | 4 ++-- app/pages/index.vue | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/components/admin/Branding.vue b/app/components/admin/Branding.vue index 2b7047f..69261db 100644 --- a/app/components/admin/Branding.vue +++ b/app/components/admin/Branding.vue @@ -486,7 +486,7 @@ > diff --git a/app/pages/auth/login.vue b/app/pages/auth/login.vue index 338c9e0..0116f95 100644 --- a/app/pages/auth/login.vue +++ b/app/pages/auth/login.vue @@ -19,8 +19,8 @@ />