Skip to content

Conversation

@MinCrohn
Copy link
Collaborator

No description provided.

@gemini-code-assist
Copy link

Summary of Changes

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

This pull request resolves an issue where the graphical representation of relations could continuously grow due to an additive update mechanism. The change ensures that the Relations component's update method now explicitly replaces all existing relation data with the new input, preventing an infinite accumulation of links and maintaining a clean, accurate display of relationships.

Highlights

  • Prevent Infinite Link Growth: The core change introduces a mergeStrategy: 'replace' option to the update method within the Relations class. This is crucial for preventing an unintended accumulation or 'infinite growth' of links when relations data is updated.
  • Data Update Strategy: By explicitly setting the merge strategy to 'replace', the system now ensures that existing relations data is completely overwritten with new changes, rather than being merged additively. This guarantees that the displayed relations accurately reflect the latest state without duplication.
Using Gemini Code Assist

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

Invoking Gemini

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

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

Customization

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

Limitations & Feedback

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

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

Footnotes

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

@MinCrohn MinCrohn merged commit d6d9a10 into main Dec 16, 2025
@MinCrohn MinCrohn deleted the bugfix/fix-infinite-links branch December 16, 2025 08:13
Copy link

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

Choose a reason for hiding this comment

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

Code Review

This pull request aims to fix an issue where the links array in Relations elements grows indefinitely with each update. The proposed solution is to enforce a 'replace' merge strategy for all updates on Relations elements. While this correctly changes the behavior for the links array, it unfortunately introduces a critical side effect, breaking partial style updates. Additionally, the tests that verify the links update behavior have not been updated to reflect the change, and will fail. My review includes a detailed comment on the problematic code with suggestions for a more robust solution.

Comment on lines 23 to 28
update(changes, options) {
super.update(changes, relationsSchema, options);
super.update(changes, relationsSchema, {
...options,
mergeStrategy: 'replace',
});
}

Choose a reason for hiding this comment

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

critical

While this change to use mergeStrategy: 'replace' correctly fixes the issue of the links array growing on each update, it introduces two significant problems:

  1. Broken Style Updates: This change causes a side effect where partial style updates no longer work. The _applyRelationstyle handler also uses mergeStrategy. With 'replace', it will replace the entire style on the underlying graphics object, instead of merging. For instance, updating just the width of a link will cause its color to be reset. This is a critical bug.

  2. Failing Tests: This change alters the behavior of links updates from merging to replacement. However, the existing tests in src/tests/render/Relations.test.js and src/tests/undo-redo/Relations.test.js still expect the old merging behavior (e.g., expect(updatedLinks.length).toBe(2)). These tests will now fail and need to be updated to reflect the new intended behavior.

A more targeted fix is needed. One approach is to refactor _applyRelationstyle to not depend on mergeStrategy. Alternatively, you could explore ways to apply the replace strategy only to the links array without affecting other properties during the update process.

Please address the style update bug and update the relevant tests.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants