Skip to content

v0.3.0

Choose a tag to compare

@jeryldev jeryldev released this 21 May 23:03
· 52 commits to main since this release

Audit-pass cleanup release. 12 findings addressed across init.lua, keymaps.lua, cell_engine.lua, commands/create.lua, notebook/jupytext.lua, ui.lua, and tests/integration_spec.lua. All 9 closed issues (#1–#9) verified intact. 266 tests pass.

Added

  • molten.virt_text_max_lines setup option: The virtual-text output cap (introduced in v0.2.0) is now user-configurable. Default remains 500. Example: require("pyworks").setup({ molten = { virt_text_max_lines = 1000 } })
  • vim.validate parameter checks on public cell_engine API (run_cell, configure, count_cells, get_cell_positions) per CLAUDE.md mandate
  • PyworksRunCell / PyworksRunCellAdvance added to the integration test expected-commands list

Fixed

  • molten_virt_text_max_lines was set in two places — de-duplicated so both call sites read from a single config source
  • Empty notify prefix ("" .. json_err) in :PyworksNewPythonNotebook removed
  • Filename validation gaps in :PyworksNewPythonNotebook: directory traversal (..) and Windows-reserved backslash (\) now consolidated into validate_filename
  • processing_buffers stuck on error in jupytext reader: read_notebook body wrapped in pcall so the per-buffer flag is always cleared
  • Dead search_flags variable in cell_engine.prev_cell removed

Changed

  • Hot-path concat_virt_text: switched from string-builder loop to table.concat. Called every 150 ms during cell-completion polling — O(n²) → O(n) on large output
  • <leader>jv and <leader>jg use API calls instead of normal!: visual-select-current-cell and go-to-cell-N now work from terminal mode. <leader>jv delegates boundary detection to cell_engine.find_cell_boundaries
  • Raw vim.notify(..., ERROR) in commands/create.lua replaced with notifications.notify_error for a consistent error pathway
  • create_floating_window width is now adaptive: clamped to min(opts.width, columns - 4) so :PyworksHelp remains visible on narrow terminals

Removed

  • Dead M.health in init.lua: :checkhealth pyworks always routes through lua/pyworks/health.lua; duplicate was unused

Full Changelog: v0.2.0...v0.3.0