diff --git a/apps/docs/app/layout.tsx b/apps/docs/app/layout.tsx index 58c7c0d..3104a29 100644 --- a/apps/docs/app/layout.tsx +++ b/apps/docs/app/layout.tsx @@ -1,15 +1,10 @@ import { RootProvider } from "fumadocs-ui/provider"; -import { Geist } from "next/font/google"; import type { ReactNode } from "react"; import "./global.css"; -const geist = Geist({ - subsets: ["latin"], -}); - export default function Layout({ children }: { children: ReactNode }) { return ( - + {children} diff --git a/apps/web/components/layout/footer.component.tsx b/apps/web/components/layout/footer.component.tsx index 00970e5..ddfe755 100644 --- a/apps/web/components/layout/footer.component.tsx +++ b/apps/web/components/layout/footer.component.tsx @@ -8,14 +8,19 @@ const version = require("../../package.json").version; const navigation = { solutions: [ - { name: "Zapier", href: ROUTES.ZAPIER }, { name: "APIs", href: "https://docs.changes.page" }, { - name: "GitHub", + name: "GitHub agent", + href: "/github-changelog-agent", + }, + { name: "Zapier", href: ROUTES.ZAPIER }, + { + name: "GitHub actions", href: "https://github.com/marketplace/actions/create-changelog", }, ], support: [ + { name: "Blog", href: ROUTES.BLOG }, { name: "Documentation", href: "https://docs.changes.page/docs" }, { name: "Contact Us", href: ROUTES.SUPPORT }, { name: "Status", href: "https://status.changes.page" }, @@ -41,7 +46,6 @@ const navigation = { name: "Release Calendar", href: "/free-tools/release-calendar", }, - { name: "Blog", href: ROUTES.BLOG }, ], legal: [ { name: "Privacy", href: ROUTES.PRIVACY }, @@ -158,6 +162,17 @@ export default function FooterComponent() { ))} +
  • + +
  • @@ -177,17 +192,6 @@ export default function FooterComponent() { ))} -
  • - -
  • diff --git a/apps/web/package.json b/apps/web/package.json index ed24b63..e8d397f 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@changes-page/web", - "version": "1.19.0", + "version": "1.20.0", "private": true, "scripts": { "dev": "next dev", diff --git a/apps/web/pages/_app.tsx b/apps/web/pages/_app.tsx index 474ce99..53fe7bb 100644 --- a/apps/web/pages/_app.tsx +++ b/apps/web/pages/_app.tsx @@ -1,6 +1,5 @@ import { Analytics } from "@vercel/analytics/next"; import dynamic from "next/dynamic"; -import localFont from "next/font/local"; import Head from "next/head"; import "../styles/global.css"; import { UserContextProvider } from "../utils/useUser"; @@ -12,19 +11,6 @@ const ProgressBar = dynamic( } ); -const geist = localFont({ - src: [ - { path: "../public/fonts/Geist/Geist-Regular.otf", weight: "500" }, - { path: "../public/fonts/Geist/Geist-Medium.otf", weight: "600" }, - { path: "../public/fonts/Geist/Geist-SemiBold.otf", weight: "700" }, - { path: "../public/fonts/Geist/Geist-Bold.otf", weight: "800" }, - { path: "../public/fonts/Geist/Geist-Black.otf", weight: "900" }, - ], - display: "swap", - variable: "--font-geist-sans", - fallback: ["inter"], -}); - export default function App({ Component, pageProps }) { const getLayout = Component.getLayout || ((page) => page); @@ -36,11 +22,6 @@ export default function App({ Component, pageProps }) { content="width=device-width, initial-scale=1.0, maximum-scale=5.0" > - {getLayout()} diff --git a/apps/web/pages/api/blog/og.tsx b/apps/web/pages/api/blog/og.tsx index fdd15c5..3bba0ad 100644 --- a/apps/web/pages/api/blog/og.tsx +++ b/apps/web/pages/api/blog/og.tsx @@ -3,7 +3,7 @@ import { NextRequest } from "next/server"; const font = fetch( new URL( - "../../../public/fonts/Geist/Geist-SemiBold.otf", + "../../../public/fonts/Geist-SemiBold.otf", import.meta.url ).toString() ).then((res) => res.arrayBuffer()); diff --git a/apps/web/pages/api/integrations/github/webhook.ts b/apps/web/pages/api/integrations/github/webhook.ts index 393f793..d6765ed 100644 --- a/apps/web/pages/api/integrations/github/webhook.ts +++ b/apps/web/pages/api/integrations/github/webhook.ts @@ -19,7 +19,7 @@ async function getRawBody(req: NextApiRequest): Promise { return Buffer.concat(chunks).toString("utf8"); } -const BOT_MENTION = `@${process.env.GITHUB_APP_SLUG || "changespage"}`; +const BOT_MENTIONS = ["@changepage", "@changes-page"]; export default async function handler( req: NextApiRequest, @@ -67,7 +67,12 @@ async function handleIssueComment(payload: any, res: NextApiResponse) { return res.status(200).json({ message: "Not a PR comment, skipping" }); } - if (!comment.toLowerCase().includes(BOT_MENTION.toLowerCase())) { + const commentLower = comment.toLowerCase(); + const foundMention = BOT_MENTIONS.find((mention) => + commentLower.includes(mention.toLowerCase()) + ); + + if (!foundMention) { return res.status(200).json({ message: "No mention found, skipping" }); } @@ -84,9 +89,9 @@ async function handleIssueComment(payload: any, res: NextApiResponse) { const commentId = payload.comment.id; const commentAuthor = payload.comment.user.login; - const mentionIndex = comment.toLowerCase().indexOf(BOT_MENTION.toLowerCase()); + const mentionIndex = commentLower.indexOf(foundMention.toLowerCase()); const userInstructions = comment - .substring(mentionIndex + BOT_MENTION.length) + .substring(mentionIndex + foundMention.length) .trim(); console.log("Processing changelog request:", { diff --git a/apps/web/pages/github-changelog-agent.tsx b/apps/web/pages/github-changelog-agent.tsx new file mode 100644 index 0000000..8d26404 --- /dev/null +++ b/apps/web/pages/github-changelog-agent.tsx @@ -0,0 +1,547 @@ +import { + ChatAlt2Icon, + CheckIcon, + CogIcon, + LightningBoltIcon, + SparklesIcon, + TerminalIcon, +} from "@heroicons/react/solid"; +import Head from "next/head"; +import Link from "next/link"; +import FooterComponent from "../components/layout/footer.component"; +import HeaderComponent from "../components/layout/header.component"; + +export default function GitHubChangelogAgentLanding() { + return ( +
    + + + GitHub Changelog Agent - AI-Powered Changelog Generation from PRs + + + + + + + + + + + + + + + + + - +