Release Notes for Blockpad 1.9.0
August 2026
Version 1.9.0 will be available on the beta channel soon.
Summary
- Added symbolic math support
- Added step-by-step notebooks
- Improvements to Mathcad import
- Exporting to Word, Excel, Latex, Markdown, CSV, and more
- New built-in functions
- Improved Find & Replace
- Math layout improvements and color coding
- Improvements to scripts and macros
- New welcome experience
- Other improvements
Symbolic math
Blockpad now has expansive symbolic math support through the bundled SymPy package. Symbolic math is available in solver sections as well as in several built-in functions.
Changes to solver sections:
- Solver sections use symbolic method by default for newly created solver sections. There is a new Solver Method property in the properties window with options Symbolic or Numerical. Solver sections created in past versions will remain set to Numerical unless you set them to Symbolic, so your existing files will calculate the same when opened in this new version.
- If there are less equations than variables, the solver section will provide solutions as functions for remaining unknown variables.
- If there are multiple solutions, each variable value will be an array with an item for each solution. Otherwise, each variable value will be the plain value for the single solution.
- Each solver section now has a Solutions property in its namespace to get an array of the solutions, with each variable value a property of the separate solution object.
- A solver section equation with simply the Solve(...) function can be used to specify settings in the solver section. For example, Solve("imaginary") allows imaginary roots. If x and y are both unknowns with only one equation, Solve(y) specifies to put result in terms of y instead of x. Solve(y, "imaginary") puts the two options together.
- If an equation with the Maximize(...) or Minimize(...) function is present, the solver section will run an optimization instead of equation solving.
- Inequalities can be provided, in addition to equations, to limit which roots are returned.
- ODEs or PDEs may be given using the Derivative function. Within a solver section, the Derivative function has a special behavior, where the second input may be given in the formula as a raw variable name. For example, Derivative(y, x) explicitly refers to dy/dx. Blockpad will also determine the independent variable of a derivative automatically, if possible, if you refer to Derivative(y). The result values for differential equations are always functions. For higher order derivatives, you can nest the Derivative function, such as Derivative(Derivative(y)) or Derivative(Derivative(y, x), x).
- For differential equations, you can specify initial conditions in their own equations. For example, y(0) = 1 or Derivative(y, x)(0) = 0. If you do not specify initial conditions, the result will include constants C1, C2, etc. that cannot be calculated.
Several new built-in math functions are added or improved with symbolic math features:
- Derivative function
- Integral function
- LaplaceTransform function
- InverseLaplaceTransform function
- FourierTransform function
- InverseFourierTransform function
- Solve function
- Simplify function
- Expand function
- Factor function
- Maximize function
- Minimize function
Step-by-step notebooks
Added Step-by-Step Notebook frame type. As of this version, a step-by-step notebook can be added through the Insert tool.
A Step-by-Step Notebook calculates from top to bottom (and for objects at the same vertical position, from left to right), as does a Step-by-Step Section. For textboxes within a Step-by-Step Notebook, formulas calculate from top to bottom within the textbox.
As with a Step-by-Step Section, a Step-by-Step Notebook can re-use variable names, overwrite values as it goes, etc.
This creates an option to create calculation notebooks more similar to other programs like Mathcad or SMath, except with many more possibilities for customizing content.
File importing
Made numerous improvements to Mathcad import. Notable changes include:
- Imported names now match originals exactly, using Latex-format Blockpad names when necessary
- Import uses step-by-step notebooks by default, preserving the layout of the imported file.
- The amount of equation features imported is significantly increased.
- The amount of formatting imported is significantly increased.
File exporting
Added new Export As tool, allowing export to several file types:
- Word
- Excel
- Markdown
- Latex
- Images (to export a separate PNG image for each page)
- PDF (same as Export As PDF tool, renamed in this version from Save to PDF)
- HTML
- Tabular Data (for CSV)
Scripts and macros
Script and macro improvements:
- Implemented new indexer setters, where indexer parameters can be arrays, with target values able to be a function (with inputs matching named indexer parameters), an array (with dimensions matching arrays given as indexer parameters), or constant (applied equally to all items). In math layout for indexer setters with array parameters assigned to a function, the function inputs are hidden.
- It is now formally invalid to have an assignment outside a regular statement, a for loop condition, or the right hand side of a lambda operator. Invalid assignments will throw an error
- In scripts, attempting to assign an error value (by same condition as revised IsError function) will fail to make assignment and will throw an error.
- Added functions Append, AppendItems, AppendRows, AppendColumns, Insert, InsertRows, InsertColumns, Remove, RemoveItems, RemoveRow, RemoveColumn, and RemoveWhere to arrays in scripts. These are available for arrays created with square brackets and with Copy functions.
- When building an array with indexer setters with a single input, the indexers now default to building a vertical array.
- Fixed issues with try-finally and try-catch-finally blocks in inline math programs, and clarified that statements in finally blocks do not directly affect program result value.
- It is now possible to mix implicit variables and explicitly defined variables in inline math programs.
Improvements to script frames, macros, and action buttons:
- Added Python and Python Macro types for script frames.
- Added support for inline script frames in documents.
- Added full support for buttons that can be assigned a click action.
- Made macros (including Python macros) available as callable functions. They are callable from non-formula contexts, like action buttons and console commands.
- A gray triangle is now shown at the corner of embedded script frames that require a pending formula recalculation.
Find and replace tool
Improved Find tool and added Replace tool, for a complete Find & Replace feature:
- When running Edit > Find (or Ctrl+F) or Edit > Replace (or Ctrl+H), any selected text in the document is used as the default find text.
- You can seamlessly toggle between find or replace mode either with the Replace check box or with the Find or Replace tools (or Ctrl+F or Ctrl+H).
- When typing in the find textbox, the tool now searches immediately on each key stroke, with separate new buttons to navigate to the Next or Previous item (or F3 or Shift+F3 respectively).
- There is now a new content type option, to choose whether to find and replace in Any Content, Text, Formula, Name, or Value.
- There is a new find option Match Case.
- There is a new find option Whole, to only find whole paragraph text, cell value, formula, etc.
- When in replace mode, the Replace and Replace All tools appear and are able to replace clearly while showing which items in the list have been replaced so far.
- The logic behind the find tool searching through files is improved.
- The overall user interface and keyboard behavior of the Find tool has been improved.
Math layout
Math layout improvements:
- Reorganized math layout options user interface.
- Tweaked math layout for If and Ifs functions. If any of the cases has multiple lines, it will now show vertically stacked if cases, same as programmatic if statements.
- Added Unit Division math layout option.
- Added If Functions math layout option, with options to show If function inline as a function, or to specify other options different from if statements.
- Added Min Array Rows and Min Array Columns math layout options.
- Added special math layout for Try function and try catch blocks.
- Improved math layout for derivative function.
- When a function is the result of an equation, the inputs are now shown along with the body of the function.
- Fixed issues with comma as decimal symbol and other value format options in math layout.
- Improved handling of italics, where text is given extra room at right to fit italics now for all italics cases.
- Improved consistency of spaces between numbers and units. By default, there is now consistently a space between a number and unit, and there is no space between a currency symbol and number.
- Added Show Value Color Coding option (under View menu) to show color coding for numbers, units, variable references, and other values.
- Improved consistency of spacing in array layouts.
- Improved application of value formats to items in arrays and key-value objects.
- Implemented key-value object layouts with curly brackets.
- Improved parentheses layout when content is very small.
- Fixed issue with too much spacing around some elements with larger font size.
- Latex names in value cells and fields are now shown properly when Show Name is on.
- Added math layout support in value labels and dimension labels.
Added style rule types to style individual parts of equations. These styles allow text formatting for individual parts, and they are applied in equations as well as value cells and fields. The new types are:
- Number
- Unit Reference
- Array Reference
- Function Reference
- Variable Reference
New functions
Added and improved other built-in functions:
- Added Try function.
- Added ArrayContains function.
- Added Heaviside function.
- Added Xlookup function overload with ifNotFound input.
- Added MathLayout function, for generating dynamic math layouts and fine-tuning math layout options.
- Added GetCurrentNode and GetCurrentTopLevelFrame functions to get information about the object whose formula is evaluating (in Library.Docs)
- IsError function now returns true for infinity (division by 0), unit errors, and other number errors.
- Added Psychro functions.
Welcome experience
New welcome experience and activation options:
- Added option to activate with tokens offline (in progress)
- Added options to start free trial, buy a license, or activate an education license from the welcome screen (in progress)
Other improvements
Other improvements:
- Added Hide and Show toggle context menu items for sections.
- The Equation to Text tool is now the Equation To tool, with options to convert to Dynamic Equation, Static Equation, Field, and Text.
- Added Result Units tool, to quickly change the result units of an equation.
- Significant performance improvements to large notebooks
- Added Only Print Left Pages property for spreadsheets and notebooks
- Fixed issues with try catch blocks in visual formula editor.
- Added built-in Table Display block.
- Improved color contrast between foregrounds and backgrounds in dark mode content.
- Improved stability of Python integration.
- Formula input tool now autocorrects math expressions into a function for functions Derivative, Integral, Simplify, Factor, and Expand. For example, if you enter Derivative(x^2), it will autocorrect to Derivative(x => x^2).
- The console now keeps focus after each command, so you can easily enter multiple commands in a row without refocusing.
- When there is a table in view but not selected, the left ruler is now sized larger so that the size does not jump when the selection changes.
- Implemented navigation (through navigation tree and links) in notebooks.
- When navigating to a heading in the Navigation Tree, the editor now scrolls to the heading with the heading at the top.
- Added symbol button to toolbar for top-level script frames.
- Implemented up and down arrows for navigating within textboxes.
- Fixed issue with using CSVs and TSVs as external references.
- Optimized performance in long documents so that typing and other changes will take appear more quickly.
- Fixed issue, when pasting image into a notebook, document, or spreadsheet, with the image sometimes not being inserted at the chosen point.
- Changed automatic naming when copying and pasting, where equations with a single-character name will get automatic names based on the original name.
- Fixed issue with file lock error sometimes happening when copying and pasting.
- When inputting a formula, autocorrect is now more flexible. For example,
Derivative(Derivative(x^4now autocorrects toDerivative(Derivative(x => x^4)).
Page modified 2026-7-28