diff --git a/apps/desktop/src/components/editor-area/floating-button.tsx b/apps/desktop/src/components/editor-area/floating-button.tsx index 088ca7f817..e3aef9d0cb 100644 --- a/apps/desktop/src/components/editor-area/floating-button.tsx +++ b/apps/desktop/src/components/editor-area/floating-button.tsx @@ -74,6 +74,13 @@ export function FloatingButton({ const cancelEnhance = useOngoingSession((s) => s.cancelEnhance); const isEnhancePending = useEnhancePendingState(session.id); + const ongoingSessionStatus = useOngoingSession((s) => s.status); + const ongoingSessionId = useOngoingSession((s) => s.sessionId); + + const hasTranscript = session.words && session.words.length > 0; + const isSessionInactive = ongoingSessionStatus === "inactive" || session.id !== ongoingSessionId; + const canEnhanceTranscript = hasTranscript && isSessionInactive; + const localLlmBaseUrl = useQuery({ queryKey: ["local-llm"], queryFn: async () => { @@ -181,8 +188,10 @@ export function FloatingButton({ ); } - if (!session.enhanced_memo_html && !isEnhancePending) { - return null; + const shouldShowButton = session.enhanced_memo_html || isEnhancePending || canEnhanceTranscript; + + if (!shouldShowButton) { + return null; // don't show the button } const rawButtonClasses = cn( diff --git a/apps/desktop/src/components/editor-area/note-header/listen-button.tsx b/apps/desktop/src/components/editor-area/note-header/listen-button.tsx index a44252bfbd..ea8d542415 100644 --- a/apps/desktop/src/components/editor-area/note-header/listen-button.tsx +++ b/apps/desktop/src/components/editor-area/note-header/listen-button.tsx @@ -92,11 +92,17 @@ export default function ListenButton({ sessionId }: { sessionId: string }) { loading: s.loading, })); + const sessionWords = useSession(sessionId, (s) => s.session.words); + + // don't show consent notification if the session already has transcript useEffect(() => { - if (ongoingSessionStatus === "running_active" && sessionId === ongoingSessionId && !isOnboarding) { + if ( + ongoingSessionStatus === "running_active" && sessionId === ongoingSessionId && !isOnboarding + && sessionWords.length === 0 + ) { showConsentNotification(); } - }, [ongoingSessionStatus, sessionId, ongoingSessionId, isOnboarding]); + }, [ongoingSessionStatus, sessionId, ongoingSessionId, isOnboarding, sessionWords.length]); const isEnhancePending = useEnhancePendingState(sessionId); const nonEmptySession = useSession( diff --git a/apps/desktop/src/components/toolbar/bars/main-toolbar.tsx b/apps/desktop/src/components/toolbar/bars/main-toolbar.tsx index 2d2d41d6c4..54ae4aa3bc 100644 --- a/apps/desktop/src/components/toolbar/bars/main-toolbar.tsx +++ b/apps/desktop/src/components/toolbar/bars/main-toolbar.tsx @@ -44,7 +44,6 @@ export function MainToolbar() { - > )} @@ -58,6 +57,7 @@ export function MainToolbar() { {isMain && ( <> {(organizationMatch || humanMatch) && } + {isNote && } > diff --git a/apps/desktop/src/components/toolbar/buttons/new-note-button.tsx b/apps/desktop/src/components/toolbar/buttons/new-note-button.tsx index b3f4db9747..2f38088925 100644 --- a/apps/desktop/src/components/toolbar/buttons/new-note-button.tsx +++ b/apps/desktop/src/components/toolbar/buttons/new-note-button.tsx @@ -33,9 +33,8 @@ function ActualButton({ disabled }: { disabled: boolean }) { diff --git a/apps/desktop/src/components/toolbar/buttons/share-button.tsx b/apps/desktop/src/components/toolbar/buttons/share-button.tsx index 7a7eb89586..7392924b23 100644 --- a/apps/desktop/src/components/toolbar/buttons/share-button.tsx +++ b/apps/desktop/src/components/toolbar/buttons/share-button.tsx @@ -4,7 +4,7 @@ import { join } from "@tauri-apps/api/path"; import { message } from "@tauri-apps/plugin-dialog"; import { fetch as tauriFetch } from "@tauri-apps/plugin-http"; import { openPath, openUrl } from "@tauri-apps/plugin-opener"; -import { BookText, Check, ChevronDown, ChevronUp, Copy, FileText, HelpCircle, Mail, Share2Icon } from "lucide-react"; +import { BookText, Check, ChevronDown, ChevronUp, Copy, FileText, HelpCircle, Mail, Share } from "lucide-react"; import { useState } from "react"; import { useHypr } from "@/contexts"; @@ -239,15 +239,16 @@ function ShareButtonInNote() { disabled={!hasEnhancedNote} variant="ghost" size="icon" - className="hover:bg-neutral-200" + className={`hover:bg-neutral-200 ${open ? "bg-neutral-200" : ""}`} aria-label="Share" > - + @@ -268,11 +269,11 @@ function ShareButtonInNote() { const isSuccess = action.id === "copy" && copySuccess; return ( - + handleExport(action.id)} disabled={exportMutation.isPending} - className="w-full flex items-center justify-between p-3 hover:bg-gray-50 transition-colors disabled:opacity-50" + className="w-full flex items-center justify-between p-3 bg-white hover:bg-gray-50 transition-colors disabled:opacity-50" > @@ -295,9 +296,11 @@ function ShareButtonInNote() { const expanded = expandedId === option.id; return ( - + toggleExpanded(option.id)} > @@ -309,7 +312,7 @@ function ShareButtonInNote() { {expanded && ( - + {option.description} handleExport(option.id)} disabled={exportMutation.isPending} - className="w-full py-1.5 bg-gray-800 text-white rounded-md hover:bg-gray-900 transition-colors text-xs font-medium disabled:opacity-50" + className="w-full py-1.5 bg-black text-white rounded-md hover:bg-gray-800 transition-all text-xs font-medium disabled:opacity-50" > {exportMutation.isPending ? "Pending..." @@ -436,7 +439,19 @@ const exportHandlers = { }, email: async (session: Session): Promise => { - const url = `mailto:?subject=${encodeURIComponent(session.title)}`; + let bodyContent = "Here is the meeting summary: \n\n"; + + if (session.enhanced_memo_html) { + bodyContent += html2md(session.enhanced_memo_html); + } else if (session.raw_memo_html) { + bodyContent += html2md(session.raw_memo_html); + } else { + bodyContent += "No content available"; + } + + bodyContent += "\n\nSent with Hyprnote (www.hyprnote.com)\n\n"; + + const url = `mailto:?subject=${encodeURIComponent(session.title)}&body=${encodeURIComponent(bodyContent)}`; return { type: "email", url }; }, diff --git a/apps/desktop/src/components/toolbar/buttons/transcript-panel-button.tsx b/apps/desktop/src/components/toolbar/buttons/transcript-panel-button.tsx index eb297cac41..de35134cc4 100644 --- a/apps/desktop/src/components/toolbar/buttons/transcript-panel-button.tsx +++ b/apps/desktop/src/components/toolbar/buttons/transcript-panel-button.tsx @@ -33,7 +33,7 @@ export function TranscriptPanelButton() { - Toggle widget panel + Toggle transcriptpanel diff --git a/apps/desktop/src/locales/en/messages.po b/apps/desktop/src/locales/en/messages.po index 9aa382d5cc..0a9913f5d9 100644 --- a/apps/desktop/src/locales/en/messages.po +++ b/apps/desktop/src/locales/en/messages.po @@ -268,9 +268,9 @@ msgstr "(Optional)" #. placeholder {0}: disabled ? "Wait..." : isHovered ? "Resume" : "Ended" #. placeholder {0}: disabled ? "Wait..." : "Play video" #: src/components/settings/views/templates.tsx:217 -#: src/components/editor-area/note-header/listen-button.tsx:216 -#: src/components/editor-area/note-header/listen-button.tsx:238 -#: src/components/editor-area/note-header/listen-button.tsx:258 +#: src/components/editor-area/note-header/listen-button.tsx:222 +#: src/components/editor-area/note-header/listen-button.tsx:244 +#: src/components/editor-area/note-header/listen-button.tsx:264 msgid "{0}" msgstr "{0}" @@ -634,7 +634,7 @@ msgstr "Create" #~ msgid "Create agenda" #~ msgstr "Create agenda" -#: src/components/toolbar/buttons/new-note-button.tsx:47 +#: src/components/toolbar/buttons/new-note-button.tsx:46 msgid "Create new note" msgstr "Create new note" @@ -1117,7 +1117,7 @@ msgstr "No recent notes for this organization" #~ msgid "No Template" #~ msgstr "No Template" -#: src/components/editor-area/note-header/listen-button.tsx:513 +#: src/components/editor-area/note-header/listen-button.tsx:519 msgid "No Template (Default)" msgstr "No Template (Default)" @@ -1197,7 +1197,7 @@ msgstr "Others" msgid "Owner" msgstr "Owner" -#: src/components/editor-area/note-header/listen-button.tsx:359 +#: src/components/editor-area/note-header/listen-button.tsx:365 msgid "Pause" msgstr "Pause" @@ -1280,7 +1280,7 @@ msgstr "Required to transcribe other people's voice during meetings" msgid "Required to transcribe your voice during meetings" msgstr "Required to transcribe your voice during meetings" -#: src/components/editor-area/note-header/listen-button.tsx:142 +#: src/components/editor-area/note-header/listen-button.tsx:148 msgid "Resume" msgstr "Resume" @@ -1293,7 +1293,7 @@ msgstr "Role" #~ msgid "Save and close" #~ msgstr "Save and close" -#: src/components/editor-area/note-header/listen-button.tsx:483 +#: src/components/editor-area/note-header/listen-button.tsx:489 msgid "Save current recording" msgstr "Save current recording" @@ -1434,11 +1434,11 @@ msgstr "Spoken languages" #~ msgid "Start Monthly Plan" #~ msgstr "Start Monthly Plan" -#: src/components/editor-area/note-header/listen-button.tsx:191 +#: src/components/editor-area/note-header/listen-button.tsx:197 msgid "Start recording" msgstr "Start recording" -#: src/components/editor-area/note-header/listen-button.tsx:460 +#: src/components/editor-area/note-header/listen-button.tsx:466 msgid "Stop" msgstr "Stop" @@ -1483,7 +1483,7 @@ msgstr "Team management features are currently under development and will be ava msgid "Teamspace" msgstr "Teamspace" -#: src/components/editor-area/note-header/listen-button.tsx:504 +#: src/components/editor-area/note-header/listen-button.tsx:510 msgid "Template" msgstr "Template" @@ -1536,8 +1536,12 @@ msgid "Toggle left sidebar" msgstr "Toggle left sidebar" #: src/components/toolbar/buttons/transcript-panel-button.tsx:36 -msgid "Toggle widget panel" -msgstr "Toggle widget panel" +msgid "Toggle transcriptpanel" +msgstr "Toggle transcriptpanel" + +#: src/components/toolbar/buttons/transcript-panel-button.tsx:36 +#~ msgid "Toggle widget panel" +#~ msgstr "Toggle widget panel" #: src/components/settings/components/ai/stt-view-local.tsx:249 #~ msgid "Transcribing" diff --git a/apps/desktop/src/locales/ko/messages.po b/apps/desktop/src/locales/ko/messages.po index 32a9588b44..977bebeac7 100644 --- a/apps/desktop/src/locales/ko/messages.po +++ b/apps/desktop/src/locales/ko/messages.po @@ -268,9 +268,9 @@ msgstr "" #. placeholder {0}: disabled ? "Wait..." : isHovered ? "Resume" : "Ended" #. placeholder {0}: disabled ? "Wait..." : "Play video" #: src/components/settings/views/templates.tsx:217 -#: src/components/editor-area/note-header/listen-button.tsx:216 -#: src/components/editor-area/note-header/listen-button.tsx:238 -#: src/components/editor-area/note-header/listen-button.tsx:258 +#: src/components/editor-area/note-header/listen-button.tsx:222 +#: src/components/editor-area/note-header/listen-button.tsx:244 +#: src/components/editor-area/note-header/listen-button.tsx:264 msgid "{0}" msgstr "" @@ -634,7 +634,7 @@ msgstr "" #~ msgid "Create agenda" #~ msgstr "" -#: src/components/toolbar/buttons/new-note-button.tsx:47 +#: src/components/toolbar/buttons/new-note-button.tsx:46 msgid "Create new note" msgstr "" @@ -1117,7 +1117,7 @@ msgstr "" #~ msgid "No Template" #~ msgstr "" -#: src/components/editor-area/note-header/listen-button.tsx:513 +#: src/components/editor-area/note-header/listen-button.tsx:519 msgid "No Template (Default)" msgstr "" @@ -1197,7 +1197,7 @@ msgstr "" msgid "Owner" msgstr "" -#: src/components/editor-area/note-header/listen-button.tsx:359 +#: src/components/editor-area/note-header/listen-button.tsx:365 msgid "Pause" msgstr "" @@ -1280,7 +1280,7 @@ msgstr "" msgid "Required to transcribe your voice during meetings" msgstr "" -#: src/components/editor-area/note-header/listen-button.tsx:142 +#: src/components/editor-area/note-header/listen-button.tsx:148 msgid "Resume" msgstr "" @@ -1293,7 +1293,7 @@ msgstr "" #~ msgid "Save and close" #~ msgstr "" -#: src/components/editor-area/note-header/listen-button.tsx:483 +#: src/components/editor-area/note-header/listen-button.tsx:489 msgid "Save current recording" msgstr "" @@ -1434,11 +1434,11 @@ msgstr "" #~ msgid "Start Monthly Plan" #~ msgstr "" -#: src/components/editor-area/note-header/listen-button.tsx:191 +#: src/components/editor-area/note-header/listen-button.tsx:197 msgid "Start recording" msgstr "" -#: src/components/editor-area/note-header/listen-button.tsx:460 +#: src/components/editor-area/note-header/listen-button.tsx:466 msgid "Stop" msgstr "" @@ -1483,7 +1483,7 @@ msgstr "" msgid "Teamspace" msgstr "" -#: src/components/editor-area/note-header/listen-button.tsx:504 +#: src/components/editor-area/note-header/listen-button.tsx:510 msgid "Template" msgstr "" @@ -1536,9 +1536,13 @@ msgid "Toggle left sidebar" msgstr "" #: src/components/toolbar/buttons/transcript-panel-button.tsx:36 -msgid "Toggle widget panel" +msgid "Toggle transcriptpanel" msgstr "" +#: src/components/toolbar/buttons/transcript-panel-button.tsx:36 +#~ msgid "Toggle widget panel" +#~ msgstr "" + #: src/components/settings/components/ai/stt-view-local.tsx:249 #~ msgid "Transcribing" #~ msgstr ""
{option.description}
- Toggle widget panel + Toggle transcriptpanel