Skip to content

feat(frontend): add the Python Notebook Migration Tool (frontend only)#4436

Open
zyratlo wants to merge 4 commits intoapache:mainfrom
zyratlo:migration-tool-frontend
Open

feat(frontend): add the Python Notebook Migration Tool (frontend only)#4436
zyratlo wants to merge 4 commits intoapache:mainfrom
zyratlo:migration-tool-frontend

Conversation

@zyratlo
Copy link
Copy Markdown
Contributor

@zyratlo zyratlo commented Apr 21, 2026

What changes were proposed in this PR?

This PR introduces the frontend portion of the Python Notebook Migration Tool, a new tool that converts a user-uploaded Python Jupyter notebook into a Texera workflow. New frontend code includes:

  • jupyter-notebook-panel component which hosts the iframe in the Texera workspace for the Jupyter server
  • jupyter-panel service which handles the mapping computation and highlighting logic and instantiating the jupyter-notebook-panel component
  • migration-llm which contains the communication logic between the tool and the LiteLLM proxy server
  • notebook-migration service which stores the mapping, handles communication with the Jupyter service, migration LLM service, and the backend service.

Details about the backend are in a separate PR #4437 .

Demo Videos (these can also be found on the parent issue)

  1. User uploads a Jupyter Notebook using the new tool button. They can select any available model (depending on the LiteLLM configuration) and provide their API key. In the demo video, the API key is stored as a system environment variable, so it is left blank. After the user submits, they will need to wait until the LLM responds.
1.upload.mp4
  1. After the LLM responds, the workspace will reload with the generated workflow and the Jupyter popup.
2.show.response.mp4
  1. The user can edit the workflow however they want. To assist with this process, when the user clicks on a workflow operator, it will highlight the corresponding notebook cell used to generate that operator, and vice versa.
3.show.mapping.mp4
  1. The user can minimize the Jupyter panel and reopen it, and can also delete the notebook associated with the workflow.
4.close.notebook.mp4
  1. When the user reopens a workflow that was generated from a notebook, it will also reopen the notebook.
5.reopen.workflow.mp4

Any related issues, documentation, discussions?

Closes #4428
This PR closes the sub-issue related to the frontend, the parent issue is #4301.

Architecture Diagram (these can also be found on the parent issue)

Image Image Image

How was this PR tested?

New frontend tests related to this PR were added:

  • frontend/src/app/workspace/component/jupyter-notebook-panel/jupyter-notebook-panel.component.spec.ts
  • frontend/src/app/workspace/service/jupyter-panel/jupyter-panel.service.spec.ts
  • frontend/src/app/workspace/service/notebook-migration/notebook-migration.service.spec.ts

This project was built locally and manually tested to ensure functionality. Pre-existing tests, builds, and checks were ran and passed.

Was this PR authored or co-authored using generative AI tooling?

Generated-by: ChatGPT (GPT-5.3)

@github-actions github-actions Bot added the frontend Changes related to the frontend GUI label Apr 21, 2026
@mengw15 mengw15 self-requested a review April 21, 2026 23:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend Changes related to the frontend GUI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add the Python-Notebook-Migration Tool Frontend

2 participants