diff --git a/package-lock.json b/package-lock.json index a073b9f..6fd8e10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "call-md", - "version": "1.0.2", + "version": "1.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "call-md", - "version": "1.0.2", + "version": "1.0.3", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 86c30b3..d6a9394 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "call-md", - "version": "1.0.2", + "version": "1.0.3", "type": "commonjs", "description": "Call.md - Record meetings with real-time transcription and AI-powered insights", "author": { diff --git a/src/renderer/components/history/RecordingDetailPage.tsx b/src/renderer/components/history/RecordingDetailPage.tsx index b7ad0a7..8144f2d 100644 --- a/src/renderer/components/history/RecordingDetailPage.tsx +++ b/src/renderer/components/history/RecordingDetailPage.tsx @@ -140,6 +140,7 @@ export function RecordingDetailPage({ recordingId, onBack }: RecordingDetailPage {/* Chat with Video Button */}
{ if (!videoId || !collectionId) return; - const chatUrl = `https://chat.videodb.io?video_id=${videoId}&collection_id=${collectionId}`; + const chatUrl = `https://chat.videodb.io?video_id=${videoId}&collection_id=${collectionId}&prompt=${title}`; window.electronAPI?.app.openExternalLink(chatUrl); }; diff --git a/src/renderer/widget/App.tsx b/src/renderer/widget/App.tsx index 7222c3f..59de8e8 100644 --- a/src/renderer/widget/App.tsx +++ b/src/renderer/widget/App.tsx @@ -19,7 +19,6 @@ export function WidgetApp() { }); const [sayThis, setSayThis] = useState([]); const [askThis, setAskThis] = useState([]); - const [visualDescription, setVisualDescription] = useState(''); const [nudge, setNudge] = useState(null); useEffect(() => { @@ -39,10 +38,6 @@ export function WidgetApp() { setAskThis(data.askThis); }); - const unsubVisual = api.onVisualAnalysis((data) => { - setVisualDescription(data.description); - }); - const unsubNudge = api.onNudge((n) => { setNudge(n); }); @@ -50,7 +45,6 @@ export function WidgetApp() { return () => { unsubSession(); unsubLiveAssist(); - unsubVisual(); unsubNudge(); }; }, []); @@ -106,7 +100,6 @@ export function WidgetApp() { void; onDismissNudge?: () => void; @@ -46,18 +44,34 @@ function getInterleavedCards( export function WidgetContent({ sayThis, askThis, - visualDescription, nudge, onDismissCard, onDismissNudge, }: WidgetContentProps) { const hasCards = sayThis.length > 0 || askThis.length > 0; - const isEmpty = !hasCards && !visualDescription; + const isEmpty = !hasCards; const interleavedCards = getInterleavedCards(sayThis, askThis); + const containerRef = useRef(null); + const lastScrollTimeRef = useRef(0); + + const handleScroll = () => { + lastScrollTimeRef.current = Date.now(); + }; + + // Auto-scroll to top when new cards arrive (if user hasn't scrolled recently) + useEffect(() => { + const timeSinceLastScroll = Date.now() - lastScrollTimeRef.current; + if (timeSinceLastScroll > 2000 && containerRef.current) { + containerRef.current.scrollTo({ top: 0, behavior: 'smooth' }); + } + }, [sayThis, askThis]); + return (
) : ( <> - {/* Visual Analysis - sticky at top */} - {visualDescription && ( - - )} - {/* Interleaved Say This / Ask This cards */} {interleavedCards.map(({ type, card }) => type === 'sayThis' ? (