feat: Phase 4 - board templates, auto-backup, version history

- BoardTemplate type and storage CRUD (save/list/delete templates)
- createBoardFromTemplate factory function
- "Save as Template" in board card context menu
- User templates shown in NewBoardDialog with delete option
- Auto-backup on save with 5-minute throttle, 10 backup retention
- VersionHistoryDialog with backup list and restore confirmation
- Version History accessible from board settings dropdown
This commit is contained in:
Your Name
2026-02-16 14:55:58 +02:00
parent fc4310a30f
commit 7277bbdc21
7 changed files with 480 additions and 10 deletions

View File

@@ -11,13 +11,16 @@ import {
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
DropdownMenuSeparator,
DropdownMenuSub,
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { VersionHistoryDialog } from "@/components/board/VersionHistoryDialog";
import { useAppStore } from "@/stores/app-store";
import { useBoardStore } from "@/stores/board-store";
import { WindowControls } from "@/components/layout/WindowControls";
@@ -32,6 +35,7 @@ export function TopBar() {
const isBoardView = view.type === "board";
const [showVersionHistory, setShowVersionHistory] = useState(false);
const [editing, setEditing] = useState(false);
const [editValue, setEditValue] = useState("");
const inputRef = useRef<HTMLInputElement>(null);
@@ -240,6 +244,10 @@ export function TopBar() {
</DropdownMenuRadioGroup>
</DropdownMenuSubContent>
</DropdownMenuSub>
<DropdownMenuSeparator />
<DropdownMenuItem onClick={() => setShowVersionHistory(true)}>
Version History
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
)}
@@ -279,6 +287,12 @@ export function TopBar() {
</Tooltip>
<WindowControls />
</div>
{isBoardView && (
<VersionHistoryDialog
open={showVersionHistory}
onOpenChange={setShowVersionHistory}
/>
)}
</header>
);
}