diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg
new file mode 100644
index 0000000..ad4d2ff
--- /dev/null
+++ b/frontend/public/favicon.svg
@@ -0,0 +1 @@
+
diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx
index df26a65..e9fa08b 100644
--- a/frontend/src/app/layout.tsx
+++ b/frontend/src/app/layout.tsx
@@ -2,8 +2,11 @@ import type { Metadata } from 'next';
import './globals.css';
export const metadata: Metadata = {
- title: 'Drive — Your Personal Cloud',
+ title: "Eli's Drive",
description: 'A high-performance, self-hosted file storage and management platform.',
+ icons: {
+ icon: '/favicon.svg',
+ },
};
export default function RootLayout({
diff --git a/frontend/src/components/FileExplorer.tsx b/frontend/src/components/FileExplorer.tsx
index 731ba46..f745263 100644
--- a/frontend/src/components/FileExplorer.tsx
+++ b/frontend/src/components/FileExplorer.tsx
@@ -245,6 +245,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) {
const [pinnedExpanded, setPinnedExpanded] = useState(false);
const [pinnedOrder, setPinnedOrder] = useState([]);
const [dragOverPinnedItem, setDragOverPinnedItem] = useState(null);
+ const [pinnedRefreshCounter, setPinnedRefreshCounter] = useState(0);
const [selectionBox, setSelectionBox] = useState<{ startX: number; startY: number; currentX: number; currentY: number } | null>(null);
const [initialSelectedFiles, setInitialSelectedFiles] = useState>(new Set());
const searchTimeoutRef = useRef(undefined);
@@ -437,7 +438,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) {
setPinnedFiles(items);
}).catch(console.error);
}
- }, [pinnedExpanded, pinnedOrder]);
+ }, [pinnedExpanded, pinnedOrder, pinnedRefreshCounter]);
async function handlePinnedDragEnd(sourcePath: string, destPath: string) {
const newOrder = [...pinnedOrder];
@@ -608,6 +609,7 @@ export default function FileExplorer({ onLogout }: FileExplorerProps) {
async function handlePin(file: FileItem) {
await api.togglePin(file.path);
loadFiles(undefined, true);
+ setPinnedRefreshCounter(c => c + 1);
}
async function handleRename(path: string, originalName: string, isDir: boolean) {