Features
More stable ports for Http.Endpoint
Adding Http.Endpoint nodes to a project implicitly starts an HTTP server which is assigned an available port by the Midio platform. An unfortunate consequence of the way we assigned ports was that refreshing the editor would result in your HTTP server getting assigned a new port. With this release, we are now being much a bit smarter when assigning ports by reusing the same port when reloading a project. The port will eventually be released to the pool of available ports when you close the editor for a while, but this change should at least make the port stable while you're working.
User defined events
Midio now supports user defined events, which means that you can wrap other events into reusable event nodes. We anticipate this being a very useful feature, allowing our users much more flexibility when creating reusable packages. Unfortunately, we still miss some features to enable a good way of making these events parameterizable, but this is something we hope to address very soon.
PDF functionality
There is now support for converting a buffer to PDF document. The document can be viewed in the editor and a function to extract all text has been added.
Changes
Misc
- shift+scroll on Mac will horizontally pan screen.
- Right-clicking on empty space in modules overview will show context menu.
Bug fixes
- Fixes bug where Shift+Enter in input text field did not work in WebKit browsers
- A bunch of bugs related to the value visualizer showing up on connections between nodes has been fixed.
- Fixed bug where text boxes within nodes were focused and selected while the node was being dragged in Safari.
- A bunch of fixes to the markdown editor in comment nodes.
- Fixed a bug which caused images not to show as 'null' in value visualizers.
- Data editor text fields not properly supports new lines
Std lib
Additions
- Python.Eval - Evaluates the given python code with the provided arguments
- Json.GenerateJsonSchema - Generates a json schema for the given node based on its type signature.
- Reflection.Name - Returns the Name of the given input nodes declaration.
- Reflection.QualifiedName - Returns the Qualified Name of the given input nodes declaration, which includes its namespaces.
- Query.FindWherePathEquals - Which finds the first item in a list where a given path matches a given value. This function expects a list of objects, each of which the path is used to index into.
- Http.UrlDecodeComponent - Which only performs simple percent-decodes
- Std.Join - Lets one join with a child process.
- Std.JoinAll - Lets one join with a fanned out set of child processes
- Some experimental web scraping utilities
- Scraping.Http.ParseDocument
- Scraping.Http.ParseFragment
- Scraping.Http.SelectAll
- Markdown.Parse - Parses a markdown string into a list of text events
- Markdown.ToMessageList - Parses a markdown string into a list of objects
of the form
{ role: string, content: string }
, where all H1 titles are put in therole
field, and its content in thecontent
field. This makes it easier to construct message lists for LLM APIs, which follow this convention.
Renames
- Renamed Std.IterList to Std.FanOutList
- Renamed Std.IterRange to Std.FanOutRange
Changes
- Json.Parsed - Now returns null instead of crashing the thread if it doesn't receive String input.