Skip to content

Feature/373 graph copilot#397

Merged
felix-schultz merged 7 commits intodevfrom
feature/373-graph-copilot
Nov 26, 2025
Merged

Feature/373 graph copilot#397
felix-schultz merged 7 commits intodevfrom
feature/373-graph-copilot

Conversation

@felix-schultz
Copy link
Copy Markdown
Member

This pull request introduces a new "FlowPilot" AI copilot feature for the desktop and website, along with significant UI enhancements to the website's visual sections. The main changes include backend implementation for the FlowPilot chat command, integration of this feature into the frontend state management, and visual improvements with animated backgrounds and interactive elements.

FlowPilot Copilot Feature:

  • Added a new flowpilot_chat command to the Tauri backend, including a DesktopCatalogProvider for node search/filtering, and exposed it to the frontend for AI-powered chat interactions on the board. [1] [2] [3] [4] [5]

  • Updated the frontend BoardState class to include a flowpilot_chat method, allowing the UI to interact with the FlowPilot copilot via Tauri. [1] [2] [3]

Website and UI Enhancements:

  • Added the new FlowPilot section to the homepage and imported the corresponding component. [1] [2]

  • Enhanced the "Design Workflows Visually" and "Extensibility" sections with animated glow orbs, improved card styling, and interactive visual effects for a more engaging user experience. [1] [2] [3] [4] [5] [6]

- Implemented `autocomplete` method in `FlowCopilot` component to suggest nodes based on user input.
- Added `autocomplete` method to `IBoardState` interface for backend integration.
- Created `CatalogProvider` trait and `DesktopCatalogProvider` struct for managing node suggestions.
- Integrated `autocomplete` command in Tauri's command handling.
- Updated `FlowBoard` to utilize `FlowCopilot` for enhanced user interaction.
- Introduced new `copilot.rs` file in Rust backend to handle autocomplete logic.
- Added necessary dependencies in `Cargo.toml` for async operations and error handling.
- Export additional types from flow-copilot in flow index.
- Update ScrollArea component to accept viewportRef and onScroll props.
- Implement focus node transformation in TextEditor for handling focus:// links.
- Modify safeDeserialize function to include focus node transformation.
- Add onFocusNode prop to TextEditor for handling focus node clicks.
- Improve error handling in useCommandExecution for command execution failures.
- Update IBoardState interface to include flowpilot_chat method with ChatMessage history.
- Implement flowpilot_chat method in EmptyBoardState to throw an error if called.
- Added a new hook `useCopilotCommands` to handle various board commands such as adding nodes, connecting pins, and managing variables and comments.
- Introduced a mapping system for node references and pin IDs to facilitate command execution.
- Implemented error handling and logging for command execution failures.
- Enhanced the command execution flow with a structured approach for adding nodes and managing connections.

fix: improve keyboard shortcuts to invalidate and refetch board data

- Updated the `useKeyboardShortcuts` hook to include a helper function for invalidating and refetching board data after undo/redo actions and node placements.
- Ensured consistent state updates across the application by replacing direct calls to `board.refetch()` with the new `invalidateBoard` function.

feat: define types for copilot commands and responses

- Created a new schema file `copilot.ts` to define types for agent interactions, chat messages, and board commands.
- Structured command types for operations like adding/removing nodes, connecting pins, and managing variables and comments.
- Added interfaces for copilot responses and suggestions to standardize communication with the copilot system.
- Added FlowCopilot functionality to the Traces component, allowing users to interact with suggestions and commands.
- Implemented resizable panels for better UI/UX, enabling users to adjust the log and FlowPilot view.
- Introduced new IRunContext interface to manage run context data across components.
- Updated various components and hooks to accommodate new props and state management for FlowCopilot.
- Refactored log message handling to optimize rendering and state updates.
- Introduced PendingCommandsView for displaying and executing pending commands with animations and tooltips.
- Added PlanStepsView to visualize the steps of a plan with progress tracking and expandable history.
- Created StatusPill component to represent loading phases with icons and labels.
- Defined types for loading phases and command structures in types.ts.
- Implemented utility functions for command icon retrieval, summary generation, and color coding.
- Updated traces component to support a customizable copilot panel.
- Enhanced useCopilotCommands hook to handle new command types including AddPlaceholder.
- Updated schema to include new command types and chat message structures with image support.
@felix-schultz felix-schultz linked an issue Nov 26, 2025 that may be closed by this pull request
8 tasks
@felix-schultz felix-schultz merged commit 835a07b into dev Nov 26, 2025
4 of 11 checks passed
Comment on lines +689 to +693
const updatedComment: IComment = {
...existingComment,
content: cmd.content ?? existingComment.content,
color: cmd.color ?? existingComment.content,
};
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The UpdateComment command incorrectly assigns existingComment.content to the color field when cmd.color is missing.
Severity: CRITICAL | Confidence: High

🔍 Detailed Analysis

When a UpdateComment command is processed, if cmd.color is not provided, the color field of the updatedComment object is incorrectly assigned the value of existingComment.content instead of existingComment.color. This copy-paste error corrupts the comment's color data, as the color field, which expects a hex color code or null, will store the comment's text content. This can lead to UI rendering failures, backend validation errors, and inconsistent database states.

💡 Suggested Fix

Change color: cmd.color ?? existingComment.content to color: cmd.color ?? existingComment.color on line 692 in packages/ui/hooks/use-copilot-commands.tsx.

🤖 Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: packages/ui/hooks/use-copilot-commands.tsx#L689-L693

Potential issue: When a `UpdateComment` command is processed, if `cmd.color` is not
provided, the `color` field of the `updatedComment` object is incorrectly assigned the
value of `existingComment.content` instead of `existingComment.color`. This copy-paste
error corrupts the comment's color data, as the `color` field, which expects a hex color
code or null, will store the comment's text content. This can lead to UI rendering
failures, backend validation errors, and inconsistent database states.

Did we get this right? 👍 / 👎 to inform future reviews.
Reference ID: 142341

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

FlowPilot

1 participant