diff --git a/apps/web/public/changelog/.gitkeep b/apps/web/public/changelog/.gitkeep deleted file mode 100644 index 9730db14d..000000000 --- a/apps/web/public/changelog/.gitkeep +++ /dev/null @@ -1,8 +0,0 @@ -# Changelog Assets Directory - -Place changelog screenshots, feature images, and assets here. - -Example usage in MDX: -```markdown -![New Feature Screenshot](/changelog/v1.0.0-feature.png) -``` diff --git a/apps/web/public/docs/.gitkeep b/apps/web/public/docs/.gitkeep deleted file mode 100644 index 0aebaad51..000000000 --- a/apps/web/public/docs/.gitkeep +++ /dev/null @@ -1,8 +0,0 @@ -# Documentation Assets Directory - -Place documentation images, diagrams, and assets here. - -Example usage in MDX: -```markdown -![Architecture Diagram](/docs/architecture.png) -``` diff --git a/apps/web/public/noise-texture.png b/apps/web/public/noise-texture.png deleted file mode 100644 index 1f7c64d9b..000000000 --- a/apps/web/public/noise-texture.png +++ /dev/null @@ -1 +0,0 @@ -https://claude.ai/public/artifacts/71cb0bdf-fc1f-469d-b93d-fa3be8903dd8 \ No newline at end of file diff --git a/apps/web/public/team/john.png b/apps/web/public/team/john.png deleted file mode 100644 index 64839f6da..000000000 Binary files a/apps/web/public/team/john.png and /dev/null differ diff --git a/apps/web/public/team/yujong.png b/apps/web/public/team/yujong.png deleted file mode 100644 index fbdd02b5e..000000000 Binary files a/apps/web/public/team/yujong.png and /dev/null differ diff --git a/apps/web/src/components/github-open-source.tsx b/apps/web/src/components/github-open-source.tsx index 441aa31a6..20a7c7843 100644 --- a/apps/web/src/components/github-open-source.tsx +++ b/apps/web/src/components/github-open-source.tsx @@ -138,7 +138,7 @@ export function GitHubOpenSource() { const FORKS_COUNT = githubStats.data?.forks ?? GITHUB_LAST_SEEN_FORKS; return ( -
+
diff --git a/apps/web/src/components/slash-separator.tsx b/apps/web/src/components/slash-separator.tsx index eae6a4cf7..6eb3620ce 100644 --- a/apps/web/src/components/slash-separator.tsx +++ b/apps/web/src/components/slash-separator.tsx @@ -1,7 +1,7 @@ export function SlashSeparator() { return (
); diff --git a/apps/web/src/components/video-thumbnail.tsx b/apps/web/src/components/video-thumbnail.tsx index 216b6650b..4b199f17b 100644 --- a/apps/web/src/components/video-thumbnail.tsx +++ b/apps/web/src/components/video-thumbnail.tsx @@ -18,7 +18,7 @@ export function VideoThumbnail({
+ + @@ -406,7 +410,7 @@ function ValuePropsGrid() { function TestimonialsSection() { return ( -
+

Loved by professionals at @@ -494,7 +498,7 @@ Mad respect to the team. This is how you build in 2025. 🚀" username="tomyang11_" body="I love the flexibility that @tryhyprnote gives me to integrate personal notes with AI summaries. I can quickly jot down important points during the meeting without getting distracted, then trust that the AI will capture them in full detail for review afterwards." url="https://twitter.com/tomyang11_/status/1956395933538902092" - className="border-x-0 border-t-0" + className="border-x-0 border-t-0 border-b-0" />

); @@ -522,7 +526,7 @@ Thank you for your dedication and for building a tool that not only saves time, Cheers!" url="https://www.reddit.com/r/macapps/comments/1lo24b9/comment/n15dr0t/" - className="w-full h-full border-l-0 border-r-0" + className="w-full h-full border-l-0 border-r-0 border-b-0" />
@@ -556,7 +560,7 @@ Been using it for daily tasks, even simple note-taking is GREAT because I can re Mad respect to the team. This is how you build in 2025. 🚀" url="https://www.linkedin.com/posts/flaviews_guys-at-hyprnote-yc-s25-are-wild-had-activity-7360606765530386434-Klj-" - className="w-full h-full border-r-0" + className="w-full h-full border-r-0 border-b-0" />
@@ -578,7 +582,7 @@ Mad respect to the team. This is how you build in 2025. 🚀" username="tomyang11_" body="I love the flexibility that @tryhyprnote gives me to integrate personal notes with AI summaries. I can quickly jot down important points during the meeting without getting distracted, then trust that the AI will capture them in full detail for review afterwards." url="https://twitter.com/tomyang11_/status/1956395933538902092" - className="w-full h-full overflow-hidden border-r-0" + className="w-full h-full overflow-hidden border-r-0 border-b-0" />
@@ -607,7 +611,7 @@ function FeaturesIntroSection() { function CoolStuffSection() { return ( -
+

What makes Hyprnote different @@ -626,8 +630,8 @@ function CoolStuffSection() {

- No bots interface @@ -644,8 +648,8 @@ function CoolStuffSection() {

- No internet interface @@ -665,7 +669,7 @@ function CoolStuffSection() {

- No bots interface
- No internet interface { + const runAnimation = () => { + setTypedText1(""); + setTypedText2(""); + setEnhancedLines(0); + + let currentIndex1 = 0; + setTimeout(() => { + const interval1 = setInterval(() => { + if (currentIndex1 < text1.length) { + setTypedText1(text1.slice(0, currentIndex1 + 1)); + currentIndex1++; + } else { + clearInterval(interval1); + + let currentIndex2 = 0; + const interval2 = setInterval(() => { + if (currentIndex2 < text2.length) { + setTypedText2(text2.slice(0, currentIndex2 + 1)); + currentIndex2++; + } else { + clearInterval(interval2); + + setTimeout(() => { + setEnhancedLines(1); + setTimeout(() => { + setEnhancedLines(2); + setTimeout(() => { + setEnhancedLines(3); + setTimeout(() => { + setEnhancedLines(4); + setTimeout(() => { + setEnhancedLines(5); + setTimeout(() => { + setEnhancedLines(6); + setTimeout(() => runAnimation(), 3000); + }, 800); + }, 800); + }, 800); + }, 800); + }, 800); + }, 500); + } + }, 50); + } + }, 50); + }, 500); + }; + + runAnimation(); + }, []); + + return ( +
+
+

+ How it works +

+
+
+
+
+

+ While you take notes,{" "} + Hyprnote listens and keeps track of everything that happens during the meeting. +

+
+
+
+
+
+
+
+
+
+
+ +
+
+ {/* Content area */} +
+
ui update - moble
+
api
+
new dash - urgnet
+
a/b tst next wk
+
+ {typedText1} + {typedText1 && typedText1.length < text1.length && |} +
+
+ {typedText2} + {typedText2 && typedText2.length < text2.length && |} +
+
+
+
+
+ +
+
+

+ After the meeting is over,{" "} + Hyprnote combines your notes with transcripts to create a perfect summary +

+
+
+
+
+
+
+
+
+
+
+ {/* Content area */} +
+
+

= 1 ? "opacity-100" : "opacity-0", + )} + > + Mobile UI Update and API Adjustments +

+
    +
  • = 1 ? "opacity-100" : "opacity-0", + )} + > + Sarah presented the new mobile UI update, which includes a streamlined navigation bar and improved + button placements for better accessibility. +
  • +
  • = 2 ? "opacity-100" : "opacity-0", + )} + > + Ben confirmed that API adjustments are needed to support dynamic UI changes, particularly for + fetching personalized user data more efficiently. +
  • +
  • = 3 ? "opacity-100" : "opacity-0", + )} + > + The UI update will be implemented in phases, starting with core navigation improvements. Ben will + ensure API modifications are completed before development begins. +
  • +
+
+
+

= 4 ? "opacity-100" : "opacity-0", + )} + > + New Dashboard – Urgent Priority +

+
    +
  • = 4 ? "opacity-100" : "opacity-0", + )} + > + Alice emphasized that the new analytics dashboard must be prioritized due to increasing + stakeholder demand. +
  • +
  • = 5 ? "opacity-100" : "opacity-0", + )} + > + The new dashboard will feature real-time user engagement metrics and a customizable reporting + system. +
  • +
  • = 6 ? "opacity-100" : "opacity-0", + )} + > + Ben mentioned that backend infrastructure needs optimization to handle real-time data processing. +
  • +
  • = 6 ? "opacity-100" : "opacity-0", + )} + > + Mark stressed that the dashboard launch should align with marketing efforts to maximize user + adoption. +
  • +
  • = 6 ? "opacity-100" : "opacity-0", + )} + > + Development will start immediately, and a basic prototype must be ready for stakeholder review + next week. +
  • +
+
+
+
+
+
+
+ +
+
+
+

+ While you take notes,{" "} + Hyprnote listens and keeps track of everything that happens during the meeting. +

+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
ui update - moble
+
api
+
new dash - urgnet
+
a/b tst next wk
+
+ {typedText1} + {typedText1 && typedText1.length < text1.length && |} +
+
+ {typedText2} + {typedText2 && typedText2.length < text2.length && |} +
+
+
+
+
+ +
+
+

+ After the meeting is over,{" "} + Hyprnote combines your notes with transcripts to create a perfect summary +

+
+
+
+
+
+
+
+
+
+
+
+
+

Mobile UI Update and API Adjustments

+
    +
  • = 1 ? "opacity-100" : "opacity-0", + )} + > + Sarah presented the new mobile UI update, which includes a streamlined navigation bar and improved + button placements for better accessibility. +
  • +
  • = 2 ? "opacity-100" : "opacity-0", + )} + > + Ben confirmed that API adjustments are needed to support dynamic UI changes, particularly for + fetching personalized user data more efficiently. +
  • +
  • = 3 ? "opacity-100" : "opacity-0", + )} + > + The UI update will be implemented in phases, starting with core navigation improvements. Ben will + ensure API modifications are completed before development begins. +
  • +
+
+
+

New Dashboard – Urgent Priority

+
    +
  • = 4 ? "opacity-100" : "opacity-0", + )} + > + Alice emphasized that the new analytics dashboard must be prioritized due to increasing + stakeholder demand. +
  • +
  • = 5 ? "opacity-100" : "opacity-0", + )} + > + The new dashboard will feature real-time user engagement metrics and a customizable reporting + system. +
  • +
  • = 6 ? "opacity-100" : "opacity-0", + )} + > + Ben mentioned that backend infrastructure needs optimization to handle real-time data processing. +
  • +
  • = 6 ? "opacity-100" : "opacity-0", + )} + > + Mark stressed that the dashboard launch should align with marketing efforts to maximize user + adoption. +
  • +
  • = 6 ? "opacity-100" : "opacity-0", + )} + > + Development will start immediately, and a basic prototype must be ready for stakeholder review + next week. +
  • +
+
+
+
+
+
+
+
+ ); +} + function MainFeaturesSection({ featuresScrollRef, selectedFeature, @@ -749,7 +1123,7 @@ function FeaturesMobileCarousel({
{feature.image && ( - {`${feature.title}(null); + const gridClasses = [ + "col-span-6 md:col-span-3 border-r border-b", + "col-span-6 md:col-span-3 border-b", + "col-span-6 md:col-span-2 border-r", + "col-span-6 md:col-span-2 border-r", + "col-span-6 md:col-span-2", + ]; + return (
-
-
setHoveredFeature(0)} - onMouseLeave={() => setHoveredFeature(null)} - > - Transcript feature -
- -
-
-
-
- -

Transcript

-
-

- Realtime transcript and speaker identification -

-
-
- -
-
setHoveredFeature(1)} - onMouseLeave={() => setHoveredFeature(null)} - > - Summary feature -
- -
-
-
-
- -

Summary

-
-

- Create customized summaries with templates for various formats -

-
-
- -
-
setHoveredFeature(2)} - onMouseLeave={() => setHoveredFeature(null)} - > - Chat feature + {mainFeatures.map((feature, index) => ( +
+ setHoveredFeature(index)} + onMouseLeave={() => + setHoveredFeature(null)} > - -
-
-
-
- -

Chat

-
-

- Get context-aware answers in realtime, even from past meetings -

-
-
- -
-
- Floating Panel feature -
-
-
-
- -

Floating Panel

-
- - Coming Soon - + {feature.image + ? ( + <> + {`${feature.title} +
+ +
+ + ) + : {`${feature.title}}
-

- Compact notepad with transcript, summary, and chat during meetings -

-
-
- -
-
- Daily Note feature -
-
-
-
- -

Daily Note

+
+
+
+ +

{feature.title}

+
+ {feature.comingSoon && ( + + Coming Soon + + )}
- - Coming Soon - +

{feature.description}

-

- Track todos and navigate emails and events throughout the day -

-
+ ))}
); } @@ -984,7 +1254,7 @@ function DetailsSection({ scrollToDetail: (index: number) => void; }) { return ( -
+
{feature.image && ( - {`${feature.title} {detailsFeatures[selectedDetail].image && ( - {`${detailsFeatures[selectedDetail].title} {selectedFeature?.image && ( <> - {`${selectedFeature.title} +

Our manifesto

@@ -1249,15 +1525,19 @@ function ManifestoSection() {
- John Jeong - Yujong Lee
@@ -1268,10 +1548,13 @@ function ManifestoSection() {
- Hyprnote Signature
@@ -1404,7 +1687,7 @@ function CTASection({ heroInputRef }: { heroInputRef: React.RefObject +
{children}
diff --git a/packages/ui/src/components/ui/dancing-sticks.tsx b/packages/ui/src/components/ui/dancing-sticks.tsx index 66cd7a404..700a991af 100644 --- a/packages/ui/src/components/ui/dancing-sticks.tsx +++ b/packages/ui/src/components/ui/dancing-sticks.tsx @@ -1,4 +1,5 @@ import { motion } from "motion/react"; +import { useMemo } from "react"; const getRandomValues = (max: number, length: number, baseLength: number) => { const values: number[] = []; @@ -20,12 +21,17 @@ type EqualizerStickProps = { function EqualizerStick({ baseLength, amplitude, color, height, stickWidth }: EqualizerStickProps) { const scaledBaseLength = baseLength * Math.max(0.2, Math.max(amplitude, 0.1)); + const animationHeights = useMemo( + () => getRandomValues(height, 6, scaledBaseLength), + [height, scaledBaseLength], + ); + return (