Skip to content

Conversation

@dittops
Copy link
Member

@dittops dittops commented Feb 10, 2026

Summary

  • Adds icon column (VARCHAR(255), nullable) to pipeline_definition table with Alembic migration
  • Threads icon field through the full stack: budpipeline (model → schema → CRUD → service → routes) → budapp (service → routes) → budadmin (store → NewPipeline → EditPipeline → listing page)
  • Replaces hardcoded 🔄 emoji on pipeline listing cards with the user's selected icon (falls back to 🔄 if none set)

Closes #1260

Changes by layer

budpipeline (backend)

  • models.py – added icon mapped column
  • 006_add_icon...py – new Alembic migration
  • schemas.py – added icon to PipelineCreateRequest, PipelineResponse, PipelineDefinitionResponse
  • crud.py – accept icon in create()
  • service.py – pass/return icon in create, update, get, list methods
  • routes.py – forward request.icon and include in responses

budapp (proxy)

  • budpipeline_service.py – forward icon in create/update Dapr calls
  • budpipeline_routes.py – extract icon from request body

budadmin (frontend)

  • useBudPipeline.ts – added icon to type + store function signatures/payloads
  • NewPipeline.tsx – pass values.icon to createWorkflow
  • EditPipeline.tsx – initialize form with pipeline icon, pass to updateWorkflow
  • budpipelines/index.tsx – render workflow.icon || "🔄" instead of hardcoded emoji

Migration

ALTER TABLE pipeline_definition ADD COLUMN icon VARCHAR(255) NULL;

Run alembic upgrade head on the budpipeline database.

Test plan

  • Run alembic upgrade head on budpipeline DB and verify column exists
  • Create a new pipeline via UI with emoji picker → verify icon persists in DB and shows on listing
  • Edit an existing pipeline's icon → verify update persists
  • Verify pipelines without icon still show default 🔄
  • alembic downgrade -1 removes the column cleanly

🤖 Generated with Claude Code

The emoji picker in the UI captures icon selection but never sends it to
the API, the backend has no icon column, and the listing page hardcodes
🔄 for all pipelines. This adds full-stack icon persistence from DB
through to the frontend.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @dittops, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces the ability for users to assign and persist custom icons to their pipelines. This enhancement provides a more personalized and visually distinct representation of pipelines across the application, from creation and editing in the UI to storage in the database and retrieval through various services. The change impacts the database schema, backend API, and frontend components to ensure seamless integration and display of these new pipeline icons.

Highlights

  • Database Schema Update: A new icon column (VARCHAR(255), nullable) has been added to the pipeline_definition table via an Alembic migration to store user-selected emojis or icons for pipelines.
  • Full-Stack Icon Integration: The icon field has been threaded through the entire application stack, including the budpipeline backend (model, schema, CRUD, service, routes), budapp proxy (service, routes), and budadmin frontend (store, NewPipeline, EditPipeline, listing page).
  • UI Customization for Pipelines: Users can now create and edit pipelines with a custom icon through the UI, which is persisted in the database and displayed on pipeline listing cards. A default '🔄' emoji is used if no custom icon is set.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • services/budadmin/src/flows/Pipeline/EditPipeline.tsx
    • Initialized the pipeline edit form with the existing pipeline icon.
    • Modified updateWorkflow call to include the values.icon.
  • services/budadmin/src/flows/Pipeline/NewPipeline.tsx
    • Modified createWorkflow call to include the values.icon.
  • services/budadmin/src/pages/home/budpipelines/index.tsx
    • Updated pipeline cards to display the workflow.icon or a default '🔄' emoji.
  • services/budadmin/src/stores/useBudPipeline.ts
    • Added icon property to BudPipelineItem type.
    • Updated createWorkflow and updateWorkflow function signatures to accept an optional icon parameter.
    • Modified createWorkflow and updateWorkflow implementations to pass the icon to the backend.
  • services/budapp/budapp/workflow_ops/budpipeline_routes.py
    • Extracted the icon field from the request body for create_budpipeline and update_budpipeline endpoints.
  • services/budapp/budapp/workflow_ops/budpipeline_service.py
    • Added icon parameter to create_pipeline and update_pipeline functions.
    • Modified Dapr service invocation to include the icon in the request data for create and update operations.
  • services/budpipeline/budpipeline/alembic/versions/20260210_1200_006_add_icon_to_pipeline_definition.py
    • Added a new Alembic migration to add a nullable VARCHAR(255) column named icon to the pipeline_definition table.
  • services/budpipeline/budpipeline/pipeline/crud.py
    • Added icon parameter to the create function.
    • Included the icon when instantiating PipelineDefinition.
  • services/budpipeline/budpipeline/pipeline/models.py
    • Added a Mapped[str | None] field named icon to the PipelineDefinition model.
  • services/budpipeline/budpipeline/pipeline/routes.py
    • Modified create_pipeline and update_pipeline route handlers to pass the request.icon to the service layer.
    • Included the icon field in the PipelineResponse for create_pipeline, list_pipelines, and update_pipeline.
  • services/budpipeline/budpipeline/pipeline/schemas.py
    • Added icon field to PipelineCreateRequest, PipelineResponse, and PipelineDefinitionResponse schemas.
  • services/budpipeline/budpipeline/pipeline/service.py
    • Added icon parameter to create_pipeline_async and update_pipeline_async functions.
    • Modified create_pipeline_async to pass the icon to the CRUD layer.
    • Modified update_pipeline_async to include the icon in the update arguments.
    • Included the icon field in the dictionary representations returned by create_pipeline_async, get_pipeline_async, get_pipeline_async_for_user, list_pipelines_async, and update_pipeline_async.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request successfully adds an icon field for pipelines, persisting it across the full stack from the database to the frontend. The changes are well-implemented and consistent with the feature description. I have one suggestion to improve the consistency of handling optional parameters in the budapp service, which will make the code more robust.

Comment on lines +94 to +101
data: Dict[str, Any] = {
"dag": dag,
"name": name,
"user_id": user_id,
"system_owned": system_owned,
}
if icon is not None:
data["icon"] = icon
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

For consistency and to avoid sending None values for optional fields, it would be better to build the data dictionary by only including optional fields (name, user_id, icon) if they are not None. This would align with the pattern used in update_pipeline in this same file, making the code more robust and predictable.

            data: Dict[str, Any] = {
                "dag": dag,
                "system_owned": system_owned,
            }
            if name is not None:
                data["name"] = name
            if user_id is not None:
                data["user_id"] = user_id
            if icon is not None:
                data["icon"] = icon

@dittops dittops merged commit 1f3bbd7 into master Feb 10, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pipeline :: Icon issue

1 participant