diff --git a/app/known-issues/issues.tsx b/app/known-issues/issues.tsx new file mode 100644 index 000000000..18481b833 --- /dev/null +++ b/app/known-issues/issues.tsx @@ -0,0 +1,51 @@ +import React from "react"; + +type Severity = "low" | "medium" | "high" | "critical"; + +export type IssueEntry = { + date: string; + title: string; + description: React.ReactNode; + repositoryId: string; + issueLink: string; + severity?: Severity; + screenshot?: { + src: string; + alt: string; + width: number; + height: number; + }; +}; + +const issues: IssueEntry[] = [ + { + date: "", + title: "Remote SSH not supported", + description: ( + <> +

+ Currently PearAI does not support remote SSH. We plan on supporting + this in the near future. +

+ + ), + repositoryId: "pearai-app", + issueLink: "", + }, + { + date: "", + title: "Liveshare not supported", + description: ( + <> +

+ Currently PearAI does not support Liveshare extension. We plan on + supporting this in the near future. +

+ + ), + repositoryId: "pearai-app", + issueLink: "", + }, +]; + +export default issues; diff --git a/app/known-issues/issuesList.tsx b/app/known-issues/issuesList.tsx new file mode 100644 index 000000000..3172e0677 --- /dev/null +++ b/app/known-issues/issuesList.tsx @@ -0,0 +1,118 @@ +import React from "react"; +import Image from "next/image"; +import { cn } from "@/lib/utils"; +import { getTimePassed } from "@/utils/dateUtils"; +import { Info, AlertCircle, AlertTriangle, XCircle } from "lucide-react"; + +type Severity = "low" | "medium" | "high" | "critical"; + +type IssueItemProps = { + date: string; + title: string; + description: React.ReactNode; + issueLink: string; + severity?: Severity; + screenshot?: { + src: string; + alt: string; + width: number; + height: number; + }; +}; + +export const IssueList: React.FC = ({ + date, + title, + description, + severity, + screenshot, +}) => { + const getSeverityIcon = () => { + if (!severity) return null; + switch (severity) { + case "low": + return ; + case "medium": + return ; + case "high": + return ; + case "critical": + return ; + default: + return ; + } + }; + + const getSeverityLabel = () => { + if (!severity) return "Severity Unknown"; + switch (severity) { + case "low": + return "Low Severity"; + case "medium": + return "Medium Severity"; + case "high": + return "High Severity"; + case "critical": + return "Critical Severity"; + default: + return "Severity Unknown"; + } + }; + + return ( +
+
+ {/* Header */} +
+ {/* Icon and Title */} +
+ {/* Icon */} + {severity &&
{getSeverityIcon()}
} + {/* Issue Title */} +

+

{title}

+

+
+ + {/* Date */} + {date && ( +
+ + ({getTimePassed(date)}) +
+ )} +
+ {/* Severity Label */} + {severity && ( +
+ + {getSeverityLabel()} + +
+ )} + {/* Description */} +
{description}
+ {/* Screenshot */} + {screenshot && ( +
+ {screenshot.alt} +
+ )} +
+
+ ); +}; diff --git a/app/known-issues/page.tsx b/app/known-issues/page.tsx new file mode 100644 index 000000000..a8c86573a --- /dev/null +++ b/app/known-issues/page.tsx @@ -0,0 +1,28 @@ +import React from "react"; +import issues from "./issues"; +import { IssueList } from "./issuesList"; +import { Metadata } from "next"; +import { constructMetadata } from "@/lib/utils"; + +export const metadata: Metadata = constructMetadata({ + title: "Issues", + description: "This page lists all current known issues and their status.", + canonical: "/known-issues", +}); + +const CurrentKnownIssues: React.FC = () => { + return ( +
+

+ Current Known Issues +

+
+ {issues.map((issue, index) => { + return ; + })} +
+
+ ); +}; + +export default CurrentKnownIssues; diff --git a/components/faq.tsx b/components/faq.tsx index e84d53461..7bb480c62 100644 --- a/components/faq.tsx +++ b/components/faq.tsx @@ -125,12 +125,12 @@ export default FAQComponent; const faqData: FAQItem[] = [ { id: "name", - question: "0. Why is it called PearAI?!", + question: "0. Why is it called PearAI?", answer:

Pair programming... Pear Programming... PearAI! 🍐💡

, }, { id: "competitors", - question: "1. Why PearAI over competitors?!", + question: "1. Why PearAI over competitors?", answer: (

Over using vanilla LLM’s:

@@ -191,7 +191,7 @@ const faqData: FAQItem[] = [ }, { id: "privacy", - question: "2. Does PearAI store my code?!", + question: "2. Does PearAI store my code?", answer: (

No. All codebase indexing occurs and remains strictly local on your @@ -211,7 +211,7 @@ const faqData: FAQItem[] = [ }, { id: "contribute", - question: "3. How can I contribute to PearAI?!", + question: "3. How can I contribute to PearAI?", answer: (

See the contributor's section:{" "} @@ -222,4 +222,17 @@ const faqData: FAQItem[] = [

), }, + { + id: "known-issues", + question: "4. What are current known issues?", + answer: ( +

+ See the{" "} + + known issues section + + . +

+ ), + }, ];