Release notes with context, design decisions, how-to guides, and the occasional argument about how .NET should treat data. Written by the person who builds them.
A layout decides how a notebook is arranged and rendered, and it is an extension like any other: five samples on NuGet turn one file into a graph, a deck, a spreadsheet, a dashboard, and an image editor.
I parse the Palmer Penguins CSV once in C#, group it in Python, aggregate it in SQL, and render it as a typed DataFrame table in PowerShell, all in one notebook with no export step anywhere in it.
I built a full Motus suite against two public pages, gated it on accessibility and Core Web Vitals, recorded a trace, a HAR and a video, then split it across four agents and merged the results back into one report.
Most of it is search and replace, so here are the steps in the order you would do them, the four places the APIs really differ, and the parts that do not come across at all.
Change github.com to www.versonotebooks.com/share/github in a notebook's address and the file reads as a page with its saved outputs, with nothing uploaded, nothing executed, and no account to create.
A rendered widget keeps talking to the interpreter that drew it, a widget's value can become a shared variable any kernel reads, extensions can add panels beside the notebook, and the interface now speaks five languages.
Verso runs your Python cells in a separate process against the CPython already on your machine, which is what makes an interrupt work, a crash survivable, a restart real, and your virtual environment's packages simply there.
Point Motus at a browser that is already running, treat a cross-origin frame like any other frame, split a suite across agents, and tell a flaky test from a broken one.
One package, a few lines of setup, and your own application gets multi-language execution, a shared variable store, an extension host, and a layout manager.
Verso 1.1.1 lets a package replace the notebook surface itself, puts a NuGet marketplace inside the Extensions panel, and ships three showcase layouts built on the same API you get.
Register motus mcp with an MCP client, snapshot a page, act on the elements the snapshot names, and use the parts a browser-only server does not have: WCAG audits, Core Web Vitals, traces, and generated page objects.
Motus checks the page your test is already driving against nine WCAG rules and collects Core Web Vitals while the run happens, so both become ordinary assertions and ordinary CI gates instead of a second tool.
Motus registers its own selector strategies, audit rules and hooks through the same IPluginContext you get, which is a constraint on us rather than a feature for you.
Every kernel in a Verso notebook reads and writes the same variable store, so a value you set in C# is already there in Python, SQL and JavaScript. The interesting part is what happens to that value when it leaves the process.
Motus is a new MIT-licensed browser automation and testing framework for .NET, and your test talks to Chrome, Edge or Firefox directly: no Node.js sidecar in between and no driver binary to install.
Verso's C# kernel, dark theme and dashboard layout are extensions written on the same public interfaces your package would use. Today's release adds a Perl kernel sample, which is a cheaper way to test that claim than another manifesto.
The first release of Verso: a headless .NET notebook engine, C#, F# and SQL kernels that share one variable store, a file format you can read in a diff, and ten interfaces every built-in already uses.
I pointed a .NET console app at one Parquet object in Ookla's public S3 bucket, landed 3,551,267 measurement tiles in a .dfc file, and started asking it questions.
1.0.11 fixes GroupBy and Pivot giving wrong answers on DFC files with more than one segment, where each segment numbered its strings from 1 and the reader looked every ID up in the first segment's table.
1.0.10 reworks the way VelocityDataBlock filters, sorts and groups, and it removes the lazy result API, so a chain that used to end in AsResult() ends in Execute() instead.
NOAA puts every daily observation in the Global Historical Climatology Network on a public S3 bucket, so I pulled one station out of it, 234,470 rows across 246 years, into a .dfc file and started asking it questions, with every command and the output it gave back.
CSV, JSON, Excel, Parquet, ADO.NET, S3 and web pages all come back as the same DataBlock through the same two methods, and with 1.0.9 all seven connector packages are on NuGet.
A .NET 8 console pipeline you can run in ten minutes, from a messy CSV of orders to a Parquet file of revenue by region, with a look at the data after every step.
Register a DataBlock under a name and Datafication.Server.Core serves it over HTTP, with one route that takes filters, computed columns, grouping, sorting and paging in a single JSON body.