diff --git a/frontend/src/components/layout/Footer.tsx b/frontend/src/components/layout/Footer.tsx
new file mode 100644
index 0000000..4d97525
--- /dev/null
+++ b/frontend/src/components/layout/Footer.tsx
@@ -0,0 +1,26 @@
+const ROMAN_PAIRS: [number, string][] = [
+ [1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],
+ [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'],
+ [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I'],
+]
+
+function toRoman(n: number): string {
+ let result = ''
+ for (const [value, symbol] of ROMAN_PAIRS) {
+ while (n >= value) {
+ result += symbol
+ n -= value
+ }
+ }
+ return result
+}
+
+/** Slim end-of-page byline — sits below every section's content as a
+ * quiet attribution line. */
+export function Footer() {
+ return (
+
+ Built with hubris · {toRoman(new Date().getFullYear())}
+
+ )
+}
diff --git a/frontend/src/components/layout/LeftSidebar.tsx b/frontend/src/components/layout/LeftSidebar.tsx
index c5ecae7..25e537d 100644
--- a/frontend/src/components/layout/LeftSidebar.tsx
+++ b/frontend/src/components/layout/LeftSidebar.tsx
@@ -27,6 +27,7 @@ import {
Download as DownloadIcon,
} from 'lucide-react'
import { DateRangePicker } from '../filter/DateRangePicker'
+import { Footer } from './Footer'
import { cn } from '@/lib/utils'
import { sourceFolders, photos as photosApi, downloads, type FolderTreeNode } from '../../services/api'
import { useMutation, useQueryClient } from '@tanstack/react-query'
@@ -639,6 +640,7 @@ export function LeftSidebar() {
const showOnFolders =
isSectionHeader && item.id === 'folders' && scanActivity.active
const showOnFolderRow =
+ scanActivity.isScanning &&
!!item.path &&
!!scanActivity.currentFolder &&
scanActivity.currentFolder.startsWith(item.path)
@@ -943,6 +945,8 @@ export function LeftSidebar() {
Settings
)}
+
+
= value) {
- result += symbol
- n -= value
- }
- }
- return result
-}
-
/**
* Slim top bar — animated walking mule on the left over a tiled desert
* backdrop. Sidebar toggle buttons live on the FilterBar.
@@ -65,11 +48,6 @@ export function TopBar() {
{MULIMAGO_ASCII}
-
-
- Built with hubris • {toRoman(new Date().getFullYear())}
-
-
)
}