Skip to content

Conversation

@javacatknight
Copy link

@javacatknight javacatknight commented Dec 2, 2025

User description

SUMMARY

In regards to the #36384. This PR adds the json file, some sample logos (with permission), and a new docusaurus page to display superset users from inthewild.md, with a style similar to the index.tsx / home page.

Writeup and changelog of files and next steps: https://hackmd.io/@aIYQFnuRSwG7sBiDqjw7Yg/H1VQn0nbWl

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

Preview images (main, opened, and dark mode)

img 1


img2
img3

TESTING INSTRUCTIONS

https://superset.apache.org/docs/6.0.0/contributing/howtos#contributing-to-documentation

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • [x ] 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

CodeAnt-AI Description

Highlight real-world Superset users in the documentation

What Changed

  • Added a new "In the Wild" docs page that shows organizations using Superset, grouped by sector, with logos and links to their sites
  • Added an "In the Wild" item to the documentation navigation so visitors can quickly find the Superset user gallery
  • Included a clear call-to-action linking to the INTHEWILD.md file so organizations can easily add themselves to the list

Impact

✅ Easier discovery of real-world Superset adopters
✅ Stronger social proof for teams evaluating Superset
✅ Simpler path for organizations to showcase their Superset usage

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@codeant-ai-for-open-source
Copy link

CodeAnt AI is reviewing your PR.

@github-actions github-actions bot added the doc Namespace | Anything related to documentation label Dec 2, 2025
@dosubot dosubot bot added the home:design Related to the Homepage UI/UX label Dec 2, 2025
@codeant-ai-for-open-source codeant-ai-for-open-source bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Dec 2, 2025
a:hover {
text-decoration: none;
}
a:hover ~ & {

Choose a reason for hiding this comment

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

Suggestion: Update the hover selector on the card so the intended hover elevation effect actually applies to the card element. [possible bug]

Severity Level: Critical 🚨

Suggested change
a:hover ~ & {
&:hover {
Why it matters? ⭐

In the current styled Card component, a:hover ~ & targets the card only
when an <a> sibling preceding the card is hovered. In this layout, the
<a> is inside the card, not a sibling, so that selector never matches
and the elevation effect is effectively dead code.

Changing the selector to &:hover applies the box-shadow and transform
when the card itself is hovered, which is consistent with the apparent
visual intent of the component and fixes a real UI behavior bug rather
than just tweaking style for aesthetics. The change is syntactically
correct and directly improves functionality of this PR's new page.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** docs/src/pages/inTheWild.tsx
**Line:** 68:68
**Comment:**
	*Possible Bug: Update the hover selector on the card so the intended hover elevation effect actually applies to the card element.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

Copy link
Author

Choose a reason for hiding this comment

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

My bad, should have commented it out. A classmate suggested it look closer to the databases section for consistency so I meant to remove it

Comment on lines 100 to 123
while looping_through_line[0:3] != ID_CAT:

if looping_through_line[0] == ID_ENTRY:
entries_list.append(to_json(looping_through_line))
looping_through_line = file.readline()
if not looping_through_line:
break

Choose a reason for hiding this comment

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

Suggestion: Prevent the inner loop over category entries from indexing into an empty string when reaching end-of-file by checking for EOF before accessing string indices. [possible bug]

Severity Level: Critical 🚨

Suggested change
while looping_through_line[0:3] != ID_CAT:
if looping_through_line[0] == ID_ENTRY:
entries_list.append(to_json(looping_through_line))
looping_through_line = file.readline()
if not looping_through_line:
break
while looping_through_line:
if looping_through_line[0:3] == ID_CAT:
break
if looping_through_line[0] == ID_ENTRY:
entries_list.append(to_json(looping_through_line))
looping_through_line = file.readline()
Why it matters? ⭐

The current loop condition slices looping_through_line[0:3] and indexes
looping_through_line[0] without first checking for EOF. If a category
header (###) appears as the last line in the file with no following
entries, file.readline() returns an empty string and looping_through_line[0:3]
raises an IndexError. The proposed change first checks that the line
is non-empty in the while condition and breaks on the next category
header inside the loop, preserving existing behavior while preventing
this runtime crash. This is a real logic/robustness fix, not just style.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** docs/src/resources/experimental/parse-md-to-json.py
**Line:** 100:106
**Comment:**
	*Possible Bug: Prevent the inner loop over category entries from indexing into an empty string when reaching end-of-file by checking for EOF before accessing string indices.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

Copy link
Author

Choose a reason for hiding this comment

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

I don't believe this makes a difference. I ran a diff checker to make sure.
image
image
image

Can link both files but I suspect the parse file will be recommended to removed fully.

@codeant-ai-for-open-source
Copy link

Nitpicks 🔍

🔒 No security issues identified
⚡ Recommended areas for review

  • Security Issue
    External links use target="_blank" with rel="noreferrer" only. Without noopener, this can expose the page to reverse tabnabbing via window.opener. This applies both to the GitHub "Add your name/org!" link and the per-user/org links in the cards.

  • Possible Bug
    The inner loop that reads entries under a category indexes looping_through_line[0] without first checking for an empty string or missing lines, which can trigger an IndexError when a category has no entries or when malformed input is encountered. The loop condition and body should defensively handle empty lines/EOF before indexing.

@codeant-ai-for-open-source
Copy link

CodeAnt AI finished reviewing your PR.

Copy link
Contributor

@bito-code-review bito-code-review 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 Agent Run #45aaa6

Actionable Suggestions - 2
  • docs/src/resources/experimental/parse-md-to-json.py - 2
Additional Suggestions - 8
  • docs/src/pages/inTheWild.tsx - 2
    • CSS Hover Selector Bug · Line 68-71
      The CSS selector `a:hover ~ &` targets sibling cards after the hovered anchor, but since the anchor is inside the card, this never matches. Change to `&:hover` to properly apply the shadow and transform effects when hovering the card.
      Code suggestion
       @@ -68,4 +68,4 @@
      -  a:hover ~ & {
      -    box-shadow: 0 4px 14px rgba(0,0,0,0.12);
      -    transform: translateY(-2px);
      -  }
      +  &:hover {
      +    box-shadow: 0 4px 14px rgba(0,0,0,0.12);
      +    transform: translateY(-2px);
      +  }
    • Unnecessary Comment · Line 1-1
      The comment at the top appears to be a leftover development note and should be removed for cleaner code.
      Code suggestion
       @@ -1,1 +1,0 @@
      -// Updated version of the page with the requested text added
  • docs/src/resources/experimental/parse-md-to-json.py - 5
    • No error handling · Line 80-115
      The script lacks error handling for file not found, read errors, or parsing failures, which could crash unexpectedly.
    • Missing license header · Line 1-34
      New files in the Superset codebase require the ASF license header.
    • Missing type hints · Line 46-46
      New Python code should include type hints for better maintainability.
    • Hardcoded paths · Line 39-40
      Hardcoded file paths make the script inflexible; consider using argparse for inputs.
    • Debug code · Line 52-52
      The print statement appears to be leftover debug code and should be removed for clean production code.
  • docs/static/resources/inTheWild.js - 1
    • Missing License Header · Line 1-1
      This new file is missing the required Apache Software Foundation license header. All new code files must include the standard header to comply with licensing requirements. Please add the header from other files in the repo, such as README.md.
      Code suggestion
       @@ -1,1 +1,21 @@
      - export const results = {
      + /*
      +  * Licensed to the Apache Software Foundation (ASF) under one
      +  * or more contributor license agreements.  See the NOTICE file
      +  * distributed with this work for additional information
      +  * regarding copyright ownership.  The ASF licenses this file
      +  * to you under the Apache License, Version 2.0 (the
      +  * "License"); you may not use this file except in compliance
      +  * with the License.  You may obtain a copy of the License at
      +  *
      +  *     http://www.apache.org/licenses/LICENSE-2.0
      +  *
      +  * Unless required by applicable law or agreed to in writing,
      +  * software distributed under the License is distributed on an
      +  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
      +  * KIND, either express or implied.  See the License for the
      +  * specific language governing permissions and limitations
      +  * under the License.
      +  */
      + export const results = {
Review Details
  • Files reviewed - 4 · Commit Range: 8b37d01..26275b6
    • docs/docusaurus.config.ts
    • docs/src/pages/inTheWild.tsx
    • docs/src/resources/experimental/parse-md-to-json.py
    • docs/static/resources/inTheWild.js
  • Files skipped - 0
  • Tools
    • Eslint (Linter) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ 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 Default Agent 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


# if category ended
categories.update({category_name: entries_list})
file.seek(last_category_position)
Copy link
Contributor

Choose a reason for hiding this comment

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

Infinite loop bug

The seek back to last_category_position after processing a category disrupts the sequential read, likely leading to re-reading lines and infinite looping.

Code suggestion
Check the AI-generated fix before applying
 --- docs/src/resources/experimental/parse-md-to-json.py
 +++ docs/src/resources/experimental/parse-md-to-json.py
 @@ -108,7 +108,6 @@ if __name__ == "__main__":
          # if category ended
          categories.update({category_name: entries_list})
          file.seek(last_category_position)
 -
      # Finally export or write out
      with open(FILEPATH_OUT, "w") as file:
        result = dict({"categories": categories})

Code Review Run #45aaa6


Should Bito avoid suggestions like this for future reviews? (Manage Rules)

  • Yes, avoid them

Copy link
Author

Choose a reason for hiding this comment

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

This is intended behavior.

@rusackas rusackas requested review from rusackas and sfirke December 2, 2025 23:06
@rusackas rusackas changed the title (docs): add inTheWild (json,react docusaurus) onto home page docs: add inTheWild (json,react docusaurus) onto home page Dec 2, 2025
@rusackas
Copy link
Member

rusackas commented Dec 2, 2025

You can add docs/static/img/* to the .rat-excluded file to skip the license header checks on those files, but you'll still need to add the ASF blurb at the top of docs/src/resources/experimental/parse-md-to-json.py... if that's no longer 'experimental' ;)

@codeant-ai-for-open-source
Copy link

CodeAnt AI is running Incremental review

@rusackas
Copy link
Member

rusackas commented Dec 3, 2025

Committed a change to .rat-excludes that might resolve that CI step.

@javacatknight

This comment was marked as resolved.

@codeant-ai-for-open-source
Copy link

CodeAnt AI is running Incremental review

@javacatknight
Copy link
Author

javacatknight commented Dec 4, 2025

I'm going to fix/do the pre-commit checks locally but regarding the license check, it's interesting that the rat check passed on the .png file in the directory, but not the .svg files.

I ended up adding docs/static/img/logos/.*svg because for whatever reason, docs/static/img/logos/* only worked for the png file. Just commenting this for your interest

Sorry about all the comments! Will definitely work with pre-commit more in the future 😊

@codeant-ai-for-open-source
Copy link

CodeAnt AI is running Incremental review

@javacatknight
Copy link
Author

javacatknight commented Dec 4, 2025

Made it nicer looking!

And for fun/your interest, regarding:

  • Security IssueExternal links use target="_blank" with rel="noreferrer" only. Without noopener, this can expose the page to reverse tabnabbing via window.opener. This applies both to the GitHub "Add your name/org!" link and the per-user/org links in the cards.

noreferrer now includes noopener - https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer

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

Labels

doc Namespace | Anything related to documentation home:design Related to the Homepage UI/UX size/XXL 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