Skip to content

[ZEPPELIN-6633] Add ipynb export to the Angular notebook UI - #5597

Open
miinhho wants to merge 2 commits into
apache:masterfrom
miinhho:ZEPPELIN-6633-ipynb-export
Open

miinhho wants to merge 2 commits into
apache:masterfrom
miinhho:ZEPPELIN-6633-ipynb-export

Conversation

@miinhho

@miinhho miinhho commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

What is this PR for?

The Angular notebook UI only supports exporting notes as .zpln, while the classic UI also supports Jupyter notebook (.ipynb) export.

This PR adds an .ipynb export button to the Angular notebook toolbar. It uses the existing server-side conversion protocol and adds the corresponding SDK message types. The two export buttons have distinct tooltips and accessible names.

Existing .zpln export behavior is unchanged. Both buttons are hidden in report mode and disabled when viewing a revision.

What type of PR is it?

Improvement

Todos

  • - Add SDK message types and a request method for notebook conversion.
  • - Add the ipynb export button and download handling.
  • - Add type-contract and E2E regression coverage.

What is the Jira issue?

How should this be tested?

Run the following commands from zeppelin-web-angular:

npm run typecheck:sdk-contracts
npm run check:websocket-contract
npm run test:shell

With Zeppelin running at http://localhost:8080, run:

npm run e2e:fast -- tests/notebook/action-bar/action-bar-functionality.spec.ts

The export regression test verifies the downloaded notebook’s cells, Unicode content and filename, and absence of a UTF-8 BOM. It also checks that export still works without duplicate downloads after navigating away and reopening the note, and that .zpln export preserves the original note.

For manual verification:

  1. Open a note containing markdown and code paragraphs in the Angular UI.
  2. Click Export this note (ipynb). Open the downloaded file in Jupyter and check the cells and content.
  3. Navigate away and reopen the note without refreshing the browser. Export again and check that only one file is downloaded.
  4. Use Export this note (zpln) to check that Zeppelin-format export still works.
  5. Switch to report mode and check that both export buttons are hidden. With revision-capable storage, open a historical revision and check that both buttons are disabled.

Screenshots (if appropriate)

6633-ipynb-export

Questions:

  • Does the license files need to update? No.
  • Is there breaking changes for older versions? No.
  • Does this needs documentation? No.

@voidmatcha voidmatcha left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM 👍

This branch has not been deployed

No deployments
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