Current limitations
This page distinguishes intentional scope from implementation gaps in the documented release.
Platform and distribution
Section titled “Platform and distribution”- macOS is the only supported platform.
- The minimum configured version is macOS 10.15.
- Installers are not Apple-notarized.
- There is no App Store, Homebrew, or automatic-update distribution.
- The release has no Windows or Linux build.
Window lifecycle
Section titled “Window lifecycle”LSUIElementremoves the Dock icon.- The app opens a normal visible main window rather than the tray-anchored panel described in old specifications.
- No tray icon or menu-bar toggle is constructed.
- File → Close Window has no companion command that recreates the main window. Quit and relaunch if the window becomes inaccessible.
Notebook format and content
Section titled “Notebook format and content”- Exactly four tabs are available;
tab_countis ignored by the frontend. - Tabs cannot be renamed.
- Markdown cell rendering is not implemented.
.ipynbimport and export are not implemented.- There is no per-notebook file, explicit Save As, history, undo across launches, or synchronization service.
- Only source and cell structure persist. Output and execution state do not.
- Clear has no confirmation and can autosave destructive removal of a tab’s source.
- Native Quit does not wait for a pending debounced save; the frontend unmount flush is best effort.
- Persistence has no built-in history or backup rotation.
Python execution
Section titled “Python execution”- Molt is a plain
exec/evalenvironment, not IPython. %magics,!shell syntax, rich display hooks, widgets, and notebook metadata are unsupported.- Interactive
input()is unsupported; it reads an empty stream and raisesEOFError. - Images, HTML, plots, audio, video, and other rich output are not rendered.
- Stdout and stderr are buffered separately, so their original chronological interleaving is lost.
image/pngexists only as a reserved frontend type.- Molt does not create environments or install packages. Packages already installed in the selected interpreter can be imported.
- One interpreter is shared by all tabs.
- Interpreter changes require quitting and relaunching the app, not only restarting a kernel.
- Native writes directly to process stdout can corrupt the JSON protocol.
- Captured output is not bounded.
Kernel controls and status
Section titled “Kernel controls and status”- Stop requires an explicit Restart before the tab can execute again.
- Interrupt force-kills the process after two seconds only if the same execution is still busy.
Keyboard and command mode
Section titled “Keyboard and command mode”- Command mode acts on the most recently focused cell; changing tabs clears that target.
Appearance and settings
Section titled “Appearance and settings”- The UI is light-only with a fixed Primer-derived palette.
- There is no theme selector or supported user-theme directory.
- Native glass effects can be toggled, but the live preview must be saved to persist.
auto_launchremains a parsed compatibility field, but the settings UI does not expose it and no login-item integration consumes it.- Invalid TOML uses logged defaults rather than offering an in-app repair flow.
Security and isolation
Section titled “Security and isolation”Molt executes arbitrary Python with the current user’s privileges. It is not a sandbox. Cell code can read or modify accessible files, start processes, use the network, and import native extensions. Run only code you trust.
Tabs isolate Python processes from one another, but they do not isolate operating-system resources. Two tabs can still read and modify the same files or external services.
Kernel cleanup owns direct Python children, not arbitrary descendant processes created by cell code.
Documentation implications
Section titled “Documentation implications”Older source files describe several unavailable features, including ephemeral cells, menu-bar toggling, themes, shortcut behavior, and settings timing. This site follows the selected release implementation and tests instead.
