Skip to main content

week of july 6, 2026

new features

  • meeting piggyback: capture the app’s audio and the right mic (experimental) — turn on meeting piggyback (experimental) in settings → recording and, when screenpipe detects a meeting, capture follows the meeting: the app’s own audio via a per-process tap (no music or notification bleed from the rest of your system) plus the mic the meeting app actually opened (right device even when it isn’t your OS default). Any failure — unsupported OS, mic loss, tap death — falls back to your normal capture with no gap. Off by default; macOS 14.4+ only for now (Windows toggle is visible but currently defers to the stable path until the loopback supervisor ships). See meeting transcription.
  • mic capture-health notifications — screenpipe now watches for the case where the meeting app is clearly recording but your mic is delivering pure silence, silently restarts the stream first, and only notifies you if the problem persists (≥2 min of app-active silence, at most one alert every 30 min, never for muted mics). See meeting transcription.
  • batch select and delete for pipes — each pipe’s three-dot menu now has a select option that swaps the search bar for a selection toolbar (select all, count, delete, close). Confirm once to clean up several pipes at a time instead of deleting them one by one. See pipe store.
  • pill-based attendee editor for meeting notes — attendees on a meeting note are now editable pills — add, remove, or edit each participant inline instead of retyping the whole list. See meeting intelligence.
  • macOS quit confirmation — quitting the app on macOS (⌘Q or menu Quit) now asks to confirm so recording sessions and unsynced work aren’t ended by accident.

updates

  • cleaner pipe cards — install, run, and configure actions on each pipe card now appear on hover, so the store and installed lists stay tidy while everything is one hover away. See pipe store.
  • screen recording permission is now requested last — on macOS, onboarding and permission recovery ask for microphone and accessibility first and screen recording last, so an early screen-recording prompt no longer relaunches the app before the rest of setup completes. See permissions.
  • faster searches over redacted history — search and privacy-filter queries over long histories run noticeably quicker thanks to new database indexes and periodic optimization on the local store. No settings to change. See privacy filter.
  • Windows: recording yields to your foreground app — background capture and indexing on Windows now run at a lower priority than whatever app you’re using, so screenpipe stays out of the way during heavy work while still recording continuously.

bug fixes

  • fixed multi-GB memory leak in audio recording — long recording sessions no longer balloon in memory usage. Speaker diarization now reuses a cached segmentation model instead of reloading it per chunk, and the speaker cluster store is bounded so it can’t grow without limit. Expect noticeably lower RAM after extended meetings and all-day capture. See meeting transcription.
  • capture writes preserved during database contention — the recorder no longer drops frames or transcript rows when the local database is briefly busy; writes are retried instead of silently discarded, so long sessions end up with complete history.
  • no more duplicate Automate My Work pipes — installing or triggering an Automate My Work pipe twice no longer creates a second copy in your library. See pipe store.
  • no more duplicate or mis-titled chats across windows — opening chat in multiple windows no longer creates duplicate sessions or shows the wrong title on either side; each window stays in sync with the correct conversation.
  • shortcut settings no longer crash the app — a missing shortcut list on older installs is now backfilled on launch instead of throwing and breaking the whole window.
  • audio recovery on slow boot — after granting microphone permission on a slow-booting Mac, screenpipe now waits for capture to finish coming up instead of giving up and staying silent until the next restart.
  • fewer false “audio stalled” errors after meetings — the health check no longer flags a stall or returns a 503 while screenpipe is catching up on transcription right after a long meeting.
  • shared mic sample rate no longer forced — devices that don’t support screenpipe’s preferred sample rate now negotiate their own, which fixes silent or distorted mic capture on some external interfaces, especially with meeting piggyback enabled. See meeting transcription.

week of june 29, 2026

new features

  • ↑ / ↓ to recall recent chat messages — pressing the up arrow in an empty chat input now cycles back through your recent messages (down to move forward), so you can re-send or tweak a previous prompt without retyping. Works across pipe chats and the main chat surface.
  • opt-in secret scrubbing for pi agent logs — pi agent session logs can now be scrubbed of secrets by a background worker before they’re shared or stored. Off by default; toggle it on in settings → privacy or via the CLI. See privacy filter.
  • actionable notification inbox — the bell in the top bar is now a persistent inbox: notifications stick around after you close the popover, and each one can carry actions you run inline (including a new chat action that runs a prompt without needing a pipe). See home.
  • pause recording per display from the dot popover — click the recording dot in the menu bar to pause or resume screen capture for a specific monitor without stopping the others. Handy when you want to keep recording a work display while muting a personal one. See permissions.
  • feedback shares settings + PII-redacted logs — the in-app Send feedback flow now bundles your current settings and runs shared logs through the cloud PII model before upload, so support gets enough context to reproduce issues without you scrubbing files by hand. See troubleshooting.
  • enterprise: remote-trigger device log collection — admins can now request logs from an enrolled device on demand; the always-on background loop picks up the request and uploads without user action. See intune deployment.
  • opt-in software echo cancellation for the mic — turn on software AEC (WebRTC AEC3) to strip speaker echo from your microphone during meetings and recordings, so transcripts and voice input stay clean even without a headset. Off by default; enable it in settings → audio or via the CLI. See meeting transcription.
  • smarter meeting-start detection (macOS + Windows) — screenpipe now notices a meeting the moment your mic goes live and attributes it to the app or website holding it (Zoom, Meet, Teams, browser calls, and more), so meeting capture starts on time without relying on calendar entries or window titles. See meeting intelligence.
  • Zendesk connector: OAuth fallback guidance — the Zendesk connect flow now walks you through the manual OAuth fallback when the standard flow can’t complete, so tenants with stricter admin policies can still finish setup. See connections.
  • browse and manage Pi agent extensions from settings — a new Pi extensions card in settings → connections lists every available extension with a description and one-click install / update / uninstall — no manual CLI needed to add capabilities to the bundled Pi agent. See connections.
  • full agent trajectory saved for every pipe run — each pipe run’s complete event stream (assistant turns, tool calls, tool results) is now persisted to disk as JSONL, so you can export runs for evals, fine-tuning, or postmortems. Retention keeps the newest 50 runs per pipe by default. See pipes.
  • higher-fidelity action capture for search and agents — coalesced scroll capture is now on by default (one row per gesture instead of ~60-120 rows per second), captured clicks include the ancestor path of the element you interacted with, and screen captures now snapshot the full display layout. Cleaner data for search, memory, and pipe agents with no user-visible overhead. See search screen history.
  • retention defaults tightened — new desktop installs enable local retention out of the box (14 days for media), so first-run disk usage stays bounded without needing to open settings. The CLI keeps data forever by default (retention off) unless you pass --retention-days, so headless deployments never delete data by accident. Existing installs are unaffected. See the CLI reference and privacy data flow.
  • enterprise: managed screenshot capture controls — admins can now lock screenshot capture behavior (frequency, per-monitor selection, disabled state) through managed settings, so recording policy is enforced consistently across a fleet. See intune deployment.
  • enterprise: telemetry tagged by org and device — telemetry events from enrolled devices now carry the organization ID and a stable device identifier, so admins can slice usage and health by team or device. See intune deployment.
  • SCREENPIPE_SKIP_ONBOARDING env-var escape hatch — set SCREENPIPE_SKIP_ONBOARDING=1 to boot straight into the main view. Useful for corp VDI, headless containers, MDM-preseeded deploys, and any environment where interactive onboarding can’t complete. Off by default; onboarding can still be reopened from settings. See getting started.
  • pipe sessions collapse into a single group in the sidebar — the chat sidebar now folds every session for the same pipe under one Pipes group instead of scattering them across recents, so the list stays short even after a busy week. See pipes.

updates

  • trigger setup opens the exact connection dialog you need — when a pipe trigger requires a connection that isn’t set up yet, the Connect CTA now opens the specific connection dialog (Slack, Notion, Obsidian, …) directly instead of dropping you on the connections list. See pipes and connections.
  • friendlier onboarding errors when a connect step fails — the connect-step failure copy on first run has been rewritten for non-technical users, with clearer language about what went wrong and what to try next. See getting started.
  • OpenRouter removed from the AI gateway — the last bit of background traffic that ran through OpenRouter (Qwen3.5) is now routed to GLM-5 directly. No action needed; behavior is unchanged for end users.
  • storage tabs and backend sync removed from settings — the storage archive and backend sync tabs are gone, along with their duplicative controls. Retention and cloud archive continue to live in settings → storage, and cloud archive is unchanged. See cloud archive.
  • snapshot compaction setting hidden — the low-level snapshot compaction toggle has been removed from settings → recording now that compaction runs reliably in the background. Disk usage still follows your retention settings; nothing to configure. See search screen history.
  • timeline hides audio-only markers while browsing — when you’re navigating the visual timeline, markers for audio-only segments no longer clutter the strip, so the frame view stays focused on the screenshot ranges you’re scrubbing through. See search screen history.
  • search input no longer autocorrects your query — the search box no longer runs OS-level autocorrect or autocapitalize, so exact-match terms (usernames, code, paths) go through untouched.
  • feedback attachment window is now bounded — the Send feedback flow now attaches a bounded recent-recording window instead of the last unbounded slice, so submissions upload faster and don’t include unrelated older data. See troubleshooting.
  • lower background CPU from the resource monitor — the app-health / resource-monitor loop now wakes far less often and coalesces its samples, cutting idle background CPU on all platforms.
  • no more surprise app relaunch after a DB blip — a transient database error no longer triggers an automatic full-app relaunch. The engine now recovers in place; a manual restart is only prompted when something genuinely wedged.
  • chat hides “thinking” blocks and merges work into one rail — reasoning-model thinking blocks are now always hidden (the toggle is gone), and per-tool “work” groups collapse into a single rail with a time-to-thought duration instead of a wall of intermediate narration. Groups stay open while the model is working and auto-collapse when the turn ends.
  • settings back button returns to the previous page — the back button in settings used to always jump home; it now walks you back through the pages you actually visited.

bug fixes

  • search filters no longer get stuck on stale state — the filter chips at the top of the search page could keep showing a previous filter’s UI state after you cleared or switched filters, so the visible chips and the actual query disagreed. Filter UI state is now reset cleanly on every change. See search screen history.
  • untitled calendar events stay untitled — events with no title used to default to a literal “(no title)” string, which leaked into summaries, prompts, and notifications. Untitled events now render as empty. The recording-prewarm toast that could fire twice on the same event is also deduped. See meeting intelligence.
  • timeline scrolls smoothly with a trackpad — two-finger trackpad scrolling on the timeline used to jump or skip frames instead of navigating continuously. Trackpad scroll now navigates the timeline cleanly. See search screen history.
  • permission monitor doesn’t false-alarm on screen unlock or display change — unlocking your Mac or plugging/unplugging a display could briefly read system permissions as “revoked” and pop a misleading permission-lost warning. The monitor now graces these transitions, so transient OS state never trips a false alert. See permissions.
  • menu-bar menu opens on the first click (macOS) — the macOS tray menu used to flash open then immediately close on the first click after launch, requiring a second click to actually use it. First-click open now works.
  • audio reconciliation no longer loops on dedup collisions — a rare race in audio dedup could leave the reconciliation loop retrying forever on a UNIQUE-constraint collision, spiking CPU. The loop now exits cleanly on the collision. See meeting transcription.
  • app refocuses correctly after the macOS permission grant — granting screen-recording permission during onboarding used to leave the app behind other windows with no way to bring it forward. The app now reliably shows, unminimizes, and refocuses after the system grant, so onboarding continues without a manual switch. See getting started.
  • opening the bell no longer marks every notification read — clicking the notification bell used to instantly mark the entire inbox as read, so unread counts vanished the moment you peeked. Notifications now stay unread until you actually open or act on them. See home.
  • search results grid reflows to fit the window — resizing the app used to leave gaps or clip the last column on the search page. The results grid now auto-fills the container and reflows cleanly at every width. See search screen history.
  • Arch Linux AppImage launches again — bundled libavif / libsharpyuv conflicted with system libraries on Arch, preventing the AppImage from starting. The conflicting bundled copies are now stripped and Arch is covered by a launch smoke test.
  • enterprise: Windows updater falls back cleanly — a failed update on Windows in the enterprise build could leave the app stuck instead of retrying through the fallback path. The fallback now runs as designed and the app updates on the next attempt.
  • redacted OCR words no longer leak through per-word text — after PII redaction, the per-word OCR data served by the text-overlay endpoints still held the raw recognized words, making redacted text reconstructible. Words are now scrubbed alongside the main OCR text while bounding-box geometry stays intact. See privacy filter.
  • pipes stop retrying quota errors as rate limits — pipes that hit a real quota or billing cap used to be retried as if they were transient rate limits, wasting time and sometimes masking the actual failure. Terminal quota errors now surface immediately, while genuine rate limits still retry and fall back as before. See pipes.
  • timeline uses less memory on dense days — long recording days could push the timeline into heavy memory pressure and drop parts of the visible range. The timeline now downsamples dense ranges while preserving what you’re looking at, so scrolling stays smooth. See search screen history.
  • search keeps returning frames when one frame fails — a single bad frame in a search result batch used to drop every other frame in that batch. Failures are now isolated per frame so the rest of the results still come through, with OCR and frame alignment preserved. See search screen history.
  • macOS: no more SIGABRT crash on quit — quitting the app on macOS (Cmd+Q, tray quit, or window close) could crash during shutdown teardown. Quit now runs through a single, unified teardown path and exits cleanly.
  • Linux AppImage: Pi installer runs from AppImage builds — installing pi from inside the Linux AppImage could fail because a bundled library path was leaking into bun’s environment. The path is now scrubbed on Linux and the install completes.
  • enterprise: activation handles more edge cases cleanly — enterprise license activation is more resilient across stale subscription state, license prompt races, and offline retries, so devices don’t get stuck in a half-activated state. See intune deployment.
  • pi-agent self-heals when its install is corrupted — a Pi agent install left half-copied by an app quit, antivirus lock, or file-system error used to crash-loop forever with a “cannot find module” error, forcing users to manually wipe the install directory. Corrupt installs are now detected, repaired, and rebuilt automatically on next launch.
  • tray no longer stuck on “Starting…” when recording is fine — the menu bar could sit on “Starting…” forever while capture was actually running (/health reporting recording), typically after an audio toggle or a background engine respawn. The tray now follows recording intent, so status matches reality.
  • duplicate transcript lines after a meeting ends — post-meeting reconciliation could double every line in a stopped meeting’s transcript because the same utterance came back from two endpoints with slightly different speaker labels. Duplicates are now collapsed. See meeting transcription.
  • Windows: recording no longer freezes foreground apps — the Windows accessibility worker was making synchronous cross-process calls on the target app’s UI thread every 2 seconds, producing 100ms+ message-pump stalls in complex apps (Chrome, Slack). The worker no longer runs while its output is unused, so foreground apps stay responsive during recording.
  • retention loop no longer rescans your entire history every 5 minutes — in Media / Lean retention modes the background cleanup task was restarting its walk from the oldest timestamp on every 5-minute cycle, hammering the DB. The loop now resumes from where it left off, and NULL-poisoned NOT IN queries that could skip cleanup are fixed too. See privacy data flow.
  • update restart works even when boot phase is “error” — a boot error used to permanently block the update banner’s “restart to apply” button, trapping users on the old build until they quit and relaunched manually. Restart-on-update now proceeds through a failed boot.
  • new installs don’t pre-download the 800 MB whisper model — on first launch the app was fetching the whisper-large-v3-turbo model even when your selected transcription engine was Deepgram, screenpipe cloud, parakeet, or qwen3. The pre-download is now skipped for non-whisper engines and only fires if you switch to whisper. See meeting transcription.
  • macOS Process Tap no longer churns on quiet machines — the audio silence watchdog was tearing down and rebuilding the CoreAudio Process Tap every 2-8 minutes when nothing was playing (~150 rebuilds/day). Silence is now recognized as expected on a quiet machine and the tap is left alone. See meeting transcription.
  • pipes can continue after a step completes — pipes that tried to keep running after a “completed” step could stall or return an error instead of moving on. Post-completion continue calls now work as intended. See pipes.
  • owned-browser session fallback + ChatGPT model picker — LinkedIn and other owned-browser logins now fall back cleanly when the primary session path can’t complete, and the ChatGPT connector correctly restores your selected model instead of silently reverting to the default. See connections.
  • LinkedIn owned-browser login handles auth cookies correctly — LinkedIn’s cookie-block prompt used to trap the owned-browser login flow. The login page now completes and returns you to screenpipe. See connections.
  • CLI retention actually enables when auto-enable runs — the CLI’s automatic retention configuration used to POST to itself without the local auth token, silently 403’ing and never turning retention on — leading to unbounded DB growth. The self-call now authenticates properly. See the CLI reference.
  • retention default hardening across store recovery — a settings store recovered after corruption used to look like a fresh install and would flip the retention default on over an existing archive. The default is now gated on the presence of the actual data directory, so recovered installs never delete media unexpectedly. See privacy data flow.
  • chat summary cards don’t apply stale preset settings — clicking a chat summary card could send the new message with the previous chat’s preset (model, tools, system prompt) because the click captured a stale closure. The correct preset now applies on every card click.
  • macOS restart no longer aborts teardown — restarting the app on macOS could abort mid-teardown, leaving background workers running under the old process. Restart now completes teardown cleanly before relaunching.
  • activity summary weekly context is correct again — the weekly activity-summary output on MCP and the Home page was pulling context from the wrong window on the boundary between weeks. The window is now aligned to your local week. See mcp server.
  • timeline frame hook order fixed — a hook-order regression could throw a React error and blank the frame preview on the timeline in some navigation paths. The preview now renders reliably. See search screen history.
  • Pi picks the right reasoning mode for GPT reasoning models — GPT reasoning models (o-series) weren’t being flagged as reasoning models in Pi’s generated config, so responses came back without reasoning enabled. They’re now marked correctly.
  • search frame previews load the right frame — the search results page could show a fallback frame that didn’t match the actual hit when the primary frame URL failed to resolve. The fallback now matches the search hit. See search screen history.
  • enriched click context is preserved end-to-end — the accessibility recorder was dropping the enriched click context (ancestor path, roles) when merging events. Downstream search and pipes now see the full click payload.
  • typing and clipboard no longer fire a capture pipeline per keystroke — key-press, typing-pause, and clipboard triggers used to bypass the capture debounce, chaining a screenshot + tree walk + OCR + DB write on every keystroke during continuous typing. They now share a 1.5s debounce floor and dedup with other triggers, cutting redundant captures by ~90% during typing bursts while still capturing the end of every burst.
  • heavy DBs no longer corrupt with “file is not a database” — an inline WAL auto-checkpoint on the committing connection could copy a WAL frame to the wrong main-DB page under heavy concurrent load, clobbering the SQLite header. Checkpointing now runs exclusively from a single background maintainer with a bounded WAL cap, closing the corruption path that only reproduced on the largest (multi-GB, high-concurrency) installs.
  • macOS RSS leak from the audio meeting watcher — the audio meeting-detection loop was leaking one NSRunningApplication (plus an NSLock and a LaunchServices record) every second, contributing hundreds of MB of steady RSS growth on long-running macOS sessions. Lookups now run inside an autorelease pool and the leak is gone.
  • Windows accessibility walk budgets are enforced again — the Windows a11y walk didn’t honor mid-walk deadlines or the fragile-provider skip on the paired path, and lacked lightweight focused-window metadata — so per-app walk budgets, the terminal / Obsidian OCR throttle, and lock-screen skip were effectively inoperative. All three are back in force, and Chromium / Electron windows now go straight to the fallback walker instead of re-discovering the need every cycle. See permissions.

week of june 24, 2026

new features

  • Outlook email connector — connect just your Outlook mailbox without granting the full Microsoft 365 surface. The new outlook-email connection in settings → connections authorizes mail-only scopes (read / read-write / send) against Microsoft Graph and stores its token separately from the Teams / Microsoft 365 integration, so the two coexist on the same account. See connections.
  • connection-aware trigger picker for pipes — building a triggered pipe now shows real channel / database / folder selectors instead of free-text. When you pick a Slack, Notion, or Obsidian trigger you see the connected accounts and their resources directly; if the app isn’t connected yet the picker surfaces a one-click Connect CTA. Multi-account is first-class — pick which workspace fires the trigger. See pipes and connections.
  • per-app connection triggers (Obsidian, Slack, Notion) — pipes can now fire when a connected app produces a new item (a new Obsidian note, Slack message, or Notion page in a watched database). Each subscription tracks its own cursor and starts from “now” on install, so you don’t get backfilled with a year of history the first time you wire a trigger. See pipes.
  • self-improving memory layer for store pipes — every pipe in the store now opens with a small “continuous improvement” block: it reads a memory.md sidecar at the start of a run and can append up to a few dated, one-line lessons at the end. Append-only, capped at ~150 lines / 8 KB, and the pipe never edits its own prompt — so updates from the store still apply cleanly. Pipes carry forward what they learned about your projects, people, and preferences without you maintaining anything. Existing installs are left untouched; new installs ship with the block. See pipes.
  • scriptable notification settings: DND, per-pipe mutes, presets — the notifications page is now grouped, searchable, and has a global master switch that mutes everything except the recording-stopped alert. Per-pipe mute toggles are now actually enforced server-side (they used to be cosmetic), so muting a chatty pipe really silences it. See home.
  • graceful background model downgrade + in-app advisories — a Free / Basic pipe pinned to a now-gated model (e.g. Sonnet) used to silently 403 on every background run. Background traffic now downgrades to auto and keeps running on a free model instead of failing in the dark; interactive requests still show the visible upgrade prompt. Silent pipe failures that can’t auto-recover surface as a calm, dismissible in-app advisory (bottom-right) so you actually find out. See pipes.
  • right-click context menu in the chat sidebar — right-clicking a chat row opens a context menu at the cursor with Pin, Rename, Move to group, Archive, Delete — same actions as the hover ⋮ kebab, just faster. Single-letter shortcut hints (P / R / A / D) act on the highlighted row.
  • summarize button on the meeting note dock — the summarize action used to live only in the top toolbar. It’s now also in the bottom dock next to stop, reachable from both ends of a long note without scrolling. See meeting intelligence.
  • chat side inspector for outputs and sources — a new right-side panel in chat surfaces the artifacts a run produced (files written, edits made, pipe outputs) and the sources it pulled from, alongside the conversation. Toggles for the inspector, browser webview, and file preview now sit in the chat header so you can flip between them without losing context; the panel floats on narrow windows so it doesn’t crowd the message column.
  • “Move to group” submenu now lists every group you see in the sidebar — moving a chat used to only show manual groups, so the submenu looked empty for most people. It now lists manual groups and the auto pipe-groups in your sidebar, deduped. Moving a chat into a pipe-group name folds it into that same row instead of creating a duplicate section.
  • inline preview for the “AI audio & video analysis” setting — the cloud media-analysis toggle now sits in settings → General next to the other cloud-AI toggles (it used to live under Privacy) and ships with a small animated illustration showing how audio and video/image streams converge into an attested enclave, so it’s clear what the switch covers. Behavior is unchanged; respects reduced-motion. See privacy data flow.
  • artifacts are searchable by full content — saved artifacts (files, pipe outputs, chat exports) are now indexed for full-text search, so you can find them by anything in the body — not just by title or filename. See second brain.
  • one-click OAuth for 10 more connectors — Linear, Stripe, Sentry, Intercom, Asana, monday.com, ClickUp, Airtable, Confluence, and Jira now connect with a single Connect click — no API key to paste, no app to register. The same OAuth panel used by Krisp and Plaud now powers these tiles, and the token is stored in your secret store. Already-connected users keep working as-is; the legacy key / token form is still available under an advanced disclosure if you need to view or rotate credentials. See connections.
  • Company Brain bundled pipe — a new guided pipe sets up a shared “company brain” in one pass: it reads the last 7 days of your work (read-only, on-device), picks a shared destination from your existing connections, and installs a workday digest pipe that summarizes decisions, SOPs, open loops, and who-knows-what to a local file. Pushing the digest to the shared destination is opt-in — ask-never-push by default. Install from the pipe store. See pipes.
  • mobile control page — a new /mobile page in the app lets you drive screenpipe from a phone browser: connect to your local or a remote instance, see live online/offline status, list and run pipes, and fire a chat prompt — useful for checking in or kicking off a run from another room without opening the desktop app. See for developers.
  • friendlier onboarding for non-technical users — the final onboarding step no longer shows raw store slugs (“digital-clone”, “personal-crm”) or “install 2 pipes →”. Default cards now use plain names (“Your AI twin”, “People memory”) and the button reads “turn it/them on →”, so first-time users who aren’t developers can finish setup without learning the word “pipe”. Install behavior is unchanged. See getting started.
  • pi coding agent scrubs secrets from session logs at rest — the embedded pi agent persists every bash output and tool result to disk for --continue history, which used to keep credentials it touched (AWS keys, GitHub PATs, JWTs, bearer tokens, Postgres passwords) in plaintext. A secrets-only scrub now runs best-effort after each pi run over recently-touched session files: only credential spans are rewritten; ordinary text (names, emails, code) is left intact so history stays readable.

updates

  • upgraded image PII redaction model (rfdetr_v13) — the on-device image privacy filter now uses a new detection model trained on real labeled frames. Real-secret recall jumped from effectively 0% to 92–100% on frames that contain a leaked credential, while false-redactions on ordinary frames dropped sharply. The model is also lighter (~44% less compute, 60 MB fp16) and downloads with a checksum verify. See privacy filter.
  • pipe execution chat display polish — several rough edges in how pipe runs render in chat are cleaned up: the system prompt now collapses into a labeled summary instead of a wall of text, pipe titles stay consistent (no AI-generated rename), “open in chat” reuses the existing conversation instead of reloading the page, copy-output shows a check-icon confirmation, and navigating to a chat inside a pipe group auto-expands that group. Incomplete pipe runs no longer get saved to history mid-execution. See pipes.
  • “automated” replaces “scheduled” and “triggered” in the pipes filter — the pipes list used to split self-running pipes across two filter tabs. They’re now merged into one Automated tab, with Manual kept separate for run-on-demand. Running, sorting, favorites, and cloud are unaffected.
  • store “update” UX is in-place — the UPDATE badge on a store pipe card now calls the proper update path (preserves your schedule, model, and enabled state, keeps a .bak) instead of re-installing. The badge clears on the card itself with no whole-page refresh and no forced jump to My Pipes. Locally-edited pipes get an explicit overwrite-confirm dialog. The badge is also now grayscale instead of off-brand amber. See pipes.
  • premium models gated to the Business plan — Sonnet 4.5, Gemini 3 / 3.1 Pro, and Qwen3.5-397b joined Opus / GPT-5.x as Business-only. Free / Basic plans keep auto and the free / fast models (the free experience is effectively unlimited). Locked models stay visible in the picker as a greyed upsell with a one-click upgrade path, and an at-the-cap banner appears when you hit the daily paid-message limit.
  • DeepSeek removed from the AI gateway — DeepSeek is no longer offered as a model option in the cloud AI gateway.
  • free models get their own, much higher per-minute rate limit — free models (auto, GLM, Kimi, Gemini Flash, …) used to share the same low per-minute bucket as paid models, so the “switch to a free model to avoid rate limits” advice didn’t actually help. Free traffic now meters in a separate, much larger bucket (60 / 120 / 240 per minute for anonymous / signed-in / subscribed) and never blocks paid requests. The per-user daily cost cap is unchanged.
  • clicked-element labels in captured actions — recorded clicks used to read “click AXGroup” most of the time on the web, because macOS hit-testing lands on a generic container. The capture now descends into the labeled control under the cursor and records something specific like “click AXButton: Continue” or “click AXTextField: Email”, so captured action streams are usable for automation and SOP generation.
  • enterprise: device logs auto-submit when enrollment can’t reach upload — enrolled devices that weren’t uploading logs (network, misconfig, paused agent) now auto-submit on a watchdog so support can see them without a manual back-and-forth. Cooldown survives restarts, so a healthy device doesn’t spam uploads.
  • enterprise license prompt moved to the top of settings — the enterprise license entry point now sits at the top of the settings list instead of being buried near the bottom, so enrolling a managed install is easier to find.
  • enterprise: managed device settings are now actually enforced — several Managed settings policies were silent no-ops on devices: Screen recording: Always off, Audio recording: Always off, Meeting detector, Listen on LAN, Transcription engine, and Analytics. They now apply on the device (engine restarts once when a value changes; analytics applies live with no restart), so admin policy actually takes effect. See Intune deployment.
  • enterprise: hidden-mode auto-update respects MDM/Intune — devices running in hidden mode used to force the in-app auto-updater on, which would fight an org that manages updates through MDM or Intune. The hidden-mode force is now skipped when updates are externally managed, so MDM-driven rollouts stay in control. See Intune deployment.
  • enterprise: clearer “centralized data not enabled” message — when an org hasn’t toggled on centralized data in the dashboard, enrolled devices used to log a misleading “license rejected by ingest endpoint” even with a valid, active license. The device log now says plainly that centralized data is not enabled for the org and that an admin needs to turn it on in the dashboard. The upload-mode line in support feedback also now names the mode (hosted_ingest / direct_readable / direct_encrypted) instead of a bare discriminant.
  • desktop app v2.5.79 — rolls up this week’s fixes: floating search first-open freeze, MCP-OAuth connections visible to the chat agent and shown as connected, OAuth callback / result page polish, and the Linux AppImage runtime-deps bundle.
  • CLI v0.4.25 — ships the engine fixes that already landed in the desktop app to CLI users: the SQLite write-queue wedge recovery, the tesseract pre-flight that prevented missing-binary panics, the macOS mic-permission Sentry noise filter, the macOS ffmpeg install loop, and the AppImage runtime-deps bundle. See CLI reference.
  • OAuth callback and result pages refreshed — the success / failure pages you land on after connecting a one-click OAuth connector are cleaner, on-brand, and default to light mode for legibility. Behavior is unchanged. See connections.

bug fixes

  • embedded engine auto-respawns when it crashes mid-recording — if the in-app engine died while recording was supposed to be on (tray icon gone, local API on :3030 unreachable), nothing brought it back up — recording just sat stopped until you noticed. The desktop app now supervises the engine the same way launchd / systemd supervises the standalone CLI: on a real crash with recording still wanted, the watchdog respawns it.
  • capture auto-restarts when it silently freezes — on macOS, ScreenCaptureKit can stop delivering frames while the capture loop and HTTP server stay alive — the classic “screenpipe says it’s recording but I have no screenshots for days” symptom, usually only unwedged by a screen lock/unlock. The health watchdog now detects sustained staleness and restarts the capture session in place automatically, instead of only showing a manual-restart notification gated behind a default-off preference. Applies to the CLI and the desktop app. See troubleshooting.
  • clear notification when DB-wedge recovery can’t restart recording — when the SQLite “disk image is malformed” auto-recovery can’t bring the engine back up (or gives up after retries on genuine on-disk corruption), you used to be left with recording silently stopped. Both failure modes now fire a notification so you know to take action. See troubleshooting.
  • deleting a speaker with local audio chunks no longer 500s — the trash icon on the speakers page failed for essentially every identified speaker that had any local (non-cloud) audio chunk. Fixed. Cloud-only and empty-speaker deletes were already working and are unaffected.
  • meetings no longer flap Active ⇌ Ending on minimized / tab-switched calls — a call with output audio still flowing but no visible controls used to bounce between Active and Ending once per scan interval (24+ flaps on a multi-minute call), spamming logs and telemetry. Audio-sustained meetings now stay Active. Total flap count across the meeting-eval suite dropped 86%. See meeting intelligence.
  • Webex used for chat no longer starts phantom meetings — Webex runs messaging and meetings under one process, and its messaging window’s “Leave space / Leave team” button matched the call-detection leave signal — so leaving Webex open for chat created phantom meetings and unwanted audio transcription. The detector now ignores the bare Webex window title (always a chat window — real meetings are titled with the meeting / space name). See meeting intelligence.
  • listening-wave indicator stays animated at audio level 0 — the bottom-left “listening” indicator in the meeting note dock looked frozen at ~35% height during silence (or whenever the audio-level reading came back as 0, the common case). The resting wave now sits as lively as the other listening indicators across the app while still rising on loud audio. See meeting transcription.
  • long meeting titles no longer break the “Coming up” card layout — a long, non-wrapping meeting title pushed the right-arrow outside the card border. Titles now truncate with an ellipsis and the row stays inside the card.
  • persistent sidebar scrollbars on Windows / Linux are hidden — expanding a pipe section in the chat sidebar used to make a persistent classic scrollbar pop in on Windows / Linux (Chromium auto-hides nothing) while macOS rendered the same scrollbar as an overlay. The sidebar now hides its scrollbars off macOS, matching the rest of the shell.
  • Gemini / Vertex no longer 400 on replayed chat history with nameless tool calls — replaying a chat that included an assistant tool call with an empty function name caused Vertex MaaS and Gemini to reject the entire request. The AI proxy now strips unexecutable nameless tool calls (and their orphaned tool results) before forwarding, so the rest of the conversation goes through cleanly. Ships independently of an app release — reaches you on the next gateway deploy.
  • macOS ffmpeg auto-install loop / false “not found” on first launch — on macOS, a prior ffmpeg install to ~/.local/bin wasn’t visible to the running app, so every launch re-attempted the install and reported a misleading “No such file or directory” — which broke first-run capture for some users on 0.4.23. The resolver now finds the existing binary and validates installs by the file on disk instead of a path probe. Windows / Linux are unchanged. See troubleshooting.
  • AI gateway retries transient Cloudflare / network blips during sign-in token minting — an occasional 522 or 5xx from the upstream token chain used to fail the whole request with “WIF SA impersonation failed”. Token minting is idempotent, so the gateway now retries up to 3× with backoff on 522 / 5xx / network errors and surfaces real 4xx errors immediately. Ships on the next gateway deploy — no app update needed.
  • manually started meetings can be stopped from any client — a frontend / backend state desync left manually-started meetings stuck “active” — every stop click returned 400 and the UI never recovered. The stop endpoint now tolerates an empty body (so MCP and other body-less clients work), stopping an already-ended meeting is idempotent, and the UI resyncs against the server on a stop failure instead of hammering a stale id. See meeting intelligence.
  • a false-positive meeting can no longer wedge audio capture — a misidentified meeting plus a stalled write pool could leave audio deferred forever, with hundreds of transcription segments stranded and only an app restart clearing it. The stop handler now releases the in-meeting flag and detector state before any database write, so a wedged pool can’t deadlock stop and the queue drains on its own. See meeting transcription.
  • search bar opens instantly after the first time — the floating search bar used to be destroyed on close and rebuilt from scratch on every open, freezing the input for several seconds before you could type. The bar now stays warm in the background and just resets on open, so every open after the first is instant. See search screen history.
  • /health clears active_no_data once audio recovers — a single transient stream timeout pinned audio status to active_no_data for the lifetime of the process, so a fully recovered mic still reported broken and /health stayed degraded. The check now keys on recency, not lifetime count, and silent-but-healthy rooms also report ok. See for developers.
  • settings and AI model config survive an unexpected shutdown — a power loss mid-save could leave store.bin truncated and on next boot the desktop app would treat the install as fresh, overwriting it with defaults — wiping all settings, including configured AI models. Every settings write (and its recovery snapshot) now uses a durable temp-file + fsync + rename, so a write either fully lands or fully doesn’t. See troubleshooting.
  • pipe notification mute is enforced at the /notify boundary, and /notify no longer hangs — a muted pipe could still emit notifications if its code called the notify endpoint directly, and a stalled notification panel could hang /notify requests forever. The mute toggle is now enforced at the API boundary (so muting always silences a pipe), and stuck panel UI no longer blocks notifications. See pipes and home.
  • screen capture handles rare Apple OCR nil errors instead of crashing the worker — OCR worker no longer panics on transient nil responses from the system OCR framework. Capture stays running.
  • disabled audio capture is respected on startup — turning audio off in settings could still bring the audio pipeline up on the next launch. The recording starts now actually skip audio when it’s disabled. See meeting transcription.
  • wlroots-based Wayland compositors capture again — Linux users on Sway, Hyprland, and other wlroots Wayland compositors can capture the screen again — capture now uses grim on wlroots instead of the portal path that didn’t work there. See search screen history.
  • enterprise app routes consumer subscribers correctly — the enterprise-app gate misrouted consumer subscribers; signed-in consumer accounts now land in the regular app, and signing out / switching accounts cleans up properly.
  • onboarding login no longer dead-ends when signed in without an entitlement — an enterprise member who signed in before their grant propagated (or with the wrong email) used to be stuck on ”✓ signed in” forever with no way forward. The step now re-verifies the entitlement against the server and, if still not entitled, shows a recovery panel with their account, a re-check button, and a “use a different account” option. See getting started.
  • enterprise users are steered to the enterprise app — an enterprise account opening the consumer app is now pointed to the enterprise build instead of falling through silently.
  • meeting note placeholder cursor sits in the right place — the cursor in the empty meeting note no longer jumps after the placeholder text, so typing starts where you expect. See meeting intelligence.
  • timeline transcript backfills merge instead of stacking — transcripts that arrive in chunks now merge cleanly into one timeline run, instead of stacking duplicate or overlapping segments. See search screen history.
  • frame API now requires authentication — the local frame endpoint is now gated behind the same local auth as the rest of the API; unauthenticated callers can’t pull frames over the loopback HTTP server. See for developers.
  • HD meeting recording covers the whole call, not just the first 30 minutes — on the desktop app, HD recording silently dropped back to normal capture 30 minutes into any longer meeting, so the back half of long calls was never captured in HD. HD now stays bound to the call from start to end (with a 4-hour cap), ending when the meeting actually ends. See meeting intelligence.
  • search and timeline thumbnails load under API authentication — with Require authentication enabled (the default on enterprise / admin builds), frame thumbnails in search results, the timeline, hover previews, Live Text, and the chat prefill banner used to 403 and render as “unavailable” — because <img> tags can’t send an auth header. Thumbnails now load cleanly under auth. No change when auth is off. See search screen history.
  • sidebar recording dot is visible in light mode — the recording indicator in the translucent sidebar was rendered white-on-white in light mode, effectively invisible. It now follows the theme — black on light, white on dark. See home.
  • voice sample playback is reliable on Windows — playing back a saved speaker voice sample from the speakers page used to fail intermittently on Windows. Playback is now reliable across platforms. See meeting transcription.
  • pipe-logs API returns data after an app restart — fetching a pipe’s logs over the API used to come back empty until the pipe ran again after the app restarted. The API now reads back the on-disk history immediately, so previous runs show up right away. See pipes.
  • chat sidebar polish: move-to-group, header, inspector button — fixes a cluster of small chat-sidebar issues: the Move to group submenu now lays out correctly without overflowing, standalone chats get a proper header title and spacing, sidebar grouping behaves consistently across pinned / archived rows, and the inspector toggle button stays visible when the inspector panel is closed.
  • floating search bar opens fast on the first open after launch, too — a previous fix made the search bar instant on the 2nd+ open in a session, but the very first open still froze 10–20 seconds on large histories (cold webview boot plus a per-file stat storm over 15k+ chats plus a 24h OCR scan racing first paint). The search window now pre-warms at startup, uses one native directory scan instead of thousands of round-trips, and defers the cosmetic suggestions scan — so the first open is fast too. See search screen history.
  • one-click OAuth connectors (Linear, Stripe, Sentry, Notion, …) show as connected to the chat agent — connectors connected via the new one-click MCP-OAuth flow were stored separately from the legacy connector secrets, so GET /connections still reported them as not connected — and the in-app chat agent would tell you “Linear is not connected” immediately after you connected it. The list now reconciles MCP-OAuth connections back to their connector, so the agent sees them as connected. See connections.
  • provider tiles correctly show as connected — connection tiles for one-click OAuth providers now flip to connected as soon as the OAuth flow returns, instead of staying greyed out until the next refresh. See connections.
  • SQLite “cannot start a transaction within a transaction” write wedge fixed — recurring audio-chunk and UI-event batch insert failures that surfaced as SQLITE code 1 (a pooled connection coming back mid-transaction from a previous wedge) are now cleared before the next batch begins, so the write goes through on the first try instead of after the reactive retry. Recording stays running and the error stops surfacing. See troubleshooting.
  • legacy custom-vocabulary entries no longer break recording settings — a vocabularyWords list that mixed plain strings (the older format) with structured entries used to fail deserialization for the entire Recording settings object, leaving the page unable to load. Both shapes are accepted again. See meeting transcription.
  • macOS capture-permission denials no longer flood telemetry — the periodic device check used to upload one Sentry event per cycle when screen / audio capture was denied in System Settings, including localized (non-English) denial messages that bypassed the existing filter. Permission-denied events are now filtered out in any locale; they still appear in your local logs, only the upload is dropped. See permissions.
  • Linux AppImage launches reliably on more distros — the AppImage now bundles its runtime dependencies, falls back to system ffmpeg sidecars when the bundled binary isn’t usable, retries static-ffmpeg downloads on flaky networks, provides a qt-faststart fallback, and preserves the launcher’s executable bit — so first launch works on more distros without manual fix-ups.

week of june 23, 2026

new features

  • “download my archive” export — cloud archive used to be upload-only: local data older than your retention period was deleted after upload, with no way to get it back. A new button in settings → archive downloads every archived blob, decrypts it locally, and writes it to a folder (media/ for mp4 + jpg, metadata/ for JSON), with live progress and an open folder action when it’s done. Works even when archiving is disabled. See cloud archive.
  • screenpipe on the go: selective sync + one-command agent setup — two pieces for running screenpipe headless on a remote machine and pointing an agent at it. screenpipe sync now accepts --no-media (skip the heavy data/ capture files) and --exclude <glob> (repeatable), and honors a .screenpipeignore file in your data dir — useful for shipping just text + memories to a VPS without the media. screenpipe agent setup <openclaw|hermes|claude> [--api-url URL] writes the screenpipe skills into the agent’s skills dir and registers the screenpipe MCP server in its config in one command — idempotent, preserves existing servers. Pass --api-url so the agent talks to a synced/remote screenpipe instead of localhost. Headless screenpipe login now writes the cloud token to a place the engine actually reads, so cloud features work on a VPS without the desktop app. See CLI reference and connections.
  • Hermes Connect tab — Hermes was already wired as a read-only client (MCP / Skill / remote sync). The new Connect tab in settings → connections → Hermes lets screenpipe pipes push events, messages, or jobs into a running Hermes agent via its OpenAI-compatible API server, matching the existing OpenClaw flow. See connections.
  • chat sidebar groups recurring pipe sessions, plus manual groups — the chat sidebar now folds recurring sessions for the same pipe under one group instead of one row per run, and you can create your own named groups for ad-hoc chats. Recents is capped at 15 rows globally so long histories don’t push everything else off screen.

updates

  • monitors picker sits directly under “use all monitors” — toggling use all monitors off used to reveal the per-monitor picker several cards down the screen section, visually disconnected from the toggle that controlled it. The picker now appears immediately under the toggle.

bug fixes

  • screenpipe cloud transcription respects your language selection again — cloud (batch) transcription was silently falling back to English regardless of which languages you picked. The cloud worker now maps a single selected language to forced-language mode and “none / many” to multilingual auto-detect, matching the live-meeting path. Ships independently of an app release — reaches you on the next worker deploy. See meeting transcription.
  • DB “disk image is malformed” wedge recovers in-process — after macOS sleep/wake, SQLite’s WAL-index could desync and leave every write failing with code 522. The in-process recovery now closes the lingering secret-store connections so SQLite can rebuild the shared-memory mapping cleanly, instead of needing a full quit + relaunch.
  • local connection 401s no longer sign you out — if your connected-account email was on a @screenpi.pe / @screenpipe.com domain, a transient 401 from a local connection (e.g. a Google Calendar token refresh blip) could be misread as your cloud session expiring, sign you out, and pause recording. The auth interceptor now matches on the URL host (never a substring), and localhost / 127.0.0.1 are never treated as the cloud auth surface. See connections.
  • start/stop recording hotkey fires a notification — the global start/stop-recording shortcut only emitted an in-app toast, which is invisible when the main window is hidden — exactly when a global hotkey is for. Toggling recording from the keyboard now fires a notification panel so you get glance-level confirmation regardless of window visibility.
  • opening screenpipe from the taskbar / dock lands on home — clicking the taskbar (Windows) or dock entry while screenpipe was already running used to focus the timeline overlay instead of the home window. It now opens home, matching what you expect from a second app launch.
  • meeting detector: bare-host URL patterns no longer match lookalike domains — meeting-URL patterns like daily.co, app.daily.co, pop.com, 8x8.vc, and meet.jit.si were substring-matched against the page URL, so daily.co flagged thedaily.com, dailywire.com, and daily.com as phantom meetings — which an unrelated tab’s “Leave” / “End” button could then sustain. URL patterns now match on host boundaries (a whole hostname or a real subdomain) and, when path-qualified, on bounded path components. See meeting intelligence.
  • macOS CoreAudio tap can no longer be left orphaned — on macOS, stopping audio capture could skip the teardown step that releases the CoreAudio Process Tap, leaving it orphaned and wedging coreaudiod system-wide. The stop path is now idempotent — it always drives the stream teardown — so the tap is released every time.
  • MCP activity-summary labels time ranges in your real timezone — the per-app time range printed by the MCP activity-summary tool sliced HH:MM out of a local timestamp but hardcoded a ” UTC” suffix, so a 09:03 IST frame printed as “09:03 UTC” — off by the offset. The label is now derived from the timestamp’s own offset (UTC, +05:30, etc.). See MCP server.
  • Claude Desktop MCP install state stays in sync with the config file — the install screenpipe MCP into Claude Desktop action in settings → connections could show stale state because the config-path lookup wasn’t shared with the install-check. Both paths now resolve the config the same way, so the install / installed state reflects what’s actually in claude_desktop_config.json. See connections.
  • macOS click context: screenpipe ignores its own clicks — on macOS, the click-context capture used to occasionally attribute clicks to screenpipe’s own UI; it now skips its own process so click context only reflects what you’re doing in other apps.

week of june 22, 2026

new features

  • brain: memories and artifacts split into two views — the Brain section is now two focused panes instead of one mixed feed: a memories view with scalable multi-tag filters and inline editing in a dialog, and an artifacts view with refined cards grouped by origin. Memory previews now render markdown (parsed via AST, not behind a heavier renderer), so adding and editing memories is snappier. See second brain.
  • /search: one call returns related context with include_related=true — pass include_related=true alongside tags=… and the response now attaches a related block: the tags that co-occur with the ones you asked for, grouped by namespace (people, projects, workflows, …) and ordered by frequency. AI callers get the surrounding context in one request instead of several. Memory results also expose frame_id so you can jump straight from a memory to the exact captured moment via GET /frames/{id}. Bounded by a 5s timeout — auxiliary, so a slow store degrades to related: null instead of dragging out the search. See API recipes and search screen history.
  • “shape screenpipe” survey card in Help — a new card near the top of settings → help opens a short survey so you can steer where the product goes. Sits after send logs and getting started.

updates

  • Input Monitoring lives in Privacy now, not Connections — on macOS, Input Monitoring is a system permission that gates keyboard and click capture — it isn’t a “connection” like Claude or Slack. It’s been moved out of settings → connections (tile, dialog, chat connection chip) and into settings → privacy → capture rules, right below the capture clipboard / keyboard / clicks toggles it actually controls. Behavior unchanged.

bug fixes

  • /search no longer crashes on absurd relative-time inputs — a request like /search?start_time=99999999999999w (or any value large enough to overflow a Duration) used to panic inside the query-string parser, reset the connection, and surface in the logs. Out-of-range magnitudes now fall through to the existing “invalid time” 400 path. Every search and Rewind time filter funnels through this parser, so the fix covers them all. See search screen history.
  • retention loop survives a bad retention_days value — a persisted config from an older client could carry a retention_days large enough to underflow the cutoff date and panic the background retention task silently — so retention stopped deleting without any signal. The cutoff is now computed through a checked helper that logs and skips the cycle on overflow, and the configure endpoint now rejects values outside 1–36500 days with a clear 400. See privacy data flow.
  • /search?max_content_length=0 returns the full text again0 is the documented “opt out / full text” signal, but the HTTP /search handler was treating it as “truncate to zero” and returning just ...(truncated N chars)..., destroying the text the caller asked to see in full. MCP and CLI clients that forwarded max_content_length=0 were hit too. Zero is now a no-op, matching the MCP and CLI contract. See API recipes.

week of june 21, 2026

new features

  • inline “show, don’t tell” previews across settings — abstract toggles in settings → recording, storage, and notifications now render small grayscale illustrations that show what each knob actually does: a filmstrip whose density tracks capture frequency, a day-strip for audio capture mode, a per-piece view of what each retention mode drops, segmented tradeoff meters for power mode, an on-device-vs-cloud data-flow for transcription, and a sample toast for notification toggles. Visual only — every setting works the same. See search screen history, privacy data flow, and meeting transcription.
  • hover-to-highlight “where we look” preview in privacy settings — the redaction panel now shows a small mock app window beneath the surface toggles: hovering a row outlines the matching region of the sample screen, and turning a surface on covers that region with a redaction bar. Pairs with the existing “what to hide” preview so both axes (what is hidden / where we look) are legible without a real captured frame. See privacy filter.
  • form-field values redacted by default, plainer redaction UX — when smart text redaction is on, form field values (the surface where typed passwords and other real PII live, including values accessibility exposes but OCR never sees) are now redacted by default. The redaction panel is split into what to hide (categories — primary) and where we look (surfaces — advanced, collapsed), with plain-language labels: form field values, links inside app data, passwords & keys. Existing user configs are honored exactly. See privacy filter.
  • frontier models can no longer be assigned to background pipes — pipes are unattended and often high-volume, so a frontier model (Opus, GPT-5.5, *-pro, Fable — output ≥ $20/Mtok) used to be a cost bomb if your default preset was pinned to one. The app now coerces frontier presets to auto when assigning a model to a pipe, and the AI gateway enforces the same rule as a backstop on background traffic (downgrade by default, hard-reject via PIPE_FRONTIER_POLICY=reject). Interactive chat is untouched — you can still pick a frontier model for live chat. See pipes.

updates

  • plainer copy in recording & notifications settings — jargon like spectral analysis, silence-gap detection, clamshell, and raw CLI flags has been replaced with plain descriptions of what each toggle does (“groups audio into longer stretches before transcribing”, “laptop lid closed”, “tells you when…”). No behavior change.
  • live meeting notes: engine picker inline on the header row — the live engine selector now sits next to the live-meeting-notes toggle on the same row, and hides when the feature is off, instead of taking a separate labeled sub-row. See meeting intelligence.

bug fixes

  • frozen screen-capture streams recover on their own — on macOS, ScreenCaptureKit could wedge its output callback so every screenshot returned the same stale frame silently for as long as the wedge lasted (observed: 400+ byte-identical snapshots over 30 minutes while the user kept working). The capture loop now detects a flat frame-delivery sequence across captures and rebuilds the stream automatically, with a per-monitor cooldown to prevent thrash. Idle content and look-alike window switches still advance the sequence, so this can’t false-positive on a quiet screen. See search screen history.
  • timeline stays live after sleep or network changes — when the machine slept, the OS could tear down the timeline’s WebSocket while JS was frozen, leaving the socket reading open but never delivering frames. The timeline used to sit frozen on the last pre-sleep frame until you hit refresh, and reconnect gave up after ~10 attempts. A liveness watchdog now force-reconnects a silent-but-open socket, reconnect retries indefinitely with capped backoff, focus reconnects a stale socket, and the displayed frame auto-advances at the live edge as new frames stream in. See search screen history.
  • Brain finds HTML artifacts in fallback discovery — HTML files generated by pipes and agents are now included in Brain’s fallback artifact search (and search matches by filename and path), so HTML artifacts no longer go missing when the primary index doesn’t have them. See second brain.
  • per-row “optimize with ai” button on pipe cards is labeled correctly again — the always-visible per-row button on pipe cards is back to optimize with ai (was briefly relabeled edit while the underlying flow stayed the same), so the affordance users relied on is discoverable again. The button still reads the pipe prompt and recent run logs and suggests improvements. See pipes.
  • OAuth connections resolve the right named instance for Microsoft 365 and Pi — when you connected multiple named OAuth instances (e.g. personal + work), follow-up calls could resolve to the wrong instance and fail. The connection layer now picks the named instance you actually targeted. See connections.

week of june 20, 2026

new features

  • flat Rewind-style timeline — the timeline bar is now a constant-height horizontal strip with rounded-pill segments per app run and a small gap at each app or site transition. Browser sessions split into one segment per site (colored by site, not by browser), audio segments show as a thin white line above the bar, and tags appear as a thin amber underline. The playhead is a clean vertical line with a white time chip that no longer bobs while scrubbing. See search screen history.
  • capture frequency floor — a new slider in settings → recording guarantees a screenshot at least every N seconds (1–10s) regardless of whether anything changed on screen, so a still screen no longer goes uncaptured for minutes. Default auto follows the existing power-profile cadence; setting a value pins the floor and survives power-profile transitions. See search screen history.
  • “lean” retention mode — a new third option in settings → storage policy sits between media and all. Past the retention cutoff, lean reclaims media files and drops the heaviest text columns (accessibility element tree, raw accessibility JSON, keystroke/click stream) while keeping text search, transcripts, and memories intact — so the database file actually shrinks instead of just the on-disk media. See privacy data flow.
  • hide dock icon on macOS — a new macOS-only toggle in settings → display runs screenpipe as a menu-bar-only app with no Dock icon. The tray icon stays visible so the app is always reachable; default off, current behavior unchanged.
  • Grok CLI as an MCP client — a new Grok CLI tile in settings → connections one-click installs the screenpipe MCP server into Grok CLI, alongside Claude Code, Codex, Copilot CLI, and the other supported agents. See connections.
  • one-click “connect with Bee” — the Bee wearable connection now uses Bee’s native device-pairing flow (the same one bee login runs) instead of a manual Developer Token paste, so connecting is one click and there’s no more pointing at a portal that no longer exists. See connections.
  • PII redaction covers all remaining capture surfaces — the on-device redaction worker now also scrubs the per-element accessibility properties (including focused-field and password-field values that accessibility exposes but OCR never sees), ui_events element name and description, window titles, browser URLs, and the raw accessibility tree JSON served by /frames/:id/context. Frame-derived columns are propagated from a single detection pass, so the extra coverage adds no new model calls. See privacy filter.

updates

  • recording → audio settings, regrouped — the previously flat list of ~16 audio cards is now organized into four labeled sub-sections (transcription, meetings, devices & capture, voice & vocabulary) so related settings sit together. Purely presentational — every setting works the same.
  • search prioritizes keyword matches/search results now surface keyword matches ahead of secondary semantic results, and facet queries are capped so they can’t drown out the primary hit. See search screen history and API recipes.
  • per-pipe last-run badge is accurate again — the last run column on the pipes list now reflects real run history instead of showing never run for every pipe. The data was always there; the list now actually asks for it. See pipes.
  • HTML artifacts render in chat and Brain — AI- and pipe-generated HTML artifacts now render in chat (previously source-only) and expand correctly from the Brain section, both inside the same locked-down sandbox so artifact styles can never leak into and repaint the app window. See pipes.
  • background AI traffic back on Gemini flex tier — the AI gateway’s background head (pipes, daily summary, suggestions) routes through gemini-3.5-flash:flex again — measured roughly 3.3× cheaper than the previous head for comparable quality on background work. Interactive chat is unaffected.

bug fixes

  • OAuth connections work with a relocated data directory — users who moved their screenpipe data directory could complete an OAuth connect (Microsoft 365, Google, ChatGPT, …) but every follow-up call failed with “no credentials found”. Tokens were being written to one database and read from another. Tokens now always land in the configured data directory, and existing broken installs heal on next launch. See connections.
  • OCR works on the Linux CLI without a system tesseract — the npm @screenpipe/cli-linux-x64 package now bundles tesseract and English language data, so OCR works on Linux hosts that don’t have a system tesseract installed (matching what the AppImage and .deb already do). See search screen history.
  • Windows speaker transcriptions during meetings — Windows users were silently losing the far side of meetings when the meeting app rendered audio to an endpoint that wasn’t the captured one (Meet/Zoom output picker changes, auto-switched USB defaults). The device monitor now follows actually-rendering endpoints, watches for sustained “audio playing, no speaker chunks landing” during meetings, restarts output capture if it wedges, and surfaces a notification with a one-click restart action when speaker capture stays dead. See meeting transcription.
  • mic fails over to the built-in input when AirPods disconnect — if your pinned input device disconnected and was also the system default (typical AirPods setup), capture stopped entirely until you manually reconnected. The fail-over decider now picks any present input — preferring the on-board mic — instead of sitting idle, while still respecting user-disabled devices. See meeting transcription.
  • Windows audio: no more crash on non-default / virtual input devices — capturing from a device that reports zero channels (virtual cables, some non-default WASAPI endpoints) no longer panics the capture thread and takes the app with it. Also fixes two COM resource leaks in the 2-second communications-device poll on Windows.
  • /health no longer flips to 503 on machines with no microphone — RDP sessions, VMs, and desktops with speakers only used to mark the engine as degraded: audio after 120s, which also triggered a phantom “mic not capturing” notification. A missing input device is now reported as a benign idle state; real silent mics still degrade as before. See for developers.
  • media paths starting with ~/ actually load in chat — when the agent referenced a file as ~/Downloads/clip.mp4, the inline media player was stripping the ~ and trying to open /Downloads/clip.mp4. Home-relative paths (and Windows ~\\ paths) now expand correctly, so files referenced with a tilde render inline.
  • timeline delete: inline confirm, loading spinner, no double-click trash — selecting a range and clicking the trash on the timeline used to require two clicks (a centered modal rendered behind the floating toolbar) and gave no feedback while the delete ran. The confirm is now inline next to the trash, the button shows a spinner while deleting, and the modal stacking footgun is gone. See search screen history.
  • timeline no longer crashes on frames without a devices field — guarded against an undefined devices array that could throw TypeError and crash the entire timeline render under certain stream conditions. See search screen history.
  • screenpipe:// deep links and notification “open” actions land on the right window — pipe stop, chat sidebar, and pipes-page stop flows now agree on running state, so stopping a pipe from any surface succeeds on the first click and doesn’t leave a stale “running” indicator. See pipes.
  • calendar month nav stops at today — the timeline’s date picker can no longer page into impossible future months. See search screen history.
  • AI gateway: long tool-call IDs and Gemini flex region errors — fixed two top gateway crashes: OpenAI was rejecting tool-call IDs longer than 64 characters (which GLM and Gemini routinely mint), and Gemini flex requests in unsupported regions used to fail outright. Long IDs are now remapped to a short stable form across the assistant and tool turns, and flex-unsupported responses retry the same model at standard tier instead of erroring.
  • embedded browser hides itself behind modal dialogs — opening a modal dialog while the in-app browser was visible used to leave the native webview painted on top of the modal. The webview now hides while a modal is open and restores when it closes. See pipes.

week of june 19, 2026

new features

  • home grid refocused on 4 high-signal cards — the home page now ships a curated set of cards: Automate My Work, Day Recap, Time Breakdown (promoted), and a new Missed To-Dos card that surfaces action items from the last few days you may have missed. The longer discover tier is gone — clicks were going to the top tier anyway. Prompts for the kept cards were tightened too. See home.
  • Automate My Work actually builds the automations for you — the Automate My Work card now analyzes your recent activity and creates three read-only, hourly automations tailored to your workflow, instead of just suggesting pipes and waiting for you to confirm each one. The created pipes use the reader permission, so they can never send, post, or modify anything. See pipes.
  • meetings auto-name speakers from on-screen name tags — meeting summarization now reconciles generic labels like speaker 1 or unknown against the name tags video-call apps render on screen, using OCR frames screenpipe already captures. It only renames on unambiguous evidence and never prompts you. See meeting intelligence.
  • one-tap push of a meeting summary to a connected app — after a meeting summary is saved, screenpipe now lists the apps you’ve actually connected (ranked by the apps you used in the meeting) and asks before pushing — as one-tap action buttons on the meeting notification, or as a message in chat. Nothing leaves your machine until you pick a target. See meeting intelligence.
  • hover the timeline to preview frames — hovering the bottom track on the timeline now shows a thumbnail of the frame at that point, so you can scrub to the right moment before clicking. See search screen history.
  • timeline date pill shows the time — the date pill at the top of the timeline now includes the time of the visible position, so you always know what moment you’re looking at without zooming in.
  • lean toggles for /activity-summaryGET /activity-summary now accepts include_key_texts, include_apps, and include_windows query params. Set any to false to omit that section from the response — useful for pure time-tracking sweeps across many ranges where the text-heavy key_texts is the biggest token cost. Defaults are unchanged. See API recipes.
  • screenpipe profile CLI command — a new screenpipe profile subcommand prints per-stage pipeline timing (capture, OCR, audio, embed, write), so you can see where time is going on your machine without attaching a profiler. See CLI reference.
  • per-pipe logs are archived into dated folders — old pipe logs are now rotated into dated subfolders instead of growing forever in a single file, so it’s easier to find the run you care about and easier to clean up. See pipe debugging.

updates

  • Zoom supports multiple OAuth accounts — the Zoom connection now lets you connect more than one Zoom account on the same install (personal + work, for example), instead of overwriting the previous one. See connections.
  • content filter chips moved to the top of search results — the chips that filter search results by content type are now anchored to the top of the results area, so they don’t shift around as results stream in. See search screen history.
  • icon-only copy button in notification popups — the copy button in notification popups is now a clean icon instead of an icon + label, reclaiming horizontal room for the message itself.

bug fixes

  • Screenpipe Cloud transcription falls back correctly for paid Basic users — paid Basic plan users hitting the cloud transcription path used to fail back to a less capable lane in some cases. Cloud transcription now falls back on the right tier for your plan.
  • cloud entitlement re-verifies when you refocus the app — switching networks, waking from sleep, or being away long enough for the token to expire could leave the app in a stale signed-in state. Bringing the window to focus now re-verifies your cloud plan, so chat, transcription, and pipes use the correct tier immediately.
  • chat shows a clear, retryable error when the cloud gateway is unreachable — when the cloud gateway is down or unreachable, chat now surfaces a clear message with a retry button instead of failing silently or hanging.
  • background pipes don’t silently no-op when a tool call streams — the AI gateway used to drop streamed tool_calls chunks in some cases, so background pipes finished without ever executing the tool. Streamed tool calls are now forwarded intact.
  • unread indicators stay consistent across chats, pipe runs, and restarts — the unread dot would sometimes stick after you’d already read a chat, or clear when you hadn’t, especially after switching chats, after a pipe run posted into chat, or after restarting the app. Unread state is now consistent in all three paths.
  • tag search no longer freezes on large databases — searching by tag on a large memory database used to freeze the UI and sometimes return no results. The query is now indexed properly; tag search is responsive and complete on big DBs. See search screen history.
  • multi-language transcription selection now persists — picking multiple transcription languages used to reset on relaunch. Your selection now persists across restarts. See meeting transcription.
  • black / green corrupt frames are dropped, encode dimensions normalized, pasted screenshots accepted — capture now rejects the all-black / all-green frames some drivers emit on wake or resolution change, normalizes encode dimensions so frames don’t get stretched, and the feedback dialog now accepts screenshots pasted from the clipboard.
  • meeting notes editor: resizable images, escaped HTML attributes, harder sync — images embedded in meeting notes can now be resized in place, HTML attributes are properly escaped (no more broken markup from quotes in transcripts), and the editor state syncs more reliably when you switch notes quickly.
  • pipe runs tab no longer shows duplicate output — long-running pipes sometimes rendered the same chunk twice in the runs tab. Output now renders once. See pipes.
  • Windows ARM64 build no longer fails with STATUS_DLL_NOT_FOUND — the Windows ARM64 build no longer fails to start because OPENBLAS_PATH wasn’t being inherited by the build. ARM64 Windows users can install and launch normally.
  • phantom Safari meetings stopped — Safari page titles that happened to match meeting-detection patterns no longer create phantom meeting notes. See meeting intelligence.
  • manual sync surfaces backend errors instead of a false success — clicking sync used to flash “synced” even when the backend rejected the call. Manual sync now reports the real outcome.
  • “open note” and HD button open the live note — opening a note from the meeting card or the HD button now opens the live, editable note instead of a stale snapshot.
  • redact: missing target tables are disabled, not retried forever — if a redaction target table doesn’t exist on your install, screenpipe now disables that target instead of retrying it every cycle and filling the log.
  • agent file preview resolves relative paths correctly — clicking a source citation from the in-app agent (for example .pi/skills/screenpipe-api/SKILL.md) used to fail with a “file not found” error because the viewer looked in the wrong directory. The viewer now resolves relative agent paths, falls back across the chat session dir / data dir / home / pipe dirs, and shows the resolved path in the breadcrumb.
  • duplicate deep-link events are ignored — opening a screenpipe:// link twice in quick succession no longer triggers two handlers (and two follow-up prompts) for the same action.

week of june 18, 2026

new features

  • PII removal on by default for new installs — new desktop installs now ship with on-device PII removal enabled by default. The lightweight inline redactor scrubs emails, phone numbers, SSNs, card numbers, API keys, and connection strings as text is captured — no large model download, no startup cost. Existing installs keep your current choice. See privacy filter.
  • consistent pseudonym tokens for redacted PII — an opt-in redaction mode replaces [PERSON] / [EMAIL] placeholders with stable per-install tokens like [PERSON_1a2b3c4d], so the same value always renders to the same token. Your timeline stays correlatable (“same person mentioned across these meetings”) without the raw value ever being recoverable. Toggle under settings → privacy → fields to redact. See privacy filter.
  • Slack: post as you, no bot installed — the Slack connection now uses a user-token OAuth flow, so messages send as you and no bot user is added to the workspace. Pick send only or send + read at connect time. Existing webhook-based connections keep working until you reconnect. See connections.
  • browse and install MCP servers from the official registry — the custom MCP server card in settings → connections now has a browse registry button that searches the official MCP registry, shows remote / local / catalog badges, and one-click pre-fills the existing add / auth / test / save editor. See connections.
  • browse and install Agent Skills from a curated registry — the Skills card now has a browse skills dialog backed by a curated catalog (Anthropic + OpenAI skills: pdf, xlsx, docx, pptx, transcribe, playwright, sentry, …). Picking a skill downloads it atomically into your skills folder. See connections.
  • Obsidian as a memory-sync destination — alongside Claude Code (CLAUDE.md) and Codex (AGENTS.md), screenpipe can now sync memories into an Obsidian vault as a single screenpipe-owned note with YAML frontmatter and tags, rewritten every 5 minutes so memories live inside your Obsidian graph. Enable on the Obsidian connection card. See connections.
  • clickable source citations in chat open a unified preview sidebar — clicking a source card under a chat answer (e.g. “Read: SKILL.md”) now opens that file in the right-hand markdown preview sidebar instead of being dead text. Code blocks across chat and the preview share one theme-aware highlighter (light + dark) with a copy button.
  • token-efficient format=outline for the element APIs/elements and /frames/:id/elements now accept ?format=outline (alias tree), returning an indented, dedup’d view that keeps only text-bearing nodes, collapses repeats as ×N, hoists frame context into a header, and flags off-screen elements inline. Roughly 75–80% fewer tokens than the default JSON when an agent pastes the response into context. Existing callers without the param get the exact same JSON. MCP search-elements and get-frame-elements use this format by default. See API recipes.
  • deterministic browser snapshot + /act endpoint — the browser snapshot now stamps every actionable element with a stable #eN ref (Playwright-MCP style) and reports inline state (disabled / checked / expanded). A new POST /connections/browsers/:id/act {ref, action, value?} endpoint runs click / fill / clear / check / uncheck / select / hover / focus against that ref. Works against both the Chrome extension and the built-in browser; React/Vue controlled inputs register correctly. See API recipes.
  • meeting summarizer can read visual content via the cloud media model — after the transcript and OCR pass, the in-app summarize with AI flow and the background meeting-summary pipe can optionally send up to four keyframes to the cloud media model, so diagrams, charts, whiteboards, slide figures, UI demos, and screen-shared video make it into the summary. Falls back cleanly when cloud media analysis isn’t available. See meeting intelligence.
  • remote in-app announcements — screenpipe can now show a one-time announcement (news, tip, or reminder) as a centered modal, a top / bottom banner, or a small corner card. Each announcement is dismissed per-id and never returns.

updates

  • interactive chat auto-routes to a fast model; background to a smart one — the auto preset now picks a fast model (~1s first token) for interactive chat and a higher-reasoning model for background work (pipes, suggestions, daily summary). Vision turns are unaffected. Net result: chat feels faster, background quality goes up.
  • redesigned pipe cards — every pipe in my pipes is now an obviously openable card with a clear primary action; the dead status square and bare-dash filler are gone. See pipes.
  • built-in browser runs headless for background pipes — scheduled pipes that drive the built-in browser no longer fail when the browser sidebar isn’t open. The webview is lazily created off-screen, scrapes return real results, and revealing the sidebar adopts the same instance. Background scrapes never paint over your current view on Windows.

bug fixes

  • don’t sign-out or stop recording on a transient cloud-token blip — a transient secret-store read failure used to read as “no account / no plan”, stop recording mid-meeting, and show the sign-in wall (flapping on every settings change). The entitlement gate now stays open for an account we have evidence was entitled, keeps recording, and self-heals once the token comes back. A real sign-out is unchanged.
  • enterprise sign-in no longer gives up after one check — for enterprise members whose plan is still being provisioned at sign-in (eager invite, lazy upgrade, admin re-invite, Stripe webhook in flight), the entitlement gate now re-verifies in the background for up to ~7 minutes instead of stranding you behind the wall. The moment the backend entitles you, the app unlocks and capture resumes — no relaunch, no manual refresh.
  • fewer “database disk image is malformed” / “database locked” cases — secret-store reads (cloud token, OAuth refresh, keychain toggles, ChatGPT pipe token) used to open and drop their own connection pool against the same database the engine writes to, racing engine writes. The secret store now shares one process-wide pool with matching settings and a warm persistent connection.
  • meetings end correctly when they go quiet — a detected meeting that lost its call-control UI (call ended, window minimized, tab switched) could stay “ongoing” forever because the system-audio output tap writes silent chunks continuously. The keep-alive now requires real voice activity, so a quiet call ends after the normal grace and the note’s end time and auto-summary fire. Genuinely audible screen-shares stay alive as before. See meeting intelligence.
  • chat tag autocomplete and /memories?tags=… no longer 500 — a single memory row with empty, NULL, or non-JSON tags used to make the tag query throw malformed JSON and kill every tag autocomplete call (observed firing ~14.8k times/day on a real install). Malformed rows now expand to nothing instead of erroring. See search screen history.
  • Microsoft 365 and Teams connect works again — Microsoft Entra had been rejecting the OAuth call with AADSTS90023 Unsupported 'prompt' value. Microsoft endpoints now send a single select_account value, which still shows the account picker and prompts for consent on first connect. See connections.
  • built-in browser eval results larger than ~1KB no longer get truncated — the agent’s “navigate and read the page” path used to silently truncate large results into invalid JSON, so reading basically any real page failed. Large results now stream back as base64 chunks and reassemble intact.
  • built-in browser navigations show up in the right chat — when the in-app agent navigated the built-in browser for the on-screen chat, clicking to open the sidebar sometimes showed nothing because the navigation event was tagged with a session id that didn’t match the chat’s current state. The sidebar now also accepts the session id the chat’s own agent runs under. Other chats and background pipes stay isolated.
  • DRM detection covers the native Apple TV app — the macOS Apple TV app reports its name as just “TV”, which didn’t match the old “apple tv” pattern, so screenpipe kept recording DRM video from it. “TV” is now matched exactly (no false-positives on names like “Plex TV” or “3ds Max”).
  • Windows installer no longer aborts with “unable to uninstall” — the pre-uninstall hook’s process-kill scan was killing the live uninstaller process itself. It now skips the running uninstaller while still terminating every other app process.
  • meeting-summary pipe note updates save again — the meeting-summary pipe and the in-app summarize fallback were calling the notes endpoint with the wrong HTTP verb, so saves were 404’ing. They now use the correct verb, and an idempotent migration fixes already-installed copies of the pipe without touching your other edits. See pipes.
  • meeting “copy” uses the native clipboard API — copying a meeting transcript / summary now uses the standard clipboard API path and works reliably across the app. See meeting intelligence.
  • Windows desktop build restored — a transitive dependency had broken the Windows DirectML build chain; the desktop app and release builds compile and ship again on Windows.
  • /stream/frames and remote-frame payloads expose a neutral text field — both wire surfaces still labelled the captured screen text as ocr_text, even though most captures are accessibility-derived, not OCR. They now carry a neutral text field; ocr_text is kept as a deprecated alias so existing stream consumers don’t break. See API recipes.

week of june 17, 2026

new features

  • screenpipe-cloud transcription for every paid plan, plus a meetings-only capture mode — screenpipe-cloud transcription now defaults on for Basic, Business, Enterprise, and Lifetime users on macOS, Windows, and Linux (not just macOS / cloud-subscribed). New desktop installs also default to a new meetings-only audio capture mode that only persists and transcribes audio while a meeting is active — quiet hours don’t fill your timeline. Existing installs keep their current “always capture” setting; switch in settings → recording. See meeting transcription.
  • MCP can create and run pipes — the screenpipe MCP server (used by Claude Desktop and other MCP clients) now exposes create-pipe, list-pipes, run-pipe, and pipe-logs tools, plus a screenpipe://guide/pipes resource with the canonical pipe-creation guide (frontmatter, schedule syntax, presets, lifecycle). Agents can author scheduled automations end-to-end over MCP. See MCP server and pipes.
  • native Zendesk OAuth — the Zendesk tile in settings → connections now supports a one-click “Connect with Zendesk” OAuth flow per subdomain. Manual email + API token entry stays as a fallback. See connections.
  • one-click “open note + HD” on the meeting notification — the meeting-detected notification’s two adjacent buttons collapse into a single open note + HD action that opens the live note and starts HD capture together. The standalone open note button stays for users who only want the note. Gated by the existing HD default = “Ask me” setting. See meeting intelligence.
  • redesigned pipes list with run / edit / remix — each pipe is now a brand-aligned card with an always-visible action bar (run, edit, remix, more, enable). Edit opens a chat to tweak the pipe in plain English (was hidden in a hover-only menu); remix creates a new pipe based on this one without mutating the original. See pipes.
  • discoverable pipe creation from the empty state — the “no pipes installed” state now leads with one-click example chips that build a pipe through the generation flow, and the bottom create input is a titled, explained “create your own pipe” box with a clear submit arrow. See pipes.
  • resizable live transcript panel in meeting notes — drag the grip on the top of the live meeting transcript drawer to shrink it (down to 120px) or grow it (up to 70vh). Double-click resets to the default; arrow keys nudge it; chosen height persists across sessions. See meeting intelligence.
  • richer pipe alert notifications — pipe-emitted notifications now include a copy button and source links so you can grab the alert text or jump straight to its source from the toast.

updates

  • meeting summarizer also reads the screen (OCR) — the in-app meeting summary and the background summary pipe now query OCR alongside transcripts, so slide content, on-screen documents, demos, and on-screen name tags (handy for naming attendees who never spoke) make it into the summary. See meeting intelligence.
  • chat tag and speaker filters scale and search — the tag and speaker pickers in chat now stay snappy with large lists and support inline search, including in the standalone chat window.
  • enterprise build registers its own deep-link scheme — the enterprise desktop app now registers screenpipe-enterprise:// instead of sharing screenpipe:// with the consumer build. On machines with both installed, login and calendar deep links route to the build that initiated them instead of whichever Launch Services picked. Consumer scheme is unchanged.

bug fixes

  • fewer transcription crashes during long meetings — fixed the recurring compute_fbank panic that dropped speaker diarization for a segment when speech was shorter than one 25 ms analysis window, and chunked the macOS Metal (Parakeet MLX) transcription path to 30 s so a single bad chunk no longer kills an entire batch’s transcript. Both were top transcription errors in the field. See meeting transcription.
  • screen capture during meetings no longer gets deduped away — when a meeting is detected, visual-change triggers (slide advances, screen-share, demos) now bypass the accessibility-tree dedup that was silently dropping them, so shared screens are actually captured at the visual-change cadence instead of falling back to one frame every 30 s. Normal-desktop capture is unchanged.
  • transcripts appear in the timeline during static-screen meetings — when a video call’s screen barely changes and screenshots get deduped for minutes, transcripts now appear at the audio’s own moment in the timeline (as an audio-only entry) instead of being attached to a distant frame or, with screen capture off, dropped entirely. The stretch becomes a scrubbable, transcript-bearing segment. See search screen history.
  • orphaned audio chunks are recovered automatically — when the database write pool was saturated, audio files could land on disk with no matching audio-chunks row, never appearing on the timeline and never being transcribed. A reconciliation sweep now durably re-inserts dropped chunks once the write pool recovers, so they show up and get transcribed. See meeting transcription.
  • timeline jumps from chat sources and deep links land on the right moment — clicking an “open in timeline” citation, an inline chat timestamp link, a screenpipe:// timeline/frame deep link, or a meeting-notes replay strip now jumps to the captured moment whether it’s same-day or cross-day, instead of no-op’ing same-day or landing at the start of the target day. See search screen history.
  • recording auto-restarts when the database write queue wedges — sustained disk-I/O write wedges (which used to leave the recorder silently stuck for 10–15 minutes while the tray still showed “healthy”) now auto-restart the recording engine, with a circuit breaker so a genuinely malformed database can’t restart-storm. The write-ahead log also gets periodic checkpoint maintenance in the desktop app, which previously only ran in the standalone CLI — preventing the unbounded WAL growth that drove much of this corruption class.
  • sidebar and recording buttons clickable on a collapsed timeline — fixed an overlay bug where the sidebar and recording controls became unclickable when the timeline was collapsed.

week of june 16, 2026

new features

  • reasoning effort control in chat — the chat composer now has a Brain-icon selector to pick low / medium / high reasoning effort, and it works across every preset provider (screenpipe-cloud, ChatGPT, Anthropic, OpenAI BYOK gpt-5 / o-series, native Ollama thinking models, and custom OpenAI-compatible endpoints). The control self-disables on models that don’t support thinking, and the saved level is reapplied on every cold start so Pi reasons at your chosen level from the first turn.
  • token-efficient API responses for agents/search, /elements, and /frames/:id/elements now accept opt-in ?format=csv / ?format=tsv and ?fields=... parameters, returning a columnar table with just the columns you ask for. Cuts roughly 70% of tokens on list-shaped results when an agent (Pi, Claude Code, Copilot CLI, …) pastes the response into context. Fully backward compatible: no params returns the exact same typed JSON. See API recipes.

updates

  • flatter PII worker CPU curve — the on-device PII redaction worker used to drain its backlog in back-to-back bursts that could spike screenpipe to 200%+ CPU for a few seconds at a time. The worker now runs on a duty-cycle cooldown that holds it to at most ~40% of wall-clock and caps each text-model burst near 2 cores, so the same backlog drains as a low flat band instead of a visible spike. No behavior change to what gets redacted. See privacy filter.
  • lower idle CPU and allocations across capture, scheduling, and monitoring — a sweep of small steady-state wins for 24/7 capture: cached accessibility app-exclusion filters, reused UI-event window filtering, reused audio RMS computation, throttled audio-gap warnings, gated analytics timers, relaxed events-websocket ping cadence, backed-off missing-input recovery probes, and removed per-tick allocations in the pipe scheduler, schedule monitor, permission monitor, resource monitor, and workflow classifier. No behavior change — just less work per second on the hot path.
  • owned-browser sidebar now shows navigations from the pipe you’re watching — pipe runs now tag their owned browser sessions with a stable pipe:<name>:<execId> id that matches the frontend’s session id, so when you open a running pipe its sidebar correctly streams that run’s browser navigations. Unrelated chats still don’t see background pipe traffic.

bug fixes

  • Windows audio engine no longer hangs at boot — on both Windows x86_64 and Windows ARM64, the ONNX Runtime upgrade in the previous release could deadlock inside the audio engine’s runtime load, freezing the building_audio boot phase forever — the UI came up but recording, VAD, and diarization never started and port 3030 never bound. The audio engine now links ONNX Runtime at build time on Windows instead of loading it dynamically, and a 30-second watchdog around session init means any future runtime hang degrades gracefully (diarization off, fallback VAD) instead of bricking startup. See meeting transcription.
  • chat keeps streaming when you open Settings — opening Settings mid-response no longer pauses or drops the in-flight chat stream; it continues in the background and the tokens are all there when you switch back.
  • actionable Ollama errors before the Pi install prompt — when chat is pointed at a local Ollama endpoint that isn’t reachable (Ollama not running, wrong port, model not pulled), the composer now surfaces the specific Ollama error first instead of jumping straight to “install Pi?”, so the fix is obvious.
  • Account page no longer shows “active” plan under a “not logged in” header — if the encrypted cloud token failed to hydrate (keychain denied, secret store cleared), the Account settings page could simultaneously render “not logged in” and a “Screenpipe Business · active” card because the card was keyed off a plaintext subscription flag. The active-plan card now requires a live session token to match the header, and the inconsistent state can no longer be persisted to disk.
  • Vertex Gemini tool calls stop 400-ing for affected users — assistant tool calls coming back from Vertex MaaS without ids are now backfilled and re-paired with their matching tool results, fixing a recurring 400 from the AI gateway (SCREENPIPE-AI-PROXY-C) for ~164 users. No-op for healthy traffic.
  • no more PostHog event storm after the machine wakes from sleep — the analytics loop was firing ~100× too often (every ~216 s instead of every 6 h) and replayed every missed tick back-to-back when the machine resumed from a long sleep, producing roughly a thousand failing requests in a burst. The interval is correct again and missed ticks now coalesce into a single tick on resume.
  • bare-CLI usage no longer overcounts users — running screenpipe from the terminal minted a fresh random analytics id on every process start, inflating CLI / Linux / Windows user counts ~1.6–2× versus distinct IPs. Bare-CLI runs now use the same persistent per-machine id the sync layer already uses, so a restart is the same user. Desktop app counts were unaffected. Forward-only: historical counts will compress toward true values as the new CLI rolls out. See the CLI reference.

week of june 15, 2026

new features

  • bring-your-own MCP servers in pipes — pipes can now call the same custom HTTP MCP servers you’ve wired up in settings → connections (Brave Search, Linear, Notion, internal company MCPs, …), not just chat. Tools resolve through the existing connection so credentials stay in the secret store. See pipes and connections.
  • dismiss chat suggestions, calmer composer layout — a single inline X on the chat composer hides both the follow-up questions and the connection-suggested prompts in one click, with a new settings → display → show chat suggestions toggle to bring them back. The + attachments / filters control and the model dropdown have also moved into their own row under the input box, so the text box itself only holds your prompt (Claude-style).
  • CLI-specific feedback surveyscreenpipe survey and the periodic in-CLI nudge now open a CLI-dedicated survey (tagged with your CLI version and OS) instead of the generic one, so terminal-only feedback is no longer lumped in with the desktop app. See the CLI reference.

updates

  • lighter audio dedup and memory sync on the hot path — the “is this transcription a near-duplicate of the last 50?” check used to re-tokenize the incoming chunk on every comparison (24/7 while recording), and the memory sync was cloning every memory UUID into an owned set just to read it. Both paths now normalize once and reuse, cutting steady-state CPU and allocations during long recording sessions with no behavior change. See meeting transcription.

bug fixes

  • PII redactor no longer false-flags strings like x@y.c|m as emails — the on-device email pattern had [A-Z|a-z] in the TLD class, which (inside a character class) treats | as a literal character — so any “almost-email” with a pipe in the TLD was detected as an email and redacted. Pattern is now [A-Za-z]; real email detection is unchanged. See privacy filter.
  • Windows installer no longer fails on locked files during upgrade — the NSIS pre-install / pre-uninstall hooks now share a hardened process-kill macro (UTF-16+BOM PS1 for non-ASCII install paths, WOW64 redirection disabled so System32 resolves to the real 64-bit PowerShell, 30 s timeout so the installer can’t hang, longer post-kill settle). Upgrades on systems where the old screenpipe.exe is still alive now succeed instead of aborting mid-install.
  • Windows ARM64 build restored — a Rust dependency bump silently broke the Windows DirectML compile path, so the previous release (v2.5.38) shipped without a Windows ARM64 binary. The build is back; Windows ARM64 users get auto-updates again.

week of june 14, 2026

new features

  • background AI traffic routes through Gemini flex tier (~50% cheaper) — latency-tolerant traffic (pipes, daily summary, suggestions, background chat) can now opt in to Gemini’s flex tier for roughly half the input/output price at comparable quality. Interactive chat is unaffected, and the gateway transparently falls back to standard-tier models if flex is throttled. Cost is attributed to the flex variant in your usage view so the discount shows up in dashboards.
  • separate notification toggle for power-mode changessettings → notifications now has its own Power mode changes switch so you can silence the “battery saver kicked in” toast without also muting capture-stall alerts. Critical low-battery capture-paused alerts still fire either way.

updates

  • extra cloud AI preset copies can be deleted — Pro users with duplicated or imported screenpipe-cloud presets can now delete the extras. Only the last remaining cloud preset is still protected from deletion, so you can’t accidentally lock yourself out of cloud models.
  • GPT-5.5 models added to the OpenAI preset fallback listgpt-5.5 and gpt-5.5-codex are now selectable in the OpenAI preset when model discovery falls back to the built-in list. Also cleans up a duplicate ChatGPT preset that could appear on first launch.

bug fixes

  • PII redaction now covers the main search index — the async PII reconciliation worker was rewriting redacted text in OCR, transcripts, accessibility text, UI events, and per-element text, but missed the consolidated full-text column that backs screenpipe’s primary search index. Raw PII was gone from component columns but still searchable. That column is now redacted on the same pass and the search index re-indexes automatically. See privacy filter.
  • clearer errors when the bundled pi coding agent fails to install — if the embedded pi agent failed to install (for example, when bun crashed on an unsupported CPU or was killed by the OS), the resulting error message was sometimes completely empty, leaving chat silently broken. Install failures now report the exit code or signal, tails of both output streams, and the bun version and command line, so failures are diagnosable from the log alone.
  • no more per-minute 500 errors when calendar providers aren’t connected — when no calendar provider was connected (no Google account linked, or no OS calendar permission), the home window’s 60-second calendar poll was logging two HTTP 500s every minute, forever. Not-connected is now a normal empty response instead of a server error, and missing OS permission returns a structured auth-required response. See connections.
  • macOS standalone chat window no longer overlaps the traffic-light buttons — added left padding to the chat header in macOS standalone mode so the title and controls clear the red/yellow/green window buttons.

new features

  • keep computer awake while recording — a new toggle in settings → recording keeps the machine awake so capture and pipes keep running when you’d normally see the screen sleep. Lives in the power settings group with copy that spells out exactly what it holds open.
  • apply & restart bar in settings — recording, privacy, and storage settings now show a full-width floating bar at the bottom of the page when there are unsaved changes that need a restart, so it’s obvious when you’ve changed something and what to do next. Changing the data directory now also actually restarts the capture engine.
  • tag filters in chat — the chat composer now has a tag picker that unions screen, audio, and memory tags into one suggestion list. Typing # opens tag-only suggestions, sections collapse when empty, and each suggestion shows where it came from (frames, audio clips, memories). See search screen history.
  • device connection suggestions in chat composer — the composer now surfaces connection chips for the integrations you have wired up, so kicking off “ask Notion…” or “ask Linear…” is a single click. See connections.
  • notification bell moved into the Pipes view — notifications are pipe output, so the bell now lives in the Pipes view tab bar (next to My Pipes / Discover) instead of the global top-left chrome strip. The chrome strip is reduced to sidebar toggle, search, and recording status. See pipes.

updates

  • default AI preset is now “auto” instead of claude-opus-4-8 — new installs and first-time pro sign-ins get the default chat preset on auto (the gateway picks the best allowed model per turn) instead of pinning Claude Opus 4.8. Existing installs are unchanged.
  • AI gateway caches conversation history (~80% cheaper agentic turns) — long agentic conversations now cache the entire conversation prefix per turn, not just the system prompt, so each follow-up re-reads prior history at roughly 0.1× input price on Claude, GPT-5, and Gemini 2.5. Usage telemetry attributes cache reads and writes correctly, so dashboards reflect the real cost.
  • cost log attributes the served model, not “auto”auto and fallback requests now log the model that actually served the turn (read from the gateway’s response header) instead of the literal string auto. Per-model spend in your usage view is now accurate and previously-flat $0.01 unknown-model estimates are gone.
  • lower Windows background CPU — cached focus-monitor rectangles, fewer idle hook timer wakeups, no first-frame polling on Windows Graphics Capture, and a cached audio-input STT device name cut quiet-time CPU on Windows without changing capture behavior.
  • lighter meeting detector on hot paths — the meeting/browser detector no longer re-lowercases the same app names on every check, trimming a small but constant background cost during long sessions.
  • artifacts API converged under /artifacts — local pipe outputs and cloud artifacts now share one API surface and one renderer, so a pipe-authored SOP and a cloud SOP look the same in the Brain section. Legacy /outputs and /pipes/artifacts routes are gone; pipes built against them should switch to /artifacts. See API recipes and pipes.

bug fixes

  • Linux auto-update works again — Linux clients had been failing auto-update with “signature verification failed” since March because the AppImage was repacked after the updater signature was generated. The post-repack re-sign step is back, so Linux users stuck on older builds will pick up updates again on next check.
  • OCR works on Linux without a system tesseract install — the Linux AppImage now bundles eng.traineddata and resolves it from inside the bundle. On hosts without tesseract-ocr installed, screen text is indexed again instead of being silently dropped.
  • capture restarts when it silently wedges — if disk I/O stalled long enough that the database write queue saturated, capture could appear “Running” in the tray while persisting nothing for an hour or more. A new watchdog now restarts the capture engine when the loop is still attempting frames but nothing has been written for over two minutes (with a 5-minute cooldown so it can’t loop).
  • no more rare macOS audio crashes during long sessions — fixed a use-after-free in the macOS Process Tap audio path where a CoreAudio callback could fire on freed memory during teardown, and closed a remaining grace-window race in the same path. Long live-meeting sessions are stable again on macOS.
  • embedded pi agent no longer touches your global ~/.pi/agent — screenpipe’s bundled pi coding agent now stores its config, credentials, sessions, and extensions under the screenpipe data directory instead of your standalone pi install. It also prefixes bundled tool names so a globally-installed extension like pi-web-access no longer collides with the bundled web_search tool and kills the pipe at startup. See pipes.
  • PII redaction now covers per-element accessibility text — the async PII redactor was rewriting OCR, transcripts, accessibility text on frames, and UI events, but skipped the per-element accessibility/OCR table, so raw element text kept PII verbatim and stayed queryable. That column is now redacted with the same destructive overwrite pattern. See privacy filter.
  • multiple chat state fixes — rapid clicks on New chat no longer create duplicate empty rows; switching between chats restores the correct model/preset for each; “ghost” chats and a stuck loading state after sending a message are gone; and owned-browser navigation events no longer leak into the wrong chat when you switch quickly.
  • broken replay frames are hidden in meeting notes — replay frames with missing image data no longer show up as broken placeholders in meeting notes. See meeting intelligence.
  • meeting notes no longer get clipped in narrow windows — fixed a layout bug where long meeting titles or attendee lists could overflow the home content pane and get clipped at the window edge (most visible in macOS split screen with the sidebar open). The pane now shrinks correctly and rows truncate as intended. See meeting intelligence.
  • sidebar no longer overlaps the icon strip in macOS fullscreen — fixed a regression where sidebar content could overlap the top-left icon strip when the app was in macOS fullscreen, plus alignment fixes between sidebar nav items and top bar icons.
  • scheduled pipes pick the right weekday again — fixed a weekday-to-number mapping bug in the human-readable schedule parser so days like “Mon” map to the correct cron weekday and scheduled pipes fire on the days you actually picked. See pipes.
  • Brain artifacts list scrolls smoothly with many artifacts — the Brain section now uses a full-height layout so virtual scrolling engages, and the redundant outer scrollbar and excessive bottom padding are gone.
  • pipe artifacts list hides implementation files — when a pipe doesn’t explicitly declare its artifacts, the fallback scanner now only surfaces user-facing files (Markdown documents and common image formats) instead of .DS_Store, .json, .ts, and log files. See pipes.
  • custom vocabulary bulk-import button uses the right icon — the bulk-import button in custom vocabulary now uses a download icon (data coming into the app) instead of an upload icon, matching standard import conventions. See meeting transcription.
  • daily cost cap no longer trips D1 CPU limits — the cloud AI gateway’s per-device daily-cost cap is now an O(1) lookup against a running daily total, instead of summing the full cost log on every request. Heavy users no longer see request failures attributable to “D1 DB exceeded its CPU time limit” during high-volume agent loops.

week of june 12, 2026

new features

  • native macOS login sheet — signing in now uses Apple’s ASWebAuthenticationSession, a sandboxed Safari sheet anchored inside the screenpipe window, instead of bouncing you out to the system browser and back through a deep link. Faster, no window jumping, and the app re-focuses cleanly after auth.
  • HubSpot connection — one-click OAuth — the HubSpot tile in settings → connections now uses a one-click OAuth flow (contacts, companies, deals — read + write) instead of a manual Private App token. Existing token-based connections keep working, and the manual token is still available behind an advanced disclosure. See connections.
  • meeting note editor — slash commands, format toolbar, task lists, and a live waveform — the meeting note editor picks up a / slash command menu, a selection-based format toolbar, GitHub-flavored task lists (markdown round-trip), per-segment transcript timestamps with inline search highlighting + match counter (cmd+F), and a monochrome “dancing sticks” waveform replacing the static mic icon on every live surface. See meeting intelligence.
  • decluttered sidebar chrome — the sidebar corner collapses from 13 elements across three rows into a single 4-element strip: collapse, search, a recording-status dot (with a popover for per-device pause/resume and meeting start/stop), and the notification bell. Collapsing the sidebar now hides it entirely instead of leaving a 72px icon rail, so content gets the full window.
  • team-shared pipes show up in the Cloud tab — pipes shared to your team from the desktop app now appear in the cloud-pipes list alongside dashboard-published pipes, each tagged with a source badge so you can tell them apart. See pipes.

updates

  • cheaper, faster auto-routing for agentic work — the AI gateway’s auto waterfall now picks glm-5 as the primary model for non-vision turns (roughly 3× cheaper on output than the previous default at comparable quality). Vision requests still route through the prior vision-capable head, so screen-aware turns are unaffected.
  • model-aware transcription language list — the language picker in settings → recording now only offers languages your selected transcription model actually supports, instead of showing every language and silently falling back at runtime. See meeting transcription.
  • lower CPU during live meetings — the live-meeting audio path now reuses a single resampler per stream instead of rebuilding the filter bank every ~20 ms, cutting a large chunk of background CPU during long calls with no change to transcript quality. See meeting transcription.
  • redesigned pipe connection picker — the per-pipe connection picker has a cleaner layout that makes it easier to see which integrations a pipe will use and to wire up the right ones in one pass. See pipes.
  • smoother desktop feedback follow-up — the in-app feedback flow has a tighter follow-up UX so replies from the team land in a clearer thread instead of a flat list.

bug fixes

  • a second Google account no longer wipes the first — connecting a second Google Calendar or Docs account used to silently overwrite the token for the first account because both lived in a shared default slot. Each account is now stored under its own named slot, and a startup sweep promotes any account still parked in the legacy slot so existing installs heal on next launch. See connections.
  • all Google Calendar accounts appear everywhere — after connecting a second Google account, the 60-second calendar poller, live meeting notes, pipes, and chat tools would 401 with “multiple accounts connected, pick one” and calendar looked disconnected. Calendar reads now merge events across every connected Google account (deduped by event id) and the connection-status check counts any healthy account. See connections.
  • HubSpot, Notion, and other connections survive a transient keychain hiccup on Windows — a one-off failure to read the encrypted settings file (store.bin) at startup used to be silently swallowed and treated as a fresh install, which then saved defaults over your real settings (reported on Discord as “Windows update deleted all my AI models”). Transient keychain reads are now retried, unreadable encrypted blobs are restored from the newest healthy snapshot (with the ciphertext preserved as a backup), and an encrypted blob is never overwritten by a fresh-install save.
  • enterprise sign-in gate and pi token cleanup — fixed two enterprise login edge cases that could leave the account in an inconsistent state after sign-out: the login gate now blocks the right paths, and stale pi tokens are cleared on sign-out so the next sign-in starts from a clean slate.
  • Todoist connection validates again — the connection test was parsing the Todoist v1 projects endpoint as a bare array, but v1 returns a cursor-paginated object, so valid tokens were rejected with “error decoding response body”. Validation works again. See connections.
  • /v1/web-search works again — Google withdrew gemini-2.0-flash from Vertex, and the pinned web-search head started returning 404 on every call. Web search now routes through the GA gemini-flash alias.
  • no more black browser tabs titled “screenpipe/screenpipe” — the bundled “screenpipe” ignore pattern matched both app names and window titles, so any browser tab with “screenpipe” in its title was treated as self-capture and rendered black in your history. The pattern is now scoped to the app name only, and existing installs are migrated automatically.
  • no more false “audio stalled” warning during live meetings — fixed a case where the live meeting capture would surface a spurious “audio stalled” warning while audio was actually flowing. See meeting transcription.
  • meeting note drafts save reliably — fixed a race where typing into a meeting note draft could lose the most recent edit if you navigated away quickly. Drafts now flush cleanly on navigation. See meeting intelligence.
  • “recents” in chat sort by your last message, not the chat’s creation time — the recents list now derives each conversation’s age from the latest user message timestamp, so chats you’ve recently revisited bubble back to the top instead of sinking by creation date.

week of june 11, 2026

new features

  • Excalidraw connection — a new tile in settings → connections lets the agent read and create Excalidraw+ workspaces via an API key. Validated on save, stored in the secret store, and removed cleanly on disconnect. See connections.
  • Plaud connection — a one-click OAuth tile in settings → connections lets the agent pull meetings and recordings from Plaud. See connections.
  • Mochi flashcards connection — a new connection for the Mochi spaced-repetition service. The agent can read and create cards through the credential proxy, so your API key never reaches pipes or the model. See connections.
  • redesigned connections pagesettings → connections is grouped into clear categories with an updated layout, so finding (or discovering) an integration is a lot faster. See connections.
  • team pipe sharing — team admins can share a pipe with their team from the desktop app. Recipients get the pipe with auto-update on new versions while keeping their own on/off choice; new installs arrive off and read-only, and “fork to edit” detaches a copy from auto-updates. Unshare propagates and disables (never deletes) marked copies. See pipes.
  • artifacts library for chat and pipes — a unified Brain section that lists every output your pipes and chats have generated, with in-app markdown and text previews, batch select, and a viewer window for inspecting individual files. See pipes.
  • filter screen, audio, and memories by tag/search and the MCP search-content tool now accept a comma-separated tags filter that matches across screen, audio, and memories with exact-AND semantics. Namespaced tags like person:, project:, topic: link captures to facts so you can pull every moment tied to a person or project in one query. Index-driven (≈7 ms at 200k frames). See search screen history and API recipes.
  • searchable settings — a fuzzy search bar at the top of settings jumps you straight to the matching field (and scrolls to it), with deep matching against sub-settings.
  • smooth HD playback in the timeline — when scrubbing through an HD chunk, the timeline now plays it at native framerate (10/30 fps) instead of stepping one frame per second. Motion looks smooth while audio and the slider stay in sync. See search screen history.
  • clickable source citations in chat — Ask answers now make screen, activity, and meeting citations clickable: tapping one jumps into the timeline at the captured moment instead of leaving you with inert text.
  • “Try in Chat” connection chips — clicking a connection prefills the chat composer with a connection chip that scopes the message to that integration, so kicking off “ask Notion…” or “ask Linear…” is a single click. See connections.
  • HD recording confirmation toast — clicking + HD on a meeting notification now posts an in-app confirmation that HD capture actually started, instead of being silent. See meeting intelligence.
  • Claude Fable 5 in model pickers — the new Anthropic Claude Fable 5 model is available across the screenpipe-cloud picker, the BYO-key Anthropic picker, and the static AI-preset selector.
  • native drag-to-grant permissions flow on macOS — onboarding now uses a native drag-to-grant panel for macOS permissions instead of a click-through. The panel auto-dismisses once a permission is granted (including manual toggles), recovers from stale TCC entries, and surfaces a clear “permission needed” cue if capture is blocked at startup. See permissions.
  • Getting started tutorial card in Help — the Help section now leads with a Getting started tutorial card that opens the full screenpipe walkthrough video, giving new users an obvious entry point.
  • smaller, faster local PII redaction model — the on-device text redactor drops from 266 MB to 149 MB (vocab-pruned v45_phase5) with identical detections on names, emails, phones, SSNs, and persons. Lower memory footprint for the redact worker; the deterministic detector backstops structured PII regardless. See privacy filter.
  • PII redaction runs on the Apple Neural Engine — the on-device PII model now runs on ANE/NPU instead of CPU on supported Macs (~3.4× faster, much lower power). See privacy filter.
  • API + CLI skill packs in agent cards — the Hermes and OpenClaw skill tabs now offer both screenpipe-api and screenpipe-cli skills behind an API/CLI switcher, so agents can pick the surface that fits the task. See connections.

updates

  • scheduled pipes show readable day labels — the schedule picker now parses human-readable schedules and renders the selected days and tooltips in plain English, instead of raw cron fragments. See pipes.
  • automatic fallback model when the main preset fails — if a pipe’s main model times out or errors, the run is retried against the configured fallback preset instead of failing the whole pipe. See pipes.
  • clearer AI gateway errors — model routing now returns a clear, actionable error when a model is broken or missing (instead of a bare 404), and missing-model / missing-messages cases return readable messages instead of crashing.
  • actionable audio model-download errors on corporate networks — when the audio model download is blocked by a proxy or corporate firewall, screenpipe now surfaces the actual cause and what to allowlist, instead of failing silently.
  • lighter background CPU on macOS and Windows — quieter idle polling for the activity, UI recorder, and event-capture pipelines, plus cached window filters and skipped restart checks on the active audio device. Real captures are unchanged.
  • Apple Calendar tile is hidden on Windows — the settings → connections Apple Calendar tile no longer appears on Windows machines where it cannot connect. See connections.
  • macOS Calendar status no longer goes stale — the calendar connection now uses a single shared EventKit store and refreshes correctly on macOS 26, so a “not yet authorized” state doesn’t persist after you grant access.

bug fixes

  • macOS auto-update can finish installing again — “restart to apply update” was a no-op on a recent macOS build because the restart command wasn’t wired up. Restarting from the update prompt now applies the pending update.
  • tray shows “Stop HD recording” while HD is active — the macOS tray used to show the regular “Stop recording” label during an HD session. It now reflects HD state so it’s clear which capture you’re stopping.
  • tray reads “outside work hours” instead of stuck on “Starting…” — when the work-hours schedule pauses capture, the tray now labels the state correctly instead of leaving it on “Starting capture session…”.
  • ghost keystrokes on macOS are gone — removed the accessibility probe event tap and added a graceful shutdown path so the focused app no longer receives stray phantom key events on macOS.
  • dark-themed scrollbars and native controls on Windows — native scrollbars and OS-rendered controls now respect dark mode on Windows, instead of staying light against a dark UI.
  • cursor and selection mid-sentence in the editor — fixed a regression where placing the cursor or selecting text in the middle of a sentence (chat / meeting notes) could land on the wrong character or break selection entirely.
  • timeline arrow-right keeps working while recording — the right-arrow key no longer stops navigating the timeline when recording is active. See search screen history.
  • no cross-device mic echo in live transcripts — live meeting transcripts no longer pick up the same audio twice when multiple capture devices are active. See meeting transcription.
  • live transcripts no longer drop segments on a coverage-window miss — fixed a case where a single coverage-window miss could silently drop a live transcript segment. See meeting transcription.
  • all Google accounts appear in “Coming up” — the Coming up calendar fetch now merges events from every Google account you’ve connected, not just the primary one. See meeting intelligence.
  • LAN device discovery is opt-in — mDNS-based LAN discovery is now off by default and only runs when you explicitly turn it on, so corporate networks no longer see chatty discovery traffic from screenpipe.
  • --ignored-urls actually filters captures now — the CLI flag was parsed but never applied to the capture path. Ignored URLs are now skipped end-to-end. See the CLI reference.
  • pipes can use OAuth GitHub connections — pipes were unable to reach GitHub through the OAuth credential proxy. The proxy now exchanges the OAuth token correctly so pipes can authenticate to GitHub without a manual PAT. See connections.
  • owned browser keeps the title set with evalpi.browser.eval was clobbering title changes set from inside the page. The owned-browser tab now keeps the latest title from eval. See pipes.
  • chat sidebar no longer reopens after switching chats — switching chats sometimes caused the sidebar to pop back open. It now stays in whatever state you left it.
  • write queue recovers from persistent disk-I/O wedges — if the database write queue wedged on a flaky disk, screenpipe could stop persisting captures until restart. It now detects sustained I/O failures and rebuilds the queue automatically.
  • clearer data-deletion settings — the data-deletion section in settings is now split into two cards, separating “clear local data” from “delete cloud data” so it’s obvious which action wipes what.
  • “Pro” copy renamed to “Business” — the few remaining user-facing “Pro” labels in settings → account now match the actual plan name, “Business”.
  • account plan label uses your subscription plan, not cloud status — the Account screen now reads the plan name from your subscription record instead of inferring it from cloud-subscribed state, so paused or special-cased accounts show the correct tier.
  • Book-a-call row removed from feedback settings — the redundant “Book a call” row is gone from settings → feedback.

week of june 8, 2026

new features

  • Odoo connection — a new integration in settings → connections lets the agent query and update your Odoo ERP, CRM, sales, and project records alongside your other connected apps. See connections.
  • drag-and-drop images into meeting notes — drop image files anywhere on a meeting note to embed them inline at the drop point. A black drop overlay confirms the target, and images are auto-resized on the way in. The dedicated insert-image toolbar button is gone. See meeting intelligence.
  • annual upgrade option in the in-app Account page — the Pro upgrade in settings → account now defaults to annual (33/mobilledannually,save33/mo billed annually, save 200) with an inline toggle back to monthly ($50/mo).
  • work-hours schedule flags on screenpipe record — two new CLI args, --schedule-enabled and --schedule-rule "day,start,end,mode" (repeatable; mode is all, audio_only, or screen_only), let you drive the work-hours schedule without editing config. Passing any rule auto-enables the schedule. Capture pauses and resumes in-process — no restart. See the CLI reference.

updates

  • cleaner Claude / Cursor / Codex onboarding cards — once a card says “connected”, the redundant “MCP installed, restart X” line is gone. Notion / Obsidian / ChatGPT cards keep their useful follow-up copy.

bug fixes

  • Apple Calendar connection works again on signed builds — the production bundle was missing the macOS calendar entitlement, so EventKit was denied before the system prompt could fire and screenpipe never appeared under Privacy & Security → Calendars. The entitlement is back and the permission flow is restored end-to-end. See connections.
  • Pro access lasts through the period you paid for — canceling a subscription used to revoke cloud-AI access immediately because the gate only checked status. It now also entitles you while the subscription is canceled but the paid period hasn’t ended yet. Dunning states (past_due, unpaid, incomplete) stay excluded.
  • logout works on the first click — an in-flight user refresh could write your user back into settings a beat after you signed out, resurrecting the session and forcing a second click. Sign-out now bumps a monotonic auth generation that any in-flight refresh checks before writing, so a stale response can’t bring the session back.
  • recording resumes on macOS after sign in — after sign out → sign in, the entitlement-flip never restarted capture on macOS because the owner-window check was looking for a window name that only exists on Windows. The check is now platform-aware, and the restart is also serialized so a reconnect can’t race teardown and wedge the recorder at “starting capture session”.
  • pipe notifications toggle is honored on the /notify route — pipes posting to /notify used to display and persist notifications even when you’d turned Pipe notifications off. The route now reads the toggle and skips display + history for type=pipe when it’s disabled. The auto-update “what’s new” toast is exempt — it’s now tagged as an app update so the App updates toggle controls it instead. See pipe debugging.
  • timeline memory markers land on the correct frame — the memory diamonds on the timeline were positioned with left-to-right math while the frame row renders right-to-left, so the layer rendered mirrored (and multi-day views drifted further). Markers are now snapped to each frame’s real on-screen center, correct under right-to-left, virtualization, day boundaries, and margins. See search screen history.
  • media file paths in chat preserve their full absolute path — fixed a chat rendering bug where absolute paths to attached media files could be mangled before they were turned into a link, so the resulting link pointed at the wrong file (or nowhere). Windows paths, paths with spaces or parentheses, and paths embedded inside an existing markdown link all round-trip cleanly now.
  • long chats no longer fail with a context-window error — pi’s chat layer always injects recent history into every prompt with no size budget, so a very long conversation, a huge pasted message, or a big tool result could push the prompt past the model’s context window and hard-fail with 413 prompt is too long. The injected history is now budgeted against the preset’s existing context limit, dropping the oldest turns first and clamping any single oversized turn.
  • annual Pro upgrade savings copy — the in-app annual card said “save 200"whileannualisactually200" while annual is actually 100 cheaper than monthly. Both Account upgrade cards now show the correct savings.
  • deny block cleanup after disabling notifications — turning notifications off used to leave an empty deny: block behind in the permissions YAML. The cleanup now also removes the block when it has nothing left in it, including for compact YAML.

week of june 6, 2026

new features

  • import device skills into the agent — a new Skills card in settings → connections scans your machine for SKILL.md folders (e.g. ~/.claude/skills) or any folder you pick, and imports the ones you choose. Imported skills are mirrored into every pipe and chat session automatically, so the agent picks them up everywhere without per-pipe wiring. See connections.
  • rotation-safe connection sync across devices — an opt-in toggle in account settings now syncs your manual and OAuth connection credentials to your other signed-in devices via an end-to-end encrypted manifest. OAuth tokens merge by a monotonic refresh generation (not wall-clock), so a stale token can never overwrite a freshly rotated one and brick a connection. Off by default. See connections.
  • steer queued prompts with Cmd+Enter — pressing Cmd+Enter while the agent is running now steers any queued prompts in addition to the in-flight turn, and native steers preempt the queue, so course-corrections land immediately instead of waiting for the next idle moment.
  • add images to meeting notes — meeting notes now accept image attachments inline, with focus-on-click in the editor. See meeting intelligence.
  • filter apps that haven’t been recorded yet — the Ignored/Included app pickers under settings → privacy now also list installed apps that have no captures yet, each with its real icon and an “installed · not captured yet” hint. You can pre-block or pre-allow an app before it ever shows up in your history. See privacy filter.
  • minimize-to-tray toggle on Windows — Windows users can now choose whether closing the app window minimizes to the tray or quits, matching the macOS behavior.
  • agent-facing ICS calendar connection — the ICS calendar integration now exposes a clean agent-facing API so chats and pipes can read your calendar through the same connection surface as everything else. See connections.

updates

  • scheduled pipes honor your local timezone — raw cron schedules (and the “every day at Nam” UI) now evaluate against your local clock instead of UTC, so 0 7 * * * fires at 7am local. Existing schedules pick up the fix on next run; DST is handled correctly. See pipes.
  • pipe installs pick a tier-safe model — installing a pipe now uses the pipes preset (auto-selected for your subscription tier) instead of the Opus chat default, and the cloud-model picker validates your choice against the gateway tier list with a graceful fallback. A premium model you’ve deliberately chosen is no longer silently downgraded when the gateway is unreachable.
  • shortcut labels stay in sync everywhere — keyboard-shortcut hints in the reminder overlay, tray menu, timeline controls, sidebar search, and chat now reflect your current settings live, and disappear when a shortcut is disabled or unset. The tray refreshes the moment you change a binding.
  • pinned and hidden chats survive a save — saving a conversation now preserves its pinned and hidden state instead of resetting it.

bug fixes

  • browser meetings detect again on Windows — Meet, Slack web, Teams web, and other browser-tab meetings were undetectable on Windows because the window-title enumerator was silently returning an empty list. Detection now works again across browsers. See meeting intelligence.
  • Windows CLI runs as a signed binary — the screenpipe CLI shipped via npm is now signed with the EV cert (only the desktop bundle was signed before), so corporate Windows no longer flags it as “unknown publisher” and Defender/EDR stop quarantining it on launch. See the CLI reference.
  • CLI no longer self-destructs inside non-Tauri hosts on Windows — embedding the CLI in your own Electron (or other) wrapper used to trigger a clean exit within seconds because the auto-destruct watcher required a screenpipe-app.exe process to also be alive. The watcher now tracks only the PID you passed it.
  • clearer Windows install failures — the installer now hard-fails if the bundled VC++ runtime DLLs (vcruntime140, vcruntime140_1, msvcp140) are missing, instead of silently shipping a package that dies on launch with STATUS_DLL_INIT_FAILED.
  • panic log for embedded CLI/engine — the engine binary now writes a last-panic.log (with backtrace) next to screenpipe.log and flushes Sentry on panic, so integrators embedding the CLI as a child process can see why it exited instead of just that it did. Written even with telemetry off. See the CLI reference.
  • large pasted context in chat works again — fixed a regression where pasting a very large blob of text into the chat composer could fail to send or truncate the prompt.
  • AI gateway no longer crashes on malformed requests — two Sentry crash classes are fixed: a request missing a model name now returns a clear error instead of a TypeError, and a request missing a messages list is treated as empty.
  • “clear cache” button is labeled “clear” — the button under the Clear Cache card in settings said “scan” — it now says “clear”, which is what it actually does.
  • billing button no longer duplicates “manage” — removed the redundant Billing button in settings → account; the Manage button already covers subscription management.
  • pi repair install works on Windows — fixed the repair flow for the pi agent runtime on Windows so it can recover a broken install instead of failing partway through.
  • quieter macOS audio logs — silenced a noisy ScreenCaptureKit audio-drop warning on macOS so real errors are easier to spot in feedback bundles.

week of june 5, 2026

new features

  • clear owned browser data — a new “clear data” action on the owned browser wipes cookies, storage, and cache for the in-app webview in one click. signs you out of anything the browser was logged into, so you can hand a clean session to the next pipe or chat. see pipes.
  • MCP connections live in settings → connections — every MCP server you’ve connected (Krisp, Linear, Notion, Atlassian, custom HTTP, …) now shows up alongside your other integrations in settings → connections, with cross-platform detection and one-click management instead of being hidden behind the MCP server panel. see MCP server and connections.
  • “get Cursor” prompt when Cursor isn’t installed — opening the Cursor tile in settings → connections on a machine without Cursor now shows a clear install prompt with a download link instead of a dead tile. see connections.

updates

  • macOS multi-monitor capture uses noticeably less CPU — the event-driven capture pipeline now coalesces work across monitors and skips redundant accessibility walks, cutting capture CPU on multi-display Macs without changing what gets recorded. see search screen history.
  • no more phantom or doubled text in Chromium / Electron apps — the macOS accessibility walker used to re-enable enhanced accessibility on the focused app every 60s (and every frame after a recent regression), which forced Chrome, Cursor, VS Code, Slack, and other Electron apps to rebuild their AX tree mid-typing and could commit pending IME or autocomplete buffers as duplicate characters into the focused field. enhanced mode is now set exactly once per app while it stays focused, eliminating the phantom-text class of bugs and a recurring source of focused-app input lag.

bug fixes

  • macOS tray menu no longer crashes the app on click — fixed a use-after-free in the macOS tray where clicking the menu right after screenpipe rebuilt it in the background could dereference freed memory and abort the process. the tray now swaps menus only at safe moments, so rapid menu interaction during recording state changes is safe.
  • Google Sheets OAuth uses a non-restricted scope — the Sheets connection now requests drive.file (access to only the files you explicitly open with screenpipe) instead of drive.metadata.readonly (access to every file’s metadata in your Drive). same functionality, far less data exposure, and unblocks the Google OAuth verification. see connections.
  • background pipes no longer hijack the on-screen chat’s browser — the in-app owned browser is shared across every chat and pipe, and a background pipe navigating its page would pop the browser open inside whatever chat you were looking at and stick there on reopen. navigations are now tagged with the owning chat (or pipe), and the browser sidebar ignores navigations that don’t belong to the chat you have open. see pipes.
  • owned browser hides itself when the sidebar unmounts — closing the chat sidebar (or switching to a view without it) now also dismisses the floating owned browser instead of leaving it hovering over unrelated UI.
  • no more duplicate stub rows in the chat sidebar — fixed a race that could leave two placeholder rows for the same brand-new chat in the sidebar before the first message landed.
  • event-driven UI capture wires up reliably across platforms — fixed the input-event capture pipeline so workflow triggers, privacy filtering, and per-platform recorders stay in sync on macOS, Windows, and Linux; UI events are no longer occasionally dropped on app startup or after a recording-config change.

week of june 1, 2026

new features

  • copy button on chat code blocks — every fenced code block in a chat reply now has its own copy-to-clipboard button (keyboard accessible), so you can grab a single snippet without selecting it by hand.
  • paste documents straight into chat — the chat composer accepts pasted document files (pdf, docx, xlsx, md, txt, csv, json, log, rtf, …) in addition to drag-drop, shows an inline extraction spinner while the text is pulled out, and surfaces a clear error if a file can’t be read instead of failing silently.

updates

  • stronger, smaller text PII redactor — the on-device redactor that scrubs secrets (API keys, tokens, credentials) before AI sees your screen data shipped a new model: secret recall jumped from 0.83 to 0.96 on held-out providers, oversmash (false redactions) dropped from 34.5% to 6.8%, and the model is ~4× smaller (1110MB → 278MB INT8) at ~3ms p50. existing installs keep running the previous model until they update. see privacy filter.
  • vocabulary badge reflects the real limit — the custom-vocab header used to show n/1000 while the detail view showed n/100. the badge, import flow, and toasts now all use the actual upstream cap, so you won’t think you have headroom you don’t.

bug fixes

  • GitHub connection works again — every call through the GitHub integration was 403ing because the proxy sent no User-Agent header. GitHub now sees a proper UA + accept headers, so issues, PRs, and repo data load through the connection again. see connections.
  • mic capture starts the moment you grant permission, even during boot — if you clicked “Allow” on the microphone prompt before the recording backend had finished wiring up, capture stayed dead until you toggled it manually. the app now retries automatically while the backend is still coming up. see permissions.
  • cleaner logs after unplugging a display — stale display IDs no longer flood the log with hundreds of xcap errors on macOS, so real errors are easier to spot in your feedback bundle.
  • starred pipes empty state — the pipe store now shows the right empty-state message when your “starred” filter has no matches instead of looking like everything was uninstalled. see pipe store.
  • no more crash when ffmpeg is missing — audio recording and post-processing now return a clean error instead of panicking if a bundled or system ffmpeg can’t be found.
  • “open team on the web” button works — the button in settings → team now opens screenpi.pe/team in your default browser instead of doing nothing. see teams.
  • CoreAudio per-app capture crash fixed — fixed a use-after-free in the macOS Process Tap path that could SIGSEGV the audio engine during per-app system-audio capture. see meeting transcription.
  • screenpipe vault lock no longer races the running app — locking the vault from the CLI while the desktop app is open now delegates to the daemon (or refuses cleanly) instead of racing it and leaving the keystore half-locked.

week of may 31, 2026

new features

  • OpenClaw connection — a new integration in settings → connections lets you wire OpenClaw into screenpipe alongside the rest of your AI agent gateways. see connections and the connection reference.
  • per-field PII redaction toggles — a new “fields to redact” selector under settings → privacy → AI PII removal lets you choose exactly which categories get scrubbed before AI sees your screen data. Secrets (API keys, tokens) are always on; names, emails, phones, addresses, and other sensitive info are opt-in. default is unchanged (secrets only). see privacy filter.
  • document attachments in chat — the in-app chat file picker and drag-drop now accept documents (pdf, docx, xlsx/xls, md, txt, csv, tsv, json, log, rtf) in addition to images. text is extracted client-side and folded into the outgoing turn so the model can read them, with the clean prompt shown in the bubble and the attached text expandable. works on every preset, with multi-file support.
  • display labels for auto-sent chat prompts — pipe creation, pipe store fork/publish, speaker organize, and notification follow-up chats now show a clean source label on the prefilled prompt so it’s obvious where the conversation came from.

updates

  • HD recording plays back at true constant frame rate — the HD recorder now produces a smooth ~10fps chunk regardless of how much is changing on screen or how fast your machine encodes, so playback no longer comes out sparse or sped-up on low-motion screens. timeline offsets and exports stay accurate to wall-clock time. see search screen history.
  • team management moves to the web — the in-app Team settings section is now a thin card with an “open team on the web” button pointing at screenpi.pe/team for consumer accounts. enterprise builds hide the Team sidebar entry entirely — admins manage members, devices, workflows, search, and policies on the enterprise web console. see teams.
  • content filter and pipe sharing UI cleanup — removed the “push to team” buttons, the all/personal/shared-with-team tabs, and the team-only filter views from settings → privacy and settings → pipes.

bug fixes

  • Windows microphone no longer goes silent with echo cancellation on USB mics — fixed a regression where enabling echo cancellation on Logitech C922 and other USB mics on Windows would silence the input. mic capture stays live with echo cancellation on.
  • no more duplicate chats from auto-sent prefills — fixed a cross-window race where the home window and the floating chat overlay would both run the same auto-sent prompt, producing two near-identical conversations. each intent now mints exactly one chat, and existing duplicates collapse to one row in the sidebar.
  • vision capture recovers after an auto-update restart on a locked screen — if the app restarted while your screen was locked, macOS reported zero monitors and screen capture stayed dead until a manual restart. capture now retries automatically the moment you unlock.
  • auto-update no longer crashes the speaker engine on restart — gated the auto-update restart on a boot-ready check so the speaker session can’t be torn down mid-init, fixing a SIGSEGV some users saw right after an update installed.
  • fewer background crashes across app, engine, and AI gateway — retired five top Sentry issues, including a Gemini tool-schema enum coercion bug, a cost-tracker null-model crash, a keychain-decrypt failure that could overwrite the encrypted API key blob, recovery from a corrupted pi-agent package file, and noisy port-conflict reports from the engine.

week of may 30, 2026

new features

  • per-app exclusions for system audio — on macOS 14.4+, you can now exclude specific apps (Stremio, password managers, anything sensitive) from the CoreAudio process tap without turning system-audio capture off entirely. manage the list from settings → recording. changes apply within a few hundred milliseconds — no restart needed. see meeting transcription.
  • general meeting / time-range MP4 export — a new export pipeline renders a real-time MP4 with synced microphone audio for any meeting or arbitrary time window. available from the meeting note’s export button, the screenpipe export CLI (--meeting-id or --start/--end [--open]), and POST /export (also wired into the MCP export-video tool). see the CLI reference and the API docs.
  • AI-generated chat titles — new chats now get a concise, task-specific title from the first message, with safe fallbacks and live streaming across windows. renamed titles still win.

updates

  • HD recording captures every change — turning on HD (high-FPS) mode now bypasses content deduplication for the duration of the session, so video, slide flips, and demo replays are captured densely instead of skipped when the accessibility tree doesn’t change. a static screen still won’t record duplicate frames. see search screen history.
  • timelapse export retired in favor of real-time export — the legacy /frames/export route (fixed-fps timelapse) is gone. every “export my last N minutes” path — chat agent, MCP export-video tool, and the video-export pipe — now uses POST /export, which produces a real-time clip with synced audio instead of a sped-up sequence of frames. see the API docs.
  • provider-aware error messages, with one-click report — connection and pipe-install failures now show a clear, provider-specific reason and a “report issue” action right at the error site, so you can flag a broken integration without digging through logs. see connections.
  • simpler HD recording tray label — the menubar entry for HD is now just “Record HD” in the idle state; the active state still shows fps in parens.
  • display labels in meeting and pipe chat prefills — when a meeting or pipe seeds a chat, the prefilled prompt now includes a clean display label for the source so the conversation starts with the right context.

bug fixes

  • chat keeps full conversation context on every send — fixed a regression where chat could silently drop prior turns after the agent compacted, crashed, or auto-restarted, so the model occasionally replied as if the conversation just started. recent history is now re-injected on every prompt.
  • meetings stay alive when the process scan briefly misses — a transient miss in the meeting-app process scan (browser-extension websocket drop, app relaunch, accessibility reflow) no longer ends an in-progress meeting if output audio is still playing; an already-ending meeting is revived in the same case. see meeting intelligence.
  • microphone capture starts as soon as you grant permission — granting mic access (either in the in-app prompt or in System Settings) now reinitializes the audio pipeline automatically, instead of leaving you with zero devices until the next app restart.
  • cron pipes run a missed slot when the app restarts late — if the app was closed across a scheduled cron tick, the pipe now runs once on next launch instead of silently skipping that slot. see pipes.
  • queued chat follow-ups stay readable — queued messages now show their original text in the sidebar instead of the injected-history blob.
  • MCP update-meeting works again — the MCP tool was sending PATCH where the server expects PUT; meeting updates from MCP clients now succeed. see MCP server.
  • clearer MP4 export errors — failed exports now show the full underlying reason (e.g. “no screen frames indexed for this range”) instead of a misleading top-layer message.
  • preset name duplicate validation trims whitespace — leading/trailing spaces no longer let you save two presets with effectively the same name.
  • chat sidebar polish — fixed a cyan stripe artifact when collapsing a section and the menu overlapping the hover time label.
  • transcription model downloads work on corporate networks — the model downloader now uses the system TLS store, so corporate root CAs (Zscaler, Netskope, etc.) are trusted and first-run model downloads no longer fail with cert errors.

week of may 29, 2026

new features

  • Workflowy and Readwise connections — two new integrations in settings → connections let screenpipe pull your Workflowy outlines and Readwise highlights into chat and pipes alongside the rest of your context. see connections and the connection reference.
  • OAuth login for MCP servers — bring-your-own MCP servers now support OAuth, so you can connect Linear, Notion, Atlassian, and other OAuth-gated MCPs from settings → connections without hand-pasting bearer tokens. see connections and MCP server.
  • VS Code terminal capture — screenpipe now captures terminal output inside VS Code (xterm.js) and labels each terminal window with its session name, so commands and shell output are searchable just like editor text. see search screen history.
  • bounded HD recording for meetings — meetings now record at higher resolution for the duration of the call and revert to your normal capture quality automatically when the meeting ends, so meeting screenshots stay legible without burning disk between meetings. see meeting intelligence.
  • meeting search by title, attendees, and notes — the meetings list now supports a search box that matches titles, attendees, and notes, plus an explicit “show more” instead of infinite scroll. see meeting intelligence.
  • automatic meeting detection toggle — a new switch in settings → meetings lets you turn auto-detection off entirely if you’d rather start meetings manually. see meeting intelligence.
  • Claude Opus 4.8 in the model picker — the new Anthropic flagship is selectable in chat and the AI gateway auto waterfall.
  • chat keyboard shortcuts — Cmd+N / Ctrl+N opens a new chat from anywhere, and Ctrl+Tab cycles through recently opened chats.
  • multi-account Google Docs and Sheets — connect more than one Google account for Docs and Sheets; the account picker is now forced on every Google and Microsoft sign-in so you always land in the right workspace. see connections.

updates

  • shorter onboarding — the encrypt-data step is gone (the local store is now encrypted by default) and the pipe step is a single default-checked bundle (digital-clone + personal-crm) instead of a 3-path picker. see getting started.
  • pipes page toolbar — the pipes page chrome is collapsed into a single toolbar, with search, filters, and install all in one row. see pipes.
  • gemini-3.5-flash at the top of the auto waterfall — the AI gateway now prefers gemini-3.5-flash for the default auto model when latency and cost both matter.
  • SDK 0.4.2 with native bindings@screenpipe/sdk now ships native bindings across all supported platforms and the Swift mirror tags automatically on each npm publish. see pipes.
  • App::Title window scope documented in the SDKRecorderOptions and FilterPatch tooltips now describe the App::Title syntax inline. see the CLI reference and privacy filter.

bug fixes

  • automatic language detection works for non-English audio again — the transcription engine now respects the detected language instead of falling back to English for every recording.
  • auto-merge no longer reopens meetings you stopped on purpose — if you explicitly end a meeting, a follow-up calendar block won’t silently re-attach to it. see meeting intelligence.
  • recording no longer stuck on “Starting” after monitors change — stale monitor IDs (e.g. after unplugging an external display) no longer leave the engine in a perpetual starting state.
  • system audio captured reliably when following system defaults — desktop app no longer drops system audio after the default output device changes.
  • process-tap audio uses the aggregate device’s nominal sample rate — fixes silent or garbled per-app audio on macOS Core Audio aggregate devices.
  • Windows: excluded apps are actually filtered from capture — apps in your exclude list were leaking into screenshots in some configurations; the filter now applies consistently. see privacy filter.
  • screen-capture permission probe — on macOS, screenpipe now verifies real screen-capture access instead of trusting CGPreflightScreenCaptureAccess, which lies after permission revokes. see permissions.
  • Intel-Mac Pi install — the “Bad CPU type in executable” error when installing Pi on Intel Macs is fixed.
  • HTTP MCP sessions register after initialize — third-party HTTP MCP clients that send the initialize handshake before the first tool call now connect reliably. see MCP server.
  • low-battery power transitions — a crash on very low battery (missing pause profile fields) and a bogus full-pause when only macOS Low Power Mode was on are both fixed.
  • low-battery notification copy — the low-battery toast no longer mentions “whisper” specifically; it now matches whichever transcription engine you’re using.
  • chat fixes — local file links and local media attachments render reliably, mid-tool-call assistant replies stay in one bubble when you switch windows, chat sidebar stays in sync across windows, switching chats no longer overwrites the new one with the old one, mermaid diagrams are readable in both light and dark modes, and pipe-run assistant turns are coalesced with the real work duration shown.
  • timeline “open settings” button works again — the gear icon on the timeline overlay opens settings instead of doing nothing.
  • first-launch crash fix — a React #185 boot crash on first launch is gone.
  • chat preset stays where you put it — switching chat models no longer snaps the preset selector back to the default, and the same fix applies on send.
  • newly-installed pipes don’t fire instantly — cron pipes no longer run a stale or just-installed schedule immediately on install; the next run waits for the real cron tick. see pipes.
  • misleading “join and take notes” button removed — the in-progress meeting toast no longer shows a join button for meetings already in progress.
  • search API accepts more bool formats — query params now accept 1/0/yes/no/empty in addition to true/false. see API recipes.
  • clearer “not connected” vs multi-account errors — connections now distinguish a missing account from an ambiguous one (multiple accounts connected, no default), with an explicit account picker. see connections.
  • Windows installer — bundled sidecars are stopped before NSIS updates so installs no longer fail with “file in use”, and SSL.com signing fails fast on quota errors instead of burning five retries.

week of may 25, 2026

new features

  • screenpipe search CLI — query your local history straight from the terminal without the daemon running. Same flags and JSON shape as GET /search, so existing jq filters work unchanged and AI scripts can read your data even when the desktop app is closed. see the CLI reference.
  • screenpipe team CLI for enterprise admins — three new subcommands (screenpipe team devices, screenpipe team search, screenpipe team records) let team admins query teammates’ history from any machine they’ve signed into, with no local daemon required. uses your team_api_token from ~/.screenpipe/enterprise.json. see the CLI reference and teams.
  • Discord community link in the Help menu — jump straight into the screenpipe Discord from the in-app Help section.

updates

  • macOS capture is much lighter on WindowServer and battery — screen capture width is now coupled to your video_quality setting (low 1280, balanced 1920, high 3840, max native) and the GPU does the downscale at source instead of reading back native-resolution frames. Biggest wins on external 4K/6K displays; default users on built-in laptop screens see no change. Text extraction quality is unchanged because screenpipe reads accessibility trees first.
  • pause states actually stop the OS from producing frames — when capture pauses (screen locked, critical battery, DRM-protected window, outside your schedule) screenpipe now releases the underlying capture stream instead of just sleeping the reader. WindowServer / replayd no longer keep composing frames for a sleeping consumer. Recovery on the next capture trigger adds ~200 ms one-time. see privacy data flow.
  • smaller, faster on-device PII redactor — the text redaction worker now runs the v45 phase 3 ONNX INT8 model (~278 MB, 90.2% HIPAA, sub-10 ms p50) with CoreML / DirectML / CPU execution providers, replacing the previous 2.8 GB Candle model. First-run auto-downloads with SHA verification. see privacy filter.
  • clearer memory sync status in connections — the “sync now” button in connections now pops a toast on click, shows the real outcome (wrote, unchanged, skipped) instead of a generic “synced”, and folds the file path + relative “Xs ago” timestamp into a single status card. see connections.
  • canonical domain switch to screenpipe.com — desktop app and CLI website links now point to screenpipe.com. Existing screenpi.pe/join/... team invites still work, and API endpoints are unchanged. see teams.

bug fixes

  • API auth key visible in Settings before the server finishes spawning — opening Settings → Privacy during the brief window between app launch and server start no longer leaves the API key field blank; it now falls back to the cached value and updates in place. see for developers.
  • npx screenpipe-mcp --http now works as documented — the README one-liner used to 404 because no screenpipe-mcp-http package existed on npm. The --http flag on the main package now routes to the HTTP server directly. see MCP server.
  • auto-restart toggle shortcut fixed — the keyboard shortcut for toggling auto-restart now fires reliably.
  • screenpipe://view links open in the in-app viewer everywhere — deep links inside notifications, notification history, chat, and the viewer itself now all route through the same handler, so a link copied from a notification into chat opens the in-app viewer instead of falling through to the browser.

week of may 24, 2026

new features

  • bring-your-own MCP servers — register custom HTTP MCP servers (Brave Search, Linear, Notion, internal company MCPs) from settings → connections and call their tools from pipes and chat. add a name, URL, and optional headers, test the connection, and toggle on. see connections and MCP server.
  • SDK event stream@screenpipe/sdk (now 0.4.1) emits a stable set of events — start / stop, recording_started / recording_stopped, paused / resumed, app_switched, frames_progress, permissions_changed, and error — across the Node, Electron, Tauri, and Swift bridges, so host apps can react to recording state and progress without polling. see pipes.
  • scoped window filters with App::Titleignored_windows and included_windows now accept an App::Title syntax: Slack::#hr matches only the #hr window inside Slack, ::Confidential matches that title in any app, and bare entries like Slack keep their original meaning. scoped includes whitelist one window without affecting other apps. see the CLI reference and privacy filter.
  • macOS VoiceProcessingIO microphone — opt in to Apple’s VoiceProcessingIO audio unit on your default mic for echo cancellation and noise suppression on meeting calls; falls back to the standard HAL path automatically if VPIO can’t start. see meeting transcription.
  • aggressive low-battery tiers — auto power mode now pauses microphone capture at ≤20% battery and pauses all capture at ≤10%, then resumes when you’re back on AC — so a long unplugged session won’t drain you to empty. you’ll get a desktop notification on each downgrade.

updates

  • Electron apps capture the full content tree — VS Code, Slack, Discord, Obsidian, and Notion previously lost deeply-nested content (terminal output, editor text, chat scrollback) because the macOS accessibility shell consumed most of the walk budget. the walker now resets its depth at each web-area boundary, so the full budget is available inside the app.
  • macOS sample-rate handling for VPIO and USB mics — fixed sample-rate mismatches that could silently drop input from VoiceProcessingIO and some USB audio devices; the engine now retries on the standard HAL path when VPIO can’t open the stream.

bug fixes

  • ChatGPT reconnect when the session expires — the ChatGPT connection now shows a clear “session expired” warning with a one-click reconnect, instead of failing requests in the background. see ChatGPT.
  • no more shortcut-reminder error loop on Windows — a missing first-run settings file no longer triggers a flood of webview → Rust errors; the reminder check now confirms the file exists and coalesces rapid setting changes.
  • clearer S3 upload errors — when an upload to cloud storage fails, the desktop app now surfaces the server’s reason (signed URL expired, content-type mismatch, etc.) instead of just the HTTP status code.

week of may 23, 2026

new features

  • multi-monitor paired capture in the SDK@screenpipe/sdk (now 0.3.0) records all your monitors by default and can opt into the same event-driven capture pipeline the CLI uses, so an SDK-recorded session lands in the same database your pipes already query. see pipes.
  • deepgram live diarization in meeting notes — the live meeting transcript now labels each turn with a speaker (you on your input device, “speaker 2/3/…” for others) instead of one undifferentiated stream, and adjacent turns from the same person collapse into one line. see meeting transcription.
  • Codex CLI + Obsidian in onboarding — the onboarding integration grid now offers one-click setup for Codex CLI (as an MCP client) and Obsidian (auto-discovers your first vault). see connections and Obsidian.
  • CLI flags for keystroke, clipboard, and scroll capture--capture-on-keystroke, --capture-on-clipboard, and --capture-scroll let you link non-printable key events, clipboard rows, and scroll-stop triggers to the screen frame they fired on. see the CLI reference.
  • kebab menu on scheduled pipe rows — scheduled runs in the chat sidebar now have the same hover menu as conversations: stop the run, or pin/rename/archive/delete its session record.
  • “check for updates” card in settings — Settings → General now has a visible “check now” button so you can pull a new version on demand instead of waiting for the next periodic check.

updates

  • DRM-aware pause is now on by default — screenpipe pauses recording on Netflix, Disney+, Hulu, HBO Max, and other DRM streams out of the box, with reliable detection in Safari (including subdomains like apps.disneyplus.com). no more black frames in your timeline from protected content.
  • Auto power mode by default — new installs start in Auto, which throttles capture on battery and restores full quality on AC. existing power-mode preferences are preserved.
  • onboarding tells you why the engine didn’t start — if recording permissions are missing (or another spawn error fires), onboarding now shows the real reason and the bundle id it’s asking for, with one-click “open system settings” and “reset & re-request” actions. see permissions.
  • clearer error when the in-app chat can’t load — the Settings chat panel now shows an actionable message and a support email when the connection fails, instead of a raw “Load failed”.
  • OpenAI Realtime removed as a meeting transcription provider — the unused OpenAI Realtime path has been retired; selected-engine, screenpipe-cloud, and deepgram-live remain. see meeting transcription.

bug fixes

  • OAuth connections no longer brick themselves overnight — fixed a refresh bug that silently dropped your refresh_token and identity metadata (email, workspace, team id) on every refresh, causing connections to flip to “needs attention” after about an hour. multi-account setups and providers that don’t echo expires_in on refresh are also covered. see connections.
  • failed updates are retryable — if a download fails (network drop, disk full, 5xx), the tray item now says “Update failed — click to retry” and the next periodic check picks it back up; transient failures also auto-retry with backoff. a desktop notification surfaces the failure instead of failing silently.
  • disabling auto-update is respected on Windows — when auto-update is off, Windows no longer force-installs the new version during a periodic check. you’ll see the banner and choose when to restart.
  • dismissing the update banner now sticks — clicking the X on the update banner keeps it hidden across periodic re-checks and tab switches, until a new version actually arrives or you click “update now” in the tray.
  • meeting transcripts no longer show duplicate lines — fixed a case where chunks pulled from /search and from the meeting transcript endpoint were deduped under different keys, so every segment appeared twice.
  • background transcription stops fighting live meeting notes — when a live meeting note is running, the background transcriber no longer re-processes the same audio, eliminating duplicate text in the transcript.
  • Google Calendar connect button works for free users — clicking connect on Google Calendar without a Pro plan now shows the “pro required” upgrade prompt instead of silently doing nothing, and surfaces “needs attention” when a token exists but can’t be decrypted. see connections.
  • Zoom and other long-lived OAuth tokens refresh cleanly — fixed a follow-up edge case where a stale expires_at could cause an infinite refresh loop for providers that don’t return expires_in on refresh (Slack long-lived tokens and similar).
  • Pi assistant starts reliably on Windows — migrated the bundled pi-agent to its new package namespace and pinned a transitive dependency that was failing to hoist on Windows; install errors are now surfaced in the toast instead of a generic “exited with code 1”.

week of may 22, 2026

new features

  • GitHub Copilot CLI as an MCP client — connect Copilot CLI from settings → connections and use it alongside Claude Code, Codex, and the other supported agents. see Copilot CLI.
  • redesigned connections panel — Input Monitoring is now a first-class tile, a new Featured row highlights the integrations most people set up first, and Apple Calendar has been removed in favor of the macOS calendar permissions used elsewhere. see connections.
  • clipboard capture without Input Monitoring permission — clipboard text is now captured through the UI recorder, so you no longer need to grant macOS Input Monitoring just to search what you copied. toggle from settings → recording or via the CLI. see the CLI reference.
  • calendar-aware meeting prewarm — 2–3 minutes before a calendar event starts, screenpipe surfaces a toast to start the live meeting note, so you’re never caught flat-footed when a call begins. see meeting transcription.
  • silent background updates with a restart banner — app updates now download quietly in the background; you only see a banner when the new version is ready to apply, and the restart is one click. auto-update is off by default — you stay in control of when to switch versions.
  • enterprise update policy — IT admins can pin specific app versions per organization, control whether the consumer update banner shows for employees, and roll updates to fleets on their own schedule. see teams.
  • MCP team telemetry tools — when authenticated with an enterprise key, the screenpipe MCP server exposes new tools for querying team telemetry from any MCP-compatible agent. see MCP server and teams.
  • frame ID on /search results/search input results now include the frame_id they were captured from, so pipes can join search hits back to the exact screen frame for screenshots or replay. see the API docs.
  • richer SDK runtime controls — the @screenpipe/sdk (now 0.2.0) adds setFilters / filterStatus at runtime, emits paused and resumed events, and honors ignored/included windows plus ignored URL filters from your pipe code. see pipes.
  • CLI version-check nudge — the CLI tip rotation now periodically reminds you when a newer CLI is available so you don’t miss fixes. see the CLI reference.
  • ui_recorder status in /health — the health endpoint now reports whether the UI recorder (and clipboard capture) is running, so monitoring tools can answer “is clipboard capture on?” without scraping logs. see the API docs.

updates

  • more accurate daily summary time breakdown — the daily summary now derives per-app time from accessibility events instead of OCR, so the breakdown matches what you actually used rather than what happened to be on screen.
  • OAuth tokens refresh in the background — a new refresh scheduler renews OAuth tokens proactively, fixing the Zoom 15-hour rotation bug and similar drop-outs for other connections. see connections.
  • UI events linked to the frames that triggered them — clicks, scrolls, and key presses are now paired with the screen frame they fired on (including on Windows and when the frame was deduplicated), so the timeline popover lights up more reliably and is easier to click.
  • share-logs no longer creates a public link — the “share diagnostic logs” flow now just uploads to support and acknowledges receipt; the old shareable URL has been removed to prevent accidental log exposure.
  • lower idle CPU on Windows — background workers wake less often when the app is idle, cutting battery drain on laptops.
  • chat sidebar polish — streaming and activity signals are unified into one indicator, scheduled rows show a live signal with status and elapsed time on hover, and recents rows align their age label with the live signal.

bug fixes

  • frontend crashes now show up in reports — top-level WebView errors are captured and shipped with source maps so support can diagnose UI crashes instead of seeing a blank stack.
  • audio falls back when a pinned mic disconnects — unplugging your pinned input device no longer kills capture; screenpipe falls back to the system default input automatically.
  • timeline day-picker restored, no more device spam — fixed a regression that broke the timeline day-picker and flooded logs with device_monitor 'default' warnings.
  • phantom “new content” pill in chat — fixed a case where the “new messages” pill stuck around after you’d already scrolled to the bottom.
  • chat preserves pipe-run titles — switching tabs or syncing history no longer overwrites the title of a pipe-driven chat.
  • clipboard events carry app + window context — copied text is now tagged with the app and window title it came from, so clipboard search results are filterable.
  • clipboard capture auto-recovers — after a crash, clipboard capture restarts automatically instead of requiring you to delete a marker file.
  • organize-with-AI opens the right view — the speakers “organize with AI” action now opens the home chat instead of an empty settings pane.
  • pipes load presets from encrypted store — pipes whose configuration lives in the encrypted store.bin now resolve presets correctly at start.
  • MCP keyword-search quality — fixed argument mapping, time-range normalization, error messages, and OCR truncation in the screenpipe MCP keyword-search tool. see MCP server.
  • audio reconciliation zombie loop — fixed a case where the audio chunk processor could spin forever after a transient failure; chunks now move through an explicit state machine.
  • /health can’t deadlock the CLI — bounded the health response time so external watchdogs no longer kill a healthy CLI that was momentarily slow to answer. see the CLI reference.
  • admin team API token field is editable — first-time admins can now paste their team API token in settings → teams instead of seeing a read-only field.
  • screenpipe status reads the right database — the CLI now resolves db.sqlite from base_dir, matching where the daemon actually writes. see the CLI reference.
  • npx screenpipe and global install work again — the npm wrapper bin is wired correctly so both npx screenpipe … and npm i -g @screenpipe/cli run the right binary. see the CLI reference.
  • enterprise macOS pkg notarization — the enterprise macOS installer is notarized correctly so admins no longer see Gatekeeper warnings on first install. see teams.
  • enterprise sync auth — the enterprise sync worker re-reads the local API auth key on every request, so rotating the key no longer requires a restart.
  • Windows timeline popover clickability — expanded the popover hit area so it’s easier to open from the timeline.

week of may 18, 2026

new features

  • chat source citations — answers in chat now show a citation footer linking back to the screen, audio, or memory sources used to generate them, so you can verify what the agent saw before trusting an answer.
  • Windows microphone echo cancellation — Windows mic capture now wires through AEC, cutting room echo and speaker bleed during meetings. toggle it from settings → recording or via the CLI. see the CLI reference.
  • speaker search uses diarization turns — searching by speaker now matches against per-turn diarized segments instead of whole chunks, so results land on the exact moment a person spoke. see meeting transcription.

updates

  • faster app launch — heavy chat and rewind renderers (code blocks, mermaid diagrams, message list) now defer until needed, so the desktop app opens noticeably quicker.
  • snappier chat history — chat conversation list refreshes are debounced and cached, removing the stutter when switching between long chats.
  • polished meeting notes live transcript — the live transcript panel inside meeting notes has a cleaner layout, better speaker grouping, and steadier scroll behavior while a meeting is in progress. see meeting transcription.
  • tighter chat composer and suggestions — the AI preset picker, suggestion rows, and source cards in chat have been re-spaced and simplified for quicker scanning.

bug fixes

  • Screenpipe Cloud transcription applies without a restart — switching to Screenpipe Cloud (Deepgram) transcription now takes effect on the next capture cycle instead of requiring a full server restart.
  • no more lost meeting transcript when live STT fails — if the live speech-to-text stream drops mid-meeting, the transcript now backfills from buffered audio instead of leaving a gap in the meeting note.
  • pipe-watch tool output renders correctly — return values from pipe-watch tool calls now display in the chat tool rail instead of showing as empty.

week of may 14, 2026

new features

  • per-site consent before importing browser cookies — when an agent needs to act on a signed-in site (Gmail, GitHub, your bank), the embedded browser now asks you to approve session access for that specific host before copying any cookies from Arc/Chrome/Brave/Edge. saved passwords are never read.
  • CLI flag to skip the meeting detector--disable-meeting-detector skips the v2 meeting watcher entirely (no process / accessibility scan every 5 s). useful for headless or task-mining setups that only consume accessibility_text and ui_events. see the CLI reference.
  • CLI flag to skip snapshot compaction--disable-snapshot-compaction skips the background JPEG→MP4 worker for users who don’t open the MP4 timeline UI. disk usage falls back to your --retention-days setting. see the CLI reference.
  • codex-style chat queue steering — queue follow-up messages while the agent is still working and reorder or cancel them before they run.

updates

  • transcription fallback notice — when your requested transcription engine isn’t available (signed out, no subscription, missing Deepgram key), the audio panel now tells you which engine is actually running and why, instead of failing silently. see meeting transcription.
  • multiple OAuth accounts per connection, restored — connections that support more than one account (e.g. multiple Google or GitHub instances) again list each one separately in settings → connections instead of collapsing into a comma-separated label.
  • faster, smoother UI — overlay data, health checks, meetings, and timeline hooks have been reworked to cut re-renders and main-thread work on macOS. the timeline streamer now caps batches and stops retrying forever on a broken connection, so a stalled stream recovers cleanly.
  • clearer doctor outputscreenpipe doctor now verifies the API port is actually listening and gives a step-by-step macOS fix when ScreenCaptureKit can’t open system audio (including the exact terminal app to grant in System Settings → Privacy & Security → Screen & System Audio Recording). see the CLI reference.
  • CLI tips use npx — startup tips for installing bundles and signing in now show npx screenpipe … so the commands work without a global install.
  • chat search and switching feel snappier — additional optimization passes on the chat sidebar and search modal.
  • Windows timeline hardening — WebView2 startup and the timeline frame stream are more resilient to transient failures, with bounded retries and per-frame limits.

bug fixes

  • Windows: no more flashing shell windows — background shell commands triggered by the app no longer pop a console window into focus.
  • meeting notifications now open the right live note — clicking a meeting notification deep-links into the correct in-progress note instead of a stale one.
  • live transcript order and AI summaries — fixed out-of-order segments and missing summaries in the live meeting transcript and meeting notes panels. see meeting transcription.
  • capture exclusions search — the search and “exclude this app” actions in capture exclusions now update reliably and stay in sync with the current query.
  • AI gateway error reporting — fixed Sentry regressions in the AI gateway for Anthropic, Gemini, and Vertex providers so failed requests are reported with the right context instead of being swallowed.

week of may 10, 2026

new features

  • local AI PII removal — the on-device PII redactor is back, now powered by OPF v3 for text and rfdetr_v9 for images. Defaults to a credentials-only policy that catches Anthropic, OpenAI, Google, Hugging Face, GitHub, and Cloudflare API keys without touching the rest of your timeline. Apple Silicon gets a ~6× faster MLX path on macOS 26+. enable in settings → privacy → AI PII removal. see privacy filter.
  • toggle for cloud audio, video, and image analysis — single switch in settings → privacy controls whether agents can call the cloud media analysis enclave. on by default; flip it off to keep media analysis fully local.
  • Codex MCP connection — connect Codex from settings → connections to use it as an MCP client alongside Claude Desktop, Claude Code, and the other supported agents.
  • Bee wearable integration now works — the connection was registered but TLS-failed against Bee’s private root CA. it now ships a real, logged-in client.
  • chat search across past conversations — the existing memory search now finds chats too. press the search shortcut and start typing.
  • chat picker in the collapsed sidebar — switch between chats without expanding the sidebar.
  • monitor topology toasts — get a notification when a display is plugged in, unplugged, or swapped (e.g. clamshell to external). turn it off in settings → notifications → display changes if it’s noisy on a rotating dock setup.
  • hide thinking blocks — collapsible chain-of-thought blocks in chat are hidden by default. toggle from settings → display → hide thinking blocks.
  • pipe activity indicators — running pipes now surface a live status indicator in the pipe list.
  • rename speakers in the meeting transcript sidebar — click any speaker name in the transcript panel to rename, search similar speakers, and propagate the rename across the meeting.
  • copy meeting transcript — new copy button in the meeting view copies the full transcript (not just the filtered view) as plain text.
  • pick which pipe summarizes meetings — new picker next to “summarize with AI” lets you choose any installed or store pipe to drive meeting summaries.
  • split and merge meetings — new POST /meetings/:id/split endpoint and a smarter merge that preserves titles, attendees, and notes from both sides. see the API docs.
  • back up your real-browser login state into the agent browser (macOS) — the agent’s embedded browser now inherits cookies from Arc, Chrome, Brave, and Edge, so authenticated sites (Twitter/X, Gmail, GitHub, your bank) work without a manual sign-in. each browser is opt-in via a one-time Keychain prompt.
  • one-click browser extension pairing — pair the screenpipe browser extension in a single click from the desktop app.
  • enterprise managed AI presets — admins can publish managed presets, lock the default, and gate custom presets per employee. see teams.
  • Intune deployment guide — IT admins deploying screenpipe to Windows fleets via Microsoft Intune now have a canonical reference. see Intune deployment.

updates

  • friendlier “sync now” error — the pipes-sync and memories-sync buttons in the account panel now disable while the engine is still starting, and surface a readable message instead of Load failed (localhost:3030).
  • chat tool rail readability — agent actions like curl -H "Authorization: Bearer ..." are now rendered as plain English (“Searched ChatGPT ‘q’”, “Saved memory”, “Navigated agent browser → calendar.google.com”) with the matching app icon. web tool calls also show the destination site’s favicon.
  • connection icons in chat tool rail — see at a glance which integration a tool call hit.
  • secure team sharing setup from the desktop app — initialize encrypted team sharing without leaving the app. see teams.
  • chat works while logged out — suggestion cards and a login button show up in unauthenticated chat sessions instead of an empty screen.
  • chat shows suggestions when unauthenticated + the AI preset selector now surfaces a login button so there’s always a clear way in.
  • mic capture is faster to recover on USB and Bluetooth devices — phantom audio interfaces (controller adapters, dock stubs, headset descriptors with nothing plugged in) are filtered out, so the device picker only shows mics that actually record. on Windows, format mismatches fall back to the system default format automatically.
  • audio reliability under load — increased the write connection pool and improved reconciled-transcript playback so merged audio chunks stay in sync with the timeline.
  • embedded browser stays inside the app — the agent browser no longer floats above unrelated apps and now follows the parent window for minimize, hide, and app switch.
  • embedded browser performance — kills a 60 Hz polling loop that was driving WindowServer and the SCK audio daemon to 100 % CPU when the browser panel was open.
  • embedded browser remembers where you left off — saved browser URLs now reliably restore on app launch.
  • monitor recovery after disconnect — vision capture now retries automatically when a display is unplugged and reconnected.
  • system audio toggle copy — clearer, shorter description of what “CoreAudio system audio” does and the Zoom/Meet/Teams trade-off.
  • changelog is live — the in-app changelog dialog pulls the latest entries from screenpi.pe instead of a stale bundled file.
  • AI gateway credits extend daily cost cap 1:1 — the 50topupbuttonnowactuallygivesyou50 top-up button now actually gives you 50 more headroom on Opus / Sonnet instead of getting blocked by the daily cost limit.
  • lower idle RAM — local text-PII (~2.8 GB) and image-PII (~150–200 MB) models lazy-load and unload after 60 s idle, freeing several GB when the worker isn’t busy.
  • explicit logs when AI PII removal is off — log lines now confirm the model isn’t loaded so you can verify the toggle worked.
  • AirPods + Bluetooth health status/audio/device/status now reports active_no_data while a hijacked or silent device recovers, instead of misleadingly reporting ok.
  • clamshell mode no longer captures the sleeping built-in display — the lid-closed laptop panel is filtered out of the capture list, saving cycles and black frames.
  • meeting detection robustness — added re-entry hysteresis so single-frame UI blips (e.g. Google Meet’s auto-hiding toolbar in Arc) no longer flap the meeting state machine.
  • clearer team invite error — server-emailed invite links don’t carry the team encryption key; the error now tells you to grab the full link from the admin’s desktop app.

bug fixes

  • Windows audio capture — fully reverted the upstream cpal regression that caused Windows 11 24H2 users to record near-silent audio (-85 dB) on Jabra, Logi, and Communications-class USB mics. capture levels and transcription are restored.
  • Windows owned browser — fixed WebView2 startup and loading failures on Windows.
  • Windows ONNX runtime — corrected the bundled runtime version so the app launches cleanly.
  • Windows ARM64 — release builds and signing pipeline restored.
  • connection permission prompts — fixed permission prompts that previously failed to appear when connecting new integrations.
  • connection details open in a dialog — selecting a connection no longer scrolls the settings page unexpectedly; details open in a modal instead.
  • connection tooltip clipping — tooltips no longer get cut off inside the connection modal.
  • Claude Desktop MSIX (Microsoft Store) support on Windows — MCP key injection now finds and patches the MSIX-installed Claude Desktop config.
  • Apple Intelligence tile is now hidden on non-macOS platforms.
  • Obsidian connection — vault auto-discovery and a cleaner connect/disconnect flow.
  • connections cleanup — fixed disconnect reliability, missing icons, and stale state across the connections panel.
  • chat preset switching in existing conversations — switching presets mid-conversation no longer drops your selection.
  • chat editing preserves what’s on screen — editing a previous message no longer collapses the surrounding context.
  • AI model picker — search clears when re-opening, and cancel/close behavior is fixed.
  • pipes UX — fixed dropdown lag, the stuck loading skeleton, offline state copy, and missing feedback in pipe discover.
  • discover-tab “new” badge on home page is hidden where it didn’t apply.
  • speaker email alias deduplication — speakers with multiple aliases are no longer counted as duplicates.
  • speaker merge from settings — the “yes, merge” button now actually merges instead of returning a 422.
  • macOS clipboard crashes — NSPasteboard reads are now dispatched to the main thread, eliminating a class of EXC_BAD_ACCESS crashes during heavy clipboard activity.
  • macOS cursor lag — disabled SCK’s cursor and click-ripple compositing, which was causing visible cursor lag during heavy interaction (Chrome tabs, dropdowns).
  • macOS callback panics — wrapped ObjC→Rust callbacks (scroll, magnify, notification action, dock menu) in panic guards so transient errors no longer SIGABRT the app.
  • pipe orphan PID cleanup no longer SIGTERMs the app itself — fixed a regression where saving settings could gracefully exit the app via the orphan-pipe cleanup path.
  • settings loss on update is now impossible — four-layer defense (snapshot, auto-restore, refuse-overwrite, stop empty-writes) protects your AI presets and settings across updates.
  • audio worker shutdown — clean shutdown signals stop the tokio teardown panics that were filling last-panic.log on every quit.
  • audio stream stop use-after-free — fixed a macOS crash when stopping or switching audio devices.
  • recording start race + health probe — concurrent capture-start invocations can no longer clobber each other, and a dead HTTP serve task after sleep/wake now triggers a real restart instead of an indefinite “connection error”.
  • speaker model loading — resilient downloads with retries so flaky networks don’t leave you without speaker recognition.
  • ORT initialization panics in the rfdetr image model and speaker init are now caught and surfaced as proper errors instead of crashing the worker.

new features

  • Zoom integration — connect Zoom via OAuth so meetings show up alongside other connected apps. configure in settings → connections.
  • Hermes Agent connection — drop screenpipe’s MCP server into your ~/.hermes/config.yaml from the connections panel. see MCP server.
  • Bee wearable — pair your Bee device as a connection so its captures join your screenpipe timeline. see connections.
  • clipboard capture privacy toggle — turn off clipboard capture from settings or via a new CLI flag when you don’t want copied text recorded. see the CLI reference.
  • focused document file paths — screenpipe now records the absolute path of the document you’re editing in TextEdit, Obsidian, Cursor, VS Code, Windsurf, VSCodium, and Trae, so you can search by filename.
  • meeting notes timeline scrubber — meeting transcripts now have a scrubber with full transcript playback, speaker rename popover, and an “open in timeline” button. see meeting transcription.
  • browser API: /navigate and /snapshot — drive the embedded browser from your pipes and grab DOM snapshots. see the API docs.
  • MCP update-meeting tool — let your AI write summaries back to a meeting note via a typed MCP tool. see MCP server.
  • manage AI presets from the CLI — create, update, delete, and set the default preset, plus pin a preset to a specific pipe. see the CLI reference.

updates

  • meeting summarize button is now front-and-center in the meeting view, and the AI writes its summary back into the note for you.
  • chat works without login — the b/w login banner is gone; you can chat on free models without an account.
  • browser panel state persists per conversation — width and collapsed state are remembered when you switch chats.
  • chat polish — queued messages are visually de-emphasised, the first thought block is collapsed by default, and a live dot pulses in the sidebar while the current chat is streaming.
  • pipes list is faster — large stdout/stderr payloads no longer ship with every list request.
  • “delete last N minutes” now actually removes the underlying mp4/wav files and drops cached frames.

bug fixes

  • clipboard crash protection on macOS — added a watchdog around NSPasteboard reads so a hanging clipboard owner can no longer take down screenpipe.
  • Claude Desktop MCP 403s — MCP API key discovery now uses the bundled bun, so auth works without a system bun on PATH.
  • privacy scrubs — API keys and tokens are stripped from the feedback console-log bundle, the cloud JWT is hidden from bash subshells, and auth tokens + emails are no longer logged on the server.
  • audio reliability — undecodable audio chunks are quarantined instead of retrying forever, and the audio reconciliation retry loop has been killed.
  • chat fixes — removing @input works again, new chats appear in the sidebar immediately, duplicate filters from dropdown buttons are deduped, the “writing…” indicator self-heals on session return, and chat history loss on Windows (sanitized filenames + atomic saves) is fixed.
  • settings — API key regenerate now respects cancel, apply, and manual edits.
  • shortcuts — pressing esc or clicking outside cancels a recording capture.
  • timeline — applied tag chips have a remove button, and empty-state arrow buttons navigate the right direction.
  • meeting notes — sidebar can be expanded again during a focused meeting, broken frame images are fixed, and the scrubber no longer ends early.
  • embedded browser — x.com loads again (Safari UA spoof).
  • skill install — added the download permission and surfaces loading / saved / error states.
  • offline mode actually blocks pipe network calls now (the half-baked toggle has been removed).
  • Windows — fixed an a11y crash from the GetWindowRect import.
  • pi configpi config now does a real merge instead of overwriting ~/.pi/agent/models.json.

week of april 26, 2026

new features

  • new integrations — connect Microsoft 365 and Teams, Google Docs, Google Sheets, QuickBooks Online, Bitrix24, Loops, Resend, Supabase, and the Pocket AI voice recorder. configure in settings → connections.
  • PII privacy filter — opt-in filter (powered by a Tinfoil enclave) that redacts personal info from /search results and chat messages before they leave your machine. toggle from the chat composer. learn more.
  • parallel chats with background streaming — start multiple chats and switch between them; responses keep streaming in the background. a new chat sidebar shows pinned chats, recents, and pipes scheduled to run.
  • focus-aware capture — when enabled, screenpipe only records the focused monitor instead of all of them, halving capture cost on multi-display setups. toggle from settings.
  • per-machine pipe favorites — star pipes you use most. starred pipes sort to the top of the pipe list and get their own filter chip.
  • LAN-access toggle for the API — bind the local API to 0.0.0.0 so other devices on your network can reach it. API auth is force-enabled when LAN access is on. see the API docs.
  • screenpipe sync remote — back up your screenpipe data over SSH/SFTP to a server you control. see the CLI reference.
  • screenpipe db {check, recover, cleanup, unlock} — new CLI commands to repair database corruption and reclaim disk space. see the CLI reference.
  • screenpipe logout — sign out of your screenpipe cloud account from the CLI.
  • connected apps as @mentions in chat — type @ in the chat filter popover to scope a question to a specific connected integration.
  • AI quota warnings — heads-up notice when you’re close to your daily limit on weighted models, so you don’t get cut off mid-task.
  • browser extension v0.2 — new popup with connection status, an options page, and token-based auth.

updates

  • CoreAudio Process Tap is now the default for system audio on macOS 14.4 and later — better quality and no virtual driver required.
  • API keys are now readable and regeneratable in the UI. user-set custom keys have been removed in favor of a single managed key.
  • Cursor-style inline edit — click any of your past chat messages to edit and re-run it.
  • redesigned sidebar — collapse button next to the macOS traffic lights, search opens a focused overlay window with a real keyboard shortcut, and starred pipes outrank running pipes in sort order.
  • timeline calendar — empty days are now disabled in the day picker and skipped when navigating with arrow keys.
  • chat models hot-swap — switching a preset’s model no longer restarts the chat subprocess.

bug fixes

  • mic stays connected on sleep/wake — fixed false-positive disconnects.
  • Microsoft 365 / Teams OAuth now uses the correct Azure client ID; personal Microsoft accounts are rejected up-front (Teams scope isn’t supported there).
  • database reliability — multibyte string truncation no longer panics, and connection starvation under heavy writes has been resolved.
  • diarization timeouts — added a speaker_id index that fixes 60s+ stalls on long meetings.
  • memories pipeline silently stopped updating — now back online.
  • macOS memory leaks — wrapped clipboard capture, monitor enumeration, and focus-tracker callbacks in autorelease pools.
  • search results — keyword flat mode no longer drops entries that lack text positions.
  • OAuth flows — auto-refresh of expired tokens in the generic proxy, query params now forwarded through the connection proxy, broader Google Sheets scope, and a fix for tokens being dropped when reconnecting an instance.
  • notifications — clicking “Open” on a native macOS notification now reliably brings the screenpipe window forward.
  • onboarding — MCP install uses the bundled bun, so it works without a system bun on PATH. WhatsApp connection now resolves bun the same way.
  • calendar permission — recovers when the macOS Privacy pane reports denied-but-empty.
  • chat polish — drag-select restored in user messages, ”+ new chat” reuses an empty chat instead of spawning duplicates, “Try again” appears when a model returns an empty response, and free models are always allowed regardless of quota.
  • Windows — restored ARM64 release builds, switched consumer release to SSL.com EV signing, and propagated system root CAs to bundled bun/node via NODE_EXTRA_CA_CERTS.