From 410120007f3ae4370798ff584a076d6e71e8a0e7 Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 25 Sep 2023 19:42:36 +0200 Subject: [PATCH 01/24] minor changes to fonts, spacing and colors --- www/app/layout.tsx | 8 +++++--- www/app/transcripts/finalSummary.tsx | 2 +- www/app/transcripts/new/page.tsx | 6 +++++- www/app/transcripts/recorder.tsx | 5 ++++- www/app/transcripts/topicList.tsx | 12 +++++++----- www/tailwind.config.js | 3 +++ 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/www/app/layout.tsx b/www/app/layout.tsx index de423da8..79f1b8e2 100644 --- a/www/app/layout.tsx +++ b/www/app/layout.tsx @@ -81,9 +81,11 @@ export default function RootLayout({ children }) { alt="Reflector" />
-

Reflector

-

- Capture The Signal, Not The Noise +

+ Reflector +

+

+ Capture the signal, not the noise

diff --git a/www/app/transcripts/finalSummary.tsx b/www/app/transcripts/finalSummary.tsx index a9646cee..0e76c869 100644 --- a/www/app/transcripts/finalSummary.tsx +++ b/www/app/transcripts/finalSummary.tsx @@ -5,7 +5,7 @@ type FinalSummaryProps = { export default function FinalSummary(props: FinalSummaryProps) { return (
-

Final Summary

+

Final Summary

{props.text}

); diff --git a/www/app/transcripts/new/page.tsx b/www/app/transcripts/new/page.tsx index 07a0b8b9..c089e679 100644 --- a/www/app/transcripts/new/page.tsx +++ b/www/app/transcripts/new/page.tsx @@ -67,7 +67,11 @@ const TranscriptCreate = () => { useActiveTopic={useActiveTopic} autoscroll={true} /> -
+
{!hasRecorded ? (
diff --git a/www/app/transcripts/recorder.tsx b/www/app/transcripts/recorder.tsx index f5b1abca..415afed1 100644 --- a/www/app/transcripts/recorder.tsx +++ b/www/app/transcripts/recorder.tsx @@ -278,7 +278,10 @@ export default function Recorder(props: RecorderProps) { return (
-
+
{isRecording && (
diff --git a/www/app/transcripts/topicList.tsx b/www/app/transcripts/topicList.tsx index 65a76276..3a60e1b4 100644 --- a/www/app/transcripts/topicList.tsx +++ b/www/app/transcripts/topicList.tsx @@ -61,7 +61,7 @@ export function TopicList({ }, [activeTopic, autoscroll]); return ( -
+
{topics.length > 0 ? ( <> {autoscroll && ( @@ -73,13 +73,13 @@ export function TopicList({
{topics.map((topic, index) => (
diff --git a/www/tailwind.config.js b/www/tailwind.config.js index 15f0dfb9..38e573d5 100644 --- a/www/tailwind.config.js +++ b/www/tailwind.config.js @@ -15,6 +15,9 @@ module.exports = { animation: { "spin-slow": "spin 3s linear infinite", }, + colors: { + bluegrey: "RGB(90, 122, 158)", + }, }, }, plugins: [], From 51f81e20b8074ea1b05e1e409c9f3c55a3d2b8d7 Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 25 Sep 2023 20:34:18 +0200 Subject: [PATCH 02/24] change recorder bg color --- www/app/transcripts/recorder.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/app/transcripts/recorder.tsx b/www/app/transcripts/recorder.tsx index 415afed1..dd4f9500 100644 --- a/www/app/transcripts/recorder.tsx +++ b/www/app/transcripts/recorder.tsx @@ -109,7 +109,7 @@ export default function Recorder(props: RecorderProps) { const wsWrapper = _wavesurfer.getWrapper(); wsWrapper.style.cursor = "pointer"; - wsWrapper.style.backgroundColor = "#e0c3fc42"; + wsWrapper.style.backgroundColor = "RGB(240 240 240)"; wsWrapper.style.borderRadius = "15px"; _wavesurfer.on("play", () => { From 2f3491d6d64712a2f4b587a97b3d4e349f53dd25 Mon Sep 17 00:00:00 2001 From: Koper Date: Mon, 25 Sep 2023 19:05:30 +0100 Subject: [PATCH 03/24] Share link button --- www/app/transcripts/[transcriptId]/page.tsx | 3 ++ www/app/transcripts/shareLink.tsx | 52 +++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 www/app/transcripts/shareLink.tsx diff --git a/www/app/transcripts/[transcriptId]/page.tsx b/www/app/transcripts/[transcriptId]/page.tsx index 17cee689..8d5ea934 100644 --- a/www/app/transcripts/[transcriptId]/page.tsx +++ b/www/app/transcripts/[transcriptId]/page.tsx @@ -10,6 +10,7 @@ import { Topic } from "../webSocketTypes"; import React, { useEffect, useState } from "react"; import "../../styles/button.css"; import FinalSummary from "../finalSummary"; +import ShareLink from "../shareLink"; type TranscriptDetails = { params: { @@ -55,6 +56,8 @@ export default function TranscriptDetails(details: TranscriptDetails) { autoscroll={false} />
+ +
{transcript?.response?.longSummary && ( diff --git a/www/app/transcripts/shareLink.tsx b/www/app/transcripts/shareLink.tsx new file mode 100644 index 00000000..e0e536b9 --- /dev/null +++ b/www/app/transcripts/shareLink.tsx @@ -0,0 +1,52 @@ +import React, { useState, useRef } from "react"; + +const ShareLink = () => { + const [isCopied, setIsCopied] = useState(false); + const inputRef = useRef(null); + + const currentURL = window.location.href; + + const handleCopyClick = () => { + if (inputRef.current) { + inputRef.current.select(); + document.execCommand("copy"); + setIsCopied(true); + + // Reset the copied state after 2 seconds + setTimeout(() => setIsCopied(false), 2000); + } + }; + + return ( +
+

+ You can share this link with others. Anyone with the link will have + access to the page, including the full audio recording, for the next 10 + days. +

+
+ + +
+
+ ); +}; + +export default ShareLink; From f776d42b3956419e2abae05c672bafae910f0937 Mon Sep 17 00:00:00 2001 From: Koper Date: Mon, 25 Sep 2023 19:11:32 +0100 Subject: [PATCH 04/24] Mobile support --- www/app/transcripts/shareLink.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/app/transcripts/shareLink.tsx b/www/app/transcripts/shareLink.tsx index e0e536b9..a4e23062 100644 --- a/www/app/transcripts/shareLink.tsx +++ b/www/app/transcripts/shareLink.tsx @@ -19,7 +19,7 @@ const ShareLink = () => { return (

From 89fde456c27cf48bfa1db0be22f73ff1dfa67b10 Mon Sep 17 00:00:00 2001 From: Koper Date: Mon, 25 Sep 2023 19:29:29 +0100 Subject: [PATCH 05/24] Made copy link button same height as text input --- www/app/transcripts/shareLink.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/www/app/transcripts/shareLink.tsx b/www/app/transcripts/shareLink.tsx index a4e23062..2dad490a 100644 --- a/www/app/transcripts/shareLink.tsx +++ b/www/app/transcripts/shareLink.tsx @@ -34,6 +34,7 @@ const ShareLink = () => { value={currentURL} ref={inputRef} className="border rounded p-2 flex-grow mr-2 text-sm bg-slate-100 outline-slate-400" + style={{ minHeight: "38px" }} /> From 439ef8498474d903ced664e06cad9791ffbcf571 Mon Sep 17 00:00:00 2001 From: Jose B Date: Mon, 25 Sep 2023 11:39:22 -0500 Subject: [PATCH 07/24] tweak waveform --- www/app/lib/custom-plugins/record.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/www/app/lib/custom-plugins/record.ts b/www/app/lib/custom-plugins/record.ts index 2d42e80f..8ade4cbc 100644 --- a/www/app/lib/custom-plugins/record.ts +++ b/www/app/lib/custom-plugins/record.ts @@ -84,6 +84,7 @@ class RecordPlugin extends BasePlugin { const dataArray = new Uint8Array(bufferLength); let animationId: number, previousTimeStamp: number; + const MULTIPLIER = 1.2; const DATA_SIZE = 128.0; const BUFFER_SIZE = 2 ** 8; const dataBuffer = new Array(BUFFER_SIZE).fill(DATA_SIZE); @@ -109,15 +110,19 @@ class RecordPlugin extends BasePlugin { // Drawing const sliceWidth = canvas.width / dataBuffer.length; - let x = 0; + let xPos = 0; for (let i = 0; i < dataBuffer.length; i++) { - const y = (canvas.height * dataBuffer[i]) / (2 * DATA_SIZE); + const y = + dataBuffer[i] + 2 > DATA_SIZE + ? dataBuffer[i] + : dataBuffer[i] / MULTIPLIER; + const yPos = (canvas.height * y) / (2 * DATA_SIZE); const sliceHeight = - ((1 - canvas.height) * dataBuffer[i]) / DATA_SIZE + canvas.height; + ((1 - canvas.height) * y) / DATA_SIZE + canvas.height; - canvasCtx.fillRect(x, y, (sliceWidth * 2) / 3, sliceHeight); - x += sliceWidth; + canvasCtx.fillRect(xPos, yPos, (sliceWidth * 2) / 3, sliceHeight); + xPos += sliceWidth; } animationId = requestAnimationFrame(drawWaveform); From 962997214a1b4052f089e0abeaa6812fa0389224 Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 25 Sep 2023 18:15:40 +0200 Subject: [PATCH 08/24] adds about and privacy pages --- www/app/about.tsx | 28 ++++++++ www/app/aboutContent.tsx | 53 +++++++++++++++ www/app/layout.tsx | 12 +++- www/app/lib/textComponents.tsx | 16 +++++ www/app/privacy.tsx | 28 ++++++++ www/app/privacyContent.tsx | 32 +++++++++ www/app/transcripts/fullsreenModal.tsx | 36 +++++++++++ www/app/transcripts/new/page.tsx | 90 ++++++++++++++------------ 8 files changed, 251 insertions(+), 44 deletions(-) create mode 100644 www/app/about.tsx create mode 100644 www/app/aboutContent.tsx create mode 100644 www/app/lib/textComponents.tsx create mode 100644 www/app/privacy.tsx create mode 100644 www/app/privacyContent.tsx create mode 100644 www/app/transcripts/fullsreenModal.tsx diff --git a/www/app/about.tsx b/www/app/about.tsx new file mode 100644 index 00000000..1f7969cd --- /dev/null +++ b/www/app/about.tsx @@ -0,0 +1,28 @@ +"use client"; +import React, { useState } from "react"; +import FullscreenModal from "./transcripts/fullsreenModal"; +import AboutContent from "./aboutContent"; + +type AboutProps = { + buttonText: string; +}; + +export default function About({ buttonText }: AboutProps) { + const [modalOpen, setModalOpen] = useState(false); + + return ( + <> + + {modalOpen && ( + setModalOpen(false)}> + + + )} + + ); +} diff --git a/www/app/aboutContent.tsx b/www/app/aboutContent.tsx new file mode 100644 index 00000000..c19c50dc --- /dev/null +++ b/www/app/aboutContent.tsx @@ -0,0 +1,53 @@ +import { Paragraph, Subtitle, Title } from "./lib/textComponents"; + +export default () => ( +

+ About us + + Reflector is a transcription and summarization pipeline that transforms + audio into knowledge. The output is meeting minutes and topic summaries + enabling topic-specific analyses stored in your systems of record. This is + accomplished on your infrastructure - without 3rd parties - keeping your + data private, secure, and organized. + + FAQs + 1. How does it work? + + Reflector simplifies tasks, turning spoken words into organized + information. Just press "record" to start and "stop" to finish. You'll get + notes divided by topic, a meeting summary, and the option to download + recordings. + + 2. What makes Reflector different? + + Monadical prioritizes safeguarding your data. Reflector operates + exclusively on your infrastructure, ensuring guaranteed security. + + 3. Any industry-specific use cases? +

Absolutely! We have two custom deployments pre-built:

+
    +
  • + · Reflector Media: Ideal for meetings, providing real-time notes and + topic summaries. +
  • +
  • + · Projector Reflector: Suited for larger events, offering live topic + summaries, translations, and agenda tracking. +
  • +
+ 4. Who’s behind Reflector? + + Monadical is a cohesive and effective team that can connect seamlessly + into your workflows, and we are ready to integrate Reflector’s building + blocks into your custom tools. We’re committed to building software that + outlasts us 🐙. + + + + Contact us at{" "} + + hello@monadical.com + + +
+); diff --git a/www/app/layout.tsx b/www/app/layout.tsx index 79f1b8e2..cc3749a2 100644 --- a/www/app/layout.tsx +++ b/www/app/layout.tsx @@ -7,6 +7,8 @@ import { ErrorProvider } from "./(errors)/errorContext"; import ErrorMessage from "./(errors)/errorMessage"; import Image from "next/image"; import Link from "next/link"; +import About from "./about"; +import Privacy from "./privacy"; const poppins = Poppins({ subsets: ["latin"], weight: ["200", "400", "600"] }); @@ -59,7 +61,7 @@ export const metadata: Metadata = { export default function RootLayout({ children }) { return ( - + @@ -89,8 +91,12 @@ export default function RootLayout({ children }) {

- {/* Text link on the right */} - +
+ {/* Text link on the right */} + +  ·  + +
{children} diff --git a/www/app/lib/textComponents.tsx b/www/app/lib/textComponents.tsx new file mode 100644 index 00000000..2c4d534c --- /dev/null +++ b/www/app/lib/textComponents.tsx @@ -0,0 +1,16 @@ +type SimpleProps = { + children: JSX.Element | string | (JSX.Element | string)[]; + className?: string; +}; + +const Title = ({ children, className }: SimpleProps) => ( +

{children}

+); +const Subtitle = ({ children, className }: SimpleProps) => ( +

{children}

+); +const Paragraph = ({ children, className }: SimpleProps) => ( +

{children}

+); + +export { Title, Subtitle, Paragraph }; diff --git a/www/app/privacy.tsx b/www/app/privacy.tsx new file mode 100644 index 00000000..a041827a --- /dev/null +++ b/www/app/privacy.tsx @@ -0,0 +1,28 @@ +"use client"; +import React, { useState } from "react"; +import FullscreenModal from "./transcripts/fullsreenModal"; +import PrivacyContent from "./privacyContent"; + +type PrivacyProps = { + buttonText: string; +}; + +export default function Privacy({ buttonText }: PrivacyProps) { + const [modalOpen, setModalOpen] = useState(false); + + return ( + <> + + {modalOpen && ( + setModalOpen(false)}> + + + )} + + ); +} diff --git a/www/app/privacyContent.tsx b/www/app/privacyContent.tsx new file mode 100644 index 00000000..79ea2c31 --- /dev/null +++ b/www/app/privacyContent.tsx @@ -0,0 +1,32 @@ +import { Paragraph, Title } from "./lib/textComponents"; + +export default () => ( +
+ Privacy Policy + Last updated on September 22, 2023 +
    +
  • + · Recording Consent: By using Reflector, you grant us permission to + record your interactions for the purpose of showcasing Reflector's + capabilities during the All In AI conference. +
  • +
  • + · Data Access: You will have convenient access to your recorded sessions + and transcriptions via a unique URL, which remains active for a period + of seven days. After this time, your recordings and transcripts will be + deleted. +
  • +
  • + · Data Confidentiality: Rest assured that none of your audio data will + be shared with third parties. +
  • +
+ + Questions or Concerns: If you have any questions or concerns regarding + your data, please feel free to reach out to us at{" "} + + reflector@monadical.com + + +
+); diff --git a/www/app/transcripts/fullsreenModal.tsx b/www/app/transcripts/fullsreenModal.tsx new file mode 100644 index 00000000..20ae6e45 --- /dev/null +++ b/www/app/transcripts/fullsreenModal.tsx @@ -0,0 +1,36 @@ +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faClose } from "@fortawesome/free-solid-svg-icons"; +import { MouseEventHandler } from "react"; + +type ModalProps = { + children: JSX.Element; + close: () => void; +}; +const cancelClick: MouseEventHandler = (event) => { + event.preventDefault(); + event.stopPropagation(); +}; + +export default function FullscreenModal(props: ModalProps) { + return ( +
+
+ +
+ {props.children} +
+
+
+ ); +} diff --git a/www/app/transcripts/new/page.tsx b/www/app/transcripts/new/page.tsx index c089e679..65eb6ee4 100644 --- a/www/app/transcripts/new/page.tsx +++ b/www/app/transcripts/new/page.tsx @@ -13,6 +13,8 @@ import LiveTrancription from "../liveTranscription"; import DisconnectedIndicator from "../disconnectedIndicator"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faGear } from "@fortawesome/free-solid-svg-icons"; +import About from "../../about"; +import Privacy from "../../privacy"; const TranscriptCreate = () => { const [stream, setStream] = useState(null); @@ -99,51 +101,57 @@ const TranscriptCreate = () => { ) : ( <>
-
-
-

Reflector

-

- Meet Monadical's own Reflector, your audio ally for hassle-free - insights. -

-

- With real-time transcriptions, translations, and summaries, - Reflector captures and categorizes the details of your meetings - and events, all while keeping your data locked down tight on - your own infrastructure. Forget the scribbled notes, endless - recordings, or third-party apps. Discover Reflector, a powerful - new way to elevate knowledge management and accessibility for - all. -

-
-
-
-

Audio Permissions

- {loading ? ( -

- Checking permission... +

+
+
+
+

+ Welcome to reflector.media +

+

+ Reflector is a transcription and summarization pipeline that + transforms audio into knowledge. The output is meeting + minutes and topic summaries enabling topic-specific analyses + stored in your systems of record. This is accomplished on + your infrastructure - without 3rd parties - keeping your + data private, secure, and organized.

- ) : ( - <> + +

+ Audio Permissions +

+ {loading ? (

- Reflector needs access to your microphone to work. -
- {permissionDenied - ? "Please reset microphone permissions to continue." - : "Please grant permission to continue."} + Checking permission...

- - - )} + ) : ( + <> +

+ To enable Reflector, we kindly request permission to + access your microphone during meetings and events. +
+ +
+ {permissionDenied + ? "Permission to use your microphone was denied, please change the permission setting in your browser and refresh this page." + : "Please grant permission to continue."} +

+ + + )} +
-
-
+
+
+
)} From a40bd587e8f62cceb99c45c542a36fa604088791 Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 25 Sep 2023 18:18:11 +0200 Subject: [PATCH 09/24] minor - remove empty section --- www/app/transcripts/new/page.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/www/app/transcripts/new/page.tsx b/www/app/transcripts/new/page.tsx index 65eb6ee4..8352ecac 100644 --- a/www/app/transcripts/new/page.tsx +++ b/www/app/transcripts/new/page.tsx @@ -150,7 +150,6 @@ const TranscriptCreate = () => {
-
)} From 3cfa9b1f39019ba7fcfb148dd5cff60c8e212f9c Mon Sep 17 00:00:00 2001 From: Koper Date: Mon, 25 Sep 2023 18:00:44 +0100 Subject: [PATCH 10/24] File reorganization / CSS improvements --- www/app/{ => (aboutAndPrivacy)}/about.tsx | 2 +- www/app/{ => (aboutAndPrivacy)}/aboutContent.tsx | 2 +- www/app/{ => (aboutAndPrivacy)}/privacy.tsx | 2 +- www/app/{ => (aboutAndPrivacy)}/privacyContent.tsx | 8 ++++---- www/app/layout.tsx | 4 ++-- www/app/lib/textComponents.tsx | 4 ++-- www/app/transcripts/new/page.tsx | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) rename www/app/{ => (aboutAndPrivacy)}/about.tsx (91%) rename www/app/{ => (aboutAndPrivacy)}/aboutContent.tsx (96%) rename www/app/{ => (aboutAndPrivacy)}/privacy.tsx (91%) rename www/app/{ => (aboutAndPrivacy)}/privacyContent.tsx (88%) diff --git a/www/app/about.tsx b/www/app/(aboutAndPrivacy)/about.tsx similarity index 91% rename from www/app/about.tsx rename to www/app/(aboutAndPrivacy)/about.tsx index 1f7969cd..7f09d500 100644 --- a/www/app/about.tsx +++ b/www/app/(aboutAndPrivacy)/about.tsx @@ -1,6 +1,6 @@ "use client"; import React, { useState } from "react"; -import FullscreenModal from "./transcripts/fullsreenModal"; +import FullscreenModal from "../transcripts/fullsreenModal"; import AboutContent from "./aboutContent"; type AboutProps = { diff --git a/www/app/aboutContent.tsx b/www/app/(aboutAndPrivacy)/aboutContent.tsx similarity index 96% rename from www/app/aboutContent.tsx rename to www/app/(aboutAndPrivacy)/aboutContent.tsx index c19c50dc..5b2165aa 100644 --- a/www/app/aboutContent.tsx +++ b/www/app/(aboutAndPrivacy)/aboutContent.tsx @@ -1,4 +1,4 @@ -import { Paragraph, Subtitle, Title } from "./lib/textComponents"; +import { Paragraph, Subtitle, Title } from "../lib/textComponents"; export default () => (
diff --git a/www/app/privacy.tsx b/www/app/(aboutAndPrivacy)/privacy.tsx similarity index 91% rename from www/app/privacy.tsx rename to www/app/(aboutAndPrivacy)/privacy.tsx index a041827a..2f0f0bc0 100644 --- a/www/app/privacy.tsx +++ b/www/app/(aboutAndPrivacy)/privacy.tsx @@ -1,6 +1,6 @@ "use client"; import React, { useState } from "react"; -import FullscreenModal from "./transcripts/fullsreenModal"; +import FullscreenModal from "../transcripts/fullsreenModal"; import PrivacyContent from "./privacyContent"; type PrivacyProps = { diff --git a/www/app/privacyContent.tsx b/www/app/(aboutAndPrivacy)/privacyContent.tsx similarity index 88% rename from www/app/privacyContent.tsx rename to www/app/(aboutAndPrivacy)/privacyContent.tsx index 79ea2c31..43c6ca97 100644 --- a/www/app/privacyContent.tsx +++ b/www/app/(aboutAndPrivacy)/privacyContent.tsx @@ -1,22 +1,22 @@ -import { Paragraph, Title } from "./lib/textComponents"; +import { Paragraph, Title } from "../lib/textComponents"; export default () => (
Privacy Policy Last updated on September 22, 2023
    -
  • +
  • · Recording Consent: By using Reflector, you grant us permission to record your interactions for the purpose of showcasing Reflector's capabilities during the All In AI conference.
  • -
  • +
  • · Data Access: You will have convenient access to your recorded sessions and transcriptions via a unique URL, which remains active for a period of seven days. After this time, your recordings and transcripts will be deleted.
  • -
  • +
  • · Data Confidentiality: Rest assured that none of your audio data will be shared with third parties.
  • diff --git a/www/app/layout.tsx b/www/app/layout.tsx index cc3749a2..d131a211 100644 --- a/www/app/layout.tsx +++ b/www/app/layout.tsx @@ -7,8 +7,8 @@ import { ErrorProvider } from "./(errors)/errorContext"; import ErrorMessage from "./(errors)/errorMessage"; import Image from "next/image"; import Link from "next/link"; -import About from "./about"; -import Privacy from "./privacy"; +import About from "./(aboutAndPrivacy)/about"; +import Privacy from "./(aboutAndPrivacy)/privacy"; const poppins = Poppins({ subsets: ["latin"], weight: ["200", "400", "600"] }); diff --git a/www/app/lib/textComponents.tsx b/www/app/lib/textComponents.tsx index 2c4d534c..c7db6e23 100644 --- a/www/app/lib/textComponents.tsx +++ b/www/app/lib/textComponents.tsx @@ -4,13 +4,13 @@ type SimpleProps = { }; const Title = ({ children, className }: SimpleProps) => ( -

    {children}

    +

    {children}

    ); const Subtitle = ({ children, className }: SimpleProps) => (

    {children}

    ); const Paragraph = ({ children, className }: SimpleProps) => ( -

    {children}

    +

    {children}

    ); export { Title, Subtitle, Paragraph }; diff --git a/www/app/transcripts/new/page.tsx b/www/app/transcripts/new/page.tsx index 8352ecac..b1bd139b 100644 --- a/www/app/transcripts/new/page.tsx +++ b/www/app/transcripts/new/page.tsx @@ -13,8 +13,8 @@ import LiveTrancription from "../liveTranscription"; import DisconnectedIndicator from "../disconnectedIndicator"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faGear } from "@fortawesome/free-solid-svg-icons"; -import About from "../../about"; -import Privacy from "../../privacy"; +import About from "../../(aboutAndPrivacy)/about"; +import Privacy from "../../(aboutAndPrivacy)/privacy"; const TranscriptCreate = () => { const [stream, setStream] = useState(null); From 69612f519d10b919592f9090901f6ff68e86beaf Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 25 Sep 2023 19:58:41 +0200 Subject: [PATCH 11/24] small styling improvements --- www/app/(aboutAndPrivacy)/about.tsx | 2 +- .../fullsreenModal.tsx | 12 ++++++------ www/app/(aboutAndPrivacy)/privacy.tsx | 2 +- www/app/lib/textComponents.tsx | 8 +++++--- 4 files changed, 13 insertions(+), 11 deletions(-) rename www/app/{transcripts => (aboutAndPrivacy)}/fullsreenModal.tsx (70%) diff --git a/www/app/(aboutAndPrivacy)/about.tsx b/www/app/(aboutAndPrivacy)/about.tsx index 7f09d500..6c6d1577 100644 --- a/www/app/(aboutAndPrivacy)/about.tsx +++ b/www/app/(aboutAndPrivacy)/about.tsx @@ -1,6 +1,6 @@ "use client"; import React, { useState } from "react"; -import FullscreenModal from "../transcripts/fullsreenModal"; +import FullscreenModal from "./fullsreenModal"; import AboutContent from "./aboutContent"; type AboutProps = { diff --git a/www/app/transcripts/fullsreenModal.tsx b/www/app/(aboutAndPrivacy)/fullsreenModal.tsx similarity index 70% rename from www/app/transcripts/fullsreenModal.tsx rename to www/app/(aboutAndPrivacy)/fullsreenModal.tsx index 20ae6e45..fa5f3817 100644 --- a/www/app/transcripts/fullsreenModal.tsx +++ b/www/app/(aboutAndPrivacy)/fullsreenModal.tsx @@ -17,17 +17,17 @@ export default function FullscreenModal(props: ModalProps) { className="fixed z-50 cursor-pointer top-0 bottom-0 left-0 right-0 flex justify-center items-center bg-black/10" onClick={props.close} > -
    +
    -
    +
    {props.children}
    diff --git a/www/app/(aboutAndPrivacy)/privacy.tsx b/www/app/(aboutAndPrivacy)/privacy.tsx index 2f0f0bc0..d352688f 100644 --- a/www/app/(aboutAndPrivacy)/privacy.tsx +++ b/www/app/(aboutAndPrivacy)/privacy.tsx @@ -1,6 +1,6 @@ "use client"; import React, { useState } from "react"; -import FullscreenModal from "../transcripts/fullsreenModal"; +import FullscreenModal from "./fullsreenModal"; import PrivacyContent from "./privacyContent"; type PrivacyProps = { diff --git a/www/app/lib/textComponents.tsx b/www/app/lib/textComponents.tsx index c7db6e23..fefd980d 100644 --- a/www/app/lib/textComponents.tsx +++ b/www/app/lib/textComponents.tsx @@ -4,13 +4,15 @@ type SimpleProps = { }; const Title = ({ children, className }: SimpleProps) => ( -

    {children}

    +

    + {children} +

    ); const Subtitle = ({ children, className }: SimpleProps) => ( -

    {children}

    +

    {children}

    ); const Paragraph = ({ children, className }: SimpleProps) => ( -

    {children}

    +

    {children}

    ); export { Title, Subtitle, Paragraph }; From 85e35c0d9e255c758c1edd85993798310212d7cc Mon Sep 17 00:00:00 2001 From: Koper Date: Mon, 25 Sep 2023 21:30:28 +0100 Subject: [PATCH 12/24] Update shareLink.tsx --- www/app/transcripts/shareLink.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/app/transcripts/shareLink.tsx b/www/app/transcripts/shareLink.tsx index a8de5239..6d5a369a 100644 --- a/www/app/transcripts/shareLink.tsx +++ b/www/app/transcripts/shareLink.tsx @@ -24,7 +24,7 @@ const ShareLink = () => { >

    You can share this link with others. Anyone with the link will have - access to the page, including the full audio recording, for the next 10 + access to the page, including the full audio recording, for the next 7 days.

    From bd070fb4871bae8f7d7c85084456f8b9c2eeb5ed Mon Sep 17 00:00:00 2001 From: Sara Date: Tue, 26 Sep 2023 11:48:50 +0200 Subject: [PATCH 13/24] restore blue backgroud for transcript --- www/app/transcripts/new/page.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/www/app/transcripts/new/page.tsx b/www/app/transcripts/new/page.tsx index b1bd139b..d9105a4f 100644 --- a/www/app/transcripts/new/page.tsx +++ b/www/app/transcripts/new/page.tsx @@ -70,9 +70,7 @@ const TranscriptCreate = () => { autoscroll={true} />
    {!hasRecorded ? (
    From cd8cc2f5cdd17d5096ba1150884702e36f30bf56 Mon Sep 17 00:00:00 2001 From: Sara Date: Tue, 26 Sep 2023 12:20:27 +0200 Subject: [PATCH 14/24] adds copy for topics and transcription --- www/app/transcripts/new/page.tsx | 31 ++++++++++++++++++++++++++----- www/app/transcripts/topicList.tsx | 6 ++++-- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/www/app/transcripts/new/page.tsx b/www/app/transcripts/new/page.tsx index d9105a4f..b7a65325 100644 --- a/www/app/transcripts/new/page.tsx +++ b/www/app/transcripts/new/page.tsx @@ -44,6 +44,12 @@ const TranscriptCreate = () => { getAudioStream, } = useAudioDevice(); const [hasRecorded, setHasRecorded] = useState(false); + const [transcriptStarted, setTranscriptStarted] = useState(false); + + useEffect(() => { + if (!transcriptStarted && webSockets.transcriptText.length !== 0) + setTranscriptStarted(true); + }, [webSockets.transcriptText]); return ( <> @@ -69,15 +75,30 @@ const TranscriptCreate = () => { useActiveTopic={useActiveTopic} autoscroll={true} /> +
    {!hasRecorded ? ( -
    - -
    + <> + {transcriptStarted && ( +

    Transcription

    + )} +
    +
    + {!transcriptStarted ? ( +
    + The conversation transcript will appear here after you + start recording. +
    + ) : ( + + )} +
    +
    + ) : ( -
    +
    +
    {topics.length > 0 ? ( <> +

    Topics

    + {autoscroll && ( ) : ( -
    +
    Discussion topics will appear here after you start recording.
    It may take up to 5 minutes of conversation for the first topic to From 1c7af288184b19078c767c46ab34d35403afb57c Mon Sep 17 00:00:00 2001 From: Sara Date: Tue, 26 Sep 2023 12:26:26 +0200 Subject: [PATCH 15/24] Make Reflector same size as subcaption --- www/app/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/app/layout.tsx b/www/app/layout.tsx index d131a211..5747c4dc 100644 --- a/www/app/layout.tsx +++ b/www/app/layout.tsx @@ -83,7 +83,7 @@ export default function RootLayout({ children }) { alt="Reflector" />
    -

    +

    Reflector

    From c4a071c043ae006e8bfb7aa51e884e64c3fae8e5 Mon Sep 17 00:00:00 2001 From: Sara Date: Tue, 26 Sep 2023 12:34:48 +0200 Subject: [PATCH 16/24] Hide microphone switch when one opt --- www/app/transcripts/recorder.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/app/transcripts/recorder.tsx b/www/app/transcripts/recorder.tsx index dd4f9500..9338a9e8 100644 --- a/www/app/transcripts/recorder.tsx +++ b/www/app/transcripts/recorder.tsx @@ -339,7 +339,7 @@ export default function Recorder(props: RecorderProps) { > {isRecording ? "Stop" : "Record"} - {props.audioDevices && props.audioDevices?.length > 0 && ( + {props.audioDevices && props.audioDevices?.length > 1 && ( <>

    + +
    )} diff --git a/www/app/transcripts/shareLink.tsx b/www/app/transcripts/shareLink.tsx index 6d5a369a..ee7882e8 100644 --- a/www/app/transcripts/shareLink.tsx +++ b/www/app/transcripts/shareLink.tsx @@ -19,7 +19,7 @@ const ShareLink = () => { return (

    @@ -33,7 +33,7 @@ const ShareLink = () => { readOnly value={currentURL} ref={inputRef} - className="border rounded p-2 flex-grow mr-2 text-sm bg-slate-100 outline-slate-400" + className="border rounded-lg md:rounded-xl p-2 flex-grow mr-2 text-sm bg-slate-100 outline-slate-400" />