From b6c083ffce998ad8203da6014564e9f19a8fd6f2 Mon Sep 17 00:00:00 2001 From: Owen Gretzinger Date: Mon, 14 Jul 2025 22:32:57 -0400 Subject: [PATCH] feat: implement instant download functionality with static link (#16) --- landing-page/app/components/features.tsx | 10 +- landing-page/app/components/final-cta.tsx | 13 +- landing-page/app/components/footer.tsx | 11 +- landing-page/app/components/header.tsx | 11 +- landing-page/app/components/hero.tsx | 13 +- landing-page/app/components/pricing.tsx | 5 +- landing-page/app/download/page.tsx | 216 ++++++++++++---------- landing-page/lib/utils.ts | 8 + scripts/build_release.sh | 2 +- 9 files changed, 171 insertions(+), 118 deletions(-) diff --git a/landing-page/app/components/features.tsx b/landing-page/app/components/features.tsx index 8519e80..07deb94 100644 --- a/landing-page/app/components/features.tsx +++ b/landing-page/app/components/features.tsx @@ -75,11 +75,17 @@ export default function Features() {

Coming Soon

- Google Calendar integration, note templates, AI chat for questions, - and more integrations (email, Slack). + Google Calendar integration, AI chat for questions, and more + integrations (email, Slack).

+ Contribute on GitHub to help build these features! +

diff --git a/landing-page/app/components/final-cta.tsx b/landing-page/app/components/final-cta.tsx index 856b377..e34b6b4 100644 --- a/landing-page/app/components/final-cta.tsx +++ b/landing-page/app/components/final-cta.tsx @@ -1,5 +1,8 @@ +"use client" + import { Button } from "@/components/ui/button" import { Download, Github, ArrowRight } from "lucide-react" +import { downloadAndNavigate } from "@/lib/utils" export default function FinalCTA() { return ( @@ -17,12 +20,10 @@ export default function FinalCTA() {

-
  • Star -
  • diff --git a/landing-page/app/components/hero.tsx b/landing-page/app/components/hero.tsx index f665e42..77c6410 100644 --- a/landing-page/app/components/hero.tsx +++ b/landing-page/app/components/hero.tsx @@ -1,6 +1,9 @@ +"use client" + import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Download, Github, Star, Shield, Code, Zap } from "lucide-react" +import { downloadAndNavigate } from "@/lib/utils" export default function Hero() { return ( @@ -19,7 +22,7 @@ export default function Hero() {

    - Just you and your OpenAI API key.
    Go crazy. + Just you and your OpenAI API key.
    Go crazy.

    @@ -41,11 +44,9 @@ export default function Hero() {
    -
    - diff --git a/landing-page/app/download/page.tsx b/landing-page/app/download/page.tsx index dccdb29..9c79f6e 100644 --- a/landing-page/app/download/page.tsx +++ b/landing-page/app/download/page.tsx @@ -1,7 +1,25 @@ -import { Button } from "@/components/ui/button" -import { Card, CardContent } from "@/components/ui/card" -import { Download, AlertTriangle, Calendar, DollarSign, Shield, MessageSquare } from "lucide-react" -import Header from "../components/header" +"use client"; + +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { + Download, + AlertTriangle, + Calendar, + DollarSign, + Shield, + MessageSquare, +} from "lucide-react"; +import Header from "../components/header"; +import { downloadAndNavigate } from "@/lib/utils"; + +function triggerDownload() { + // Just trigger the download without navigation since we're already on the download page + window.open( + "https://github.com/owengretzinger/meetingnotes/releases/latest/download/Meetingnotes.dmg", + "_blank" + ); +} export default function DownloadPage() { return ( @@ -9,20 +27,66 @@ export default function DownloadPage() {
    - -
    +
    -
    - -

    Let's Talk First

    +
    + + +
    +

    Star on GitHub

    - Right now I'm trying to gauge interest in Meetingnotes, so I would love to jump on a call to walk you - through the set up and hear your thoughts on it. + Consider starring the project to show support and help others + discover it.

    - + + + + + +
    + +
    +

    Book a Call

    +

    + I would love to walk you through the setup and hear your + thoughts. +

    +
    - - -
    - -
    -

    Important Security Notice

    -

    - I haven't paid the Apple developer fee, which means that when you download the app you might have - trouble opening it due to macOS flagging it for security issues. -

    -
    -

    To open the app:

    -
      -
    1. Right-click the app and select "Open"
    2. -
    3. Click through the security dialogue
    4. -
    5. Go to System Preferences → Privacy & Security
    6. -
    7. Scroll to the bottom and click "Open Anyway"
    8. -
    -
    -
    -
    -
    -
    - -
    - - -
    - -

    API Key Required

    -
    -

    - You will need to grab an OpenAI API key to use the transcription and AI features. -

    -

    - Expected cost: About $0.20/hour of meeting time -

    - -
    -
    - - - -
    - -

    Privacy First

    -
    -

    - Your API key and all meeting data stay on your device. Nothing is sent to our servers. -

    -
      -
    • • API keys stored securely on-device
    • -
    • • Meeting recordings never leave your Mac
    • -
    • • No data collection or tracking
    • -
    • • Open source and transparent
    • -
    -
    -
    -
    +

    + + Download didn't start automatically?{" "} + +

    Questions?

    - If you run into any issues or have questions about the setup, don't hesitate to reach out. + If you run into any issues or have questions about the setup, + don't hesitate to reach out.

    - ) -} \ No newline at end of file + ); +} diff --git a/landing-page/lib/utils.ts b/landing-page/lib/utils.ts index bd0c391..1610c6a 100644 --- a/landing-page/lib/utils.ts +++ b/landing-page/lib/utils.ts @@ -4,3 +4,11 @@ import { twMerge } from "tailwind-merge" export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } + +export function downloadAndNavigate() { + // Open download URL in a new tab/window (this will trigger the download) + window.open('https://github.com/owengretzinger/meetingnotes/releases/latest/download/Meetingnotes.dmg', '_blank') + + // Navigate to download page + window.location.href = '/download' +} diff --git a/scripts/build_release.sh b/scripts/build_release.sh index 81f0738..dea513b 100755 --- a/scripts/build_release.sh +++ b/scripts/build_release.sh @@ -30,7 +30,7 @@ RELEASES_DIR="$(pwd)/releases" VERSION_DIR="${RELEASES_DIR}/v${VERSION}" mkdir -p "$VERSION_DIR" -DMG_NAME="${APP_NAME}-${VERSION}.dmg" +DMG_NAME="${APP_NAME}.dmg" ZIP_NAME="${APP_NAME}-${VERSION}.zip" # Absolute paths for the artifacts DMG_PATH="${VERSION_DIR}/${DMG_NAME}"