Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: tareqimbasher/NetPad

NetPad v0.12.0

23 Apr 18:15
@github-actions github-actions

Choose a tag to compare

If you like NetPad, please star the repo ⭐ and consider sponsoring FOSS!

This release brings performance improvements, a major CLI update, new features for managing data
connections, and a large number of bug fixes and stability improvements.

🎯 A special thanks to @antonkesy and @wuuer for their contributions in this release.

What's New πŸš€

Database Server Connections

You can now add a database server to the connections list and select one or more databases from that
server. All databases under a server share the same connection and scaffolding options, so you only
configure things once. Server connections are supported for SQL Server, PostgreSQL, MySQL, and
MariaDB.

Script Performance Improvements

Script startup and re-run speed was improved:

  • Compilation results are cached so unchanged re-runs skip compilation entirely.
  • Nuget dependency graphs and script dependencies are cached so resolution only occurs when needed.
  • Framework assembly dependency cache is pre-warmed on a background thread at startup.
  • Other similar optimizations for quicker re-runs.

.NET SDK Detection Improvements

NetPad now discovers all valid .NET installations on your system (user settings, environment
variables, user-level, system-level, PATH) and aggregates SDKs and runtimes from each. Previously,
only the first valid installation was used. When running a script, the correct dotnet executable
is resolved based on which installation contains the target framework's SDK.

User Interface

  • Statusbar background color now changes to indicate script status (running, error, etc.), with
    unified status colors throughout the app.
  • A context menu was added to the scripts explorer sidebar.
  • Added separators between editor tabs and added tree nesting indicators in the explorer pane for
    better visual hierarchy.
  • When text is selected in the editor, the statusbar now shows the number of selected chars (or
    lines).
  • Style run/stop buttons with colored tints and flatten save/properties to icon buttons.
  • Change open folder icons in scripts explorer to blue to indicate expanded state.
  • Increase global border-radius for a softer look across all components.
  • Better background colors for input controls.
  • Add toolbar dividers to group action icons where needed.
  • Reduced prominence of toolbar labels (SDK, Kind, etc.) for a cleaner look.
  • Add more contrast to pane toolbar background.
  • Switch package reference buttons to outline style for less visual noise.
  • Window size and position are now remembered across Tauri app restarts (#370).

Note

The Styling page of the wiki is updated with the latest styles if you want to override anything.

OmniSharp / IntelliSense

OmniSharp stability was improved:

  • Requests to OmniSharp are queued and wait for OmniSharp to finish its internal initialization to
    prevent broken language server features when typing in scripts before OmniSharp is finished
    loading.
  • OmniSharp now detects process crashes and auto-restarts.

NetPad CLI (npad) v0.2.0

The CLI tool received a major update with many new commands and usability improvements. See
the CLI wiki for more info and usage details.

New commands:

  • new: Create .netpad scripts or plain .cs files with options for kind, SDK, connection,
    and more
  • show: Inspect a script's metadata and source code (renamed from cat, BREAKING CHANGE)
  • logs show/tail/rm/clear: View, follow, and manage log files
  • settings show/edit: View settings as a table or JSON, or open in default editor

New features:

  • run is now the default command: npad myscript works without typing run
  • Stdin piping: echo 'Console.WriteLine("hi")' | npad
  • --eval (renamed from --code): Run inline C# from the command line, BREAKING CHANGE
  • --format json: NDJSON output for piping to jq and other tools
  • --kind option on run: Override a script's kind at runtime
  • Interactive script picker: Prompts for selection when multiple scripts match
  • Script exit codes: Propagates meaningful exit codes (0=success, 1=runtime failure,
    2=compilation failure, 130=cancelled)
  • Short aliases: -e, -s, -c, -O, -b, -f, -m, -v, -k and command aliases (
    ls, log)
  • Various TUI improvements and fixes

Install or update via:

dotnet tool install -g netpad.cli
dotnet tool update -g netpad.cli

Coming Soon: NetPad MCP Server

A Model Context Protocol (MCP) server for NetPad is in the works and nearly complete. It will let AI
assistants (like Claude Code) and other MCP clients to create, run, and manage scripts directly
through NetPad. Stay tuned!

Build & Release

  • Added Linux ARM64 and Windows ARM64 builds for both Electron and Tauri.
  • Support for alpha/beta pre-release version names in app update checks.
  • Unified release workflow: a single release.yml replaces the old pack-electron.yml and
    pack-tauri.yml with support for alpha/beta pre-releases.

Fixes πŸ›

  • Fix The filename, directory name, or volume label syntax is incorrect error (#390). Thanks to
    @wuuer.
  • Fix NuGet dependency resolution issues including native library resolution (#350).
  • Fix script counts in the explorer sidebar.
  • Fix using scale for precision in database structure column details.
  • Fix OmniSharp bugs related to changing a script's SDK and finding installed SDK locations.
  • Fix script-host not loading the correct SDK in release builds.
  • Fix multiple NetPad instances sharing temp directories causing IOExceptions: temp directories are
    now scoped per process.
  • Fix .NET backend not stopping gracefully on Windows when using the Tauri app.
  • Fix memory leaks and race conditions in several areas.
  • Fix duplicate script save overwriting existing scripts in web shell.
  • Fix unrelated script runs to serialize against each other.

Support ❀️

If you find NetPad useful, please consider sponsoring the project to help keep it free and
open-source! And if you haven't already, a ⭐ on the repo is always appreciated, thank you!

A special thanks to all my sponsors. Your support is greatly appreciated and helps keep this
project growing!

New Contributors

Full Changelog: v0.11.0...v0.12.0

Downloads

NetPad comes in 2 variants:

  • Electron: The current stable package. Installers start with netpad
  • Native (vNext): Uses a native desktop shell instead of Electron, resulting in a lighter package that uses fewer system resources. Installers start with netpad_vnext

Both variants have the same features and are equally maintained. See wiki for more info.

Windows

File Variant Arch
netpad-0.12.0-win-x64.exe Electron x64
netpad-0.12.0-win-x64.zip Electron x64
netpad-0.12.0-win-arm64.exe Electron ARM64
netpad-0.12.0-win-arm64.zip Electron ARM64
netpad_vnext-0.12.0-win-x64.exe Native (vNext) x64
netpad_vnext-0.12.0-win-x64.msi Native (vNext) x64
netpad_vnext-0.12.0-win-arm64.exe Native (vNext) ARM64
netpad_vnext-0.12.0-win-arm64.msi Native (vNext) ARM64

macOS

File Variant Arch
netpad-0.12.0-mac-x64.zip Electron x64
netpad-0.12.0-mac-arm64.zip Electron ARM64
netpad_vnext-0.12.0-mac-x64.app.tar.gz Native (vNext) x64
netpad_vnext-0.12.0-mac-x64.dmg Native (vNext) x64
netpad_vnext-0.12.0-mac-aarch64.app.tar.gz Native (vNext) ARM64
netpad_vnext-0.12.0-mac-aarch64.dmg Native (vNext) ARM64

Linux

File Variant Arch
netpad-0.12.0-linux-amd64.deb Electron x64
netpad-0.12.0-linux-amd64.snap Electron x64
[netpad-0.12.0-linux-x64.pa...
Read more

Contributors

wuuer and antonkesy
Assets 28
mimbasher and tareqimbasher reacted with hooray emoji mimbasher, NLababidi, and farinheit reacted with heart emoji CAPCHIK, Dreamescaper, mimbasher, and tareqimbasher reacted with rocket emoji mimbasher reacted with eyes emoji
6 people reacted

NetPad v0.12.0-beta.2

01 Apr 18:04
@github-actions github-actions

Choose a tag to compare

NetPad v0.12.0-beta.2 Pre-release
Pre-release

What's Changed

  • Fix native library resolution for scripts run in NetPad GUI. Fixes (#350)
  • Fix stylelinting errors and some clippy warnings
  • Format Rust code (#412)
  • Fix typos (#414)

Downloads

NetPad comes in 2 variants:

  • Electron: The current stable package. Installers start with netpad
  • Native (vNext): Uses a native desktop shell instead of Electron, resulting in a lighter package that uses fewer system resources. Installers start with netpad_vnext

Both variants have the same features and are equally maintained. See wiki for more info.

Windows

File Variant Arch
netpad-0.12.0-beta.2-win-x64.exe Electron x64
netpad-0.12.0-beta.2-win-x64.zip Electron x64
netpad-0.12.0-beta.2-win-arm64.exe Electron ARM64
netpad-0.12.0-beta.2-win-arm64.zip Electron ARM64
netpad_vnext-0.12.0-beta.2-win-x64.exe Native (vNext) x64
netpad_vnext-0.12.0-beta.2-win-x64.msi Native (vNext) x64
netpad_vnext-0.12.0-beta.2-win-arm64.exe Native (vNext) ARM64
netpad_vnext-0.12.0-beta.2-win-arm64.msi Native (vNext) ARM64

macOS

File Variant Arch
netpad-0.12.0-beta.2-mac-x64.zip Electron x64
netpad-0.12.0-beta.2-mac-arm64.zip Electron ARM64
netpad_vnext-0.12.0-beta.2-mac-x64.app.tar.gz Native (vNext) x64
netpad_vnext-0.12.0-beta.2-mac-x64.dmg Native (vNext) x64
netpad_vnext-0.12.0-beta.2-mac-aarch64.app.tar.gz Native (vNext) ARM64
netpad_vnext-0.12.0-beta.2-mac-aarch64.dmg Native (vNext) ARM64

Linux

File Variant Arch
netpad-0.12.0-beta.2-linux-amd64.deb Electron x64
netpad-0.12.0-beta.2-linux-amd64.snap Electron x64
netpad-0.12.0-beta.2-linux-x64.pacman Electron x64
netpad-0.12.0-beta.2-linux-x64.zip Electron x64
netpad-0.12.0-beta.2-linux-x86_64.AppImage Electron x64
netpad-0.12.0-beta.2-linux-x86_64.rpm Electron x64
netpad-0.12.0-beta.2-linux-arm64.AppImage Electron ARM64
netpad-0.12.0-beta.2-linux-arm64.zip Electron ARM64
netpad_vnext-0.12.0-beta.2-1-linux-x86_64.rpm Native (vNext) x64
netpad_vnext-0.12.0-beta.2-linux-amd64.deb Native (vNext) x64
netpad_vnext-0.12.0-beta.2-1-linux-aarch64.rpm Native (vNext) ARM64
netpad_vnext-0.12.0-beta.2-linux-arm64.deb Native (vNext) ARM64
Loading

NetPad v0.12.0-beta.1

29 Mar 21:00
@github-actions github-actions

Choose a tag to compare

NetPad v0.12.0-beta.1 Pre-release
Pre-release

What's Changed

  • Add ability to add database servers to connections
  • Improve script startup performance with compilation and deployment caching
  • Improve .NET SDK detection by aggregating .NET SDKs from all installation directories (#410)
  • Improve nuget dependency resolution and fix nuget issues (#409)
  • Statusbar background changes with script status and UI enhancements
  • Add new CLI features and improvements (#413) (new beta release for CLI is now available on nuget, update using dotnet tool update)
  • Make Linux and Windows ARM builds available
  • Stop .NET backend gracefully on windows when using Tauri app and cleanup stale temp dirs on startup
  • Fix bug with script-host not loading the correct SDK in release builds
  • Gate OmniSharp communication behind project load and fix crash handler cleanup
  • Fix omnisharp issues (#416)
  • Scope OmniSharp, ClientServer, and TypedDataContext temp directories per process
  • Update README and summary of new release drafts
  • Remember window size and position across Tauri app restarts
  • Minor fixes
  • Fix some memory leaks and release.yml workflow on macOS
  • Add some frontend unit tests
  • Handle alpha/beta in version names in app update check
  • Fix omnisharp bugs related to changing a scripts sdk and finding installed sdk locations
  • Add justfile for dev QoL and update CONTRIBUTING
  • Add status spinner to CLI during script build and execution
  • Fix SDK/runtime root directory attribution on systems with multiple .NET installations
  • Unify release workflows and add ARM64 support
  • A group of minor fixes
  • Fix error: The filename,directory name,or volume label syntax is incorrect.
  • Update docs

Downloads

NetPad comes in 2 variants:

  • Electron: The current stable package. Installers start with netpad
  • Native (vNext): Uses a native desktop shell instead of Electron, resulting in a lighter package that uses fewer system resources. Installers start with netpad_vnext

Both variants have the same features and are equally maintained. See wiki for more info.

Windows

File Variant Arch
netpad-0.12.0-beta.1-win-x64.exe Electron x64
netpad-0.12.0-beta.1-win-x64.zip Electron x64
netpad-0.12.0-beta.1-win-arm64.exe Electron ARM64
netpad-0.12.0-beta.1-win-arm64.zip Electron ARM64
netpad_vnext-0.12.0-beta.1-win-x64.exe Native (vNext) x64
netpad_vnext-0.12.0-beta.1-win-x64.msi Native (vNext) x64
netpad_vnext-0.12.0-beta.1-win-arm64.exe Native (vNext) ARM64
netpad_vnext-0.12.0-beta.1-win-arm64.msi Native (vNext) ARM64

macOS

File Variant Arch
netpad-0.12.0-beta.1-mac-x64.zip Electron x64
netpad-0.12.0-beta.1-mac-arm64.zip Electron ARM64
netpad_vnext-0.12.0-beta.1-mac-x64.app.tar.gz Native (vNext) x64
netpad_vnext-0.12.0-beta.1-mac-x64.dmg Native (vNext) x64
netpad_vnext-0.12.0-beta.1-mac-aarch64.app.tar.gz Native (vNext) ARM64
netpad_vnext-0.12.0-beta.1-mac-aarch64.dmg Native (vNext) ARM64

Linux

File Variant Arch
netpad-0.12.0-beta.1-linux-amd64.deb Electron x64
netpad-0.12.0-beta.1-linux-amd64.snap Electron x64
netpad-0.12.0-beta.1-linux-x64.pacman Electron x64
netpad-0.12.0-beta.1-linux-x64.zip Electron x64
netpad-0.12.0-beta.1-linux-x86_64.AppImage Electron x64
netpad-0.12.0-beta.1-linux-x86_64.rpm Electron x64
netpad-0.12.0-beta.1-linux-arm64.AppImage Electron ARM64
netpad-0.12.0-beta.1-linux-arm64.zip Electron ARM64
netpad_vnext-0.12.0-beta.1-1-linux-x86_64.rpm Native (vNext) x64
netpad_vnext-0.12.0-beta.1-linux-amd64.deb Native (vNext) x64
netpad_vnext-0.12.0-beta.1-1-linux-aarch64.rpm Native (vNext) ARM64
netpad_vnext-0.12.0-beta.1-linux-arm64.deb Native (vNext) ARM64
Loading
Lure5134 reacted with thumbs up emoji
1 person reacted

NetPad v0.11.0

01 Dec 17:41
@github-actions github-actions

Choose a tag to compare

If you like NetPad, please star the repo 🌟 and consider sponsoring FOSS!

This release adds .NET 10 support, some new features, and a new CLI tool! All feedback is welcome.

🎯 A special thanks to Andrea Bondanini (@sbundaz) for contributing a number of new features in this release.

What's New πŸš€

.NET 10 Support

.NET 10 SDK is now supported. New scripts will automatically target .NET 10 if you have it installed.

Oracle Data Connections

You can now create Oracle database connections. Thanks to Andrea Bondanini (@sbundaz) for the contribution.

IL Viewer

NetPad now has an IL Viewer. You can find it by opening the Code pane located at the bottom left, and then swithcing from Syntax Viewer to IL Viewer.

Thanks to Andrea Bondanini (@sbundaz) for helping with this.

User Secrets Manager

A User Secrets management pane was added to the bottom pane ribbon. Secrets can be accessed in your code using Util.Secrets:

string value = Util.Secrets.Get("secretkey");

You can also list/add/update/remove secrets directly from code using these methods on Util.Secrets:

void Save("secretkey", "value");
UserSecret[] List();
UserSecret? GetSecret(string key);
bool Delete(string key);
void Delete(Func<UserSecret, bool> filter);

Wiki page

NetPad CLI (npad)

npad is a new CLI tool that brings NetPad to the terminal. You can use it to execute scripts, standalone C# files, and even code you type on the command prompt directly.

It can be installed as a dotnet tool:

dotnet tool install -g netpad.cli

See the wiki page for usage and examples.

The following is planned for npad:

  1. Faster script execution. The first time you run a script it is built and cached. Subsequent runs are much faster. The goal is to speed up that initial run.
  2. Ability to pass arguments to your scripts.
  3. Build a script into an executable.

npad will have a different release cycle than NetPad (GUI), and will see some frequent updates in the near future with CLI-specific features and enhancements.

Tip

Join the Discord server to collaborate, ask questions and get the latest announcements!

Other Updates

  • New Data Protection methods were added to Util that you can use to protect/unprotect data. See Util.Protect() and Util.Unprotect() methods and thier overrides.
  • UI Updates:
    • A small refresh to tabs and panes.
    • App status messages in the statusbar can be dismissed by right-clicking the message.
    • Better UI for errors in the output pane for better readability.
    • Changed the formatting of how long a script took to run on the bottom left.
    • Swap the order of the Settings and Pin Window icons in the titlebar.
  • Update OmniSharp to v1.39.15.

Fixes πŸ›

  • Fix OmniSharp doesn't perform 2nd Quick Fix suggestion (#365).
  • Fix bug that caused script output to no show after manually stopping a script.
  • Fix Optimize dropdown not show actual selected value.

Installers

NetPad has 2 release channels:

  • Stable: The Electron version of NetPad. Installers that start with netpad
  • vNext: Uses a native Rust-based shell. Installers that start with netpad_vnext

Both channels have the same feature set and are equally maintained. The native vNext version is lighter on system resources and planned to become the main package. At which point, the Electron version might be deprecated.

See wiki for more info.

Support ❀️

If you're enjoying NetPad and would like to support open-source, please consider sponsoring the project, it really
helps! Also don't forget to star the repo if you haven't already, thank you!

A special thanks to all my sponsors. Your support is greatly appreciated and helps keep this project growing!

mattjcowan lpreiner ChristopherHaws OddSkancke

New Contributors

Full Changelog: v0.10.0...v0.11.0

Contributors

sbundaz
Loading
stevenya97, lpreiner, Neth01, mimbasher, RoyTinker, HaaaaE, and Oliv12 reacted with thumbs up emoji sjsepan3, stevenya97, thanhkhac, and mimbasher reacted with laugh emoji thanhkhac, dunds-com, CAPCHIK, ChristopherHaws, mimbasher, tareqimbasher, and PerplexDaniel reacted with hooray emoji mimbasher and whyleee reacted with heart emoji mimbasher reacted with rocket emoji mimbasher reacted with eyes emoji
15 people reacted

NetPad v0.10.0

14 Aug 23:17
@github-actions github-actions

Choose a tag to compare

If you like NetPad, please star the repo 🌟 and consider sponsoring FOSS!

🎯 A special thanks to @jesterret and @Jogai for contributing a number of new features and fixes in this release.

Note

NetPad has a new Wiki: https://tareqimbasher.github.io/NetPad which also includes some early technical documentation. The current GitHub wiki is out of date and will be removed soon.

What's New πŸš€

Export Data Connections

You can now scaffold a database connection and export it to a C# project by right-clicking a connection and selecting "Scaffold to C# Project". This can be a great way to jump start a new app, or build an assembly to use in your own applications.

Vim Keybindings (experimental)

The editor now has vim support (#238). It can be enabled by:

  • Going to Settings > Editor
  • Keyboard shortcut (Alt + V). Keybinding can be changed in Settings.

This functionality is mainly powered by monaco-vim which uses CodeMirror's implementation behind the scenes.

Future Plans
I plan to add the following in future releases:

  • Command history (pressing up/down arrows for command history).
  • More keybindings and commands that target the application interface and not just text editing; example: selecting a connection.

Feedback Requested
This is an experimental feature. I'd love to hear your feedback and comments on issues or ways to make it better. The monaco-vim library isn't very well maintained unfortunately but I wanted to try it out before rolling my own.

User Interface

  • When NetPad opens, it now restores all open scripts from the last session. Previously, only unsaved scripts were restored (#336).
  • Scripts in the Explorer pane are sorted case-insensitive (#344).
  • New spinner icon for when a script is running.
  • New alert dialogs.
  • Native select file dialogs instead of HTML file inputs.

Scripts

  • Source Generator support (#233). Thanks to @jesterret
  • Support for .NET framework version preprocessor symbols. You can now use preprocessor symbols like NET8_0_OR_GREATER in your scripts. More info. Thanks to @jesterret
  • Dump() now hides indexer properties (#349).
  • New async versions of Dump() (#326). Thanks to @jesterret

App Updates

  • NetPad is updated to .NET 9.
  • Electron updated to v36 by switching from Electron.NET (still on Electron v23) to ElectronSharp (a fork of Electron.NET) which brings a number of security fixes and performance improvements. Special thanks to @Jogai for putting alot of work into making this happen.
  • Node.js updated to v22.
  • Code:
    • Improved thread-safety.
    • Fixed some memory leaks.
    • Performance improvements.
    • Code cleanup, fixed some warnings and more code documentation.

Fixes πŸ›

  • Fixed OmniSharp not starting, and Intellisense not working, (most commonly on macOS).
  • Fix Dump() for properties on derived types (#323). Thanks to @jesterret
  • Fix inability to browse & select an assembly to reference in vNext (#331).
  • Fixed OmniSharp code diagnostics not resetting after user restarts OmniSharp server from Command Palette > Developer: Restart OmniSharp Server.
  • Fixed Electron selecting the wrong button when Esc is pressed on some dialogs.

Next Minor Version (v0.10.1)

v0.10.1 is in the works and will include .NET 10 Preview SDK support as well as fixes for some bugs that I didn't get a chance to address in this release.

Installers

NetPad has 2 release channels:

  • Stable: The Electron version of NetPad. Installers that start with netpad
  • vNext: Uses a native Rust-based shell. Installers that start with netpad_vnext

Both channels have the same feature set and are equally maintained. The native vNext version is lighter on system resources and planned to become the main package. At which point, the Electron version might be deprecated.

See wiki for more info.

Important

Some vNext installers had wrong names when this release was first published. This has since been fixed. All vNext installers were removed and re-uploaded (as of Aug 16 - 05:30 UTC), and thus have new sha256 hashes.

Support ❀️

If you're enjoying NetPad and would like to support open-source, please consider sponsoring the project, it really
helps! Also don't forget to star the repo if you haven't already, thank you!

A special thanks to all my sponsors. Your support is greatly appreciated and helps keep this project growing!

mattjcowan lpreiner ChristopherHaws OddSkancke SimonNyvall

New Contributors

Full Changelog: v0.9.1...v0.10.0

Contributors

Jogai and jesterret
Loading
stevenya97, tomap, sjsepan3, tareqimbasher, mimbasher, phito, armendu, and ugurdal reacted with thumbs up emoji sjsepan3, agustinbishel, and mimbasher reacted with laugh emoji mimbasher reacted with hooray emoji mdonatas and mimbasher reacted with heart emoji CAPCHIK, Hyrius, tareqimbasher, and mimbasher reacted with rocket emoji ipanin and mimbasher reacted with eyes emoji
13 people reacted

NetPad v0.9.1

28 May 00:03
@github-actions github-actions

Choose a tag to compare

Fixes πŸ›

  • Fixes an error when running .NET 9 scripts targeting PostgreSQL and MySQL connections.
  • Failure to load database structure tree in sidebar in some cases.
  • Added missing .deb package .

See Releases for features added in v0.9.0.

Installers

NetPad comes in 2 flavors:

  • Electron: Installers that start with netpad
  • Native Shell: Installers that start with netpad_vnext

Both flavors have the same feature set. The native vNext version is lighter on system resources and will eventually become the main package. At which point, the Electron version will be deprecated.

Full Changelog: v0.9.0...v0.9.1

Loading
sjsepan3 and mimbasher reacted with thumbs up emoji mimbasher reacted with laugh emoji mimbasher and RThomasHyde reacted with hooray emoji sdcb, mimbasher, and tareqimbasher reacted with heart emoji mimbasher reacted with rocket emoji mimbasher reacted with eyes emoji
5 people reacted

NetPad v0.9.0

26 May 16:39
@github-actions github-actions

Choose a tag to compare

Its been a while since the last release; war affects us all unfortunately.

Until now, packaging binaries for every supported platform was done manually. It was slow, error-prone and just no fun at all. We now have automated CD pipelines that makes it much easier. The plan is to have a more frequent release cycle. There are a lot of new improvements comingβ€”stay tuned.

If you like NetPad, please star the repo 🌟!

What's New πŸš€

Database Connection Query Speed

A main focus of this release was improving the user experience when running scripts with database connections (#196).
Prior to this release, scripts targeting a connection were slow to start, mainly due to Entity Framework's long startup
time. A new execution model was introduced so that this cost is only paid on the first run of a script, later runs will
be much faster even if your code changes.

How script execution works in NetPad

To improve performance and enable advanced features, NetPad uses a background process called script-host. This process is launched once, per script, and reused across multiple script runs, reducing startup time after the first execution.

The script-host also enables features like in-memory caching (introduced in this release) and lazy-loading of navigation properties in Dump output (coming in the next version).

The script-host process is automatically restarted in certain situations, including:

  1. When you manually stop a running script.
  2. When the .NET SDK version or selected database connection for a script changes.
  3. When dependencies are modifiedβ€”for example, after re-scaffolding a database connection.

In these cases, the next script run may take longer to start, but subsequent runs will be much faster.

Utility Helper

A handy new Util class is now available (#166) to enhance your scripting experience with built-in helpers for
dumping data, caching, environment access, and more.

See the Util wiki page.

Caching

The Util class has an in-memory Cache property that can be used to store data and then access it in later script
runs. Example:

var albums = Util.Cache.GetOrAdd("albums", () => Albums.ToArray());
var albums = await Util.Cache.GetOrAddAsync("albums", () => await Albums.ToArrayAsync());

MemCache Pane

A new pane called MemCache will now appear on the right side of the interface, displaying the values you've cached
in code. Clicking an item in this pane will dump it to the output pane. Hover over an item to see more info.

User Interface

Various UI improvements for better usability, clearer visuals, and more intuitive interactions across the app.

  • The Save icon now shows an indicator when a script has unsaved changes, and is disabled when not needed.
  • The Namespaces pane textbox has improved styling and a new icon.
  • The selected editor tab is now more visually distinct.
  • Icon colors have been subtly refined for better consistency.
  • Pane dividers now show clearer drag handles on hover.
  • The Scripts Explorer displays the number of scripts in each folder.
  • You can now switch the layout direction of the Explorer pane.
  • Status messages in the status bar can be dismissed with a right-click.
  • Minor styling update to the "References" link in the editor.
  • Two new menu items have been added to improve navigation and accessibility:
    • Tools β€” A new top-level menu with some utilities and tools.
    • Help > Wiki β€” A new submenu item that opens NetPad's wiki pages for quick access to documentation.

Status Visibility

Script status is now easier to see at a glance. Editor tabs display a colored line that indicates when a script is
running or stopping, helping you quickly spot active scripts across tabs.

I'm experimenting with this subtle visual cue and would love your feedbackβ€”would you prefer something more prominent,
like a colored status bar? Let me know what feels right to you.

The status bar at the bottom of the window also provides clearer, more informative messages about script activity.
Additionally, the timer on the far left has been improved: it now more accurately reflects the actual execution time
of your script, excluding setup overhead that was previously included.

Others

  • Improved reliability of the "Stop Script" mechanism.
  • Wrapped long documentation text in IntelliSense popups for better readability.
  • New installations now default to colorful icons (Settings > General > Icon Theme).
  • Updated and expanded several Wiki pages.

Fixes πŸ›

  • Fixes #280: Disappearing output when switching tabs.
  • Fixes #287: Private NuGet sources breaking script execution.
  • Fixes #296: Issue loading referenced assemblies.
  • Fixes #301: User input textbox blocking output.
  • Fixes for NetPad vNext not running on some setups.
  • Reduce the instances where OmniSharp fails to provide syntax highlighting and intellisense.
  • Fix syntax highlighting styles of dumped code strings.
  • Fix some zoom menu items.
  • Captures current code when user clicks Run to prevent further code edits from affecting current run.
  • Other minor fixes and optimizations.

Installers

NetPad comes in 2 flavors:

  • Electron: Installers that start with netpad
  • Native Shell: Installers that start with netpad_vnext

Both flavors have the same feature set. The native vNext version is lighter on system resources and will eventually become the main package. At which point, the Electron version will be deprecated.

Support ❀️

If you're enjoying NetPad and would like to support open-source, please consider sponsoring the project, it really
helps! Also don't forget to star the repo if you haven't already, thank you!

A special thanks to all my sponsors. Your support is greatly appreciated and helps keep this project growing!

mattjcowan lpreiner ChristopherHaws OddSkancke SimonNyvall

Full Changelog: v0.8.0...v0.9.0

Loading
sjsepan3, CAPCHIK, mimbasher, and Karlosbubi reacted with thumbs up emoji mimbasher reacted with laugh emoji CAPCHIK, Int32Overflow, and mimbasher reacted with hooray emoji mimbasher and meixger reacted with heart emoji mimbasher reacted with rocket emoji mimbasher reacted with eyes emoji
6 people reacted

NetPad v0.8.0

01 Oct 23:49
@tareqimbasher tareqimbasher

Choose a tag to compare

If you like NetPad, please star the repo 🌟!

What's New πŸš€

New Database Connection Providers

You can now add MySQL and MariaDB connections in NetPad. Special thanks to @SimonNyvall!

A Native Shell (vNext Preview)

This update introduces a new native shell built using Tauri, a Rust-based framework, that greatly reduces memory usage, startup time, and app size!

The new shell substitutes the Electron.js shell NetPad has been using so far. You will find new installers available that use the new native shell with names starting with netpad_vnext. Electron shell installers are still available, and will continue being distributed until things are stable with vNext. Both versions of NetPad can be installed and run side-by-side. It would be really helpful if you could please provide your feedback in an issue (if you're having trouble), in this discussion or on Discord.

If you'd like to read more about this change, take a look at this issue. Here are some stats:

App Size

Metric Electron (MB) Tauri (MB) % Reduction
Shell Size 251 13.6 94.58
.NET App Size 192 103 46.35
Installer Size (.deb) 125 43 65.60
Installed Size (.deb) 443 111 74.94

Memory Usage

Metric Electron (MB) Tauri (MB) % Reduction
Shell 230 34 85.22
.NET App 110 110 --
OmniSharp 104 104 --
Total 444 248 44.14

Known Limitations with vNext

  • If you have your NetPad settings configured to use the native titlebar instead of the integrated one, menu auto-hide does not work yet (not an issue on macOS).
  • The main window does not currently remember its previous position and size when you close and restart NetPad.
  • The Electron version of NetPad will show you a desktop notification when a script finishes execution and NetPad is in the background. vNext currently does not.
  • Some Linux installers are not yet available for vNext, namely: pacman, flatpak and snap
  • If you're on Linux and when you launch the app you get an empty window, try disabling DMABUF: export WEBKIT_DISABLE_DMABUF_RENDERER=1. This is an upstream bug with NVIDIA proprietary drivers on some installations. If that doesn't work, try one of these instead:
    • WEBKIT_DISABLE_COMPOSITING_MODE=1
    • __NV_PRIME_RENDER_OFFLOAD=1

Fixes for some or all of the above will be included in the next release.

Others

  • Removed .NET 6 dependency: having a .NET 6 runtime or SDK installed is no longer required.
  • If you want to use .NET 9 in your scripts you will need .NET 9 Preview 3 SDK or later installed.
  • Improvements to data connection scaffolding.
  • New scripts will use the latest stable .NET SDK. Previously the latest SDK was auto-selected regardless if it was stable or preview.
  • New script names will use the next highest available number. Example: if you have "Script 1" and "Script 3" open, creating a new script will give it the name "Script 4". Before it was named "Script 2" which was confusing.
  • Update OmniSharp Server to v1.39.12.
  • More details are shown about errors that occur during scaffolding database connections.
  • Minor styling changes:
    • The Production marker in the connections list is right aligned and is now just the letter P.
    • Fixed weird line at the top of the app logo.

Fixes πŸ›

  • Fixed Zoom menu items and their corresponding keyboard shortcuts
  • Fixed an issue running scripts targeting SQLite connections on macOS
  • Fixed writing char values to the console (#225)
  • Fixed incorrect latest version label in NuGet search window (#227)
  • Fixed namespace collisions when referencing some NuGet packages (#246)
  • Fixed NuGet search not working when user has an unreachable feed configued in nuget.config (#261)

Coming Soon 🏁

We're currently working on fulfilling requests from the issue tracker as well as a few new features:

  • A new CLI tool that you can use to run C# scripts from the command line.
  • Faster database queries.

Support ❀️

If you're enjoying NetPad and would like to support open-source, please consider sponsoring the project, it really helps! Also don't forget to star the repo if you haven't already, thank you!

A special thanks to my current sponsors. Your support is greatly appreciated and helps keep this project growing!

pelsedyr ChristopherHaws jdonohoo lpreiner mattjcowan

Full Changelog: v0.7.2...v0.8.0

Contributors

SimonNyvall
Loading
sjsepan3, ris-work, mimbasher, hamedwiz, and JadynWong reacted with thumbs up emoji mimbasher reacted with laugh emoji JGMelon22, SimonNyvall, mimbasher, and hamedwiz reacted with hooray emoji ChristopherHaws, JGMelon22, salesHgabriel, armendu, mimbasher, lpreiner, hamedwiz, tareqimbasher, FrancescoBonizzi, akirayamamoto, and Sholtee reacted with heart emoji JGMelon22, CAPCHIK, mimbasher, and hamedwiz reacted with rocket emoji mimbasher reacted with eyes emoji
16 people reacted

NetPad v0.7.2

01 Jul 22:15
@tareqimbasher tareqimbasher

Choose a tag to compare

If you like NetPad, please star the repo 🌟!

What's New πŸš€

Syntax Tree Visualizer

A new "Code" pane was added with a Syntax Tree visualizer that updates in real-time as you type.

  • Hovering over a node in the syntax tree will highlight that text range in the editor.
  • Single-click a node to bring that code into view (if it isn't already).
  • Double-click a node to select that text range in the editor. Focus switches to the editor when you do this so you can start typing right away.
  • The right side shows the code each node in the tree represents, making it easier to quickly locate the code want you want to inspect.
  • You can show the line/char span numbers each node represents by clicking the corresponding button in the Code pane toolbar.

image

Others

  • Icon buttons styling improved and unified
  • You can hide any pane with Shift + ESC keybinding
  • Output pane
    • Empty collections are rendered a bit differently and other minor formatting changes to output
    • Moved next/previous output nav controls to the toolbar in Results
    • Added next/previous nav controls and clear button to the SQL toolbar
    • You can switch to the Results and SQL tabs by using ALT + 1 and ALT + 2 respectively

Maintenance

The majority of the effort spent since the last release has been on restructuring the solution, simplifying and making it easier to maintain, review and contribute to. Another round is coming up soon, mainly on the client side, but the majority of it is completed. If you're interested in more info see #211.

I plan to add documentation soon that explains the high level concepts and structure of the solution to help facilitate review and contribution.

If anyone has any thoughts or discussion points I'd love to hear them. Feel free to open a discussion/issue on the topic or hit me up on Discord.

Fixes πŸ›

  • Fixed a bug causing intellisense and other OmniSharp features to stop working if .NET 7 is not installed (#208, #214, #220)
  • Fixed incorrect max-length input validation when changing max collection length to serialize in settings (#209)
  • Fixed an error during HTML serialization (#217)
  • Fixed bugs in Console.ReadLine() functionality including #218
  • Fixed script not running when run path contains spaces (#221)

Support ❀️

If you're enjoying NetPad, please consider sponsoring it, it really helps! Also don't forget to start the repo if you haven't already, thank you!

A special thanks to my current sponsors. Your support is greatly appreciated and helps keep this project growing!

pelsedyr smashedtoatoms ChristopherHaws jdonohoo lpreiner mattjcowan

Full Changelog: v0.7.1...v0.7.2

Loading
pinkli, AlexKeene, Auto72, victorcomposes, vchirikov, CAPCHIK, billchang09, YaMoef, sjsepan3, fansor, and 3 more reacted with thumbs up emoji mimbasher and dknippers reacted with hooray emoji JGMelon22, victorcomposes, billchang09, mimbasher, oddbear, soykanozcelik, and rahadur reacted with heart emoji sdcb, WeihanLi, morti12, mikegoatly, and mimbasher reacted with rocket emoji
22 people reacted

NetPad v0.7.1

20 May 19:27
@tareqimbasher tareqimbasher

Choose a tag to compare

Preview 7.1

If you like NetPad, please star the repo 🌟!

What's New πŸš€

.NET 9 Preview

Added support for .NET 9 Preview and Entity Framework Core 9 Preview 3.

Data Connections

Create Similar Connection

A new option now exists in the data connection context-menu to duplicate a connection.

Preview

image

Entity Framework Compiled Models

Entity Framework takes time to initialize on first use. The larger the data model, the more time it needs. For large models (100s or 1000s of entities and relationships) script startup can be sped up using a compiled model. An option to use a compiled model for a data connection now exists in Connection: Properties > Scaffolding.

Note that using compiled models is not effective for smaller models, and comes with some limitations. It is recommended to only use this option if you need it.

Editor Styling

The editor has some pre-defined themes you can now pick from in Settings > Editor. These themes come from the monaco-themes project.

Example, the GitHub Dark theme:

image

You can also tweak the current editor theme using the themeCustomizations property in the Monaco options editor.

Example:

"themeCustomizations": {
 // General editor colors
 "colors": {
 "editor.background": "#282a36"
 },
 // Semantic highlighting token styles
 "rules": [
 {
 "token": "interface",
 "foreground": "50fa7b",
 "fontStyle": "underline"
 }
 ]
}

See IColors and ITokenThemeRule for the definition of the colors and rules properties respectively.

See wiki for more info.

App Styling

The new Settings > Styles was added as a way to define custom styles that apply to the whole application.

For example to increase the font size of output:

.dump-container {
 font-size: 1.25rem;
}

This feature also works great with the ability to specify CSS classes you want a dumped value to have, introduced in v0.7.0:

myObj.Dump(css: "important");
.important {
 background-color: salmon;
}

You can also override CSS variables on the built-in theme-netpad-dark and theme-netpad-light themes. Here's an example customizing the dark theme with the Dracula theme color palette:

.theme-netpad-dark {
 --drac-light: #343746;
 --drac-dark: #22222c;
 --text-color: #F8F8F2;
 --background-color: var(--drac-dark);
 --list-background: var(--drac-light);
 --form-control-background-color: #343746;
 --active-color: #dbb5fa;
 --script-toolbar-background: #242632;
 --pane-ribbon-background: var(--drac-light);
 --pane-background: var(--drac-dark);
 --pane-toolbar-background: var(--drac-dark);
 --dialog-background: var(--drac-dark);
 --tab-background: #333541;
 --tab-active-background: #242632;
 --tab-active-text-color: #fffff;
 --scrollbar-thumb-color: #777777;
 --splitter-color: #2b2d39;
}

image

See wiki for more info.

NuGet

NetPad will recognize additional NuGet sources added to your Nuget.Config file (#119). Thank you @jsamse for that contribution.

There is no UI to manage NuGet sources in NetPad so far so you'll have to add them manually. More info

Media File Sizing

Media files will now be rendered in their original size, but you can also specify size using the DisplayWidth and DisplayHeight properties:

new Image("/path/to/img.png")
{
 DisplayWidth = "128px",
 DisplayHeight = "128px"
}.Dump();

Or using extension methods:

// Individually
Image.FromPath("/path/to/img.png")
 .WithDisplayWidth("100%");
 .WithDisplayHeight("400px");
// Together
Image.FromPath(imageFile).WithDisplaySize("100%", "400px");

See the wiki for more info.

Others

  • An Apply button was added to the Settings window to apply changes without closing the window. Particularly useful when testing new styles!
  • When a connection error occurs, clicking the error in the connection sidebar copies it to your clipboard (#171)
  • Better Settings > General > Appearance layout
  • Upgraded OmniSharp server to v1.39.11
  • Connections are now ordered alphabetically in the Explorer pane

Fixes πŸ›

  • Fixed OmniSharp doc text showing up garbled for some non-English locales (#129).
  • Fixed NetPad becoming unusable when clicking external links (#192).
  • Fixed Select All (CTRL+A) in output pane selecting text outside its container (#178).
  • Fixed ASP.NET output not showing on Windows (#188).
  • Fixed an issue when removing a NuGet package from a script.
  • Fixed duplicate keyboard shortcuts showing up in Settings > Keyboard Shortcuts.
  • Fixed issue where CTRL+F in output pane would also open Find Text box in editor.

Full Changelog: v0.7.0...v0.7.1

Contributors

jsamse
Loading
SommerEngineering, Auto72, ObaidaAlhaasan, mimbasher, aussieweever, Ryoumiya, and victorcomposes reacted with thumbs up emoji mimbasher reacted with laugh emoji CAPCHIK, YaMoef, SommerEngineering, ObaidaAlhaasan, tareqimbasher, mimbasher, and victorcomposes reacted with hooray emoji SommerEngineering, ObaidaAlhaasan, mimbasher, and manojbaishya reacted with heart emoji SommerEngineering, ObaidaAlhaasan, mimbasher, Ryoumiya, and victorcomposes reacted with rocket emoji
11 people reacted
Previous 1 3
Previous

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /