- BillTracker is self-hosted software for personal bill planning and history. This product was produced with the assistance of AI.
+ Bill Tracker is self-hosted software for personal bill planning and history. This product was produced with the assistance of AI.
@@ -804,7 +804,7 @@ export default function AnalyticsPage() {
)}
- Generated from BillTracker Analytics on {new Date(data?.generated_at || Date.now()).toLocaleString()}.
+ Generated from Bill Tracker Analytics on {new Date(data?.generated_at || Date.now()).toLocaleString()}.
);
diff --git a/client/pages/LoginPage.tsx b/client/pages/LoginPage.tsx
index 8d6e891..bd7ed5a 100644
--- a/client/pages/LoginPage.tsx
+++ b/client/pages/LoginPage.tsx
@@ -8,6 +8,8 @@ import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { APP_VERSION } from '@/lib/version';
+import { BRAND } from '@/lib/brand';
+import { BrandMark } from '@/components/brand/Brand';
import {
Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter,
} from '@/components/ui/dialog';
@@ -191,17 +193,16 @@ export default function LoginPage() {
};
return (
-
+
{/* Logo / Brand */}
-
-
+
+
+
+ {BRAND.tagline}
+
{/* TOTP step — shown after password is accepted */}
@@ -264,14 +265,14 @@ export default function LoginPage() {
{/* Sign-in card — hidden while auth mode resolves or during TOTP step */}
{!totpChallenge && (authMode === null ? (
-
+
Loading…
) : (
-
+
-
Sign in
+
Sign in
{localEnabled ? 'Enter your credentials to continue.' : `Continue with ${providerName}.`}
+
+ Add a bill
+
+ )}
+ />
)}
{/* ── Buckets — year and month passed so Row can open the correct monthly state dialog ── */}
@@ -1260,19 +1255,17 @@ export default function TrackerPage() {
)}
{/* ── Filtered-to-empty state — bills exist this month but none match the active filters/search ── */}
{!isError && !loading && rows.length > 0 && first.length === 0 && second.length === 0 && (
-
-
-
-
-
No bills match your filters
-
{rows.length} bill{rows.length === 1 ? '' : 's'} this month are hidden by the current search or filters.