·
1 commit
to main
since this release
Netch 2 — Update Log
An Aerotion Production
First release of Netch 2
What's New
- Brand new interpreter built from scratch — faster, cleaner, more reliable
- New file extension:
.ntch(Netch 1's.netchfiles still work separately — we didn't break your old stuff) - Full rewrite of the window/UI system using tkinter
New UI Widgets
window()— open a window manuallylabel()— display text with custom color and sizebutton()— buttons with custom colorstextbox()— text input fieldpasswordbox()— password input (hidden text)image()— display images (.png, .gif)progressbar()— progress bar withsetprogress()checkbox()— tick box withgetchecked()radiobutton()— radio button groups withgetradio()dropdown()— dropdown menu withgetdropdown()slider()— slider withgetslider()listbox()— scrollable list withgetlist()tabcontrol()+addtab()— tabbed panels
New Features
- Sound support —
sound.play("file.wav")andsound.stop() - Auto-updater — checks GitHub every run and tells you when a new version is out
- Netch 1 detector — if you accidentally run a Netch 1 file, it kindly explains exactly what to change line by line
- Beginner-friendly errors — every error now shows the exact line, what went wrong, and how to fix it
- File downloads —
download.file("url", "savepath") - More string utilities —
upper(),lower(),length(),contains() time.now()— get current date and time- Loop safety cap — infinite while loops are stopped after 100,000 iterations with a helpful warning
Core Language
- Variables, math, print
if/elsewhileloopsrepeatloopsfunction+run()- File ops:
openfile(),copyfile(),deletefile() random(),ask(),number()
Netch 2 is built by Aerotion Productions
Community: reddit.com/r/netchcoding2
GitHub: github.com/netchcodelang/netchcodinglang
v2.1.0 — Dark Mode, Networking & BAT Support
Dark Mode
dark:true/dark:false— one line to make your whole app dark- All widgets automatically switch to dark colors (buttons, textboxes, checkboxes, sliders, etc)
Rounded Buttons
cr.button("label")— rounded corner button (cr = corner rounded)- Works with action too:
cr.button("label") action ...
Custom Colors Everywhere
label("text", "#ff0000")— colored textbutton("label", "#ff6600", "white")— custom button colorstextbox("name")automatically matches your theme
display.webpage
display.webpage("https://example.com")— show a webpage in your app- Falls back to opening in the default browser if embedded mode isn't available
Networking
send.post("url", "key", "value")— send data to any server (form POST)send.json("url", "key", "value")— send JSON data to any serverget.request("url")— fetch data from any URLconnect.server("ws://url")— connect to a WebSocket serversend.message("text")— send a message to connected serversend.textbox("boxname", "serverurl", "fieldname")— send a textbox's content directly to a server in one line
BAT / Shell Integration
run.bat("command or path/to/file.bat")— run any .bat file or Windows command from your .ntch scriptrun.shell("command")— run any shell command- Results saved to
bat.outputandshell.outputvariables automatically
Fixes
- Placeholder text support in textbox:
textbox("name", 30, "Type here...") - All widgets now respect dark mode colors properly
v2.2.0 — Package Manager & Custom Window Titles
Netch Package Manager
- New file:
netch_pkg.py— the official Netch package manager python netch_pkg.py install <name>— download and install a packagepython netch_pkg.py remove <name>— uninstall a packagepython netch_pkg.py list— see installed packagespython netch_pkg.py info <name>— info about a package- Packages are stored in
~/Netch2/packages/ - Packages are
.ntchpkgfiles hosted on the Netch GitHub
importpkg
importpkg customwindowtitle— load an installed package at the top of your script- Must come right after
<using.ntch>
Custom Window Title Bars
- New package:
customwindowtitle - Rename any PNG to
yourname.nframetchpng - Install:
python netch_pkg.py install customwindowtitle - Use in script:
importpkg customwindowtitle windowtitle("yourimage.nframetchpng") windowtitle("yourimage.nframetchpng", "App Title") - Removes the default OS title bar and replaces it with your PNG
- Built-in drag support — users can drag the window by the custom title bar
- Built-in X close button in the top-right corner
v2.3.0 — The Language Update
New CLI Commands
netch list pkgs all— fetches and lists every package available on GitHubnetch list pkgs— lists every package installed on your machine
Package Creator
- After creating a package, it now tells you to post on r/netchcoding2 to get it added as an official Netch package
30+ New Language Features
Math:
math.abs(x)— absolute valuemath.round(x, decimals)— round a numbermath.floor(x)— round downmath.ceil(x)— round upmath.sqrt(x)— square rootmath.power(x, y)— x to the power of ymath.max(a, b, c...)— largest valuemath.min(a, b, c...)— smallest valuemath.clamp(val, min, max)— keep a number between two values
Strings:
str.replace("text", "old", "new")— replace in a stringstr.split("text", "separator")— split into a liststr.trim("text")— remove whitespacestr.starts("text", "prefix")— check startstr.ends("text", "suffix")— check endstr.repeat("text", 3)— repeat a stringstr.index("text", "find")— find positionstr.reverse("text")— reverse a stringstr.count("text", "find")— count occurrencesstr.format("Hello {}", "world")— format with values
Lists:
list.new(a, b, c)— create a listlist.add("mylist", value)— add to a listlist.get("mylist", index)— get item by indexlist.length("mylist")— get list sizelist.remove("mylist", index)— remove itemlist.contains("mylist", value)— check if item existslist.join("mylist", ", ")— join to string
Loops:
for x from 1 to 10— loop with a counter variableforeach item in mylist— loop over every item in a list
File Read/Write:
file.read("path")— read a file as textfile.write("path", "content")— write to a filefile.append("path", "content")— add a line to a filefile.exists("path")— check if file existsfile.rename("old", "new")— rename a filefile.size("path")— get file size in bytes
Dialogs:
dialog.info("title", "message")— info popupdialog.error("title", "message")— error popupdialog.warn("title", "message")— warning popupdialog.ask("title", "question")— yes/no popup → true/falsedialog.input("title", "prompt")— text input popupdialog.file("title")— file picker popupdialog.folder("title")— folder picker popupdialog.save("title")— save file popup
Clipboard:
clipboard.copy("text")— copy to clipboardclipboard.paste()— paste from clipboard
System:
sys.env("VARIABLE")— get environment variablesys.exit()— close the appsys.platform— get OS namesys.username— get current usernamesys.homedir— get home folder pathsys.cwd— get current working directorysys.desktop— get Desktop path
Date & Time:
date.today— today's datedate.year/date.month/date.day— date partstime.sleep(seconds)— pause the scripttime.stamp— Unix timestamp
Window Extras:
window.center— center the window on screenwindow.minimize— minimize the windowwindow.maximize— maximize the windowwindow.icon("path.ico")— set window iconwindow.opacity(0.9)— set window transparency (0.0–1.0)window.resizable(true/false)— allow or lock resizingwindow.always.top(true)— keep window on topwindow.fullscreen(true)— go fullscreen
UI Extras:
separator— horizontal divider linespacer(20)— blank vertical spaceheading("Big Text")— big bold labellink("Click here", "https://...")— clickable hyperlinkcolorpicker()— opens a color picker → returns hex colorset.font("Arial", 14)— change the app fontclear.window— remove all widgets from the window
Network & Data:
url.open("https://...")— open a URL in the browserjson.parse("...")— parse JSON textjson.make("key", "value", ...)— create JSON text
Type Utils:
typeof(value)— returns "text", "number", "bool", "list"tonumber(value)— convert to numbertotext(value)— convert to textisnumber(value)— check if it's a numberisempty(value)— check if value is empty/blank
Netch 2 is built by Aerotion Productions
Community: reddit.com/r/netchcoding2
GitHub: github.com/netchcodelang/netchcodinglang