diff --git a/.github/scripts/generate_changelog_md.sh b/.github/scripts/generate_changelog_md.sh index 0073d2d0e0..da7371a34a 100755 --- a/.github/scripts/generate_changelog_md.sh +++ b/.github/scripts/generate_changelog_md.sh @@ -81,7 +81,7 @@ fi mkdir -p content/changelogs # Create a new file with the current release as the name -echo ${CONTENT//\"/} > content/changelogs/$CURRENT_RELEASE.md +echo -e ${CONTENT//\"/} > content/changelogs/$CURRENT_RELEASE.md SHORT_COMMIT_LAST_RELEASE=$(echo $COMMIT_LAST_RELEASE | cut -c 1-5) SHORT_COMMIT_CURRENT_RELEASE=$(echo $COMMIT_CURRENT_RELEASE | cut -c 1-5) diff --git a/examples/typescript/pipe-obsidian-time-logs/pipe.json b/examples/typescript/pipe-obsidian-time-logs/pipe.json index 590ba94c92..213198b6b9 100644 --- a/examples/typescript/pipe-obsidian-time-logs/pipe.json +++ b/examples/typescript/pipe-obsidian-time-logs/pipe.json @@ -8,7 +8,7 @@ }, { "name": "obsidianPath", - "type": "string", + "type": "path", "default": "", "description": "Path to the Obsidian vault where time entries will be saved" }, diff --git a/screenpipe-app-tauri/app/timeline/page.tsx b/screenpipe-app-tauri/app/timeline/page.tsx index da419d8063..d88d252be4 100644 --- a/screenpipe-app-tauri/app/timeline/page.tsx +++ b/screenpipe-app-tauri/app/timeline/page.tsx @@ -187,10 +187,10 @@ export default function Timeline() { () => throttle((e: React.WheelEvent) => { const isWithinAiPanel = document - .querySelector('.ai-panel') + .querySelector(".ai-panel") ?.contains(e.target as Node); const isWithinAudioPanel = document - .querySelector('.audio-transcript-panel') + .querySelector(".audio-transcript-panel") ?.contains(e.target as Node); const isWithinTimelineDialog = document .querySelector('[role="dialog"]') @@ -245,10 +245,10 @@ export default function Timeline() { useEffect(() => { const preventScroll = (e: WheelEvent) => { const isWithinAiPanel = document - .querySelector('.ai-panel') + .querySelector(".ai-panel") ?.contains(e.target as Node); const isWithinAudioPanel = document - .querySelector('.audio-transcript-panel') + .querySelector(".audio-transcript-panel") ?.contains(e.target as Node); const isWithinTimelineDialog = document .querySelector('[role="dialog"]') @@ -302,14 +302,6 @@ export default function Timeline() { -
-
{isLoading && (
diff --git a/screenpipe-app-tauri/bun.lockb b/screenpipe-app-tauri/bun.lockb index 576ab6db79..bef639b287 100755 Binary files a/screenpipe-app-tauri/bun.lockb and b/screenpipe-app-tauri/bun.lockb differ diff --git a/screenpipe-app-tauri/components/pipe-config-form.tsx b/screenpipe-app-tauri/components/pipe-config-form.tsx index ecebe33bff..fabfd0d9a7 100644 --- a/screenpipe-app-tauri/components/pipe-config-form.tsx +++ b/screenpipe-app-tauri/components/pipe-config-form.tsx @@ -26,6 +26,8 @@ import { MemoizedReactMarkdown } from "./markdown"; import { CodeBlock } from "./ui/codeblock"; import remarkGfm from "remark-gfm"; import remarkMath from "remark-math"; +import { open } from "@tauri-apps/plugin-dialog"; +import { FolderOpen } from "lucide-react"; type PipeConfigFormProps = { pipe: Pipe; @@ -64,13 +66,23 @@ export const PipeConfigForm: React.FC = ({ const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); - console.log("Submitting config:", config); + console.log("submitting config:", config); + + if (!config?.fields) { + console.log("no config fields found, aborting"); + return; + } + try { toast({ - title: "Updating pipe configuration", - description: "Please wait...", + title: "updating pipe configuration", + description: "please wait...", }); + if (!pipe.id) { + throw new Error("pipe id is missing"); + } + const response = await fetch(`http://localhost:3030/pipes/update`, { method: "POST", headers: { @@ -83,10 +95,14 @@ export const PipeConfigForm: React.FC = ({ }); if (!response.ok) { - throw new Error("Failed to update pipe config"); + const errorText = await response.text(); + throw new Error(`failed to update pipe config: ${errorText}`); } - onConfigSave(config || {}); + const result = await response.json(); + console.log("update response:", result); + + onConfigSave(config); await new Promise((resolve) => setTimeout(resolve, 1500)); @@ -300,6 +316,65 @@ export const PipeConfigForm: React.FC = ({
); + case "path": + return ( +
+ handleInputChange(field.name, e.target.value)} + autoCorrect="off" + spellCheck="false" + /> + + + + + + +

Select folder

+
+
+
+ + + + + + +

Reset to default

+
+
+
+
+ ); default: return (
diff --git a/screenpipe-app-tauri/package.json b/screenpipe-app-tauri/package.json index 90a7ad6c8a..5552841e6f 100644 --- a/screenpipe-app-tauri/package.json +++ b/screenpipe-app-tauri/package.json @@ -38,7 +38,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-toast": "^1.2.1", "@radix-ui/react-tooltip": "^1.1.3", - "@tauri-apps/api": "^2.1.0", + "@tauri-apps/api": "^2.1.1", "@tauri-apps/plugin-cli": "2.0.0", "@tauri-apps/plugin-dialog": "2.0.0", "@tauri-apps/plugin-fs": "2.0.0",