Releases: nushell-prophet/numd
numd 0.3.0
Breaking Changes
- Simplified configuration API: Replaced
--config-path(YAML) with--evalflag that accepts inline Nushell code or sourced.nufiles# Before: numd run file.md --config-path config.yaml # After: numd run file.md --eval '$env.numd.table-width = 80' numd run file.md --eval (open -r numd_config.nu)
- Removed flags:
--result-md-path,--save-ansi,--no-backup,--no-save(simplified API) - Renamed test commands:
testing→test,testing-unit→test-unit,testing-integration→test-integration
New Features
- Reproducible output by default: Runs intermediate scripts with
nu -n(no config files) for consistent output across systems. Use--use-host-configto load host environment when needed - Git safety check: Errors on uncommitted changes before overwriting. Use
--ignore-git-checkto bypass - CI support: Added
--failflag totoolkit.nu testfor non-zero exit on test failures - Test update mode: Added
--updateflag to automatically stage changed integration test files - Plumbing commands: New low-level composable commands in
numd/plumbing.nu:parse-file,strip-outputs,execute-blocks,to-markdown,to-numd-script
- Command examples: Added
@exampleattributes to commands for better discoverability
Bug Fixes
- Fixed
clear-outputswithout--echocreating empty files - Fixed
$env.numdfields being overwritten instead of merged in config loading
Improvements
- Standardized terminology to "fence options" throughout codebase
- Reorganized module structure: moved
captureandparse-helpto separate files --echonow outputs only markdown without stats for cleaner piping- Added
pipe-tohelper for cleaner pipeline generation - Added unit tests for plumbing commands using nutest framework
CI/Infrastructure
- Added Windows testing to GitHub Actions
- Improved workflow with git diff reporting after integration tests
0.2.2
Removed > notation - New blank-line command grouping
The > prefix notation for REPL-style commands has been removed. Commands are now grouped by blank lines (double newlines):
Before (v0.1.21):
> ls | length
# => 42
> pwd
# => /home/userAfter (v0.2.0+):
ls | length
# => 42
pwd
# => /home/user- Each command group (separated by blank lines) is executed separately
- Output appears as # => prefixed lines after each group
- Plain # comments are preserved; only # => output lines are regenerated
New Features
- separate-block fence option: Output results in a separate code block instead of inline # => format
- --json flag for testing: nu toolkit.nu testing --json outputs machine-readable test results for CI integration
- Unit tests with nutest: New tests/test_commands.nu with 376 lines of unit tests covering internal parsing and transformation
- Type annotations: Added precise generic type parameters to core functions for better IDE support and documentation
Improvements
- Renamed internal commands for clarity:
- find-code-blocks → parse-markdown-to-blocks
- decortate-original-code-blocks → decorate-original-code-blocks
- modify-path → build-modified-path
- match-action → classify-block-action
- create-execution-code → generate-block-execution
- toggle-output-fences → convert-output-fences
- Refactored testing commands: Restructured into testing, testing-unit, and testing-integration subcommands
- Fixed keywords: Added source, overlay, alias to check-print-append keywords for proper output handling
- Deterministic example outputs: Fixed examples to avoid time-dependent outputs where possible
Documentation
- Added CLAUDE.md for Claude Code AI assistant integration
- Improved command descriptions and fixed spelling errors
- Updated README with new blank-line grouping format
CI/CD
- Added GitHub Actions workflows for Claude Code review (claude-code-review.yml, claude.yml)
Bug Fixes
- Fixed preservation of blank lines between command groups
- Fixed JSON output validity for testing commands
0.1.21
What's Changed
- use
indent-outputformatting by default, set default table width to 120 by @maxim-uvarov in #75 - add trailing new line after
# =>results by @maxim-uvarov in #76 - update to 0.106, run checks by @maxim-uvarov in #78
- Add frontmatter parsing and improve help formatting by @maxim-uvarov in #79
Full Changelog: 0.1.20...0.1.21
0.1.20
What's Changed
- format scripts with topiary, add kv for writing tests by @maxim-uvarov in #72
- hot fixes for 0.103, remove
parse-helpfrom readme as split list behaves differently now by @maxim-uvarov in #74
Full Changelog: 0.1.18...0.1.20
0.1.18
What's Changed
- Small fixes for parsing
astto decide ifprintcan be appended, cosmetic code changes by @maxim-uvarov in #59 - change
numd parse-helpformatting, small changes by @maxim-uvarov in #60 - 0.100.0 compliance by @maxim-uvarov in #62
- remove printing non-execution text blocks in the intermediate script (printing markdown verbatim) by @maxim-uvarov in #63
- refactor exports: move all submodules to
commands.nuto get rid ofmainby @maxim-uvarov in #64 - Fix windows problems caused by use of
to textby @maxim-uvarov in #66 - Hot fix for
std iter scanby @maxim-uvarov in #67 - embed
scanfromstd tier scan0.101, rename variables by @maxim-uvarov in #68 - Fix needed for nu 0.102 by @maxim-uvarov in #69
- fix for 0.102 and tests refactoring by @maxim-uvarov in #70
Full Changelog: 0.1.15...0.1.18
0.1.17
What's Changed
- Small fixes for parsing
astto decide ifprintcan be appended, cosmetic code changes by @maxim-uvarov in #59 - change
numd parse-helpformatting, small changes by @maxim-uvarov in #60 - 0.100.0 compliance by @maxim-uvarov in #62
- remove printing non-execution text blocks in the intermediate script (printing markdown verbatim) by @maxim-uvarov in #63
- refactor exports: move all submodules to
commands.nuto get rid ofmainby @maxim-uvarov in #64 - Fix windows problems caused by use of
to textby @maxim-uvarov in #66 - Hot fix for
std iter scanby @maxim-uvarov in #67 - embed
scanfromstd tier scan0.101, rename variables by @maxim-uvarov in #68 - compliance with 0.102
Full Changelog: 0.1.15...0.1.17
0.1.15
- Small fixes for parsing ast to decide if print can be appended, cosmetic code changes
Full Changelog: 0.1.13...0.1.15
0.1.13
What's Changed
- improve generation of intermed script, add docstring examples for commands by @maxim-uvarov in #53
- rename variables, commands and flags
- add support for loading config from external file (#31)
- update tests accordingly (#55)
Full Changelog: 0.1.12...0.1.13
0.1.12
What's Changed
- change to Unlicense, update
tools.nu, update examples by @maxim-uvarov in #40 - Made the paths in examples windows-compatible, renamed variables and commands, corrected typos, etc by @maxim-uvarov in #41
- Add the
development and testingchapter, update thecode-block-optionsdescriptions by @maxim-uvarov in #42 - use
numd parse-helpin README by @maxim-uvarov in #43 - Add the 'Styling outputs' chapter, remove obsolete
cdin the intermid script by @maxim-uvarov in #44 - add --print-block-results as they appear by @maxim-uvarov in #45
- add printing markdown text into intermid-script by @maxim-uvarov in #46
- add printing markdown text into intermid-script 2 #46 by @maxim-uvarov in #47
- update examples by @maxim-uvarov in #48
- Windows compatiblity: remove
--diff, fix (crlf). Also movedexamplestoz_examplesfolder by @maxim-uvarov in #50 - add
--strip-markdownto tools.nutestingby @maxim-uvarov in #51 - improve detection of where a command produces output, add docstring examples for internal commands
Full Changelog: 0.1.7...0.1.12
0.1.7
Previously, outputs of execution blocks without lines starting with the > symbol were placed into code blocks with the language identifier ```output-numd.
However, throughout the book, such outputs are usually placed after an empty line, the line with the Output: string, and another empty line following a code fence without a language identifier. ```
Now, numd supports this.
Also, there is a fix for reporting levenstein_distance stats (nushell/nushell#13155).
What's Changed
- add
--save-ansiformatted version, trim trailing spaces by @maxim-uvarov in #34 - add and update comments by @maxim-uvarov in #35
- add descriptions and rename variables using gpt, rearrange code by @maxim-uvarov in #36
- Update explanations in
numd_commands_explanations. by @maxim-uvarov in #37 - replace
output-numdwith conventionalOutput:\n\nby @maxim-uvarov in #38 - Fix the
levenstein_distancesstat reporting by @maxim-uvarov in #39
Full Changelog: 0.1.6...0.1.7