diff --git a/apps/desktop2/src/components/main/body/sessions/floating-regenerate-button.tsx b/apps/desktop2/src/components/main/body/sessions/floating-regenerate-button.tsx
new file mode 100644
index 000000000..7ea2d52d1
--- /dev/null
+++ b/apps/desktop2/src/components/main/body/sessions/floating-regenerate-button.tsx
@@ -0,0 +1,74 @@
+import { Button } from "@hypr/ui/components/ui/button";
+import { SparklesIcon } from "lucide-react";
+import { useState } from "react";
+
+const TEMPLATES = [
+ "Brainstorming",
+ "1-on-1",
+ "User Interview",
+ "Daily Standup",
+ "Project Plan",
+ "Meeting Notes",
+ "Action Items",
+ "Decision Log",
+ "Key Insights",
+ "Brainstorming",
+ "1-on-1",
+];
+
+export function FloatingRegenerateButton() {
+ const [showTemplates, setShowTemplates] = useState(false);
+
+ return (
+
+ {/* White card - slides up from behind */}
+
setShowTemplates(true)}
+ onMouseLeave={() => setShowTemplates(false)}
+ >
+
+
+ {TEMPLATES.map((template) => (
+
+ ))}
+
+
+
+
+
+
+ {/* Black button - always on top */}
+
+
+ );
+}
diff --git a/apps/desktop2/src/components/main/body/sessions/index.tsx b/apps/desktop2/src/components/main/body/sessions/index.tsx
index df9c6ae93..ce7e54dd8 100644
--- a/apps/desktop2/src/components/main/body/sessions/index.tsx
+++ b/apps/desktop2/src/components/main/body/sessions/index.tsx
@@ -5,6 +5,7 @@ import NoteEditor from "@hypr/tiptap/editor";
import * as persisted from "../../../../store/tinybase/persisted";
import { rowIdfromTab, type Tab } from "../../../../store/zustand/tabs";
import { type TabItem, TabItemBase } from "../shared";
+import { FloatingRegenerateButton } from "./floating-regenerate-button";
import { InnerHeader } from "./inner-header";
import { OuterHeader } from "./outer-header";
import { AudioPlayer } from "./player";
@@ -51,7 +52,7 @@ export function TabContentNote({ tab }: { tab: Tab }) {
);
return (
-
+
-
handleEditRawMd(e)}
- mentionConfig={{
- trigger: "@",
- handleSearch: async () => {
- return [];
- },
- }}
- />
+
+ handleEditRawMd(e)}
+ mentionConfig={{
+ trigger: "@",
+ handleSearch: async () => {
+ return [];
+ },
+ }}
+ />
+
{showAudioPlayer && }
+
);
}