zyratlo opened a new pull request, #8909: URL: https://github.com/apache/texera/pull/8909
### What changes were proposed in this PR? The Jupyter panel's cells became editable as soon as a viewer clicked into one. Classic Notebook resets each editor's `readOnly` from `cell.is_editable()` on every focus and re-enables the keyboard manager at the same time, so setting `readOnly` once from `custom.js` did not hold. That setup also raced the notebook: `custom.js` loads asynchronously and usually misses `notebook_loaded`, and only worked because it was bound to `kernel_ready` too. This PR moves the setup into `custom-preload.js`, a hook Notebook 6.5 provides that `main.js` waits for before it builds the notebook. Overrides placed there are always in effect: * `Cell.prototype.is_editable` returns false, so Notebook itself keeps every editor read only, including after focus. * `KeyboardManager.prototype.enable` is a no op, and the manager is disabled once the notebook loads, so focusing a cell no longer brings back Shift+Enter, `d d` and the other shortcuts. * `KernelSelector.prototype._spec_not_found` continues without a kernel instead of opening the "Kernel not found" dialog. The panel never runs cells, so a notebook whose kernel is not installed opens normally. Python notebooks still match `python3` and start their kernel as before. * The markdown `unrender` override moves over unchanged. `custom.js` keeps only the Texera messaging. Its cell click handler is now delegated from `document` and bound immediately, rather than on `kernel_ready`, so clicking a cell to highlight its operator also works when no kernel starts. It stays in `custom.js` because it needs the origin `start-texera-jupyter.sh` substitutes. `jupyter.dockerfile` copies the new file, and the local dev README lists it among the files that need an image rebuild. ### Any related issues, documentation, discussions? Closes #8908 Parent-issue #4301 R support (#8009) depends on this: R notebooks open in the panel without a kernel, which hit both the dialog and the editable cells. ### How was this PR tested? These files have no automated tests. Tested by hand in the Jupyter container, with real keystrokes: * An R notebook (no kernel installed): no dialog. Typing, Enter, Backspace, Shift+Enter, `d d` and `b` change nothing. Double clicking a markdown heading leaves it rendered. R syntax highlighting is intact, and the cell click handler is bound. * A Python notebook: the kernel still starts, highlighting is unchanged, and an editor stays read only after focus (before this change it became editable). * `custom-preload.js` is served by the rebuilt image. A server that was already running keeps serving Notebook's default stub until restarted, since Notebook caches static file locations. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Claude Opus 5.5) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
