Conversation
…ctions - Added `Loader2` to the SettingsPage "Apply Changes" button while `isSaving`. - Added `Loader2` to the ScheduledTaskModal "Browse Workspace" button while `browsingWorkspace`. - Added `Loader2` to the ScheduledTaskModal "Save" button while `saving`. - Replaced static `Clock` icon with `Loader2` spinner on the ScheduledTasksPage "Delete" button when `deletingIds.has(task.id)`. These changes provide immediate visual feedback during potentially blocking or long-running tasks. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
Added a new migration `m20260327_000025_add_stores_session_index` to create an index on the `session_id` column of the `stores` table. This addresses a performance bottleneck where queries filtering by `session_id` (a foreign key) were triggering full table scans, optimizing chat history loading and content management as the dataset grows. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
…debase - Replaces manual `env_clear()` and iterative environment whitelist logic with standardized `crate::utils::env::apply_isolated_env` or `apply_isolated_env_async` helpers. - Updates `src-tauri/src/utils/platform.rs`, `src-tauri/src/mcp/builtin/bootstrap/platform.rs`, `src-tauri/src/mcp/server/lifecycle.rs`, `src-tauri/src/mcp/session_isolation/stdio_manager/lifecycle.rs`, and `src-tauri/src/mcp/builtin/workspace/persistent_shell/session.rs`. - Updates corresponding test assertions in `tests.rs` to check for `apply_isolated_env_async`. - Appends new security learning to `.jules/sentinel.md`. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Release prep for LibrAgent v0.6.26, focusing on richer planning/scratchpad visibility in the Agent V2 UI and improved structured tool-result/metadata handling across providers.
Changes:
- Added typed parsing for planning + scratchpad structured state, and surfaced scratchpad/planning updates in both the planning panel and toast notifications.
- Standardized LLM-facing tool-result formatting to prefer
structuredContentmetadata, plus added a sanitizer to repair malformed tool-call arguments. - Updated Rust MCP tool schemas/handlers and expanded regression/integration test coverage; bumped packaging versions for the 0.6.26 release.
Reviewed changes
Copilot reviewed 66 out of 67 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/models/planning.ts | Adds parsing/normalization helpers for planning + scratchpad structured state. |
| src/models/tests/planning.test.ts | Adds coverage for the new parsing helpers. |
| src/lib/ai-service/utils.ts | Adds helpers to extract/format/parse structured tool results for LLM requests. |
| src/lib/ai-service/message-normalizer.ts | Adds malformed tool-call repair to prevent repeated provider 400s. |
| src/lib/ai-service/* (openai/groq/cerebras/ollama/gemini/anthropic) | Routes tool-message formatting through the new structured-result helpers. |
| src/features/agent/components/* | UI refresh for workspace/tools modal/planning panel; adds planning update toasts. |
| src/locales/*/common.json | Adds i18n strings for scratchpad/planning toast UI. |
| src-tauri/src/mcp/builtin/* | Schema description clarifications; playbook sorting/bookmark priority; session timeout structured metadata; scratchpad/planning schema fixes. |
| src-tauri/src/agent/* | Propagates structured_content into tool result messages/metadata. |
| src-tauri/tests/*.rs | Adds/updates regression + integration tests for schema and structured tool results. |
| src-tauri/tauri.conf.json, src-tauri/Cargo.toml, package.json, snap/snapcraft.yaml, aur/PKGBUILD, CHANGELOG.md | Version bump + release notes for 0.6.26. |
| src-tauri/Cargo.lock | Lockfile updates (currently inconsistent with 0.6.26 bump). |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added `aria-label` to the Workspace close button in `AgentDraftChatView`. - Added `aria-label` to the file attachment button in `AgentDraftChatView`. - Added `aria-label` to the send message button in `AgentDraftChatView`. - Added `aria-label` to the remove file button in `AgentDraftChatView`. - Added context-aware `aria-label` to the expand/collapse button in `AssistantCard`. - Used the `t()` function for proper localization of all accessibility labels. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
- Mocked `model-capabilities` in `anthropic.test.ts` to prevent it from trying to hit the OpenRouter API during test runs, which was causing the `listModels` test to timeout in CI. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…43481171490069 🌊 Fluid: Enhance UX and responsiveness in [Settings & Scheduled Tasks]
Removes the unnecessary recursive array sorting from the `recentSessions` memo within `AppSidebar.tsx`. Since `buildChildrenMap` builds the adjacency lists from the `sortedSessions` array sequentially, the children arrays natively inherit the `sortByPriority` ordering. Removing the explicit `.sort()` call eliminates an anti-pattern (in-place array mutation during a React render cycle) and removes redundant CPU cycles during re-renders. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
…logic The `VACUUM INTO` command in SQLite requires a string literal for the file path and cannot be easily parameterized. If the `backup_path` contained single quotes, it would lead to an SQL syntax error or allow SQL injection. This commit escapes single quotes in the path by replacing them with two single quotes (`''`). Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
…cePanel - Added `useDeferredValue` and `useMemo` to `AssistantEditor` MCP servers tab to prevent main-thread blocking and render jank during search input filtering. - Implemented visual transparency transition (`opacity-50`) during pending search states. - Added visual `Loader2` spinners to the 'Open in Explorer' and 'Open in Terminal' native invocation buttons in `AgentWorkspacePanel` to provide immediate feedback for async actions. - Documented performance learnings in the `.jules/fluid.md` journal. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
Replaced two instances of state synchronization via `useEffect` with the "Adjusting State During Render" pattern. This eliminates unnecessary re-renders and potential action-effect chain bugs when updating `selectedLineageId` or `expandedSessionIds`. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
…cePanel - Added `useDeferredValue` and `useMemo` to `AssistantEditor` MCP servers tab to prevent main-thread blocking and render jank during search input filtering. - Implemented visual transparency transition (`opacity-50`) during pending search states. - Added visual `Loader2` spinners to the 'Open in Explorer' and 'Open in Terminal' native invocation buttons in `AgentWorkspacePanel` to provide immediate feedback for async actions. - Documented performance learnings in the `.jules/fluid.md` journal. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
…kup-1476093364350372329 🛡️ Sentinel: [MEDIUM] Fix potential SQL injection in database backup logic
…y-panel-5970689451622574746 🕸️ Weaver: Refactor SessionHistoryPanel using Adjusting State During Render Pattern
…cePanel - Added `useDeferredValue` and `useMemo` to `AssistantEditor` MCP servers tab to prevent main-thread blocking and render jank during search input filtering. - Implemented visual transparency transition (`opacity-50`) during pending search states. - Added visual `Loader2` spinners to the 'Open in Explorer' and 'Open in Terminal' native invocation buttons in `AgentWorkspacePanel` to provide immediate feedback for async actions. - Documented performance learnings in the `.jules/fluid.md` journal. Co-authored-by: fritzprix <917899+fritzprix@users.noreply.github.com>
… keeping MCP enhancements
…06558698138 🌊 Fluid: Enhance UX and responsiveness in AssistantEditor and WorkspacePanel
…06558698138 feat: implement agent chat status bar, session management utilities, and UI components for task and session monitoring
…58412397596079 🎨 Palette: Add aria-labels to icon-only buttons
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| { | ||
| "name": "libragent", | ||
| "private": true, | ||
| "version": "0.6.24", | ||
| "version": "0.6.29", | ||
| "description": "A desktop app for AI agents with built-in tools", |
There was a problem hiding this comment.
PR description says this release is version 0.6.26, but the repo/package version is being bumped to 0.6.29 (and changelog entries are added up through 0.6.29). Please align the PR metadata/description (or the version bumps) so the release version is unambiguous and consistent across packaging files.
| const handleDownload = async () => { | ||
| const fileName = getImageDownloadName(uri, mimeType); | ||
| const dataBase64 = | ||
| rawData && !rawData.startsWith('data:') | ||
| ? rawData | ||
| : imageSrc.startsWith('data:') | ||
| ? imageSrc.slice(imageSrc.indexOf(',') + 1) | ||
| : undefined; |
There was a problem hiding this comment.
The download path extracts dataBase64 by slicing everything after the comma for any data: URL. This breaks for non-base64 data URLs (e.g. data:image/svg+xml,<svg...> or data:...;charset=utf-8,...) because the backend always base64-decodes dataBase64. Please detect ;base64 before treating the payload as base64 (otherwise either pass fileUrl/raw URL, or convert the non-base64 payload to bytes/base64 first).
This pull request releases version 0.6.26 of LibrAgent, introducing several new features, UI improvements, bug fixes, and internal refactors. The most notable changes include richer agent planning feedback in the UI, schema and overflow fixes for planning and tool panels, and enhanced handling of structured tool execution results. The update also brings improved metadata handling for tool messages and clarifies agent tool schema descriptions.
User-facing Features and UI Improvements:
Bug Fixes:
todoIdschema to remove misleading numeric bounds, preventing agents from making invalid ID assumptions. The agent chat UI now respects user font settings, and overflow issues in planning/tools panels have been resolved to ensure all content is accessible.Structured Tool Execution Results and Metadata:
structured_contentin results, enabling richer metadata in agent messages. Helper functions were added to build message metadata, and all relevant tool result message functions now accept and propagatestructured_content. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]Schema and Documentation Improvements:
Version and Packaging:
Cargo.toml,package.json,PKGBUILD,snapcraft.yaml), and updated the Snap and Debian bundle sources accordingly. [1] [2] [3] [4] [5]Internal and Test Updates:
Let me know if you want to dive deeper into any of these areas!