Skip to content

Autofixing errors whenever there is an error generated #1832

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

Closed
wants to merge 1 commit into from

Conversation

SoloDevAbu
Copy link
Contributor

@SoloDevAbu SoloDevAbu commented May 8, 2025

Description

Instead of fixing errors on clicking Fix button, tries to fix the error whenever there is an error generated

Related Issues

fixes #1617


Important

Automatically fix errors in ErrorManager using autorun to trigger sendFixError() when errors occur.

  • Behavior:
    • Automatically fixes errors when they occur using autorun in ErrorManager.
    • shouldAutoFixErrors checks if errors exist and if the chat is not waiting before triggering sendFixError().
  • Functions:
    • Adds autorun in ErrorManager constructor to automatically call sendFixError().
    • sendFixError() now removes errors from map if fixed.
  • Misc:
    • Removes makeAutoObservable options in ErrorManager constructor.

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

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 04dcb17 in 2 minutes and 12 seconds. Click for details.
  • Reviewed 37 lines of code in 1 files
  • Skipped 0 files when reviewing.
  • Skipped posting 5 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/studio/src/lib/editor/engine/error/index.ts:18
  • Draft comment:
    Consider storing the disposer returned by autorun and cleaning it up when ErrorManager is disposed to avoid potential memory leaks.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 30% vs. threshold = 50% This is a MobX pattern question. autorun returns a disposer function that should be called to clean up the reaction when no longer needed. Not cleaning it up could potentially cause memory leaks if the ErrorManager instance is recreated multiple times. However, I don't see clear evidence that this ErrorManager gets disposed of or recreated frequently. The class seems to be a singleton-like manager tied to the editor lifecycle. I don't have visibility into how ErrorManager instances are managed in the broader application. The memory leak risk depends entirely on the lifecycle patterns I can't see. While proper cleanup is a good practice, without clear evidence that this is causing actual issues or that ErrorManager has a shorter lifecycle than the app itself, this may be premature optimization. Given the uncertainty about the actual impact and lack of clear evidence that this is causing problems, this comment should be removed as per the guidance to only keep comments we're very confident about.
2. apps/studio/src/lib/editor/engine/error/index.ts:36
  • Draft comment:
    sendFixError calls removeErrorsFromMap only to remove errors from webview map, but terminalErrors remain intact. Consider clearing terminalErrors upon successful fix.
  • 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/studio/src/lib/editor/engine/error/index.ts:18
  • Draft comment:
    Potential race condition: sendFixError() is triggered in autorun without ensuring that a previous fix attempt isn’t still in progress. Consider adding a flag or debounce to avoid overlapping fix attempts.
  • 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 code appears to have safeguards: 1) isWaiting flag prevents new calls while waiting 2) errors.length check prevents unnecessary calls 3) autorun will only trigger on observable changes. The comment seems overly cautious given these protections. I could be missing some edge cases in how mobx autorun works with async functions. There might be scenarios where isWaiting doesn't get set quickly enough. The isWaiting flag is specifically designed to prevent concurrent calls, and mobx's autorun will only re-run when observables change, making a true race condition unlikely. The comment should be deleted as the code already has proper safeguards against concurrent calls through the isWaiting flag and errors.length check.
4. apps/studio/src/lib/editor/engine/error/index.ts:29
  • Draft comment:
    The computed 'shouldAutoFixErrors' getter uses only terminalErrors. If webview errors are expected to trigger auto-fix too, adjust the 'errors' getter accordingly.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 20% vs. threshold = 50% The code clearly shows two separate error tracking systems. However, looking at sendFixError(), it uses the same errors getter, suggesting this is the intended behavior - only terminal errors should be auto-fixed. The webview errors seem to be handled separately through the webview-specific methods. This appears to be intentional design rather than an oversight. I could be wrong about the intention - maybe webview errors should be auto-fixed. The separate handling could be a bug rather than a feature. Without more context about the broader system design and requirements, we should assume the current behavior is intentional. The clear separation in the code suggests deliberate design. The comment should be deleted as it questions what appears to be intentional design without strong evidence that it's actually a problem.
5. apps/studio/src/lib/editor/engine/error/index.ts:37
  • Draft comment:
    After a successful fix (when res is truthy), terminal errors remain uncleared since removeErrorsFromMap only affects webview errors. This may lead to repeated fix attempts; consider clearing terminalErrors as well.
  • 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_PJPycSdlZk9MacHk

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

@Kitenite
Copy link
Contributor

Hello, I am migrating the desktop app to a new repository. This repository will now focus on the web version. This PR has been migrated to the new repository: onlook-dev#2. Sorry for the inconvenience, rest assure your work here will also be adapted for the web version (if it hasn't already).

@Kitenite Kitenite closed this May 14, 2025
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.

[feat] Automatically fix errors when they come up in chat
2 participants