diff --git a/src/pages/Changelog.tsx b/src/pages/Changelog.tsx new file mode 100644 index 0000000..438c3a5 --- /dev/null +++ b/src/pages/Changelog.tsx @@ -0,0 +1,192 @@ +import { useState } from "react"; +import { Card, CardContent } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { + Rocket, CheckCircle2, Bug, Sparkles, Zap, Mail, ArrowRight +} from "lucide-react"; +import { toast } from "sonner"; +import Sidebar from "@/components/Sidebar"; +import Header from "@/components/Header"; + +interface ReleaseFeature { + text: string; + type: string; + typeColor: string; +} + +interface Release { + id: number; + version: string; + date: string; + title: string; + description: string; + features: ReleaseFeature[]; +} + +const releases: Release[] = [ + { + id: 1, + version: "v2.4.0", + date: "April 10, 2026", + title: "Roadmap & Analytics", + description: "Major update introducing our new visual roadmap board, enhanced feedback analytics, and improved team collaboration features.", + features: [ + { text: "Visual roadmap board with drag-and-drop columns", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Real-time collaboration with cursor presence", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Feedback sentiment analysis powered by AI", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Fixed PDF export cutting off long descriptions", type: "Fix", typeColor: "bg-red-100 text-red-700" }, + { text: "Improved dashboard widget loading performance", type: "Improved", typeColor: "bg-amber-100 text-amber-700" }, + ], + }, + { + id: 2, + version: "v2.3.0", + date: "March 25, 2026", + title: "Integration Hub", + description: "Seamless integrations with your favorite tools. Connect Slack, Jira, and Linear to keep your team in sync.", + features: [ + { text: "Slack integration for feature notifications", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Jira two-way sync for feature tracking", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Linear import for existing roadmap data", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Webhook support for custom integrations", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + ], + }, + { + id: 3, + version: "v2.2.0", + date: "March 10, 2026", + title: "Priority Framework", + description: "A new weighted scoring model to help you make data-driven prioritization decisions.", + features: [ + { text: "Customizable priority scoring with weighted criteria", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "RICE and ICE scoring frameworks built-in", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Fixed incorrect vote counts on filtered views", type: "Fix", typeColor: "bg-red-100 text-red-700" }, + { text: "Improved search performance for large feature lists", type: "Improved", typeColor: "bg-amber-100 text-amber-700" }, + ], + }, + { + id: 4, + version: "v2.1.0", + date: "February 20, 2026", + title: "Team Workspaces", + description: "Collaborate better with dedicated team workspaces, role-based permissions, and activity audit logs.", + features: [ + { text: "Team workspaces with member management", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Role-based access control (Admin, Editor, Viewer)", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Activity audit log for compliance tracking", type: "New", typeColor: "bg-blue-100 text-blue-700" }, + { text: "Fixed notification emails missing context details", type: "Fix", typeColor: "bg-red-100 text-red-700" }, + { text: "Improved onboarding flow with interactive tutorial", type: "Improved", typeColor: "bg-amber-100 text-amber-700" }, + ], + }, +]; + +const typeIcons: Record = { + New: Sparkles, + Fix: Bug, + Improved: Zap, +}; + +export default function ChangelogPage() { + const [email, setEmail] = useState(""); + + const handleSubscribe = () => { + if (!email.includes("@")) { + toast.error("Please enter a valid email address"); + return; + } + toast("Subscribed to changelog updates!"); + setEmail(""); + }; + + return ( +
+ +
+
+
+ {/* ── Page Header ── */} +
+
+

Changelog

+

Stay up to date with the latest improvements

+
+
+ + {/* ── Subscribe Banner ── */} + + +
+
+
+ +

Subscribe to updates

+
+

Get notified when we ship new features and improvements

+
+
+ setEmail(e.target.value)} + className="bg-white/20 border-white/30 text-white placeholder:text-blue-200 h-10 min-w-[220px]" + /> + +
+
+
+
+ + {/* ── Release Timeline ── */} +
+ {/* Timeline Line */} +
+ +
+ {releases.map((release, index) => ( +
+ {/* Timeline Dot */} +
+
+ +
+
+ + {/* Release Card */} + + +
+ {release.version} + {release.date} + {index === 0 && Latest} +
+

{release.title}

+

{release.description}

+
+ {release.features.map((feature, fi) => { + const FeatureIcon = typeIcons[feature.type] || CheckCircle2; + return ( +
+ + + {feature.type} + + {feature.text} +
+ ); + })} +
+
+
+
+ ))} +
+
+
+
+
+ ); +}