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' ? (