Skip to content

feat: Add GUI for label_colors in Dashboard Properties Modal - #39434

Merged
SBIN2010 merged 2 commits into
apache:masterfrom
jaymasiwal:feature/dashboard-color-picker-gui
Oct 3, 2026
Merged

SBIN2010 merged 2 commits into
apache:masterfrom
jaymasiwal:feature/dashboard-color-picker-gui

Conversation

@jaymasiwal

@jaymasiwal jaymasiwal commented Apr 17, 2026 •

Copy link
Copy Markdown
Contributor

SUMMARY

This PR implements a native GUI for managing label_colors in the Dashboard Properties Modal. Following community feedback, the GUI has been migrated from the "Advanced" tab to the "Styling" tab to sit alongside the Color Scheme selection for a more intuitive UX.

CHANGES

  • Created the LabelColorMapping component using Superset's native design tokens and Emotion variables.
  • Integrated the GUI directly into StylingSection.tsx.
  • Implemented two-way binding with json_metadata to ensure manual JSON edits and GUI edits stay perfectly in sync.
  • Resolved previous TypeScript strictness and linting errors.

BEFORE/AFTER SCREENSHOTS

(See the thread below for the updated PoC screenshot showing the GUI in the Styling Section)

TESTING INSTRUCTIONS

  1. Open any dashboard.
  2. Click "Edit dashboard".
  3. Click the three dots (...) -> "Edit properties".
  4. Navigate to the "Advanced" -> "Styling" tab (or the relevant Themes/Styling section) to see the new GUI beneath the Color Scheme dropdown.

ADDITIONAL INFORMATION

  • Has associated issue
  • Required feature flags:
  • Changes UI
  • Includes DB Migration (follow approval process in SIP-59)
    • Migration is atomic, supports rollback & is backwards-compatible
    • Confirm DB migration upgrade and downgrade tested
    • Runtime estimates and downtime expectations provided
  • Introduces new feature or API
  • Removes existing feature or API

@codecov

codecov Bot commented Apr 17, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.92248% with 13 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.27%. Comparing base (2220f53) to head (9bccf9a).
⚠️ Report is 8 commits behind head on master.

Files with missing lines Patch % Lines
...nts/PropertiesModal/sections/LabelColorMapping.tsx 89.51% 13 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##           master   #39434    +/-   ##
========================================
  Coverage   82.26%   82.27%            
========================================
  Files        2995     2996     +1     
  Lines      185032   185163   +131     
  Branches    42822    42852    +30     
========================================
+ Hits       152223   152340   +117     
- Misses      30047    30061    +14     
  Partials     2762     2762            
Flag Coverage Δ
hive 36.29% <ø> (ø)
javascript 77.90% <89.92%> (+0.01%) ⬆️
mysql 55.32% <ø> (-0.01%) ⬇️
postgres 55.34% <ø> (+<0.01%) ⬆️
presto 38.17% <ø> (ø)
python 86.21% <ø> (ø)
sqlite 55.06% <ø> (ø)
unit 79.20% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jaymasiwal
jaymasiwal marked this pull request as ready for review April 17, 2026 14:04
@dosubot dosubot Bot added change:frontend Requires changing the frontend dashboard:colors Related to the color scheme of the Dashboard dashboard:editmode Related to te Dashboard edit mode dashboard:properties Related to the properties of the Dashboard labels Apr 17, 2026

@bito-code-review bito-code-review Bot left a comment •

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.

Code Review Agent Run #a41682

Actionable Suggestions - 1
  • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx - 1
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx - 2
Review Details
  • Files reviewed - 2 · Commit Range: e6d79cf..26651e9
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/AdvancedSection.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@sfirke

sfirke commented Apr 18, 2026

Copy link
Copy Markdown
Member

@jaymasiwal I have an idea for how you can work on this if you still want to. You could design the feature on your fork, but instead of submitting code at this stage for review, present screenshots of your implementation, any design decisions you made, and any remaining points you think need input. I think that will make it easier for people to weigh in, if they have something to react to. Then once we iterate on the UI and UX, the implementation and code review can follow. What do you think?

@netlify

netlify Bot commented Apr 19, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit 9bccf9a
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6ac08c2482be5d0008d8c70d
😎 Deploy Preview https://deploy-preview-39434--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

Hey @sfirke, thanks again for pointing me in the right direction!

I spun up my fork locally and applied Superset's native design system (Emotion theme variables, grid units, and standard component styling) to build out the UI. I placed it directly inside the Advanced settings accordion right above the AceEditor, so users keep the context of the underlying JSON.

Here is the proposed UX:

  1. The "Before" State
    The current setup, requiring users to manually write JSON string arrays.
before
  1. The New Empty State
    Clean, native styling that prompts the user to get started without cluttering the modal.
after
  1. The Active State (Editing)
    Users can dynamically add rows, define the label, and use the native color picker. Every change here instantly serializes and updates the json_metadata string in the editor below it.
after1

Key Design Decisions:

Native Look & Feel: Mimicked the standard input, button, and typography styling from the src/components directory so it blends seamlessly with the rest of the modal.

Auto-Sync: The GUI and the JSON editor are two-way bound. Editing the UI safely parses and updates the JSON without the user ever having to worry about syntax errors.

Does this UX layout align with what you had in mind? I'm happy to tweak the layout or styling before I push the final React code to the branch!

@bito-code-review

bito-code-review Bot commented Apr 19, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #4b1d0d

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: 26651e9..e775001
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@sfirke

sfirke commented Apr 20, 2026

Copy link
Copy Markdown
Member

Do we have to put this feature in the "Advanced" dropdown for the JSON to stay in sync? I would prefer to have it here, accessible from the main "Dashboard Properties" screen:
image

Now I notice that it's random how "color schema" is under the "Access" header. In this case it would get its own header, "Colors". And the new choice could be something like "Label colors" with the subtext "Hardcode colors to specific values".

Another option would be to move both the color schema dropdown and this new hardcoded set of colors to Themes & CSS:
image

And rename that to "Themes, CSS, Colors" ? A little clunky sounding but arguably a more logical place to put these features.

But going back to my first question, are there obstacles to setting these values elsewhere away from the JSON?

@sfirke

sfirke commented Apr 20, 2026

Copy link
Copy Markdown
Member

@kasiazjc or if you can tag anyone else with UI expertise (@rusackas FYI) - if you could help design a spec for this feature, it would pay off down the line when it's implemented. I know my weaknesses well enough to know when I'm bumbling around! Ideally a UI expert would implement this. I'm just sick of telling users to edit the JSON.

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

Hey @sfirke, thanks for pulling in the design team!

To answer your first question: No, there are zero technical obstacles to moving this feature away from the JSON editor.

I just reviewed the architecture of superset-frontend/src/dashboard/components/PropertiesModal/index.tsx. The StylingSection (where "Themes & CSS" currently lives) and the AdvancedSection share the exact same state pipeline. They both serialize into the json_metadata string upon saving. We can cleanly teleport the React component I built directly into the StylingSection.

I completely agree with your logic—putting it alongside the Color Scheme dropdown in a renamed "Themes, CSS, Colors" section makes infinitely more sense for non-technical users.

@kasiazjc @rusackas — While we wait on a formal spec, I am happy to migrate my current UI components into the StylingSection and post a screenshot PoC of what it looks like sitting next to the Color Scheme dropdown so we have a visual starting point to iterate on. Let me know if you'd like me to spin that up!

@sfirke

sfirke commented Apr 21, 2026

Copy link
Copy Markdown
Member

Great, then yes @jaymasiwal it would be great if you can take that mockup as far as you can and share screenshots here. I think design review resources are limited on this project so the farther we can get the example before they take a look, the better.

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

@sfirke @kasiazjc Here is the visual Proof of Concept (PoC) with the UI successfully migrated out of the JSON editor and into the StylingSection!

As you can see in the screenshot below, the component now renders natively inside the "Styling" accordion, directly beneath the "Color scheme" dropdown.

The state management pipeline is fully intact—adding or editing a mapping here correctly serializes the data directly into the json_metadata string upon hitting Apply/Save.

(Note: The white background styling on the component is just a placeholder to make the boundaries of the PoC clear. I will align the CSS variables to match Superset's native theme tokens once we confirm this is the direction the design team wants to go!)

Let me know what you think of this placement!
pow1

pow2

@jaymasiwal
jaymasiwal force-pushed the feature/dashboard-color-picker-gui branch from e775001 to e181fcc Compare April 23, 2026 11:30
@bito-code-review

bito-code-review Bot commented Apr 23, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #c40c5b

Actionable Suggestions - 0
Review Details
  • Files reviewed - 8 · Commit Range: 92aecf4..93f446f
    • superset-frontend/plugins/preset-chart-deckgl/src/utils/safeStringify.ts
    • superset-frontend/src/dashboard/components/PropertiesModal/index.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/AdvancedSection.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.test.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.tsx
    • superset-frontend/src/utils/safeStringify.test.ts
    • superset-frontend/src/utils/safeStringify.ts
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review

bito-code-review Bot commented Apr 23, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #1f7f6e

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: 93f446f..01b54d0
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.test.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@sadpandajoe

Copy link
Copy Markdown
Member

@kasiazjc @yousoph @SBIN2010 your feedback would be appreciated for this PR.

@rusackas

Copy link
Copy Markdown
Member

@jaymasiwal as @sfirke noted, this one really wants a design pass first — screenshots and UX decisions to react to before we dig into the code. CI's also quite red here. Want to take the mockup direction and share where it lands?

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

@rusackas @sfirke Completely agree! I actually posted a visual Proof of Concept screenshot a bit further up in the thread (from April 21st) showing how it sits under the 'Color scheme' dropdown.

If the design team wants to use that screenshot as a starting point to iterate on, or if they prefer to provide their own mockup of the ideal UX, I am completely on board. I'll hold off on resolving the merge conflicts and CI for now. As soon as the team gives the green light or hands over a design spec, I'm ready to dive right back in and implement the code!

@yousoph

yousoph commented Jul 28, 2026

Copy link
Copy Markdown
Member

hi @jaymasiwal ! thanks for working on this, looking forward to seeing the color picker in action soon :)

a few notes on the UI from @kasiazjc and I:

  • For the series label, could we have a dropdown to select from a list of series labels that are already present in the dashboard, with the ability to add a label that isn't in the list by typing in the input? Similar to what exists in the dashboard filter bar
Screen.Recording.2026-07-28.at.3.47.38.PM.mov
  • Could we use a pattern similar to what we have in the Alerts & Reports with filters (ALERT_REPORTS_FILTER feature flag):
    • Series label with dropdown on the left, color picker on the right
    • Add more text link underneath the label/color rows
    • Delete button on the right of the row
    • When an existing series label is selected, it gets removed from the subsequent dropdowns to prevent duplicates
image

Thanks!!

@rusackas

Copy link
Copy Markdown
Member

Haven't looked closely at the code yet, and can't at this moment... but I shall. Just wanted to drop a note that we're trying to recycle/upcycle the color picker that @SBIN2010 added recently, like I'm doing in this PR (still a bit of work in progress there, not saying it's perfect by any means): #42910

@github-actions

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for 380f435

@github-actions

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for 380f435

@github-actions

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for 270c377

Copilot AI left a comment

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.

🟡 Changes recommended

Valid metadata can be corrupted, duplicate rows diverge from JSON, and key synchronization paths lack coverage.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (4)

superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx:298

  • Free-form input still permits duplicate labels, but serialization silently drops every duplicate after the first while leaving all rows visible. The GUI then displays mappings that are not present in JSON. Reject duplicates with an inline error or merge/remove the duplicate row so both representations stay synchronized.
      if (
        trimmedLabel !== '' &&
        !seenLabels.has(trimmedLabel) &&
        isValidHex(row.color)
      ) {

superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx:399

  • Because allKnownLabels is built only from existing rows and this predicate excludes labels owned by another row, an existing row can only suggest its current label and a new row gets no options. The “Select” behavior therefore cannot offer any new dashboard label; pass actual dashboard labels into the component or remove the ineffective datalist.
        const availableOptions = allKnownLabels
          .filter(
            label =>
              label === currentLabel ||
              !rows.some(

superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.test.tsx:32

  • The new frontend tests add a describe wrapper, but this repository's testing migration requires top-level test() cases rather than nested suites. Flatten these tests and keep the setup at module scope.
describe('LabelColorMapping', () => {

superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx:287

  • The tests only verify rendering and adding a row; none assert onJsonMetadataChange, deletion, duplicate handling, supported non-hex values, invalid JSON, or prop-driven resynchronization. Add focused tests for these core two-way-binding paths, especially preservation of existing metadata values.
  const syncToJson = (currentRows: ColorMapping[]) => {
  • Files reviewed: 7/7 changed files
  • Comments generated: 4
  • Review effort level: Balanced

@bito-code-review

bito-code-review Bot commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #6196ef

Actionable Suggestions - 0
Review Details
  • Files reviewed - 3 · Commit Range: 380f435..cb2c288
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.test.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.test.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review

bito-code-review Bot commented Sep 6, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #db6dbb

Actionable Suggestions - 0
Review Details
  • Files reviewed - 3 · Commit Range: cb2c288..219baf4
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.test.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.test.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@rusackas

rusackas commented Sep 9, 2026

Copy link
Copy Markdown
Member

Seeing if I can help get pre-commit to pass here...

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

@rusackas. Hey, thanks for the offer! I managed to run the oxfmt hook locally and pushed the formatted files. The pre-commit checks and the rest of the CI are all green now.
I have also addressed the issues brought up by Copilot. Could you take a look and provide a review when you have a moment?

@bito-code-review

bito-code-review Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #06de16

Actionable Suggestions - 0
Review Details
  • Files reviewed - 2 · Commit Range: 219baf4..d9ae3b1
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.test.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

Hey @rusackas ! Got the tests added for additions, updates, and deletes, and fixed the license typo. All checks are passing now, let me know if this looks good to merge.

@bito-code-review

bito-code-review Bot commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #23985d

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: d9ae3b1..b9e6c14
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.test.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@SBIN2010

Copy link
Copy Markdown
Contributor

@jaymasiwal I experimented with adding colors and discovered that it is possible to add new empty lines without restriction. Is there any way to prevent this?

Снимок экрана от 2026-09-21 22-50-08

@rusackas

Copy link
Copy Markdown
Member

Thanks for filling in the add/update/delete coverage, that closes what I flagged last week. CI's green and otherwise mergeable, but @SBIN2010 caught a legit one today, worth sorting before this lands. Holler if you want a hand with it.

@bito-code-review bito-code-review Bot left a comment •

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.

Code Review Agent Run #eb3c9e

Actionable Suggestions - 1
  • superset-frontend/src/dashboard/actions/dashboardState.ts - 1
Review Details
  • Files reviewed - 33 · Commit Range: b9e6c14..5ef3ad2
    • superset-frontend/src/dashboard/components/PropertiesModal/sections/LabelColorMapping.tsx
    • superset/translations/ar/LC_MESSAGES/messages.po
    • superset/translations/ca/LC_MESSAGES/messages.po
    • superset/translations/cs/LC_MESSAGES/messages.po
    • superset/translations/de/LC_MESSAGES/messages.po
    • superset/translations/en/LC_MESSAGES/messages.po
    • superset/translations/es/LC_MESSAGES/messages.po
    • superset/translations/fa/LC_MESSAGES/messages.po
    • superset/translations/fi/LC_MESSAGES/messages.po
    • superset/translations/fr/LC_MESSAGES/messages.po
    • superset/translations/it/LC_MESSAGES/messages.po
    • superset/translations/ja/LC_MESSAGES/messages.po
    • superset/translations/ko/LC_MESSAGES/messages.po
    • superset/translations/lv/LC_MESSAGES/messages.po
    • superset/translations/messages.pot
    • superset/translations/mi/LC_MESSAGES/messages.po
    • superset/translations/nl/LC_MESSAGES/messages.po
    • superset/translations/pl/LC_MESSAGES/messages.po
    • superset/translations/pt/LC_MESSAGES/messages.po
    • superset/translations/pt_BR/LC_MESSAGES/messages.po
    • superset/translations/ro/LC_MESSAGES/messages.po
    • superset/translations/ru/LC_MESSAGES/messages.po
    • superset/translations/sk/LC_MESSAGES/messages.po
    • superset/translations/sl/LC_MESSAGES/messages.po
    • superset/translations/sr/LC_MESSAGES/messages.po
    • superset/translations/sr_Latn/LC_MESSAGES/messages.po
    • superset/translations/ta/LC_MESSAGES/messages.po
    • superset/translations/th/LC_MESSAGES/messages.po
    • superset/translations/tr/LC_MESSAGES/messages.po
    • superset/translations/uk/LC_MESSAGES/messages.po
    • superset/translations/zh/LC_MESSAGES/messages.po
    • superset/translations/zh_TW/LC_MESSAGES/messages.po
    • superset-frontend/src/dashboard/actions/dashboardState.ts
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset-frontend/src/dashboard/actions/dashboardState.ts Outdated
@bito-code-review

bito-code-review Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #520355

Actionable Suggestions - 0
Review Details
  • Files reviewed - 32 · Commit Range: 5ef3ad2..ec6329b
    • superset-frontend/src/dashboard/actions/dashboardState.ts
    • superset/translations/ar/LC_MESSAGES/messages.po
    • superset/translations/ca/LC_MESSAGES/messages.po
    • superset/translations/cs/LC_MESSAGES/messages.po
    • superset/translations/de/LC_MESSAGES/messages.po
    • superset/translations/en/LC_MESSAGES/messages.po
    • superset/translations/es/LC_MESSAGES/messages.po
    • superset/translations/fa/LC_MESSAGES/messages.po
    • superset/translations/fi/LC_MESSAGES/messages.po
    • superset/translations/fr/LC_MESSAGES/messages.po
    • superset/translations/it/LC_MESSAGES/messages.po
    • superset/translations/ja/LC_MESSAGES/messages.po
    • superset/translations/ko/LC_MESSAGES/messages.po
    • superset/translations/lv/LC_MESSAGES/messages.po
    • superset/translations/messages.pot
    • superset/translations/mi/LC_MESSAGES/messages.po
    • superset/translations/nl/LC_MESSAGES/messages.po
    • superset/translations/pl/LC_MESSAGES/messages.po
    • superset/translations/pt/LC_MESSAGES/messages.po
    • superset/translations/pt_BR/LC_MESSAGES/messages.po
    • superset/translations/ro/LC_MESSAGES/messages.po
    • superset/translations/ru/LC_MESSAGES/messages.po
    • superset/translations/sk/LC_MESSAGES/messages.po
    • superset/translations/sl/LC_MESSAGES/messages.po
    • superset/translations/sr/LC_MESSAGES/messages.po
    • superset/translations/sr_Latn/LC_MESSAGES/messages.po
    • superset/translations/ta/LC_MESSAGES/messages.po
    • superset/translations/th/LC_MESSAGES/messages.po
    • superset/translations/tr/LC_MESSAGES/messages.po
    • superset/translations/uk/LC_MESSAGES/messages.po
    • superset/translations/zh/LC_MESSAGES/messages.po
    • superset/translations/zh_TW/LC_MESSAGES/messages.po
  • Files skipped - 0
  • Tools
    • Eslint (Linter) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

@rusackas @SBIN2010 Hey! I fixed the empty row bug you caught, synced the translations, and CI is completely green again. Let me know if everything looks good.

@bito-code-review

bito-code-review Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #b5235e

Actionable Suggestions - 0
Review Details
  • Files reviewed - 31 · Commit Range: ec6329b..1e889db
    • superset/translations/ar/LC_MESSAGES/messages.po
    • superset/translations/ca/LC_MESSAGES/messages.po
    • superset/translations/cs/LC_MESSAGES/messages.po
    • superset/translations/de/LC_MESSAGES/messages.po
    • superset/translations/en/LC_MESSAGES/messages.po
    • superset/translations/es/LC_MESSAGES/messages.po
    • superset/translations/fa/LC_MESSAGES/messages.po
    • superset/translations/fi/LC_MESSAGES/messages.po
    • superset/translations/fr/LC_MESSAGES/messages.po
    • superset/translations/it/LC_MESSAGES/messages.po
    • superset/translations/ja/LC_MESSAGES/messages.po
    • superset/translations/ko/LC_MESSAGES/messages.po
    • superset/translations/lv/LC_MESSAGES/messages.po
    • superset/translations/messages.pot
    • superset/translations/mi/LC_MESSAGES/messages.po
    • superset/translations/nl/LC_MESSAGES/messages.po
    • superset/translations/pl/LC_MESSAGES/messages.po
    • superset/translations/pt/LC_MESSAGES/messages.po
    • superset/translations/pt_BR/LC_MESSAGES/messages.po
    • superset/translations/ro/LC_MESSAGES/messages.po
    • superset/translations/ru/LC_MESSAGES/messages.po
    • superset/translations/sk/LC_MESSAGES/messages.po
    • superset/translations/sl/LC_MESSAGES/messages.po
    • superset/translations/sr/LC_MESSAGES/messages.po
    • superset/translations/sr_Latn/LC_MESSAGES/messages.po
    • superset/translations/ta/LC_MESSAGES/messages.po
    • superset/translations/th/LC_MESSAGES/messages.po
    • superset/translations/tr/LC_MESSAGES/messages.po
    • superset/translations/uk/LC_MESSAGES/messages.po
    • superset/translations/zh/LC_MESSAGES/messages.po
    • superset/translations/zh_TW/LC_MESSAGES/messages.po
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review bito-code-review Bot left a comment •

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.

Code Review Agent Run #810375

Actionable Suggestions - 1
  • superset/translations/ar/LC_MESSAGES/messages.po - 1
Additional Suggestions - 5
  • superset/translations/ja/LC_MESSAGES/messages.po - 1
    • Untranslated msgstr empty · Line 18743-18744
      The new entry for `msgid "valuename"` ships with an empty `msgstr ""`, so the Japanese catalog leaves this string untranslated and the source text is shown to ja users. The term exists in `superset/translations/messages.pot` (line 18584), so it is a real translatable string. Other ja entries like `msgid "var"` -> `分散` are translated; please fill in the translation or list the term in `do-not-translate.txt`.
  • superset/translations/fa/LC_MESSAGES/messages.po - 1
    • Empty msgstr untranslated entry · Line 21688-21689
      New `msgid "valuename"` entry (synced from `messages.pot:18584`) ships with an empty `msgstr ""`, so fa-locale users fall back to the untranslated English string wherever it renders. BITO.md rule [13343] requires empty msgstr fields to be filled before merge. Please add the Persian translation (e.g. "نام مقدار") with translator verification. ([CWE-1188](https://cwe.mitre.org/data/definitions/1188.html))
  • superset/translations/ko/LC_MESSAGES/messages.po - 1
    • Empty msgstr for valuename · Line 30955-30956
      Lines 30955-30956 add `msgid "valuename"` with an empty `msgstr ""`, so Korean-locale users get the untranslated English label if this string renders. BITO.md rules 12743/13343 require empty msgstr fields to be filled before merge. Note: a repo-wide search finds no `valuename` occurrence outside translation files — please confirm the source string still exists, then fill msgstr (e.g. "값 이름").
  • superset/translations/ru/LC_MESSAGES/messages.po - 1
    • Untranslated ru msgstr · Line 20036-20037
      The regenerated catalog adds `msgid "valuename"` with an empty `msgstr`, so Russian users get the English fallback wherever this string renders. The entry mirrors `messages.pot` (regenerated 2026-09-22 19:01), but the ru catalog otherwise translates its entries; note the msgid no longer appears in any .py/.ts/.js source, so it may be stale in the template itself. Fill the translation or drop the stale msgid upstream.
  • superset/translations/messages.pot - 1
    • Re-added obsolete string · Line 18584-18585
      `valuename` is re-added to the catalog but has zero source usage (grep of `superset/` + `superset-frontend/` excluding translations returns 0) and was removed as obsolete in commit `7d0645b431`. Re-adding it with an empty `msgstr` reintroduces dead catalog content. Drop it from `messages.pot` and the ca/fi/pl/ro/sr locale files.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset/translations/zh/LC_MESSAGES/messages.po - 1
Review Details
  • Files reviewed - 31 · Commit Range: 1e889db..b8a4528
    • superset/translations/ar/LC_MESSAGES/messages.po
    • superset/translations/ca/LC_MESSAGES/messages.po
    • superset/translations/cs/LC_MESSAGES/messages.po
    • superset/translations/de/LC_MESSAGES/messages.po
    • superset/translations/en/LC_MESSAGES/messages.po
    • superset/translations/es/LC_MESSAGES/messages.po
    • superset/translations/fa/LC_MESSAGES/messages.po
    • superset/translations/fi/LC_MESSAGES/messages.po
    • superset/translations/fr/LC_MESSAGES/messages.po
    • superset/translations/it/LC_MESSAGES/messages.po
    • superset/translations/ja/LC_MESSAGES/messages.po
    • superset/translations/ko/LC_MESSAGES/messages.po
    • superset/translations/lv/LC_MESSAGES/messages.po
    • superset/translations/messages.pot
    • superset/translations/mi/LC_MESSAGES/messages.po
    • superset/translations/nl/LC_MESSAGES/messages.po
    • superset/translations/pl/LC_MESSAGES/messages.po
    • superset/translations/pt/LC_MESSAGES/messages.po
    • superset/translations/pt_BR/LC_MESSAGES/messages.po
    • superset/translations/ro/LC_MESSAGES/messages.po
    • superset/translations/ru/LC_MESSAGES/messages.po
    • superset/translations/sk/LC_MESSAGES/messages.po
    • superset/translations/sl/LC_MESSAGES/messages.po
    • superset/translations/sr/LC_MESSAGES/messages.po
    • superset/translations/sr_Latn/LC_MESSAGES/messages.po
    • superset/translations/ta/LC_MESSAGES/messages.po
    • superset/translations/th/LC_MESSAGES/messages.po
    • superset/translations/tr/LC_MESSAGES/messages.po
    • superset/translations/uk/LC_MESSAGES/messages.po
    • superset/translations/zh/LC_MESSAGES/messages.po
    • superset/translations/zh_TW/LC_MESSAGES/messages.po
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset/translations/ar/LC_MESSAGES/messages.po Outdated
@bito-code-review

bito-code-review Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #d3b451

Actionable Suggestions - 0
Review Details
  • Files reviewed - 31 · Commit Range: b8a4528..6bfd8ae
    • superset/translations/ar/LC_MESSAGES/messages.po
    • superset/translations/ca/LC_MESSAGES/messages.po
    • superset/translations/cs/LC_MESSAGES/messages.po
    • superset/translations/de/LC_MESSAGES/messages.po
    • superset/translations/en/LC_MESSAGES/messages.po
    • superset/translations/es/LC_MESSAGES/messages.po
    • superset/translations/fa/LC_MESSAGES/messages.po
    • superset/translations/fi/LC_MESSAGES/messages.po
    • superset/translations/fr/LC_MESSAGES/messages.po
    • superset/translations/it/LC_MESSAGES/messages.po
    • superset/translations/ja/LC_MESSAGES/messages.po
    • superset/translations/ko/LC_MESSAGES/messages.po
    • superset/translations/lv/LC_MESSAGES/messages.po
    • superset/translations/messages.pot
    • superset/translations/mi/LC_MESSAGES/messages.po
    • superset/translations/nl/LC_MESSAGES/messages.po
    • superset/translations/pl/LC_MESSAGES/messages.po
    • superset/translations/pt/LC_MESSAGES/messages.po
    • superset/translations/pt_BR/LC_MESSAGES/messages.po
    • superset/translations/ro/LC_MESSAGES/messages.po
    • superset/translations/ru/LC_MESSAGES/messages.po
    • superset/translations/sk/LC_MESSAGES/messages.po
    • superset/translations/sl/LC_MESSAGES/messages.po
    • superset/translations/sr/LC_MESSAGES/messages.po
    • superset/translations/sr_Latn/LC_MESSAGES/messages.po
    • superset/translations/ta/LC_MESSAGES/messages.po
    • superset/translations/th/LC_MESSAGES/messages.po
    • superset/translations/tr/LC_MESSAGES/messages.po
    • superset/translations/uk/LC_MESSAGES/messages.po
    • superset/translations/zh/LC_MESSAGES/messages.po
    • superset/translations/zh_TW/LC_MESSAGES/messages.po
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review

bito-code-review Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #145ee4

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: 6bfd8ae..a7bf089
    • superset/translations/messages.pot
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers an incremental AI Review.

  • /review full - Manually triggers a full AI Review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@rusackas rusackas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks @jaymasiwal, this looks good now. The add/update/delete tests and the empty-row fix cover what I raised. Needs a rebase, then I'll merge.

@bito-code-review the open AdvancedSection.tsx thread about missing test coverage is stale: the component now lives in StylingSection.tsx, and LabelColorMapping.test.tsx and StylingSection.test.tsx cover add/update/delete and the JSON sync.

rusackas and others added 2 commits October 2, 2026 21:56
Squashed from the original 54-commit branch (including intermediate
sync-with-master merges) and rebased onto current master. Translation
catalogs are regenerated fresh against the merged code in a follow-up
step rather than carrying forward the branch's stale babel_update.sh
snapshot.

Co-Authored-By: Jay Masiwal <jaymasiwal@users.noreply.github.com>
Runs scripts/translations/babel_update.sh against the rebased code so
the new Label Colors strings are extracted and merged cleanly, instead
of carrying forward the branch's stale snapshot (which included drift
unrelated to this feature and conflicted with every locale file).

Verified: msgfmt --check shows the same pre-existing fatal errors as
unmodified master (fr/it/pt/sl), nothing new. check_translation_regression.py
reports zero regressions across all 29 locales.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jaymasiwal

Copy link
Copy Markdown
Contributor Author

Thanks @rusackas! The branch has now been rebased onto the latest master, CI is fully green, and there are no conflicts. Appreciate the review!

@SBIN2010 SBIN2010 left a comment

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.

LGTM!
@jaymasiwal Thank you for your contribution and for your patience in coordinating all of this.

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

Thanks @SBIN2010! Really appreciate it. Huge thanks to everyone who shared feedback and helped shape this contribution.🙏🏻

@sfirke

sfirke commented Oct 3, 2026

Copy link
Copy Markdown
Member

Congrats @jaymasiwal, it's hard to ship big contributions like this especially with the UI component and you really stuck with it. Superset has needed this for years, I'm really excited to see it!

@jaymasiwal

Copy link
Copy Markdown
Contributor Author

Thanks @sfirke, appreciate it! Thanks for all the feedback and direction from the start, it made a big difference.

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

Labels

change:frontend Requires changing the frontend dashboard:colors Related to the color scheme of the Dashboard dashboard:editmode Related to te Dashboard edit mode dashboard:properties Related to the properties of the Dashboard dependencies:npm i18n:brazilian i18n:chinese Translation related to Chinese language i18n:czech i18n:dutch i18n:french Translation related to French language i18n:italian Translation related to Italian language i18n:japanese Translation related to Japanese language i18n:korean Translation related to Korean language i18n:latvian i18n:persian i18n:portuguese i18n:russian Translation related to Russian language i18n:slovak i18n:spanish Translation related to Spanish language i18n:traditional-chinese i18n:ukrainian i18n Namespace | Anything related to localization size/XXL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants