Troubleshooting
Use the symptom headings below to recover the current stable release.
macOS says Molt is damaged or cannot be opened
Section titled “macOS says Molt is damaged or cannot be opened”The release is not Apple-notarized. Confirm that the application came from the official Molt release, then clear quarantine metadata:
xattr -cr /Applications/Molt.appOpen Molt again.
Molt is running but no window is available
Section titled “Molt is running but no window is available”Molt is configured without a Dock icon, and this release does not create the tray/menu-bar toggle described by older design documents. If you closed the main window and cannot recover it through macOS window switching:
- Quit the Molt process.
- Relaunch
/Applications/Molt.app.
Avoid File → Close Window when you intend to keep the app available.
A Python warning appears at the top of the app
Section titled “A Python warning appears at the top of the app”Molt could not execute the configured interpreter with --version during startup.
- Open File → Settings….
- Enter a valid absolute path or PATH-resolvable name.
- Save.
- Quit and relaunch Molt.
Verify the same executable in Terminal:
"/absolute/path/to/python" --versionThe warning is captured at app startup and is not recalculated merely by saving settings. Its backend error text may mention the legacy ~/.config/molt/config.toml path; the released macOS runtime actually uses ~/Library/Application Support/molt/config.toml.
A package cannot be imported
Section titled “A package cannot be imported”Molt uses the interpreter selected when the app launched. Install the package into that exact interpreter:
"/absolute/path/to/python" -m pip install package-nameThen restart the tab. If you changed the interpreter path, relaunch Molt first.
Run does nothing
Section titled “Run does nothing”A cell containing only whitespace is intentionally a no-op. Add code and run again.
For a nonempty cell, check:
- The tab has not been stopped.
- The configured interpreter still exists.
- The app was relaunched after an interpreter change.
- The kernel process was not terminated by earlier code.
Select Restart and try a minimal cell:
1 + 12The tab says stopped or reports that the kernel is not running
Section titled “The tab says stopped or reports that the kernel is not running”Select Restart. Stop creates a stopped sentinel and normal execution does not replace it automatically.
A cell remains running or interruption breaks later runs
Section titled “A cell remains running or interruption breaks later runs”Select the cell’s square interrupt button once and wait for an error or process termination. Restart only if the toolbar reports stopped or error afterward.
The release sends SIGINT and force-kills the process after two seconds only when
the same execution is still busy. A normally handled KeyboardInterrupt leaves the
kernel available.
input() raises EOFError
Section titled “input() raises EOFError”Interactive standard input is not supported. Cell execution receives an empty stdin stream so it cannot consume Molt’s JSON protocol. Replace prompts with values defined directly in the cell or loaded from a file.
For example, replace:
name = input("Name: ")with:
name = "Beatrice"exit() or sys.exit() reports an error
Section titled “exit() or sys.exit() reports an error”The kernel server reports SystemExit as a cell error and keeps the process alive.
You can continue executing cells without restarting.
Output from a prior launch is missing
Section titled “Output from a prior launch is missing”This is expected. Molt persists source and cell structure only. Outputs, execution labels, and Python state are rebuilt each launch.
Rerun the cells required to recreate the result.
Clear removed important cells
Section titled “Clear removed important cells”Clear has no confirmation and autosave can persist the empty replacement tab. Quit Molt before making more edits and restore notebooks.json from a backup. See Manage saved work.
Settings appear to revert
Section titled “Settings appear to revert”The native-effects toggle previews immediately, but it is persisted only when you select Save. Interpreter changes also require a full relaunch.
The app uses four tabs despite a different tab_count
Section titled “The app uses four tabs despite a different tab_count”The frontend is fixed to four tabs in this release. Restore tab_count = 4; other values are parsed but ignored by the user interface.
The README and app disagree
Section titled “The README and app disagree”Use this documentation for v0.2.7. The source repository retains older Git history
with descriptions of menu-bar behavior, ephemeral cells, theme selection,
configuration paths, settings timing, and keyboard shortcuts that do not match the
release implementation.
See Current limitations for the consolidated compatibility list.
