Skip to content

feat: add field attribute update semantics and refine template metadata#8504

Closed
edwinjosechittilappilly wants to merge 11 commits into
mainfrom
fix-template-reset-issue
Closed

feat: add field attribute update semantics and refine template metadata#8504
edwinjosechittilappilly wants to merge 11 commits into
mainfrom
fix-template-reset-issue

Conversation

@edwinjosechittilappilly
Copy link
Copy Markdown
Collaborator

@edwinjosechittilappilly edwinjosechittilappilly commented Jun 12, 2025

Summary by CodeRabbit

  • New Features

    • Enhanced input field metadata across all starter projects, including new UI properties such as "list_add_label", "tool_mode", "toggle", "dialog_inputs", and "options_metadata" for improved user experience.
    • Input types for sender and message fields updated to support more flexible and consistent interactions, including new slider and handle input types.
    • Real-time refresh and copy control added to relevant fields for dynamic UI updates and better data handling.
  • Refactor

    • Significant updates to component templates and starter projects, standardizing input metadata, adjusting field visibility, and refining UI behaviors for consistency.
    • Language model components and memory components refactored to support multiple providers and richer output options.
  • Style

    • Improved UI clarity by updating field labels, default values, and slider configurations across multiple components.
  • Bug Fixes

    • Corrected input type mismatches and visibility flags to ensure proper rendering and interaction in the UI.

@dosubot dosubot Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Jun 12, 2025
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 12, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This update introduces new constants for field attribute update semantics and implements a nuanced field update function in the backend, enabling selective preservation and updating of user-customized attributes during template synchronization. Numerous starter project JSON templates are updated to refine input field metadata, UI behavior, and input types, particularly for chat, agent, and memory components.

Changes

File(s) Change Summary
src/backend/base/langflow/base/constants.py Added new constant lists for field attribute preservation and update semantics; extended FIELD_FORMAT_ATTRIBUTES with additional attributes.
src/backend/base/langflow/initial_setup/setup.py Introduced update_field_with_preservation for nuanced field updates; updated synchronization logic to use new constants; improved logging of node changes with grouping and truncation.
src/backend/base/langflow/initial_setup/starter_projects/*.json Updated input field metadata across all starter project templates: added properties like list_add_label, tool_mode, copy_field, toggle, real_time_refresh, dialog_inputs, options_metadata; changed input types (e.g., MessageInputHandleInput, DropdownInputMessageTextInput); refined visibility (show), slider ranges, and UI hints. Some components (notably MemoryComponent) received logic and output changes to support new modes and richer outputs.

Sequence Diagram(s)

sequenceDiagram
    participant Setup as Initial Setup
    participant Project as Project Data
    participant Template as Latest Template
    participant Logger as Change Logger

    Setup->>Project: Iterate over nodes and fields
    loop For each field
        Setup->>Template: Retrieve latest field definition
        Setup->>Setup: Call update_field_with_preservation()
        alt Field exists in Project
            Setup->>Logger: Log preserved/updated attributes by reason
            Setup->>Project: Update field with preserved, critical, additive, and format attributes
        else Field new in Template
            Setup->>Logger: Log field addition
            Setup->>Project: Add new field with all attributes
        end
    end
    Setup->>Logger: Group and output change logs by reason
Loading

Possibly related PRs

  • langflow-ai/langflow#8323: Refactors the MemoryComponent for dual modes (store/retrieve) with dynamic inputs/outputs and message storing logic, which relates to this PR's enhancements in memory handling and field update/preservation logic.

Suggested labels

refactor, size:L, lgtm

✨ Finishing Touches
🧪 Generate Unit Tests
  • Create PR with Unit Tests
  • Post Copyable Unit Tests in Comment
  • Commit Unit Tests in branch fix-template-reset-issue

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai auto-generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR standardizes the UI schema across all starter-project JSON definitions by adding new UI configuration flags, updating input types, and refining component outputs.

  • Added new UI properties (copy_field, toggle, list_add_label, real_time_refresh) to input definitions for consistency.
  • Changed message-related inputs from "MessageInput" to "HandleInput" and updated their "type" to "other".
  • Refactored the MemoryComponent code to support both text and DataFrame outputs and introduced a sender_type input.

Reviewed Changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
Pokédex Agent.json Added UI flags, updated message input type
News Aggregator.json Added UI flags, updated message input type
Memory Chatbot.json Added UI flags, updated MemoryComponent outputs
Meeting Summary.json Added UI flags, updated message input type
Market Research.json Added UI flags, updated input types
Invoice Summarizer.json Added UI flags, updated input types
Instagram Copywriter.json Added UI flags, updated input types
Image Sentiment Analysis.json Added UI flags, updated input types
Hybrid Search RAG.json Added UI flags, updated input types
Gmail Agent.json Added UI flags, updated input types
Financial Report Parser.json Added UI flags, updated input types
Financial Agent.json Added UI flags, updated input types
Document Q&A.json Added UI flags, updated input types
Diet Analysis.json Added UI flags, updated input types
Custom Component Maker.json Added UI flags, updated input types
Blog Writer.json Added UI flags, updated input types
PromptComponent (Python) Switched to PromptInput, refined template UI
ChatOutput (Python) Updated handle/input types and UI flags

Copy link

Copilot AI Jun 12, 2025

Choose a reason for hiding this comment

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

[nitpick] There's a lot of repetitive UI flag additions across multiple JSON files. Consider abstracting common schema fragments or generating these fields via a shared template to reduce duplication and simplify future updates.

Copilot uses AI. Check for mistakes.
@coderabbitai coderabbitai Bot changed the title @coderabbit feat: add field attribute update semantics and refine template metadata Jun 12, 2025
@github-actions github-actions Bot added the enhancement New feature or request label Jun 12, 2025
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 14

🔭 Outside diff range comments (7)
src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json (1)

1782-1809: ⚠️ Potential issue

sender field mixes MessageTextInput with Dropdown-specific properties — UI may break.

_input_type is set to MessageTextInput, but options, options_metadata, and combobox are still present.
Those keys are meaningful only for DropdownInput and will likely be ignored or cause front-end warnings.

Decide which behaviour you want:

Option A – keep it free-text: remove the dropdown-only fields.

-    "options": [...],
-    "options_metadata": [...],
-    "combobox": false,

Option B – revert to dropdown:

-    "_input_type": "MessageTextInput",
+    "_input_type": "DropdownInput",

Aligning the schema avoids inconsistent rendering and keeps the template maintainable.

src/backend/base/langflow/initial_setup/setup.py (1)

173-209: ⚠️ Potential issue

Incorrect “old_value” captured for _type change

old_value is read after node_data["template"]["_type"] has already been overwritten, so the log will always record identical old/new values and hide real template-version migrations.

-                node_data["template"]["_type"] = latest_template["_type"]
-                ...
-                node_changes_log[node_type].append(
-                    {
-                        "attr": "_type",
-                        "old_value": node_data["template"]["_type"],
-                        "new_value": latest_template["_type"],
-                        "reason": "template_version_change",
-                    }
-                )
+                # cache original before mutating
+                previous_type = node_data["template"]["_type"]
+                node_data["template"]["_type"] = latest_template["_type"]
+                ...
+                node_changes_log[node_type].append(
+                    {
+                        "attr": "_type",
+                        "old_value": previous_type,
+                        "new_value": latest_template["_type"],
+                        "reason": "template_version_change",
+                    }
+                )
src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json (2)

596-598: ⚠️ Potential issue

Remove list_add_label from non-list inputs

The clean_data field is not a list; remove the list_add_label.


1287-1289: ⚠️ Potential issue

Remove list_add_label from non-list inputs

The system_message field is singular ("list": false); list_add_label should be removed.

src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json (1)

1207-1228: ⚠️ Potential issue

Critical: Changed input type to HandleInput
In ChatOutput, the "input_value" field’s _input_type changed from "MessageInput" with "type": "str" to "HandleInput" with "type": "other". This alters serialization and data flow. Please validate end-to-end that handle inputs function correctly in both frontend and backend.

src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json (2)

538-546: ⚠️ Potential issue

Update README note to multi-provider context.
The note still reads "Perform basic prompting with an OpenAI model." but the project now supports multiple providers. Please revise to mention "language model" or "selected provider" generically.


574-582: ⚠️ Potential issue

API key prompt is OpenAI-specific.
The guidance "Add your OpenAI API key here" is outdated under multi-provider support. Update to reflect provider selection (e.g., "Add your API key for the selected provider").

♻️ Duplicate comments (2)
src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json (1)

1234-1250: Duplicate: dropdown metadata enhancements
This change repeats the pattern of adding dialog_inputs, options_metadata, and toggle to dropdown fields. See earlier comment on line 478–493 for guidance.

src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json (1)

369-382: Inconsistent 'list_add_label' application
Same pattern detected for "chat_icon". See previous comment regarding list_add_label on non-list items.

🧹 Nitpick comments (17)
src/backend/base/langflow/base/constants.py (1)

28-50: Prevent accidental drift by making the buckets explicit sets and validating overlaps.

Using Python sets lets you:

for name, bucket in BUCKETS.items():
    duplicates = set().union(*(b for n, b in BUCKETS.items() if n != name)) & bucket
    if duplicates:
        raise ValueError(f"Attribute(s) {duplicates} defined in multiple buckets")

This single guard will surface any future collision (like the one above) during unit tests instead of at runtime.
No behaviour change, just tighter safety.

Also applies to: 62-90

src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json (6)

323-330: Ensure list_add_label is appropriate for non-list fields
Adding "list_add_label": "Add More" on fields where "list": false may confuse end-users. Confirm that the UI suppresses or ignores list labels on single-value inputs to avoid redundant controls.


346-354: Review list_add_label & tool_mode for chat_icon
The chat_icon field now explicitly sets "list_add_label" and "tool_mode": false. Verify that the front end honors the new label only when appropriate and that marking tool_mode false explicitly is not redundant.


478-486: Assess list label on sender_name
"list_add_label": "Add More" on a single‐value text field may produce redundant UI elements. Confirm whether this label should only appear when is_list is true.


501-509: Validate list label for session_id
Applying "list_add_label" to a non-list session_id input risks UI clutter. Ensure the label is conditionally rendered only when list: true.


521-528: Review boolean input extras on should_store_message
A boolean toggle now carries "list_add_label": "Add More". Confirm the UI ignores list labels on toggle controls or remove the property for clarity.


542-550: Confirm list label on text_color
The single‐value text_color input includes a list label. Verify no unintended UI affordance appears for non-list fields.

src/backend/base/langflow/initial_setup/starter_projects/Custom Component Maker.json (1)

319-324: Consistent list UI: add list_add_label for memory input
Introducing "list_add_label": "Add More" enhances UX for multi-entry fields. Consider auditing other list-enabled inputs in this project to ensure they all expose a clear "Add More" action.

src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json (3)

394-400: Inconsistent list_add_label on a non-list field
The add_current_date_tool input is declared with "list": false yet includes "list_add_label": "Add More". The list_add_label property only applies when "list": true. Please either remove list_add_label or switch the field to "list": true" if multiple entries are intended.


408-417: Review agent_description input metadata
You’ve added "copy_field": false and "list_add_label": "Add More" for agent_description. While disabling copy (copy_field: false) is valid, the list_add_label on a single-entry field ("list": false) will be ignored. Please remove list_add_label or enable multiple entries by setting "list": true.


533-593: Bulk: Remove list_add_label from single-entry inputs
Fields such as handle_parsing_errors, input_value, json_mode, and max_iterations have "list_add_label": "Add More" despite "list": false". Since they aren’t lists, this label has no effect. Please remove list_add_label or mark them "list": true" where multi-entry behavior is required:

  • handle_parsing_errors (line 533)
  • input_value (line 554)
  • json_mode (line 575)
  • max_iterations (line 593)
src/backend/base/langflow/initial_setup/setup.py (1)

55-139: Function complexity creeping up

update_field_with_preservation now exceeds the cyclomatic-complexity threshold flagged by pylint (13 branches).
Splitting the “critical”, “format”, and “additive” passes into tiny helpers will improve readability and testability without altering behaviour.
No immediate bug, but consider refactor.

🧰 Tools
🪛 Pylint (3.3.7)

[refactor] 55-55: Too many branches (13/12)

(R0912)

src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json (1)

1612-1617: Refine URLComponent ‘max_depth’ slider spec
Current step_type: "float" and float bounds may not align with integer-only depth values. Consider switching to integer specs (step_type: "int").

src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json (1)

440-442: Consider removing redundant tool_mode

tool_mode defaults to false on BoolInput—explicitly setting it is optional and can be omitted.

src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json (1)

400-446: Uniform list_add_label applied to Chat Output nested fields
background_color, chat_icon, and clean_data now include "list_add_label": "Add More". Approves consistency, but please verify the UI ignores list_add_label when "list": false.

src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json (1)

402-407: Enhance consistency on 'files' input metadata
The ChatInput JSON for files is missing list_add_label (given it's a list input) and explicit "tool_mode": false. Adding them will align this field with the rest of the starter projects’ UI metadata.

src/backend/base/langflow/initial_setup/starter_projects/Market Research.json (1)

355-374: Review empty metadata placeholders in sender input
You’ve added dialog_inputs: {}, options_metadata: [], and toggle: false to the sender DropdownInput. Consider populating these or removing them if not used to avoid clutter.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a11b3db and 1ebc70a.

📒 Files selected for processing (35)
  • src/backend/base/langflow/base/constants.py (3 hunks)
  • src/backend/base/langflow/initial_setup/setup.py (7 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json (33 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json (44 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json (17 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Custom Component Maker.json (14 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Diet Analysis.json (7 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json (33 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Financial Agent.json (31 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Financial Report Parser.json (8 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Gmail Agent.json (17 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Hybrid Search RAG.json (12 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json (25 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json (60 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json (13 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Market Research.json (51 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Meeting Summary.json (59 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json (39 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json (18 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json (13 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json (8 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json (21 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json (51 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Research Translation Loop.json (10 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/SEO Keyword Generator.json (17 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json (38 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Search agent.json (12 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json (96 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json (7 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json (15 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Text Sentiment Analysis.json (8 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json (46 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json (31 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json (95 hunks)
  • src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json (27 hunks)
🧰 Additional context used
🪛 Pylint (3.3.7)
src/backend/base/langflow/initial_setup/setup.py

[refactor] 55-55: Too many branches (13/12)

(R0912)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Ruff Style Check (3.13)
  • GitHub Check: Optimize new Python code in this PR
🔇 Additional comments (318)
src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json (12)

15-23: Edge targetHandle.type updated to "other"
Changing the type for the targetHandle on the ChatOutput edge to "other" aligns with the new HandleInput semantics for generic payloads.


930-938: Add toggle flag to ChatInput sender input
Introducing "toggle": false on the ChatInput’s sender field aligns it with the standardized dropdown behavior across nodes.


1037-1040: Hide ChatInput node by default
Setting "showNode": false cleans up the graph initial view. Please verify that hiding this node does not break the out-of-the-box starter flow.


1214-1233: Switch ChatOutput input to HandleInput
Using HandleInput with "type": "other" standardizes the ChatOutput’s payload handling for mixed data types.


1235-1242: Add toggle flag to ChatOutput sender input
Disabling toggle ("toggle": false) on the ChatOutput’s sender dropdown ensures consistent UI behavior with other components.


1350-1353: Hide ChatOutput node by default
Applying "showNode": false streamlines the UI. Double-check that this doesn’t hide needed functionality for new users.


1530-1536: Add toggle flag to Agent agent_llm selector
The new "toggle": false on the Model Provider dropdown matches the updated UX spec.


1801-1806: Add toggle flag to Agent model_name selector
Disabling toggle on model_name keeps the dropdown behavior uniform with other inputs.


1807-1813: Hide Agent’s n_messages input
Switching "show": false hides the deprecated message-count field as per the updated guidelines.


1930-1936: Hide Agent’s sender_name input
Marking "show": false for sender_name removes an optional filter and declutters the form.


2055-2063: Hide Agent’s template input
Deprecating the legacy template field by setting "show": false aligns with the move to dynamic data templating.


1887-1897: Convert Agent sender input to MessageTextInput
Replacing the DropdownInput with MessageTextInput and adding "input_types": ["Message"] and list metadata increases flexibility for custom senders.

src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json (14)

409-416: Validate list label on the files list input
For the files field ("list": true), "list_add_label": "Add More" matches expected behavior. Ensure the UI renders the custom label correctly alongside the temp_file flow.


422-430: Review copy_field, list_add_label, and tool_mode on input_value
The multiline input_value now disables copying, adds a list label, and forces tool_mode: false. Confirm disabling copy_field is intentional and that these metadata flags don’t interfere with editing or trace functionality.

Also applies to: 438-440


443-451: Check empty dropdown metadata on sender
Added "dialog_inputs": {}, "options_metadata": [], "toggle": false, and "tool_mode": false. Verify that empty containers are supported by the rendering engine and that toggling behavior remains unchanged.

Also applies to: 457-463


748-755: Validate list_add_label on ChatOutput background_color
The ChatOutput background_color template now has a list label despite "list": false. Check for proper suppression in the UI or consider removing it.


771-779: Evaluate list_add_label on ChatOutput chat_icon
Confirm that adding a list label to a non-list chat_icon field does not surface an extraneous control.


791-798: Verify list_add_label on clean_data boolean input
The boolean clean_data now carries a list label. Ensure boolean inputs ignore or hide this label in the UI.


843-851: Confirm input type change for ChatOutput input_value
Switched from _input_type: "MessageInput"/type: "str" to "HandleInput"/"other". Validate that downstream code and the UI support the new handler type and that deserialization still works.

Also applies to: 864-866


867-875: Review dropdown metadata for ChatOutput sender
The ChatOutput dropdown now includes empty "dialog_inputs", "options_metadata", and "toggle": false. Confirm these are necessary defaults and that they integrate cleanly with existing dropdown logic.

Also applies to: 880-886


901-908: Ensure list/tool flags for ChatOutput sender_name
sender_name now has list_add_label and explicit tool_mode: false. Verify that single-value message inputs handle these flags correctly.


923-932: Validate metadata flags for ChatOutput session_id
Check that session_id suppresses list labels on non-list fields and respects tool_mode: false.


938-947: Review boolean input extras for ChatOutput should_store_message
Confirm "list_add_label" and "tool_mode": false are properly ignored for boolean toggles.

Also applies to: 951-953


964-973: Confirm list_add_label on ChatOutput text_color
Ensure that adding a list label to a non-list text color input does not alter the control layout.


1789-1796: Validate list_add_label on Prompt template input
The PromptInput template now has a list label. Since it isn’t a list, verify that the label is either hidden or remove it to reduce metadata noise.


2091-2093: Approve real_time_refresh on OpenAI model selector
Enabling "real_time_refresh": true for the model_name dropdown improves UX by updating options dynamically. Ensure no performance regressions occur.

src/backend/base/langflow/initial_setup/starter_projects/Hybrid Search RAG.json (10)

432-432: Consistent toggle default for ChatInput.sender
Adding "toggle": false ensures the Sender Type dropdown respects the unified toggle pattern across inputs.


1062-1066: Enable dynamic refresh & toggle for OpenAIModel.model_name
"real_time_refresh": true keeps the model list current; "toggle": false matches the default toggle state for dropdowns.


1531-1533: Hide collection selector until database is chosen
Setting "show": false and "toggle": false for collection_name correctly hides it by default.


1656-1656: Disable toggle for AstraDB.database_name
Adding "toggle": false aligns the database selector with other non-toggleable inputs.


1782-1782: Disable toggle for AstraDB.keyspace
"toggle": false provides consistent UI behavior for the keyspace dropdown.


1804-1804: Hide lexical_terms by default
"show": false ensures the lexical terms input only appears when relevant.


1847-1849: Update default visibility for reranker
"show": false hides the reranker until hybrid search is active; "toggle": true allows it to be enabled.


1874-1874: Disable toggle for search_method selector
Adding "toggle": false maintains consistency with other dropdown inputs.


2371-2371: Add toggle default for ChatOutput.sender
Applying "toggle": false aligns ChatOutput dropdown metadata with the new UI schema.


2606-2606: Ensure ParserComponent.pattern is visible
Adding "show": true guarantees the template field is displayed by default in Parser mode.

src/backend/base/langflow/initial_setup/starter_projects/Research Translation Loop.json (9)

330-330: Add toggle flag to search_type input
Consistently disabling the UI toggle for dropdown inputs ensures unified behavior across starter projects.


557-557: Include toggle flag in model_name input
This matches the standardized dropdown configuration applied elsewhere.


606-606: Disable copy on system_message multiline input
Adding copy_field: false prevents unintended clipboard actions, aligning with other multiline fields.


958-979: Switch ChatOutput input_value to HandleInput with type other
Using HandleInput and other correctly reflects the component’s expected handle-based inputs.


1000-1000: Add toggle: false to ChatOutput sender dropdown
Ensures dropdown inputs have consistent toggle behavior.


1265-1265: Mark ChatInput files as temporary
The temp_file: true flag correctly signals ephemeral file handling in the UI.


1274-1274: Disable copy on ChatInput input_value field
copy_field: false aligns with the pattern for multiline inputs to avoid accidental content copying.


1312-1312: Add toggle flag to ChatInput sender dropdown
Standardizes the dropdown UI across components.


1606-1606: Make ParserComponent pattern input visible by default
Changing show to true aligns with the requirement to display the template field when needed.

src/backend/base/langflow/initial_setup/starter_projects/Custom Component Maker.json (6)

339-346: Hide and label the message input for list support
You've added "list_add_label": "Add More" and set "show": false on the message field—good for keeping the UI clean and conveying multi-entry intent. Ensure downstream logic handles an initially hidden field correctly.


380-386: Enhance “Number of Messages” input with list UI
Adding "list_add_label": "Add More" alongside hiding this advanced input by default aligns with the Memory component’s UX pattern. No concerns here.


395-410: Enable dropdown metadata for order input
New properties—"dialog_inputs": {}, "options_metadata": [], and "toggle": false—prepare this field for richer frontend behaviors. This aligns with other components’ patterns.


452-458: Standardize list label and visibility for sender_name
Adding "list_add_label": "Add More" and hiding the field by default keeps it consistent with other hidden advanced inputs. Looks good.


500-502: Add list label to session_id input
The "list_add_label": "Add More" addition is consistent with the Memory component’s multi-entry support. No issues.


517-531: Enhance template input with copy and list controls
You've introduced "copy_field": false, "list_add_label": "Add More", and set "show": false on the templating field—this is a useful UI refinement. Ensure the copy behavior is correctly wired in the frontend.

src/backend/base/langflow/initial_setup/starter_projects/Diet Analysis.json (6)

254-254: Added copy_field: false to multiline input metadata
This ensures that the original value isn’t duplicated when copying fields, aligning with other starter projects.


292-292: Added toggle: false to dropdown input metadata
Explicitly disabling the toggle for the sender field matches the standardized UI behavior across templates.


777-777: Added toggle: false to the model_name dropdown
Consistent with other dropdowns, this flag prevents unintended UI toggling.


842-842: Added copy_field: false to system_message multiline input
Prevents accidental field duplication in the UI, matching the pattern for other multiline inputs.


1068-1091: Switched ChatOutput input_value to HandleInput with type: other
This change allows the component to accept diverse upstream data types. Please verify that downstream rendering and validation logic supports HandleInput and the updated other type.


1110-1110: Added toggle: false to ChatOutput sender dropdown
Aligns the sender field behavior with the rest of the UI configuration.

src/backend/base/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json (19)

268-268: Standardize list-add affordance on Prompt template input

The addition of "list_add_label": "Add More" to the template field in the Prompt node ensures consistent UI labeling for list inputs. This aligns with other components’ patterns.


290-290: Add list-add label to tool_placeholder in Prompt node

Including "list_add_label": "Add More" on tool_placeholder maintains uniformity for list-enabled inputs across Prompt components.


388-396: Enhance ChatInput background_color metadata

Added "list_add_label": "Add More" and explicitly set "tool_mode": false for background_color. Confirm that tool_mode: false doesn’t conflict with other UI contexts.


412-419: Add list-add and disable tool mode for chat_icon

The chat_icon field now includes "list_add_label": "Add More" and sets "tool_mode": false. This mirrors the background_color update.


476-476: Add list-add label to files input

The files FileInput now has "list_add_label": "Add More", improving the prompt for adding multiple entries.


490-504: Refine ChatInput input_value metadata

input_value (MultilineInput) now has "copy_field": false, "list_add_label": "Add More", and "tool_mode": false. Validate that disabling copy suits cases where values shouldn’t be duplicated.


514-528: Explicit dropdown metadata for ChatInput sender

The sender DropdownInput adds "dialog_inputs": {}, "options_metadata": [], and "toggle": false. These defaults prevent null-field issues and standardize toggle behavior.


544-552: Standardize list-add on sender_name

sender_name now includes "list_add_label": "Add More", aligning with other text inputs.


567-575: Add list-add label to session_id

session_id gets "list_add_label": "Add More" to clarify how multiple entries are handled.


587-594: Question list-add on a boolean field

should_store_message now has "list_add_label": "Add More", but being a single boolean input, this label may be extraneous. Please verify that the list affordance is intended here.


607-614: Question list-add on a single-value color field

text_color includes "list_add_label": "Add More". Confirm this label is meaningful for a non-list input.


705-705: Add list-add on ChatOutput background_color

background_color in ChatOutput now has "list_add_label": "Add More", matching ChatInput’s pattern.


729-729: Add list-add label to ChatOutput chat_icon

chat_icon field now includes "list_add_label": "Add More", ensuring consistency across components.


749-749: Question list-add on clean_data boolean

clean_data bool input now has "list_add_label": "Add More". Verify that list affordance makes sense for a toggle.


786-786: Add list-add on data_template

data_template input now includes "list_add_label": "Add More". Check relevancy for a single template field.


802-822: Switch ChatOutput input_value to handle-type and update metadata

Changed _input_type to "HandleInput", updated "type" to "other", and added "list_add_label": "Add More". Ensure the frontend supports HandleInput with other and the new list-add label.


833-842: Refine ChatOutput sender dropdown metadata

Added "dialog_inputs": {}, "options_metadata": [], and "toggle": false for the sender field, aligning with ChatInput’s dropdown defaults.


1531-1536: Enable real-time refresh on OpenAI model_name and explicit toggle

model_name DropdownInput now has "real_time_refresh": true and "toggle": false, improving dynamic model list updates without unintended toggles.


1599-1607: Disable copy and add list-add on system_message MultilineInput

Inserted "copy_field": false and "list_add_label": "Add More" for system_message. Confirm that disabling copy aligns with expected UX for system messages.

src/backend/base/langflow/initial_setup/starter_projects/Text Sentiment Analysis.json (3)

1057-1061: Added real_time_refresh and toggle properties to model_name dropdowns
The model_name DropdownInput now includes "real_time_refresh": true and "toggle": false for immediate UI updates and consistent rendering. This aligns with the broader pattern of dynamic dropdown behavior across starter projects.

Also applies to: 1450-1454


1125-1125: Controlled copy behavior on system_message inputs
Introducing "copy_field": false on system_message multiline inputs prevents unintended copying in the UI. This enhances user control without impacting data flow.

Also applies to: 1517-1517


2351-2351: Disabled toggle on sender dropdown in ChatOutput
The sender DropdownInput now sets "toggle": false, ensuring dropdown consistency and matching other UI metadata updates.

Also applies to: 2659-2659

src/backend/base/langflow/initial_setup/starter_projects/Search agent.json (10)

462-462: Add temp_file flag to FileInput
The new "temp_file": true setting correctly enables ephemeral file uploads in the ChatInput component.


471-471: Disable copy button on multiline input
Adding "copy_field": false to the input_value field prevents unintended duplication, aligning with other templates.


509-509: Standardize toggle setting on DropdownInput
The "toggle": false flag for the sender dropdown ensures consistent UI behavior across inputs.


1179-1179: Apply toggle: false to model provider dropdown
Consistent use of "toggle": false on the agent_llm dropdown aligns with other starter projects.


1374-1374: Hide internal message field in Agent template
Changing "show": false for the message property cleans up the UI by hiding this internal field.


1450-1450: Disable toggle on model name field
Adding "toggle": false for model_name matches the standardized input metadata.


1466-1466: Hide n_messages input in Agent template
Setting "show": false for n_messages hides this advanced setting from end users.


1535-1546: Convert Agent sender from DropdownInput to MessageTextInput
Switching to MessageTextInput with "input_types": ["Message"], "list": false, and "list_add_label": "Add More" provides a free-form sender entry that matches other templates.


1578-1578: Hide Agent sender_name field by default
The "show": false flag cleans up the UI by removing this optional input from the main view.


1704-1704: Hide template field in Agent template
Applying "show": false to the template property declutters the UI for typical use cases.

src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json (6)

207-438: Approve ChatInput UI metadata enhancements

Added list_add_label, tool_mode, and copy_field properties across ChatInput template fields for unified list management and tool-mode toggles. No issues detected.


524-559: Approve ChatOutput UI metadata enhancements

ChatOutput component fields now include consistent list_add_label and tool_mode flags to align with updated backend field‐update semantics.


877-1012: Approve File component UI metadata enhancements

FileComponent inputs (path, file_path, etc.) have been enriched with list_add_label, temp_file, and associated metadata flags. UI behavior remains consistent and no logic changes.


1188-1201: Approve Prompt component UI metadata enhancements

PromptInput entries now define list_add_label and tool_mode to support selective preservation during template sync. Configuration is correct and low‐risk.


1488-1499: Approve OpenAIModel UI metadata dynamic refresh settings

The model_name DropdownInput now uses real_time_refresh for instant option updates and maintains toggle/tool_mode consistency.


1742-1751: Approve Parser component UI metadata enhancements

Parser inputs (pattern, mode, etc.) include list_add_label and real_time_refresh flags, standardizing UX without altering parsing logic.

src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json (1)

434-486: DropdownInput enhancements for model provider (agent_llm)
The new "dialog_inputs": {}, enriched options_metadata (icons per provider), and explicit "toggle": false improve UI consistency and iconography in the dropdown. These align with updates in other starter projects. Ensure that each entry in options_metadata correctly maps to its provider key.

src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json (17)

254-254: Disable copy_field on ChatInput input_value.

Consistently prevents the copy icon from appearing for multi-line chat inputs.


292-292: Disable toggle on ChatInput sender.

Stops the dropdown from being collapsible, matching the intended static sender selection.


564-564: Switch ChatOutput input_value to HandleInput.

Aligns with downstream handling of diverse data types (Data, DataFrame, Message).


585-585: Update ChatOutput input_value type to "other".

Reflects the broader set of allowed input types beyond plain strings.


606-606: Disable toggle on ChatOutput sender.

Ensures the message sender field remains fixed in the UI.


873-873: Enable real-time refresh on APIRequest body.

Improves UX by synchronizing table edits immediately when pasting cURL or switching modes.


988-988: Enable real-time refresh on APIRequest headers.

Parallel behavior to body for consistent live updates of header tables.


1070-1070: Disable toggle on APIRequest method.

Locks the HTTP method dropdown open for immediate visibility.


934-934: Disable copy_field on APIRequest curl_input.

Prevents unnecessary copy actions on the multi-line cURL command input.


1361-1361: Disable copy_field on Agent agent_description.

Removes copy affordance for the deprecated description field.


1633-1633: Hide Agent field message by default.

Reduces clutter by only showing the stored message field when necessary.


1725-1725: Hide Agent field n_messages by default.

Keeps the message retrieval count concealed unless explicitly toggled on.


1838-1838: Hide Agent field sender_name by default.

Streamlines the UI by hiding advanced sender name configurations.


1914-1914: Disable copy_field on Agent system_prompt.

Prevents accidental copying of the core system prompt instructions.


1951-1951: Disable copy_field on Agent template.

Removes the copy button for the templating input to avoid unintended duplication.


1964-1964: Hide Agent field template by default.

Conceals the formatting template until explicitly needed.


1794-1805: Convert Agent sender to MessageTextInput with explicit list metadata.

Switches from a dropdown to a text input allowing free-form message types, enforces input_types: ["Message"], disables toggling, and standardizes list behavior (list: false, list_add_label: "Add More").

src/backend/base/langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json (9)

271-271: Approve: Disable copy on multiline inputs
Adding "copy_field": false to the TextInput multiline field correctly disables the copy button in the UI, aligning with the updated metadata schema across other starter projects.


514-514: Approve: Disable toggle on model_name dropdown
Introducing "toggle": false for the model_name dropdown in the AnthropicModel component ensures consistent, static selection behavior per the new UI metadata conventions.


564-564: Approve: Disable copy on system_message multiline field
Adding "copy_field": false to the system_message input correctly prevents copying of system prompt text, matching the intended UX improvements.


854-854: Approve: Disable toggle on model_name dropdown (second instance)
The second AnthropicModel node also correctly applies "toggle": false to model_name, ensuring uniform dropdown behavior.


905-905: Approve: Disable copy on system_message multiline field (second instance)
Consistently applying "copy_field": false across both AnthropicModel definitions solidifies the UI metadata pattern.


1152-1173: Approve: Convert ChatOutput input to HandleInput
Changing input_value from MessageInput/str to HandleInput/other aligns with the component’s signature and its usage of handle-based I/O.


1194-1194: Approve: Disable toggle on sender dropdown
Adding "toggle": false to the sender dropdown field in ChatOutput ensures it behaves as a standard dropdown without toggle semantics, consistent with other dropdown updates.


2179-2179: Approve: Disable copy on parser pattern field
Introducing "copy_field": false for the parser’s pattern input is correct and matches the UX standard for multiline inputs.


2354-2354: Approve: Disable copy on parser pattern field (second parser)
Consistent use of "copy_field": false across all parser instances ensures uniform behavior in the template settings.

src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json (11)

387-387: Add consistent "Add More" label to prompt template field
Introducing list_add_label: "Add More" aligns this field with the new additive attribute semantics for list controls.


409-409: Enable "Add More" prompt on tool placeholder field
Adding list_add_label: "Add More" ensures the tool-mode placeholder matches the updated UI pattern.


508-509: Define "Add More" label and explicit tool_mode on background_color input
The new list_add_label and tool_mode: false properties bring this field into alignment with the updated UI metadata.

Also applies to: 515-515


531-531: Define "Add More" label and explicit tool_mode on chat_icon input
Consistent use of list_add_label and explicit tool_mode: false improves metadata clarity.

Also applies to: 538-538


595-595: Define "Add More" label on files input
Adding list_add_label: "Add More" updates this list-type field to match the new UI conventions.


609-609: Add copy_field, list_add_label, and explicit tool_mode to input_value

  • copy_field: false disables the copy icon.
  • list_add_label: "Add More" standardizes the add action.
  • tool_mode: false ensures correct mode behavior.

Also applies to: 615-615, 623-623


633-633: Add dialog_inputs, options_metadata, and toggle to sender dropdown
Introducing these empty metadata arrays aligns dropdown inputs with the enhanced UI schema.

Also applies to: 642-642, 647-647


663-663: Define "Add More" label on sender_name input
Adding list_add_label keeps this input in sync with the new additive attribute pattern.


686-686: Define "Add More" label on session_id input
Consistent addition of list_add_label maintains UI uniformity.


706-706: Define "Add More" label on should_store_message input
Applying list_add_label: "Add More" standardizes the list controls across inputs.


727-727: Define "Add More" label on text_color input
This update brings the text_color field into conformity with the new UI metadata scheme.

src/backend/base/langflow/initial_setup/starter_projects/Gmail Agent.json (12)

181-185: Disable copy on agent description
Added "copy_field": false to the agent_description multiline input to prevent users from copying deprecated agent descriptions, matching the new field‐preservation semantics.


206-238: Standardize dropdown toggle for model provider
Inserted "toggle": false on the agent_llm dropdown to disable toggle UI by default, consistent with other starter projects.


689-693: Disable copy on system prompt input
Added "copy_field": false to the system_prompt multiline input to disable copying of system instructions, in line with updated UI behavior.


742-760: Refine template field metadata

  • Added "copy_field": false to the template multiline input.
  • Changed "show": false to hide the template field by default.
    These adjustments align with the selective preservation/update pattern for less frequently used fields.

500-505: Disable toggle on model name selector
Added "toggle": false under the model_name dropdown to disable inline toggling, ensuring consistency with other dropdown inputs.


517-522: Hide n_messages by default
Set "show": false for the n_messages integer input to hide it unless explicitly enabled, matching the pattern for optional advanced fields.


561-566: Disable toggle on message order input
Added "toggle": false to the order dropdown to standardize its UI behavior alongside other dropdown inputs.


587-602: Update sender input to text with list support

  • Changed _input_type to MessageTextInput.
  • Added input_types: ["Message"], list: false, and list_add_label: "Add More" to enable text entry of a single message sender.
    This matches the refined sender configuration in other agent templates.

1003-1008: Disable copy on chat input value
Added "copy_field": false to the ChatInput’s input_value multiline input, preventing copy functionality on user-entered chat messages.


1041-1046: Disable toggle on chat input sender
Inserted "toggle": false on the ChatInput’s sender dropdown to align with the standardized dropdown behavior.


1315-1340: Switch ChatOutput input to handle arbitrary types

  • Updated _input_type from MessageInput to HandleInput.
  • Changed "type": "str" to "type": "other".
    This enables ChatOutput to accept Data, DataFrame, or Message inputs per the new semantics.

1354-1360: Disable toggle on ChatOutput sender
Added "toggle": false to the ChatOutput’s sender dropdown, ensuring UI consistency with other dropdown fields.

src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json (4)

434-458: Align ChatOutput input type with component API

The _input_type change to HandleInput and "type": "other" broadens accepted inputs (Data, DataFrame, Message). Please verify this matches the ChatComponent’s message_response logic and that the UI renders correctly for heterogeneous inputs.


465-482: Disable toggle on ChatOutput sender dropdown

Adding "toggle": false removes the toggle control for the sender field. Confirm this UX decision is intentional for this starter project and consistent with other templates.


1004-1008: Disable copy for ChatInput multiline field

The new "copy_field": false prevents copying the input_value by default, which streamlines the initial prompt interface. This aligns with patterns in other components.


1044-1044: Disable toggle on ChatInput sender dropdown

The added "toggle": false hides the toggle on the sender field in ChatInput. Ensure this matches the desired UX and that sender selection remains clear.

src/backend/base/langflow/initial_setup/starter_projects/SEO Keyword Generator.json (6)

308-308: Added list_add_label to Prompt template and tool_placeholder

The template and tool_placeholder inputs in the first Prompt node now include "list_add_label": "Add More" for consistent list‐entry behavior in the UI.

Also applies to: 330-330


473-474: Enabled list growth on second Prompt node

The second Prompt node’s template (lines 473–474) and tool_placeholder (lines 494–496) now each include "list_add_label": "Add More", matching the metadata pattern across starter projects.

Also applies to: 494-496


690-690: Upgraded ChatOutput input_value to HandleInput with list support

Switched _input_type to HandleInput (line 690), added "list_add_label": "Add More" (line 701), and updated "type" to "other" (line 710) for the ChatOutput input_value field. This change correctly handles heterogeneous inputs and supports multi-entry.

Also applies to: 701-701, 710-710


717-717: Enhanced ChatOutput sender dropdown metadata

Added "dialog_inputs": {} (line 717), "options_metadata": [] (line 726), and "toggle": false (line 731) to the sender field in ChatOutput to enrich frontend interactions.

Also applies to: 726-726, 731-731


594-594: Consistent list_add_label on ChatOutput fields

Applied "list_add_label": "Add More" to these ChatOutput inputs:

  • background_color (line 594)
  • chat_icon (line 617)
  • clean_data (line 637)
  • data_template (line 676)
  • should_store_message (line 791)
  • text_color (line 811)

This ensures a uniform “Add More” affordance across list-capable fields.

Also applies to: 617-617, 637-637, 676-676, 791-791, 811-811


1001-1001: Standardized OpenAIModel input metadata

Across the OpenAIModel template, the following UI properties have been enriched:

  • Added "list_add_label": "Add More" to input_value (1001), json_mode (1020), max_retries (1038), max_tokens (1056), model_kwargs (1081), openai_api_base (1132), seed (1151), and stream (1169).
  • Enabled "real_time_refresh": true (1115) and "toggle": false (1119) on the model_name dropdown.
  • Introduced "copy_field": false (1183) on system_message.

These changes align with the new metadata conventions for dynamic list and UI behaviors.

Also applies to: 1020-1020, 1038-1038, 1056-1056, 1081-1081, 1115-1115, 1119-1119, 1132-1132, 1151-1151, 1169-1169, 1183-1183

src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json (10)

336-336: Consistent toggle setting for mode input
Adding "toggle": false under the mode field aligns with other dropdown inputs by explicitly disabling the toggle UI.


345-345: Explicitly disable copy for prompt
The "copy_field": false flag on the prompt multiline input prevents unwanted duplication and matches the pattern elsewhere.


985-985: Disable copy for deprecated agent_description
Adding "copy_field": false to the agent_description multiline input follows the new UX conventions for de-emphasized/deprecated fields.


1033-1033: Disable toggle on model provider selection
The "toggle": false property on the agent_llm dropdown ensures consistent toggle behavior across provider inputs.


745-745: Disable copy for ChatInput input_value
Adding "copy_field": false to the ChatInput multiline field prevents copy controls and keeps the UI lean.


784-784: Disable toggle on ChatInput sender
The "toggle": false addition for the sender dropdown matches the standard of hiding toggle switches for these controls.


1771-1771: Disable toggle on SaveToFile file_format
Adding "toggle": false to the file_format dropdown is consistent with disabling toggle UIs for format selectors.


1804-1810: Enrich SaveToFile input field with list metadata
Introducing "input_types": ["Data","DataFrame","Message"], "list": false, and "list_add_label": "Add More" on the SaveToFile input handle input brings it in line with other handle‐input configurations.


1826-1826: Change SaveToFile input_type to other
Updating the input_type field’s "type" from "str" to "other" properly reflects its handle‐input semantics.


2045-2045: Disable toggle on ChatOutput sender
Adding "toggle": false for the ChatOutput sender dropdown maintains consistency in hiding toggle controls.

src/backend/base/langflow/initial_setup/starter_projects/Meeting Summary.json (11)

586-590: Consistent copy behavior for ParseData template
Adding "copy_field": false to the template input prevents unintended field duplication, aligning with other multiline inputs.


863-870: Enable live refresh and disable toggle on model selection
Introducing "real_time_refresh": true ensures the model dropdown updates downstream, and "toggle": false removes the toggle UI—both match intended UX enhancements.


931-935: Prevent copying on system message input
The "copy_field": false flag on system_message stops copying the default system prompt, consistent with other multiline inputs.


1235-1240: Add UI affordance for background color
Including "list_add_label": "Add More" on background_color gives users a clear hint to add multiple entries where supported.


1257-1262: Add UI affordance for chat icon
The "list_add_label": "Add More" label on chat_icon maintains consistency with other configurable fields.


2836-2840: Hide message count by default
Setting "show": false for n_messages ensures it’s hidden until ‘Retrieve’ mode is active. Please verify that update_build_config correctly toggles its visibility at runtime.


2969-2973: Prevent copying on memory template input
Adding "copy_field": false to the Memory template input aligns with expected behavior for multiline templates.


3158-3162: Add UI affordance for file list
The "list_add_label": "Add More" on the ChatInput files input clarifies how to attach multiple files.


3171-3175: Prevent copying on ChatInput text field
The "copy_field": false flag on input_value upholds consistency for all multiline or text inputs.


3559-3563: Explicit temp file behavior for audio input
Defining "temp_file": false for the audio_file input clarifies storage semantics and avoids unexpected cleanup.


3904-3908: Prevent copying on Parser template
The "copy_field": false addition to the Parser pattern input ensures users can’t inadvertently duplicate the template text.

src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json (15)

266-283: Enhance Prompt ‘template’ field metadata
Added _input_type, list_add_label, and explicit tool_mode flags to the Prompt template input for improved UI affordances and consistency with other starter projects.


285-295: Annotate Prompt ‘tool_placeholder’ with input metadata
Including _input_type and list_add_label ensures the tool placeholder input renders correctly in advanced and tool-mode contexts.


393-412: Refine TextInput ‘input_value’ settings
Adding copy_field, list_add_label, and tool_mode metadata aligns the multiline text input with standardized UI behaviors.


133-140: Change edge targetHandle type to “other” for Parser input
Switching the edge’s type from str to other accurately reflects that the ParserComponent accepts Data/DataFrame payloads, not plain strings.


490-507: Improve ChatOutput ‘background_color’ input metadata
Added list_add_label and explicit tool_mode flags to the background color input for UI clarity, matching patterns in other MessageTextInput fields.


513-530: Standardize ChatOutput ‘chat_icon’ input metadata
Including list_add_label and tool_mode properties ensures consistent handling of icon inputs in the chat component.


536-543: Annotate ChatOutput ‘clean_data’ Boolean input
Adding list_add_label completes the BoolInput metadata set, keeping it in line with other advanced toggles.


573-590: Enrich ChatOutput ‘data_template’ field metadata
The new _input_type, list_add_label, and tool_mode flags improve the editing experience for the data-to-text template.


595-618: Define ChatOutput ‘input_value’ as HandleInput of type “other”
Switching to HandleInput with type other and adding list_add_label ensures the chat output can accept diverse payloads (Data, DataFrame, Message).


619-637: Add metadata to ChatOutput ‘sender’ dropdown
Introducing _input_type, combobox, dialog_inputs, options_metadata, and toggle flags standardizes the dropdown configuration for sender selection.


643-661: Annotate ChatOutput ‘sender_name’ input
Including _input_type, list_add_label, and tool_mode for the sender name field to align with other MessageTextInput definitions.


667-684: Annotate ChatOutput ‘session_id’ input
Added _input_type, list_add_label, and tool_mode to the session ID field to maintain consistency across advanced text inputs.


689-704: Standardize ChatOutput ‘should_store_message’ toggle
Adding list_add_label and explicit tool_mode flags completes the BoolInput metadata for storing messages.


708-724: Enrich ChatOutput ‘text_color’ input metadata
Inserted list_add_label and tool_mode to the text color field to match the rest of the MessageTextInput inputs.


1026-1030: Enable real_time_refresh on model_name dropdown
Adding real_time_refresh and explicit toggle flags to the OpenAI model selector ensures dynamic UI updates when switching models.

src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json (8)

323-325: Correct use of list_add_label for list inputs

The files field is configured as a list ("list": true), so adding "list_add_label": "Add More" is appropriate here.


336-338: Appropriate copy_field on MultilineInput

The input_value uses a MultilineInput, so explicitly setting "copy_field": false is valid to define its copy behavior.


361-363: Added dialog_inputs enhances dropdown metadata

Including an empty "dialog_inputs": {} aligns this dropdown with the standardized UI schema for dialog-based selects.


370-372: Added options_metadata aligns with schema pattern

Providing "options_metadata": [] ensures consistency with other dropdown inputs that leverage metadata for each option.


375-377: Explicit toggle: false clarifies dropdown behavior

Defining "toggle": false makes the intended UI interaction explicit and matches existing dropdown semantics.


1211-1213: Enable real_time_refresh on model_name dropdown

Adding "real_time_refresh": true ensures the model options update dynamically when the API base changes.


1215-1217: Explicit toggle: false clarifies dropdown UI

Defining "toggle": false for model_name clearly indicates its dropdown behavior.


1279-1281: Appropriate copy_field on MultilineInput

The system_message uses a MultilineInput; specifying "copy_field": false is valid.

src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json (5)

376-384: Confirm explicit tool_mode: false semantics
Multiple inputs now have "tool_mode": false, preventing them from appearing in tool mode. Verify that none of these inputs are required in tool-mode flows, and update the flag only where intended.


438-445: Approve list_add_label for true-list inputs
On the "files" input ("list": true), the addition of "list_add_label": "Add More" correctly enhances multi-file UX.


452-470: Evaluate copy_field override on multiline inputs
The multiline inputs gain "copy_field": false and list_add_label even when not list-enabled. Confirm that disabling the copy button aligns with UX goals and that the label logic is consistent.


478-493: Review dropdown metadata defaults
For the "sender" field, you’ve added dialog_inputs: {}, an empty options_metadata array, and "toggle": false. Ensure that passing empty/default metadata will not break downstream UI code expecting populated entries.


2010-2038: Verify slider configuration for temperature
The "temperature" input has been converted to a SliderInput with new keys (range_spec, slider_buttons, etc.). Confirm the slider’s min/max/step, button options, and icons match design requirements.

src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json (7)

254-293: Standardize ChatInput template fields with "Add More" and disabled tool mode
The additions of list_add_label: "Add More" and tool_mode: false to background_color and chat_icon align with other starter project conventions.


341-380: Enhance files and input_value ChatInput metadata
Adding list_add_label: "Add More", disabling tool_mode, and setting copy_field: false for the files and input_value fields improves list UX consistency and prevents unwanted copying.


380-405: Enable dynamic entries for ChatInput sender fields
The inclusion of dialog_inputs, options_metadata, toggle: false, and tool_mode: false properties on the sender dropdown paves the way for future extensibility and keeps the UI consistent across components.


414-491: Apply "Add More" and disable tool mode across ChatInput advanced fields
Consistent list_add_label and tool_mode: false flags on sender_name, session_id, should_store_message, and text_color maintain template uniformity and expected user interaction patterns.


565-611: Standardize ChatOutput template with "Add More" affordance
Introducing list_add_label: "Add More" to background_color and chat_icon in ChatOutput mirrors the ChatInput pattern and enhances the consistency of the UI.


668-696: Update ChatOutput input_value to HandleInput for flexible types
Switching _input_type to HandleInput and changing type to "other", along with adding list_add_label, enables the field to accept multiple schemas (Data, DataFrame, Message) and improves UX.


695-721: Refine ChatOutput sender dropdown metadata
Adding empty dialog_inputs, options_metadata, disabling toggle, and ensuring tool_mode: false for the sender dropdown aligns it with the new input metadata standards.

src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json (17)

383-390: Align column_name input to message type.
Updated _input_type to MessageTextInput and added "input_types": ["Message"] for column_name in BatchRunComponent—this ensures the field only accepts message-style inputs, matching frontend expectations.


488-491: Prevent unintended copying on multiline system_message.
Introduced "copy_field": false for the system_message input in BatchRunComponent template to stop automatic duplication of large instruction blocks.


687-690: Disable toggle for sort_by.
Added "toggle": false on the sort_by dropdown in YouTubeCommentsComponent to enforce standard dropdown behavior and avoid confusion with toggle controls.


975-979: Enhance model_name dynamic loading.
Enabled "real_time_refresh": true and set "toggle": false for model_name in OpenAIModelComponent so that model options refresh on API key changes while preserving dropdown semantics.


1041-1044: Prevent copy on system_message in OpenAIModel.
Added "copy_field": false for the system_message field in the OpenAI model component, keeping multiline content safe from accidental duplication.


1078-1080: Constrain temperature slider to [0.0,1.0].
Adjusted the slider’s max to 1.0 and explicitly set min to 0.0 for the temperature input in OpenAIModelComponent, aligning with the valid API range.


1218-1221: Lock copy on agent_description.
Inserted "copy_field": false for the deprecated agent_description in AgentComponent to control multiline input behavior consistently.


1461-1464: Hide internal message input in Agent.
Set "show": false for the message field within the Agent node template to declutter the UI and surface only essential controls.


1553-1556: Hide n_messages by default.
Changed "show": false on n_messages in AgentComponent template, removing non-critical settings from the primary view.


1624-1635: Standardize sender input in Agent.
Switched to MessageTextInput with "input_types": ["Message"] and ensured "list": false/"list_add_label" consistency for the sender field, improving message-based filtering.


1725-1727: Prevent copy on system_prompt.
Added "copy_field": false for system_prompt in the AgentComponent template, avoiding accidental duplication of instructions.


1778-1780: Lock copy on template in Prompt node.
Introduced "copy_field": false for the multiline template input in PromptComponent, ensuring large prompt templates aren’t auto-copied.


2213-2235: Broaden input_value handling in ChatOutput.
Changed _input_type from MessageInput to HandleInput and updated "type": "other" for input_value, allowing the output component to accept Data, DataFrame, or Message seamlessly.


2595-2599: Disable toggle for translation.
Added "toggle": false to the translation dropdown in YouTubeTranscriptsComponent, keeping the UI consistent with other dropdown inputs.


2606-2608: Prevent copy on transcript url.
Inserted "copy_field": false for the url field in YouTubeTranscriptsComponent, avoiding unintentional duplication of video URLs.


3168-3171: Disable toggle on default_route.
Set "toggle": false for default_route in ConditionalRouter, preserving expected dropdown semantics in conditional paths.


3421-3422: Prevent copy on pattern in Parser.
Added "copy_field": false for the pattern multiline input in ParserComponent to avoid accidental duplication of template strings.

src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json (15)

5-11: Explicit edge metadata additions look good.
Setting animated and selected flags explicitly on edges improves UI consistency and matches other starter projects.

Also applies to: 25-31


33-40: Consistent metadata on additional edges.
The added dataType, fieldName, and complex edge id structures align with the new LanguageModelComponent pattern and maintain consistency across the graph.

Also applies to: 45-52, 53-59, 61-69, 73-82


96-105: Node ID and version bump are correct.
Updating id to match the generated identifier and bumping lf_version to 1.4.3 ensures the ChatInput node aligns with the updated component definitions.

Also applies to: 119-119


151-182: Repeated input/template metadata additions.
These changes uniformly introduce list_add_label, tool_mode, copy_field, and other UI flags across ChatInput fields. They follow the pattern established in other starter projects.

Also applies to: 206-214, 238-246, 250-259, 266-269, 272-280, 283-292, 296-305, 319-327, 329-337, 342-350


389-393: Adjusted node width for ChatInput.
Setting width to 320 matches the standard node size for a uniform layout.


410-430: Prompt node version bump and UI metadata.
The lf_version update and added list_add_label ensure the Prompt node aligns with v1.4.3 and the new UI conventions.

Also applies to: 478-478


761-784: ChatOutput HandleInput update is correct.
Switching input_value to HandleInput with type: "other" aligns with the new handling of Data/DataFrame/Message inputs.

Also applies to: 785-785


906-913: Visual tweaks on ChatOutput node.
The selection state and measured dimensions updates are standard UI adjustments and look consistent.

Also applies to: 919-920


937-947: LanguageModelComponent field order updated.
Introducing provider, model_name, and api_key in the correct order supports the multi-provider pattern in the UI.


998-1003: SecretStrInput enhancements.
The new info message and real_time_refresh flag on the api_key field improve usability when switching providers.

Also applies to: 1009-1009


1020-1032: Multi-provider imports in code template.
The code correctly imports and configures ChatOpenAI, ChatAnthropic, and ChatGoogleGenerativeAI, enabling seamless provider switching.


1089-1102: Provider dropdown options metadata.
Adding options_metadata with provider icons enhances the selector UX and aligns with new component inputs.

Also applies to: 1103-1113


1198-1205: Node rendering and positioning tweaks.
Adjustments to showNode, dimensions, and position are minor UI refinements.

Also applies to: 1207-1208


1215-1217: Viewport settings updated.
Tweaking zoom and coordinates is expected when repositioning the graph and does not introduce regressions.


1224-1224: last_tested_version bump is correct.
Updating to 1.4.3 aligns the project metadata with the new component versions.

src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json (6)

279-281: Added list_add_label to Prompt template field
The "Add More" label standardizes multi-entry UI across starter projects.


301-303: Standardized list_add_label on Prompt tool_placeholder
Consistent with the new metadata conventions for tool-mode inputs.


482-620: Enhanced Chat Output input metadata
The data_template, input_value, sender, sender_name, session_id, should_store_message, and text_color fields were all updated with list_add_label, and dropdowns now include dialog_inputs/options_metadata. Confirm these additions render correctly for both list and non-list inputs.


760-788: Refined Agent add_current_date_tool and deprecated agent_description
Added list_add_label for uniformity and copy_field: false to mark deprecation. These changes align with the updated field-preservation semantics.


803-858: Augmented Agent LLM dropdown metadata
Introduced dialog_inputs: {}, expanded options_metadata with provider icons, and set toggle: false for consistency. This enhances UI clarity for model selection.


1538-1564: Aligned Calculator component metadata
The expression input and tools_metadata now include list_add_label: "Add More", matching the standard across other components.

src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json (2)

346-359: Validate 'list_add_label' usage on non-list inputs & confirm 'tool_mode' defaults
These fields, like "background_color", have "list": false but define a list_add_label. Confirm if this label should only appear when lists are enabled. Also, adding "tool_mode": false is consistent with disabling tool-mode UX—ensure this aligns globally.


433-4861: The subsequent changes are repetitive metadata additions (list_add_label, tool_mode, copy_field toggles, etc.) that follow the same pattern applied across many fields. No further per-segment comments are necessary.

src/backend/base/langflow/initial_setup/starter_projects/Market Research.json (10)

233-240: Consistent UI affordance for background_color input
You’ve added list_add_label: "Add More" and explicitly set tool_mode: false to the background_color input. This aligns it with other inputs — good for consistency.


256-263: Consistent UI affordance for chat_icon input
Similar to background_color, you’ve added list_add_label: "Add More" and set tool_mode: false on the chat_icon input. This maintains uniform behavior.


318-321: Enable list label for Files input
Adding list_add_label: "Add More" to files clarifies the UI affordance for list inputs. Looks good.


332-349: Enhance input_value metadata
You’ve introduced copy_field: false, list_add_label: "Add More", and tool_mode: false to the input_value field. This ensures copy behavior is controlled and UI labels are consistent.


385-395: Consistent UI affordance for sender_name input
Adding list_add_label: "Add More" and explicitly setting tool_mode: false improves consistency across inputs.


409-419: Consistent UI affordance for session_id input
The addition of list_add_label: "Add More" and tool_mode: false is consistent with the design pattern.


430-438: Consistent UI affordance for should_store_message input
Including list_add_label: "Add More" and tool_mode: false ensures uniform controls across boolean inputs.


450-460: Consistent UI affordance for text_color input
The list_add_label: "Add More" and tool_mode: false flags here mirror other message-style inputs.


549-552: Enable list label on ChatOutput background_color
Adding list_add_label: "Add More" to the ChatOutput’s background_color template enhances clarity.


571-576: Enable list label on ChatOutput chat_icon
The list_add_label: "Add More" on ChatOutput’s chat_icon template keeps the UI consistent.

src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json (17)

208-209: Approve: Added list_add_label for background_color in ChatInput template.

This aligns the ChatInput UI with other components by providing a clear “Add More” affordance for list inputs.


231-232: Approve: Added list_add_label for chat_icon in ChatInput template.

Consistent with the list input pattern across the UI.


294-296: Approve: Added list_add_label for files in ChatInput template.

Ensures uniform list control behavior.


308-310: Approve: Explicitly set copy_field to false for input_value in ChatInput.

Clarifies that the input value isn’t inadvertently copied elsewhere.


314-316: Approve: Added list_add_label for input_value in ChatInput template.


333-334: Approve: Enhanced sender dropdown in ChatInput with dialog_inputs, options_metadata, and toggle flags.

These additions improve configurability and future extensibility.

Also applies to: 342-347


526-527: Approve: Added list_add_label for background_color in ChatOutput template.


549-550: Approve: Added list_add_label for chat_icon in ChatOutput template.


568-570: Approve: Added list_add_label for clean_data in ChatOutput template.


607-609: Approve: Added list_add_label for data_template in ChatOutput template.


621-623: Critical: Updated input_value type from MessageInput to HandleInput in ChatOutput.

Verify that all downstream logic and renderers handle the new HandleInput type correctly, including serialization and validation.


633-635: Approve: Added list_add_label for input_value in ChatOutput template.


649-650: Approve: Enhanced sender dropdown in ChatOutput with dialog_inputs, options_metadata, and toggle flags.

Also applies to: 658-659, 663-664


937-939: Approve: Added list_add_label for external memory input in ChatOutput template.


999-1005: Approve: Standardized list_add_label, show, and tool_mode flags for n_messages input in ChatOutput.


1019-1024: Approve: Added options_metadata and toggle flags for order dropdown in ChatOutput template.


881-905: Approve: Expanded Memory component outputs to include both text (messages_text) and dataframe formats.

This aligns with the new dual-output semantics and enriches template functionality.

src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json (20)

274-277: Add temp_file flag to ChatInput files
The new "temp_file": true ensures uploaded files are treated as temporary in the Playground, preventing unintended persistence.


282-287: Disable copy on ChatInput input_value
Adding "copy_field": false prevents users from copying the entire input value, matching other multiline fields’ behavior.


321-324: Hide toggle for ChatInput sender
Setting "toggle": false removes the toggle UI on the dropdown, simplifying the sender selection.


594-616: Switch ChatOutput input_value to HandleInput
Changing _input_type to "HandleInput" and "type" to "other" allows ChatOutput to accept multiple data sources consistently.


635-638: Hide toggle for ChatOutput sender
Disabling the toggle on the sender dropdown keeps the UI consistent with other components.


1028-1032: Hide toggle for TavilySearchComponent search_depth
Adding "toggle": false streamlines the component by removing an unnecessary toggle control.


1056-1058: Hide toggle for TavilySearchComponent time_range
Consistency fix: the time_range dropdown no longer shows a toggle switch.


1176-1180: Hide toggle for TavilySearchComponent topic
Disabling the toggle in the topic selector simplifies the UI.


1698-1701: Disable copy on Agent agent_description
The deprecated multiline agent_description now has "copy_field": false to match other fields.


1748-1750: Hide toggle for Agent agent_llm
Removing the toggle from the model provider dropdown keeps the interface clean.


2005-2020: Hide toggle for Agent model_name
The model name dropdown no longer displays a toggle, aligning with other dropdown inputs.


2030-2033: Hide Agent n_messages field
Changing "show": false conceals this internal setting from end users.


1942-1945: Hide Agent message output field
The stored message output is now hidden with "show": false, preventing confusion in the UI.


2105-2115: Convert Agent sender to MessageTextInput
Switching _input_type to "MessageTextInput" with proper "input_types": ["Message"], "list": false, and "list_add_label": "Add More" ensures consistency with other message fields.


2143-2146: Hide Agent sender_name field
Setting "show": false removes the sender name input from the default view.


2206-2208: Disable copy on Agent system_prompt
Adding "copy_field": false avoids unintended duplication of the system prompt.


2260-2261: Disable copy on Agent template
The multiline template input now uses "copy_field": false for consistency.


2272-2274: Hide Agent template field
Concealing the template input by setting "show": false simplifies the user interface.


2078-2081: Hide toggle for Agent order
Removing the toggle switch from the order dropdown keeps controls uniform.


2171-2176: Hide toggle for Agent sender_type
Disabling the toggle on the sender type selector maintains consistency.

src/backend/base/langflow/initial_setup/starter_projects/Financial Agent.json (11)

477-477: Disable copy for ChatInput multiline value
Adding "copy_field": false to the input_value field disables the copy button. Ensure this is applied consistently for all multiline inputs where copying should be restricted.


515-515: Disable toggle UI on ChatInput sender dropdown
The added "toggle": false on the sender field ensures the dropdown isn’t rendered as a toggle. Good for consistency with other dropdown inputs.


909-909: Disable toggle on TavilySearchComponent search depth
The "toggle": false addition on search_depth aligns this dropdown with the new UI defaults.


935-935: Disable toggle on TavilySearchComponent time range
Turning off the toggle UI for time_range keeps the dropdown behavior consistent across the component.


1503-1525: Use HandleInput and type “other” for ChatOutput input_value
Switching _input_type to HandleInput and setting "type": "other" correctly configures the forward link connector for ChatOutput.


1545-1545: Disable toggle on ChatOutput sender dropdown
Adding "toggle": false here maintains consistency with dropdown styling and behavior in ChatOutput.


2803-2803: Hide the internal “message” field in Agent UI
The flag "show": false on the message input prevents exposing internal storage fields in the UI. Confirm this field is only used programmatically.


3067-3067: Disable copy for Agent system_message multiline input
Applying "copy_field": false to the system_message field is correct to prevent accidental duplication of what should be an immutable system instruction.


3105-3106: Restrict Agent temperature slider range
Updating the temperature range_spec to a max of 1.0 and min of 0.0 aligns the slider with standard softmax sampling bounds.


3308-3312: Disable toggle on Agent model_name dropdown
The new "toggle": false entry on model_name prevents it being rendered as a toggle switch, consistent with other dropdowns.


3138-3138: Hide Agent template field in the UI
Setting "show": false on the template input hides this field from end-users while still using it internally.

src/backend/base/langflow/initial_setup/starter_projects/Financial Report Parser.json (9)

361-365: Add UI metadata to model_name DropdownInput

Adding real_time_refresh: true and toggle: false for the model_name dropdown ensures it updates dynamically and follows the project-wide toggle convention.


429-429: Disable copy on system_message MultilineInput

Setting "copy_field": false for the system_message field correctly prevents users from copying its contents, matching other multiline inputs.


676-697: Switch ChatOutput input_value to HandleInput with type "other"

Changing _input_type from "MessageInput" to "HandleInput" and type to "other" broadens accepted input types and aligns with the component’s design.


718-719: Add toggle flag to sender DropdownInput in ChatOutput

Including "toggle": false for the sender dropdown standardizes toggle behavior across all dropdown inputs.


994-994: Disable copy on ChatInput input_value MultilineInput

Adding "copy_field": false to the ChatInput’s input_value field correctly prevents copying input text in the UI.


1032-1032: Add toggle flag to sender DropdownInput in ChatInput

Setting "toggle": false for the sender dropdown in ChatInput maintains consistency with other dropdown components.


1429-1429: Disable copy on StructuredOutput system_prompt MultilineInput

Applying "copy_field": false to the system_prompt multiline input aligns its behavior with other prompt fields.


1570-1570: Enable real_time_refresh on Parser mode TabInput

The "real_time_refresh": true flag for the mode TabInput ensures the UI updates pattern visibility dynamically when switching modes.


1581-1581: Disable copy on Parser pattern MultilineInput

Adding "copy_field": false to the pattern field prevents direct copying of template text, consistent with other multiline inputs.

Comment thread src/backend/base/langflow/base/constants.py
Comment on lines +417 to +427
"_input_type": "MessageTextInput",
"advanced": true,
"combobox": false,
"display_name": "Sender",
"dynamic": false,
"info": "The sender of the message. Might be Machine or User. If empty, the current sender parameter will be used.",
"input_types": [
"Message"
],
"list": false,
"list_add_label": "Add More",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Input type mismatch on sender field
Switched _input_type to MessageTextInput but retained an options list—MessageTextInput doesn't consume options. This will break the UI. Either revert to DropdownInput or remove the options array.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Custom Component
Maker.json around lines 417 to 427, the sender field uses _input_type
"MessageTextInput" but still includes an options list, which is incompatible and
breaks the UI. To fix this, either change _input_type back to "DropdownInput" to
match the options list or remove the options array entirely if you want to keep
"MessageTextInput".

Comment on lines +83 to +89
updated_field = existing_field.copy()

# Always preserve user-specific attributes
for attr in USER_PRESERVED_ATTRIBUTES:
if attr in existing_field:
updated_field[attr] = existing_field[attr]

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot Jun 12, 2025

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Use deepcopy when cloning a field

updated_field = existing_field.copy() is only a shallow clone; nested dictionaries/lists still alias the original object inside project_data.
Sub-attribute updates later in the pipeline will silently mutate the original template, causing surprising side-effects across nodes that share references.

-    updated_field = existing_field.copy()
+    from copy import deepcopy
+    updated_field = deepcopy(existing_field)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
updated_field = existing_field.copy()
# Always preserve user-specific attributes
for attr in USER_PRESERVED_ATTRIBUTES:
if attr in existing_field:
updated_field[attr] = existing_field[attr]
from copy import deepcopy
updated_field = deepcopy(existing_field)
# Always preserve user-specific attributes
for attr in USER_PRESERVED_ATTRIBUTES:
if attr in existing_field:
updated_field[attr] = existing_field[attr]
🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/setup.py around lines 83 to 89,
replace the shallow copy of existing_field with a deep copy to avoid shared
references in nested structures. Import the deepcopy function from the copy
module and use updated_field = deepcopy(existing_field) instead of updated_field
= existing_field.copy(). This ensures that nested dictionaries and lists are
fully cloned, preventing unintended mutations of the original template data.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

is this relevant?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@edwinjosechittilappilly

In this particular helper the shallow .copy() is adequate:

existing_field comes from project_data_copy, which was already created with a deepcopy of the whole project. Every node therefore has its own independent field dictionary to start with.
• Inside update_field_with_preservation we never mutate nested structures in-place. When a value needs to change we overwrite the whole attribute (updated_field[attr] = …) rather than editing sub-keys of a nested dict or list.
• After all edits we assign the rebuilt updated_field back to node_data["template"][field_name], so no other reference keeps pointing to the earlier object.

Because no shared nested references survive beyond the function call, a deep copy would add overhead without preventing any real risk of accidental aliasing.

So the suggestion, while generally good defensive practice, doesn’t materially change behaviour here.

Comment on lines 391 to 393
"list": false,
"list_add_label": "Add More",
"load_from_db": false,
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot Jun 12, 2025

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove list_add_label from non-list inputs

The sender_name field is singular ("list": false); drop the list_add_label property.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment
Analysis.json around lines 391 to 393, the field "sender_name" is marked as
non-list with "list": false, but it incorrectly includes the "list_add_label"
property. Remove the "list_add_label" property from this field since it only
applies to list inputs.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Do not review JSON since they are autogenerated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@edwinjosechittilappilly Understood—JSON files will be excluded from future review comments.
If you’d like CodeRabbit to ignore them automatically, you can also add a path_filters rule (e.g. "*.json": { "review": false }) to your project configuration.


✏️ Learnings added
Learnt from: edwinjosechittilappilly
PR: langflow-ai/langflow#8504
File: src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json:391-393
Timestamp: 2025-06-12T15:25:01.043Z
Learning: The repository owner prefers CodeRabbit not to review or comment on JSON files because they are autogenerated.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

Comment on lines +415 to 417
"list_add_label": "Add More",
"load_from_db": false,
"name": "session_id",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove list_add_label from non-list inputs

The session_id field is singular; list_add_label is not applicable here.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment
Analysis.json around lines 415 to 417, remove the "list_add_label" property from
the "session_id" field because it is a singular input and "list_add_label" only
applies to list inputs.

Comment on lines +456 to 458
"list_add_label": "Add More",
"load_from_db": false,
"name": "text_color",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove list_add_label from non-list inputs

The text_color field is singular; list_add_label should not be present.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment
Analysis.json around lines 456 to 458, remove the "list_add_label" property from
the "text_color" field because it is not a list input. This property is only
applicable to list inputs, so deleting it will correct the configuration.

Comment on lines 914 to 917
"list": false,
"list_add_label": "Add More",
"load_from_db": false,
"name": "template",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove list_add_label from non-list inputs

The Prompt component’s template input is singular; list_add_label should not be applied.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment
Analysis.json around lines 914 to 917, remove the "list_add_label" property from
the input named "template" because it is not a list input. Since "list" is
false, "list_add_label" is not applicable and should be deleted to avoid
confusion or errors.

Comment on lines 554 to 556
"list": false,
"list_add_label": "Add More",
"load_from_db": false,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove list_add_label from non-list inputs

The background_color field in ChatOutput is not a list; this label should be removed.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Image Sentiment
Analysis.json around lines 554 to 556, the property "list_add_label" is set on
the "background_color" field which is not a list type. Remove the
"list_add_label" property from this field to correctly reflect that it is not a
list input.

Comment on lines 352 to 361
"list": false,
"list_add_label": "Add More",
"load_from_db": false,
"name": "background_color",
"placeholder": "",
"required": false,
"show": true,
"title_case": false,
"tool_mode": false,
"trace_as_input": true,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Validate list_add_label on non-list inputs
You've added "list_add_label": "Add More" to fields where "list": false. This label should only be shown for actual list inputs. Please ensure the UI logic ignores list_add_label when list is disabled or update the list flag accordingly.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Instagram
Copywriter.json around lines 352 to 361, the field has "list_add_label" set
despite "list" being false. To fix this, either remove or disable the
"list_add_label" property for fields where "list" is false, or update the "list"
flag to true if the field is intended to be a list. Ensure the UI logic only
displays "list_add_label" when "list" is true.

"zoom": 0.74075714647776
}
},
"description": "Perform basic prompting with an OpenAI model.",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Outdated top-level description.
The description still refers to an "OpenAI model" despite multi-provider support. Please update to a generic "language model" or "selected provider" to reflect the new functionality.

🤖 Prompt for AI Agents
In src/backend/base/langflow/initial_setup/starter_projects/Basic Prompting.json
at line 1220, update the top-level "description" field to replace the phrase
"OpenAI model" with a more generic term like "language model" or "selected
provider" to accurately reflect support for multiple providers instead of just
OpenAI.

@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
Copy link
Copy Markdown
Contributor

@ogabrielluiz ogabrielluiz left a comment

Choose a reason for hiding this comment

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

This is nice!

@dosubot dosubot Bot added the lgtm This PR has been approved by a maintainer label Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@github-actions github-actions Bot added enhancement New feature or request and removed enhancement New feature or request labels Jun 12, 2025
@edwinjosechittilappilly edwinjosechittilappilly marked this pull request as draft June 13, 2025 01:58
@ogabrielluiz ogabrielluiz added the fast-track Skip tests and sends PR into the merge queue label Jun 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request fast-track Skip tests and sends PR into the merge queue lgtm This PR has been approved by a maintainer size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants