diff --git a/README.md b/README.md index c6a5c0c..dc207f7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Bill Tracker

- Bill Tracker logo + Bill Tracker — Calm command for household money

Bill Tracker is a private, self-hosted bill planning app for households and diff --git a/client/components/ReleaseNotesDialog.tsx b/client/components/ReleaseNotesDialog.tsx index 7c6ff00..2092c84 100644 --- a/client/components/ReleaseNotesDialog.tsx +++ b/client/components/ReleaseNotesDialog.tsx @@ -2,7 +2,7 @@ import { useEffect, useRef, useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { RELEASE_NOTES } from '@/lib/version'; -import { Sparkles } from 'lucide-react'; +import { BrandGlyph } from '@/components/brand/Brand'; import { useAuth } from '@/hooks/useAuth'; import { api } from '@/api'; @@ -28,9 +28,7 @@ export function ReleaseNotesDialog() {
-
- -
+ v{RELEASE_NOTES.version} · {RELEASE_NOTES.date} diff --git a/client/components/tracker/OverdueCommandCenter.tsx b/client/components/tracker/OverdueCommandCenter.tsx index 2b27395..7ac6350 100644 --- a/client/components/tracker/OverdueCommandCenter.tsx +++ b/client/components/tracker/OverdueCommandCenter.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { AlertCircle, ChevronDown, ChevronUp, BellOff, SkipForward, CreditCard, EyeOff } from 'lucide-react'; import { toast } from 'sonner'; import { api } from '@/api'; -import { cn, fmt, localDateString } from '@/lib/utils'; +import { fmt, localDateString } from '@/lib/utils'; import { asDollars } from '@/lib/money'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; diff --git a/client/lib/version.ts b/client/lib/version.ts index 55c18ca..15a05c4 100644 --- a/client/lib/version.ts +++ b/client/lib/version.ts @@ -58,7 +58,7 @@ export const RELEASE_NOTES: ReleaseNotes = { }, ], image: { - src: '/img/doingmypart.jpg', - alt: 'Doing my part', + src: '/brand/social-preview.svg', + alt: 'Bill Tracker brand preview', }, }; diff --git a/client/pages/AboutPage.tsx b/client/pages/AboutPage.tsx index 08c17a2..b09cc38 100644 --- a/client/pages/AboutPage.tsx +++ b/client/pages/AboutPage.tsx @@ -4,8 +4,11 @@ import { ArrowLeft, ArrowUpCircle, CheckCircle2, Info, Loader2, Sparkles, AlertC import { api } from '@/api'; import { useAuth } from '@/hooks/useAuth'; import { APP_VERSION } from '@/lib/version'; +import { BRAND } from '@/lib/brand'; +import { BrandMark } from '@/components/brand/Brand'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { PageHeader } from '@/components/ui/app-primitives'; const REPOSITORY_URL = 'https://dream.scheller.ltd/null/BillTracker'; @@ -99,7 +102,7 @@ export default function AboutPage() { const displayVersion = about?.version ?? APP_VERSION; return ( -
+
- + -
- +
+
- {about?.name || 'Bill Tracker'} + + {about?.name || BRAND.name} - {about?.description || ''} + {about?.description || BRAND.tagline} @@ -141,12 +150,24 @@ export default function AboutPage() {
+
+ +
+

Private, practical, self-hosted

+

+ {BRAND.name} is self-hosted software for personal bill planning and history. It is built around local ownership, readable records, and calm monthly review. +

+
+
+
+ +
-

Produced with AI assistance

+

{BRAND.tagline}

- Bill Tracker is self-hosted software for personal bill planning and history. This product was produced with the assistance of AI. + The brand direction is premium calm: trustworthy, quiet, and focused on reducing household money stress.

diff --git a/client/pages/ReleaseNotesPage.tsx b/client/pages/ReleaseNotesPage.tsx index eb47f3e..92bb95a 100644 --- a/client/pages/ReleaseNotesPage.tsx +++ b/client/pages/ReleaseNotesPage.tsx @@ -6,6 +6,7 @@ import { api } from '@/api'; import { cn, errMessage } from '@/lib/utils'; import { Button } from '@/components/ui/button'; import { MarkdownText } from '@/components/MarkdownText'; +import { EmptyState, PageHeader } from '@/components/ui/app-primitives'; interface ReleaseHistoryData { history?: string; @@ -110,27 +111,32 @@ export default function ReleaseNotesPage() { const history = data?.history || ''; return ( -
+
-
-
- -

Release Notes

-

- {data?.version ? `Current version v${data.version}` : 'Full project changelog'} - {data?.updated_at ? ` · Updated ${formatDateTime(data.updated_at)}` : ''} -

-
- -
+ + + {data?.version ? `Current version v${data.version}` : 'Full project changelog'} + {data?.updated_at ? ` · Updated ${formatDateTime(data.updated_at)}` : ''} + + )} + glyph="analytics" + actions={( + + )} + />
{loading ? ( @@ -141,14 +147,17 @@ export default function ReleaseNotesPage() {
) : error ? ( -
-

Unable to load release notes.

-

{error}

-
+ ) : !history.trim() ? ( -
-

No release notes are available.

-
+ ) : (
{history.split('\n').map((line, index) => ( diff --git a/client/public/brand/apple-touch-icon.png b/client/public/brand/apple-touch-icon.png index 06c79f7..d7969dc 100644 Binary files a/client/public/brand/apple-touch-icon.png and b/client/public/brand/apple-touch-icon.png differ diff --git a/client/public/brand/pwa-192.png b/client/public/brand/pwa-192.png index 22a25bc..bbcce15 100644 Binary files a/client/public/brand/pwa-192.png and b/client/public/brand/pwa-192.png differ diff --git a/client/public/brand/pwa-512.png b/client/public/brand/pwa-512.png index 68ad5ec..37dae82 100644 Binary files a/client/public/brand/pwa-512.png and b/client/public/brand/pwa-512.png differ