Skip to content

OINT-1289: WIP bringing back modal add #561

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

pellicceama
Copy link
Collaborator

@pellicceama pellicceama commented May 8, 2025

User description


Important

This PR introduces a modal-based integration addition flow, refactors the main connect page, and removes deprecated components, enhancing the UI and code maintainability.

  • Behavior:
    • Introduces AddConnectionClient component for modal-based integration addition with search and filtering in AddConnection.client.tsx.
    • Refactors main connect page in page.tsx to use conditional rendering instead of tab-based navigation.
    • Updates integrations list UI in MyConnections.client.tsx with new empty state, grid layout, and LoadingSpinner.
  • Components:
    • Removes deprecated Spinner and LinkConnectorModal components.
    • Deletes LinkConnectorModal stories.
  • Misc:
    • Replaces Spinner with LoadingSpinner in page.client.tsx and MyConnections.client.tsx.
    • Updates imports and usages to reflect component changes.

This description was created by Ellipsis for 39c6239. You can customize this summary. It will automatically update as commits are pushed.



CodeAnt-AI Description

  • Introduced a new modal-based integration addition flow with the AddConnectionClient component, featuring search, filtering, and responsive layouts.
  • Refactored the main connect page to remove tab-based navigation, instead using conditional rendering based on the view search parameter.
  • Improved the integrations list UI, including a new empty state, grid layout, and enhanced loading states using LoadingSpinner.
  • Removed deprecated components (Spinner, LinkConnectorModal) and their exports and stories, cleaning up unused code.
  • Updated all relevant imports and usages to reflect these changes, ensuring a more modern and user-friendly experience.

This PR modernizes the integration management UI by introducing a modal for adding integrations, improving the user experience and code maintainability. It also removes outdated components and streamlines the main connect page logic, resulting in a cleaner and more intuitive interface.


Changes walkthrough

Relevant files
Enhancement
9 files
AddConnection.client.tsx
Add modal-based integration addition and refactor connection card UI

apps/web/app/connect/AddConnection.client.tsx

  • Introduced new AddConnectionClient component to handle modal-based
    integration addition with search/filter and responsive layout.
  • Refactored AddConnectionCard to use ConnectorDisplay for consistent UI
    and improved selection logic.
  • Removed usage of deprecated components and improved state handling for
    modal and search.
  • +173/-16
    MyConnections.client.tsx
    Improve integrations list UI and loading/empty states                   

    apps/web/app/connect/MyConnections.client.tsx

  • Replaced Spinner with LoadingSpinner for loading states.
  • Enhanced empty state UI with icon, heading, and improved messaging.
  • Added "Add Integration" button and grid layout for displaying
    connections.
  • Improved conditional rendering and button state management.
  • +90/-58 
    page.client.tsx
    Remove tab-based navigation and related client logic                     

    apps/web/app/connect/page.client.tsx

  • Removed TabsClient component and related tab navigation logic.
  • Deleted code for syncing tabs with search params.
  • +0/-25   
    page.tsx
    Refactor connect page to use modal and conditional rendering     

    apps/web/app/connect/page.tsx

  • Replaced tab-based navigation with conditional rendering based on view
    search param.
  • Integrated new AddConnectionClient modal for adding integrations.
  • Updated layout and logic for managing and adding integrations.
  • Improved code structure and suspense handling for main content area.
  • +43/-52 
    Spinner.tsx
    Remove deprecated Spinner component                                                       

    packages/ui-v1/components/Spinner.tsx

    • Deleted the Spinner component as it is no longer used.
    +0/-9     
    index.ts
    Remove Spinner export from components index                                       

    packages/ui-v1/components/index.ts

    • Removed export of the deleted Spinner component.
    +0/-1     
    LinkConnectorModal.tsx
    Remove LinkConnectorModal component                                                       

    packages/ui-v1/domain-components/LinkConnectorModal.tsx

  • Deleted the LinkConnectorModal component, replaced by new modal logic
    in AddConnectionClient.
  • +0/-143 
    LinkConnectorModal.stories.tsx
    Remove LinkConnectorModal Storybook stories                                       

    packages/ui-v1/domain-components/stories/LinkConnectorModal.stories.tsx

    • Deleted all Storybook stories for LinkConnectorModal.
    +0/-185 
    index.ts
    Remove LinkConnectorModal export from domain-components index   

    packages/ui-v1/domain-components/index.ts

    • Removed export of the deleted LinkConnectorModal component.
    +0/-1     
    Bug fix
    1 files
    page.client.tsx
    Use LoadingSpinner in embed preview loading state                           

    apps/web/app/console/(authenticated)/connect/page.client.tsx

  • Replaced Spinner with LoadingSpinner for loading state in embed
    preview.
  • +2/-2     
    💡 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.

    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.

    Copy link

    prophet-code-review-bot bot commented May 8, 2025

    Bug Report

    Name Severity Example test case Description
    Potential XSS Vulnerability in AddConnectionClient Component Medium Enter <img src=x onerror=alert("XSS Vulnerability")> in the search box of the Add Integrations modal. The searchQuery state is directly embedded into the No integrations found matching message in the AddConnectionClient component. While JSX generally escapes values, it's possible that a misconfiguration or the use of dangerouslySetInnerHTML could allow an attacker to inject malicious HTML and execute arbitrary JavaScript in the user's browser.
    Unused Spinner Story Low Check packages/ui-v1/components/Spinner.stories.tsx The Spinner component was removed in this patch, but the story packages/ui-v1/components/Spinner.stories.tsx was not. This should be deleted to avoid confusion.

    Comments? Email us.

    Copy link

    codeant-ai bot commented May 8, 2025

    CodeAnt AI is reviewing your PR.

    Copy link

    cubic-dev-ai bot commented May 8, 2025

    Your mrge subscription is currently inactive. Please reactivate your subscription to receive AI reviews and use mrge.

    Copy link

    vercel bot commented May 8, 2025

    The latest updates on your projects. Learn more about Vercel for Git ↗︎

    Name Status Preview Comments Updated (UTC)
    v1 ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 26, 2025 5:14pm

    @pellicceama pellicceama marked this pull request as draft May 8, 2025 22:27
    Copy link

    recurseml bot commented May 8, 2025

    ⚠️ Only 5 files will be analyzed due to processing limits.

    @codeant-ai codeant-ai bot added the size:L This PR changes 100-499 lines, ignoring generated files label May 8, 2025
    Copy link

    recurseml bot commented May 8, 2025

    ✨ No issues found! Your code is sparkling clean! ✨

    🗒️ View all ignored comments in this repo
    • This export statement is redundant as it appears both in the diff and original source code. Adding it again will cause a duplicate export error. The line should be removed since it already exists in the source code.
    • Passing a Promise directly to a React component prop is incorrect. The Promise should be resolved before rendering. Either await the result before passing to the component, or use a proper data fetching pattern like React Query or SWR
    • Similar to the first bug, this prop is also passing a Promise directly without awaiting it. The API call api.listConnectors() should be awaited before passing the data. Should use 'await' before the API call.

    Copy link

    codeant-ai bot commented May 8, 2025

    Pull Request Feedback 🔍

    🔒 No security issues identified
    ⚡ Recommended areas for review

    Code Duplication
    The mobile and desktop views inside the AddConnectionCard component contain nearly identical markup. Consider refactoring this duplication into a reusable component or shared render function to improve maintainability.

    Undefined State Handler
    The onClick handlers reference setIsLoading without a visible declaration or initialization of the loading state. Ensure that both isLoading and setIsLoading are properly defined and managed.

    Undefined Component Reference
    The <AddConnections> component is used in the conditional rendering branch but is not imported or defined in this file. Verify that it exists and add the proper import if necessary.

    Copy link
    Contributor

    @greptile-apps greptile-apps bot left a comment

    Choose a reason for hiding this comment

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

    PR Summary

    This PR transitions from a tabbed interface to a modal-based approach for managing connections, with significant UI/UX changes across multiple components.

    • Removes problematic TabsClient component that caused server-side route reloads, replacing with modal navigation
    • Improves empty state UI in MyConnections.client.tsx with better messaging and responsive grid layout (2 cols mobile, 4 desktop)
    • Potential issue with hardcoded auth_type: 'OAUTH2' type assertion in MyConnections.client.tsx that could cause runtime errors
    • Removal of Spinner component and stories without clear replacement path needs attention to prevent breaking loading states
    • Export changes in domain-components/index.ts require migration plan to prevent breaking existing imports

    10 file(s) reviewed, 5 comment(s)
    Edit PR Review Bot Settings | Greptile

    return (
    <ConnectorConnectContainer
    connectorName={conn.connector_name as ConnectorName}
    connector={{auth_type: 'OAUTH2'} as any}
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    logic: Hardcoding auth_type as 'OAUTH2' and using type assertion is unsafe. Should handle different auth types properly.

    Comment on lines +67 to +69
    setIsLoading(true)
    setSearchParams({view: 'add'}, {shallow: false})
    }}
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    style: Setting loading state before navigation is unnecessary since component will unmount. Remove setIsLoading(true).

    Suggested change
    setIsLoading(true)
    setSearchParams({view: 'add'}, {shallow: false})
    }}
    setSearchParams({view: 'add'}, {shallow: false})
    }}

    Comment on lines +39 to +41
    const [isOpen, setIsOpen] = useState(true)
    const [_, setSearchParams] = useMutableSearchParams()
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    logic: isOpen is initialized to true but there's no way to reopen the modal if closed. Consider making this controlled by parent component.

    onPress={() => {
    if (isConnecting) {
    return
    }
    handleSelect()
    handleConnect()
    }}
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    style: handleSelect() and handleConnect() could race if both modify state. Consider combining into single handler.

    </Button>
    </div>

    <div className="mt-4"></div>
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    style: Empty div with mt-4 can be replaced by adding margin to DataTileView component.

    Copy link
    Contributor

    @ellipsis-dev ellipsis-dev bot left a comment

    Choose a reason for hiding this comment

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

    Important

    Looks good to me! 👍

    Reviewed everything up to a1a6635 in 2 minutes and 52 seconds. Click for details.
    • Reviewed 978 lines of code in 10 files
    • Skipped 0 files when reviewing.
    • Skipped posting 16 draft comments. View those below.
    • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
    1. apps/web/app/connect/AddConnection.client.tsx:102
    • Draft comment:
      Consider using a more unique key than ${card.connectorName}-${index} to avoid key collisions when duplicate connector names occur.
    • Reason this comment was not posted:
      Confidence changes required: 50% <= threshold 50% None
    2. apps/web/app/connect/AddConnection.client.tsx:93
    • Draft comment:
      The onScroll handler updates isFocused based on scrollTop; consider debouncing or throttling for performance on long lists.
    • Reason this comment was not posted:
      Confidence changes required: 50% <= threshold 50% None
    3. apps/web/app/connect/MyConnections.client.tsx:26
    • Draft comment:
      The local isLoading state appears to be manually toggled; consider relying more on Suspense or ensuring consistent loading state management.
    • Reason this comment was not posted:
      Confidence changes required: 50% <= threshold 50% None
    4. apps/web/app/connect/page.tsx:87
    • Draft comment:
      Overriding searchParams with payload.connect_options is powerful; ensure that the keys being overridden are safe and expected.
    • Reason this comment was not posted:
      Confidence changes required: 40% <= threshold 50% None
    5. apps/web/app/console/(authenticated)/connect/page.client.tsx:75
    • Draft comment:
      Error handling in ConnectEmbedPreview could be enhanced to provide more detailed user feedback for errors.
    • Reason this comment was not posted:
      Confidence changes required: 30% <= threshold 50% None
    6. apps/web/app/connect/AddConnection.client.tsx:93
    • Draft comment:
      Consider debouncing the onScroll event to avoid potential performance issues during rapid scrolling.
    • Reason this comment was not posted:
      Confidence changes required: 33% <= threshold 50% None
    7. apps/web/app/connect/AddConnection.client.tsx:155
    • Draft comment:
      Duplicated rendering logic for mobile and desktop ConnectorDisplay; consider abstracting the shared logic to reduce duplication.
    • Reason this comment was not posted:
      Confidence changes required: 50% <= threshold 50% None
    8. apps/web/app/connect/MyConnections.client.tsx:26
    • Draft comment:
      Local isLoading state appears redundant given the use of Suspense. Consider relying on Suspense for managing loading state to simplify the component.
    • Reason this comment was not posted:
      Confidence changes required: 50% <= threshold 50% None
    9. apps/web/app/connect/page.tsx:117
    • Draft comment:
      Sanitize themeVariables values before injecting them via dangerouslySetInnerHTML to mitigate potential XSS vulnerabilities.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.
    10. packages/ui-v1/components/index.ts:11
    • Draft comment:
      Removed export of Spinner; ensure that all consumers now use LoadingSpinner instead.
    • Reason this comment was not posted:
      Confidence changes required: 33% <= threshold 50% None
    11. packages/ui-v1/domain-components/index.ts:7
    • Draft comment:
      Removed LinkConnectorModal export. Confirm that no parts of the codebase depend on this component.
    • Reason this comment was not posted:
      Confidence changes required: 33% <= threshold 50% None
    12. apps/web/app/console/(authenticated)/connect/page.client.tsx:11
    • Draft comment:
      Good update: replaced Spinner with LoadingSpinner for consistent UX.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50% None
    13. apps/web/app/connect/AddConnection.client.tsx:155
    • Draft comment:
      There is a typographical error in the comment on line 155: 'note sure' should likely be 'not sure'.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While the typo fix is technically correct, fixing typos in comments (especially TODO comments) provides very little value. The meaning is still clear despite the typo. This kind of nitpicking can create noise in PR reviews and distract from more important issues. The rules state to only keep comments that require clear code changes. The typo could theoretically make the comment slightly harder to read or search for. Documentation quality is important. The meaning is still perfectly clear despite the typo, and this is just a temporary TODO comment, not user-facing documentation. The value add is minimal. Delete this comment as it points out a trivial typo in a comment that doesn't impact code functionality or readability in any meaningful way.
    14. apps/web/app/connect/page.tsx:338
    • Draft comment:
      Typo found: 'IMprove' should be 'Improve' in the comment. Please fix the capitalization.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.
    15. apps/web/app/connect/page.tsx:287
    • Draft comment:
      Typo found: 'crease new connections' should be 'create new connections' in the TODO comment. Please update this.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.
    16. apps/web/app/console/(authenticated)/connect/page.client.tsx:59
    • Draft comment:
      Typographical error: The word 'stragiht' should be corrected to 'straight' for clarity.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.

    Workflow ID: wflow_I8efkna385yLZxE4

    You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

    Comment on lines 63 to 72
    <Button
    variant="default"
    onClick={() => setSearchParams({view: 'add'}, {shallow: true})}>
    Add your first integration
    size="lg"
    className="font-medium"
    onClick={() => {
    setIsLoading(true)
    setSearchParams({view: 'add'}, {shallow: false})
    }}
    disabled={isLoading}>
    Add First Integration
    </Button>
    Copy link

    Choose a reason for hiding this comment

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

    Suggestion: Declare and initialize the isLoading state to avoid runtime errors. [possible bug]

    Suggested change
    <Button
    variant="default"
    onClick={() => setSearchParams({view: 'add'}, {shallow: true})}>
    Add your first integration
    size="lg"
    className="font-medium"
    onClick={() => {
    setIsLoading(true)
    setSearchParams({view: 'add'}, {shallow: false})
    }}
    disabled={isLoading}>
    Add First Integration
    </Button>
    const [isLoading, setIsLoading] = useState(false)
    ...
    <Button
    size="lg"
    className="font-medium"
    onClick={() => {
    setIsLoading(true)
    setSearchParams({ view: 'add' }, { shallow: false })
    }}
    disabled={isLoading}>
    Add First Integration
    </Button>

    Copy link

    codeant-ai bot commented May 8, 2025

    CodeAnt AI finished reviewing your PR.

    @Rodri77 Rodri77 force-pushed the restore-modal-work branch from a1a6635 to 49a8c77 Compare May 14, 2025 23:26
    Copy link

    prophet-code-review-bot bot commented May 14, 2025

    Bug Report

    Name Severity Example test case Description
    Unnecessary full page reload on close Low Open the "Add Integrations" dialog and close it. The onClose function in AddConnectionClient performs a full page reload, which is unnecessary and degrades the user experience. Setting shallow: true fixes this.
    Duplicated code in AddConnectionCard Low Inspect the AddConnectionCard component. The AddConnectionCard component duplicates code for rendering the connector display in mobile and desktop views. Using a conditional rendering based on useIsMobile hook avoids the duplication and improves maintainability.

    Comments? Email us.

    Copy link

    prophet-code-review-bot bot commented May 15, 2025

    Bug Report

    Name: Unnecessary Full Page Refresh on Modal Close
    Severity: Low
    Example test case: Open the "Add Integrations" modal, then close it. Observe that the page performs a full refresh, instead of a shallow update.
    Description: The onClose function in AddConnectionClient uses setSearchParams({view: 'manage'}, {shallow: false}). This causes a full page refresh when the modal is closed, which is unnecessary and degrades the user experience. The fix is to use shallow: true.

    Comments? Email us.

    @Rodri77 Rodri77 force-pushed the restore-modal-work branch from da08688 to 39c6239 Compare May 15, 2025 19:36
    Copy link

    prophet-code-review-bot bot commented May 15, 2025

    Bug Report

    Fixed setSearchParams in AddConnectionClient to use shallow routing.

    Name Severity Example test case Description
    Full page reload on closing Add Connection modal Medium Open the Add Connection modal and close it. Closing the modal triggers a full page reload instead of a shallow route update.

    Removed Spinner.stories.tsx file.

    Name Severity Example test case Description
    Unnecessary Spinner.stories.tsx file Low Check the components directory The Spinner component was replaced with LoadingSpinner, but the old story file was not removed.

    Comments? Email us.

    @Rodri77 Rodri77 marked this pull request as ready for review May 15, 2025 19:41
    Copy link
    Contributor

    @greptile-apps greptile-apps bot left a comment

    Choose a reason for hiding this comment

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

    PR Summary

    Implemented modal-based connection management with improved UI/UX and loading states.

    • Added responsive grid layout in AddConnection.client.tsx with mobile (1 col) and desktop (2 col) views
    • Improved search functionality with dynamic filtering and focus states in modal header
    • Implemented empty state handling with clear messaging when no integrations match search
    • Consolidated loading states using LoadingSpinner across all components for consistency
    • Added proper error boundary handling with fallback states in AddConnectionCardPrefetch

    10 file(s) reviewed, 2 comment(s)
    Edit PR Review Bot Settings | Greptile

    Comment on lines +150 to +151
    {/* NOTE/TODO: note sure how to remove duplication,
    its there as we're using tailwind for consistent breakpoints with AddConnectionClient */}
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    style: Consider extracting common ConnectorDisplay logic into a shared component to avoid duplication between mobile and desktop views

    Comment on lines +103 to +104
    {filteredCards.map((card, index) => (
    <div key={`${card.connectorName}-${index}`}>
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    style: Using array index as part of key prop could cause issues with React's reconciliation if cards are reordered

    Suggested change
    {filteredCards.map((card, index) => (
    <div key={`${card.connectorName}-${index}`}>
    {filteredCards.map((card) => (
    <div key={card.connectorName}>

    @Rodri77 Rodri77 changed the title WIP bringing back modal add OINT-1289: WIP bringing back modal add May 15, 2025
    Copy link

    linear bot commented May 15, 2025

    OINT-1289

    Copy link
    Contributor

    @ellipsis-dev ellipsis-dev bot left a comment

    Choose a reason for hiding this comment

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

    Caution

    Changes requested ❌

    Reviewed everything up to 39c6239 in 2 minutes and 42 seconds. Click for details.
    • Reviewed 965 lines of code in 10 files
    • Skipped 0 files when reviewing.
    • Skipped posting 7 draft comments. View those below.
    • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
    1. apps/web/app/connect/AddConnection.client.tsx:59
    • Draft comment:
      The onOpenChange callback only handles the false (closed) case. Ensure this behavior is intentional or add handling/documentation for when the dialog is opened.
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The dialog's open state is fully controlled by the isOpen state variable. The onOpenChange handler only needs to handle closing because opening is handled by the isOpen state which is set to true initially. There's no need to handle the open case in onOpenChange because the component controls when the dialog opens through isOpen=true. This is a valid pattern in React for controlled components. I could be wrong about whether there are edge cases where the dialog could be opened through other means that should be handled. The component might be part of a larger system I don't fully understand. The code shows this is a controlled component where opening is handled by the isOpen state. The onOpenChange handler only needs to handle closing since that's the only external event that needs to update the internal state. The comment should be deleted because the current implementation is a valid controlled component pattern and there's no clear issue with only handling the close case in onOpenChange.
    2. apps/web/app/connect/MyConnections.client.tsx:26
    • Draft comment:
      The local isLoading state is set to true and immediately set to false in useEffect. Consider removing this redundant state in favor of relying on the suspense query’s loading state.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.
    3. apps/web/app/connect/page.tsx:291
    • Draft comment:
      When mapping available connectors for cards, consider using a unique identifier (e.g., ccfg.id) instead of the index to generate keys. This helps maintain stability if the list order changes.
    • Reason this comment was not posted:
      Comment was on unchanged code.
    4. apps/web/app/console/(authenticated)/connect/page.client.tsx:165
    • Draft comment:
      For improved accessibility, consider adding ARIA labels or descriptive text to interactive elements like the link containing the ChevronLeftIcon.
    • Reason this comment was not posted:
      Comment was not on a location in the diff, so it can't be submitted as a review comment.
    5. packages/ui-v1/components/index.ts:11
    • Draft comment:
      Good cleanup—the removal of the redundant Spinner export is appropriate.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50% None
    6. packages/ui-v1/domain-components/index.ts:1
    • Draft comment:
      Removal of the LinkConnectorModal export from the domain-components index looks good; ensure this component isn’t referenced elsewhere.
    • Reason this comment was not posted:
      Confidence changes required: 0% <= threshold 50% None
    7. apps/web/app/connect/AddConnection.client.tsx:150
    • Draft comment:
      Typographical error in comment: 'note sure how to remove duplication, its there as we're using tailwind for consistent breakpoints with AddConnectionClient'. Consider changing to "not sure" instead of "note sure" and "it's there" instead of "its there".
    • Reason this comment was not posted:
      Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While the comment is technically correct about the typos, it's addressing a TODO comment that is meant to be temporary and informal. TODOs are typically internal notes for developers and don't need to meet the same quality bar as production code. The typos don't impact functionality or code quality. The typos could make the TODO comment slightly less clear to other developers. Poor writing in comments, even TODOs, could be seen as reducing code quality. The meaning of the TODO is still clear despite the typos, and focusing on spelling in temporary developer notes is overly pedantic and doesn't add meaningful value. This comment should be deleted as it's overly focused on minor typos in a temporary TODO comment rather than substantive code issues.

    Workflow ID: wflow_V9muR5yaAcLQSJk3

    You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

    {/* NOTE/TODO: note sure how to remove duplication,
    its there as we're using tailwind for consistent breakpoints with AddConnectionClient */}
    {/* Mobile view (visible below md breakpoint) */}
    <div className="md:hidden">
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    Consider extracting the duplicated rendering logic for ConnectorDisplay in the mobile (lines 150–170) and desktop (lines 172–190) views into a shared component.

    Copy link

    prophet-code-review-bot bot commented May 26, 2025

    Bug Report

    Name|Severity|Example test case|Description\n---|---|---|---\nLosing connector_names filter on modal close|Medium|1. Navigate to connect?connector_names=stripe. 2. Click 'Add Integration'. 3. Close the modal. 4. Observe that all connectors are displayed, not just Stripe.|When the Add Integration modal is closed, the connector_names filter is lost, causing all connections to be displayed in the Manage Integrations view.

    Comments? Email us.

    Copy link

    Stably Runner - Test Suite - 'Pre Merge CI Checks'

    Test Suite Run Result: 🟢 Success (2/2 tests passed) [dashboard]


    This comment was generated from stably-runner-action

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    size:L This PR changes 100-499 lines, ignoring generated files
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    2 participants