Changes since version 1:

From build 359:
Make LDTC copy BIZR, BIZG, and BIZS's wavelength too
Sanitize the Lua API
This has the potential to break scripts; please be on the lookout for such breakage and report it

From build 358:
Fix signs loading in the wrong place in really old saves
Restore old SOAP foam behaviour and make it work with nonstandard gravity
Add more characters to the font
Add liquid resist RSST and solid resist RSSS
Make TESC create LIGH with same deco color
Allow setting ETRD min and max distance with tmp and tmp2

From build 357:
Add beforesimdraw and aftersimdraw events
Sample properties when shift is held
Implement stamp renaming
Clear stamp browser selection when page contents change
Fix some http API problems
Add stack trace to bluescreen on some systems
Add platform clipboard option to settings
Happy New Year!

From build 356:
Fix some pasted particles not getting cut off at the edges of the simulation
Fix pasting sometimes getting interrupted by the particle limit
Mark saves as being from the next version in dev builds
Complain when pasting save data with missing elements
Add includePressure parameter to sim.loadStamp
Add sim.listStamps
Fix Textbox width limiting content length
Add link to the registration form to LoginView
Retire tpt.beginGetScript in favour of tpt.installScriptManager
Most weird mirrors now work as they did prior to the many PHOT refraction fixes

From build 355:
Fix some elements, mostly energy particles, not being able to go through some others
Fix line debug tool showing up when placing stamps
Fix extremely rare crashes caused by complicated energy particle bombs
Some native clipboard support for some platforms; you can now copy and paste between windows

From build 354:
Fix the casing of the new upstream tpt.version keys
Use a proper ProgressBar in UpdateActivity
List element IDs that don't have an identifier associated in a save
Enable basic rendering of custom elements in secondary Renderers

From build 353:
Snapshot and build numbers have been merged, Snapshot 262 is followed by Snapshot 353
Fix prop tool not remembering settings in some cases
Fix spurious timeout errors from some callbacks
Fix guess best scale prompt showing up even when it guesses the default
Add surface normal debug tool
Expose debug constants to lua
Auto-focus the input field in the tag list
Complain about missing custom elements when opening online saves

From build 262:
Make save history icon more visible
Fix crash when passing bad coordinates to sim.clearRect
Fix the Maximized property of windows shortcuts not being respected
Fix input method candidates being aligned wrong in some cases
Fix occasional crashes upon opening settings
Fix sim.partNeighbors table being 0-indexed
Center some category icons
Change sim.walls to use real wall identifiers, and also have reverse lookup
Add blurry scaling option
Add Ctrl+E shortcut to cycle through edge modes
Add F11 shortcut to toggle fullscreen; the setting is not saved across runs though

From build 261:
Fix custom can_move settings being reset after using tpt.el
Sample "into" the PROP tool when it is active
Add version info to bluescreen
Change some details of how HTTP is done
Make Lua hook timeout configurable

From build 260:
Lua dialogues do not block execution anymore, breaking a few existing scripts
This will be fixed by the next stable version, no bug reports about this are necessary
Fix crash when exiting the game completely while a Lua dialogue is on screen
Fix crash when changing tpt.brushID from Lua
Fix crash when failing to change the favourite status of a save
Fix crash when attempting to change pages in an empty stamp browser
Fix crash when specifying too big an interval for math.random
Fix FUSE not burning as fiercely as meant to
Fix local save browser sometimes failing to load saves
Fix black screen while changing renderer options
Fix EMBR and other similar elements producing black spots
Fix rendering of fire effects when their intensity is too high
Make PROP tool less annoying to use by preventing exit until all settings is valid
Make find mode work with the PROP tool
Add tpt.version.vcstag to make it easier to identify builds when reporting bugs
Add support for running TPT in a browser, see our Discord server for details
Kill stickmen immediately if their health goes below zero
Update streamline description so that it's more helpful
Enter stamp placement mode when drag-and-dropping a stamp
Work around more input method bug on Windows, may fix Hangul input for some people

From build 259:
Fix crash when overwriting a local save
Fix sim.neighbours yielding the center particle
Fix crash if a save thumbnail is missing from the server

From build 258:
Avoid Year 2038 problem with save creation dates
Make Grave (the key under Esc) exiting the console optional
Rearrange settings view slightly
Fix crash if an avatar is missing from the server
Fix votes not making it to the server in some cases (don't worry, very obvious when it happens)
Fix very early crash in on certain platforms if an element menu is scrolled too far right
Fix logouts not actually destroying sessions

From build 257:
Add hflip and rotation parameters to sim.loadStamp
Enable out of bounds pasting
Fix random particles disappearing when pasting
Fix pastes not being centred on the cursor
Fix crash on exit when multiple windows are open
Prevent almost all HTTP requests from blocking

From build 256:
Fix more particles being copied than asked for

From build 255:
Fix many-headed stickmen
Approximate save previews with thumbnails if they are available
Fix vote bars in previews touching the enclosing rectangles
Request UTF-8 code page at startup
Fix paste previews being positioned incorrectly
Fix more reflection issues
Fix some air simulation asymmetries

From build 254:
Fix stamps being impossible to delete
Fix custom elements disappearing on load
Fix custom element types being mangled in secondary properties
Improve determinism, useful for debugging
Fix a particularly obscure water equalization crash
Fix RIME's description (it is formed through deposition, not sublimation)
Fix delete key not functioning correctly in textboxes when text is selected
Add fs.isLink

From build 253:
Preprocessor-purge: Significant refactors to the way build options and the build environment are handled while compiling
Read stamps from stamps.json instead of stamps.def. stamps.def will be migrated to the new format on upgrade
"Rescan Stamps" is now performed automatically on launch, and no longer reorders by date. Instead, new stamps will be added to the front of the list
Improved file writing - ensure failed writes won't corrupt files
Include "1" in the list of "true-strings" on the command line
Fix os.exit()

From build 252:
Clean up image resource data, and convert hmap data to gradients
Have the intro text hide the HUD completely
Fix loading of "version 1" PSv saves
Add temperature scales option
Vote editing
Send SessionKey in a few more places in Client.cpp
Make CRMC immune to ACID
Update readme date and version numbers
Tweak "Small 3" character (\uE032) in the font
Fix white LIFE being created in some cases, such as from EXOT+NEUT
Add --disable-bluescreen command line argument
Redo command line parsing and Platform::ExecutableName
Fix input method support on Linux
Fix pmap not being updated when setting x / y from Lua
Fix background color not showing up in vote buttons on your own saves
Update version numbers to 97.0.352

From build 251:
Fix the zoom window producing out of bounds coordinates
Fix lag when scrolling local save browser (it now caches thumbnails again)
Fix local browser offering to open broken saves
Unify icons - the new icon looks similar to the old, but is now the same across Windows/Mac/Linux
Fix possible crash when flood filling with particle limit filled
Fix glitchy behavior when flood filling solid particles around detect wall
Add evt.beforesim and evt.aftersim for running code only when simulation advances
Add sim.updateUpTo and sim.lastUpdatedID, for handling partial sim updates in Lua
Add sim.historyRestore and sim.historyForward
Add discord link to intro text
Make GLAS strengthening reaction more controllable
Add underline escape sequence to text renderer (\bU)

From build 250:
Fix frequent crash in snapshot 249 when browsing or viewing online saves

From build 249:
Fix local browser handling large amounts saves badly

From build 248:
Fix PHOT reflecting off thin walls of particles incorrectly
Add sim.MAX_PRESSURE and sim.MIN_PRESSURE constants
Make file browser respond to search query changes while loading files
Add inverted element filtering to CONV with tmp2 set to 1
Expose BZ2 to Lua

From build 246:
Fix opening saves on Windows 11

From build 244:
Fix text in some buttons being cut off prematurely
Add verb parameter to http.get/post

From build 243:
Add support for HTTP/2, reduce per-host connection count to 1
Fix string handling in text drawing and width functions
Allows passing in null bytes, which allows 0s to be used with \x0F color codes
Use PNG avatars and thumbnails
Fix empty string being discarded at beginning of lua log/return lists

From build 242:
Fix a very elusive PHOT reflection crash
Fix rare crash upon clearing the ambient temperature input box in settings
Add http.getAuthToken
Add clip rect feature to Graphics and gfx.setClipRect

From build 241:
Make stickman movement strength independent of gravity

From build 240:
Fix crash when trying to load a stamp that doesn't exist
This also fixes syncs in TPTMP crashing the game

From build 239:
Fix snapshots sometimes being debug builds
If your game is slow, bigger than usual, or if it opens a console window, this is why

From build 238:
Return HTTP response headers to Lua
Enable By date button when viewing Favorites
Crop stamp thumbnails that don't fit even when resized
Code cleanup: Fix 8-bit-uncleanliness of most of the Lua API
Code cleanup: DirectionSelector and surrounding code
Code cleanup: Use std::vector consistently for file operations
Code cleanup: Client::DoInstallation
Code cleanup: Update tpt-libs and GitHub Actions workflows

From build 237:
Add custom gravity mode (catsoften - #820)
Expose SDL keycodes and scancodes to Lua
Expose SDL button codes to Lua
Add PowderCoin icon to font
Alias dcolor, pavg0, pavg1 to dcolour, tmp3, tmp4
Make QRTZ slightly change color while growing (Rebmiami - #852)
Performance improvements to simulation code (up to 8%) (savask - #854)

From build 236:
Deprecate tpt.element_func / tpt.graphics_func and replace with compatibility script
Mark saves with GLAS/QRTZ/TUNG as 97.0-only
Fix handling of malformed scale: and proxy: arguments
Add sim.partExists and elem.exists
Add real v parameter to sim.partCreate
Fix PIPE graphics hack giving Lua graphics functions bad particle IDs
Fix exception when passing nil to some functions in interface api

From build 235:
New WTRV + BCOL -> OIL reaction in presence of PTNM
Remove inaccuracy in OIL's description
Make PHOT change its wavelength upon colliding with charged LITH
Use date in screenshot filenames to ensure each screenshot's filename is unique
Let NEUT pass through BGLA
Fix LITH conducting through INSL

From build 234:
Fix starcatcher-publish step so it actually uploads apks now
No changelog given for this version

From build 233:
Fix cryptic Lua error built-in elements could sometimes produce
Added chemically strengthening GLAS (expose GLAS to molten SALT)
Element scroll bars no longer show in menus that don't scroll
Fix find mode not highlighting WARP particles

From build 232:
Fix crash on exit if a Lua component is added to a Lua window
Add safeguard to try_move to ensure we don't write to out of bounds pmap
Redo code that makes SOAP float on OIL
Update TPT's user agent and intro text with new IDENT portion that better identifies platform and architecture
Prevent SaveRenderer from calling into Lua
Fix crash when trying to render an empty stamp
Fix TRON being unable to pathfind to the top and left edges of the screen
Handle SDL_CreateWindow failure slightly better

From build 230:
Fix mingw-on-linux builds
Fix pressure-sensitive particles breaking on load, again
Fix incorrect RNG call in WARP, code cleanup
Fix crash on network activity (#824)
Fix ToArray duplicating the last byte of its input
Fix crash on exit if any modern particle callback is registered
Fix pipe mirroring (fixes #750 again)

From build 229:
Fix potential crash when adding a custom GOL type
Fix ambient air temperature being loaded from saves as int, not float
Convert float pavg[2] to int tmp3, tmp4
Save higher halves of tmp3 and tmp4 if needed (fixes saving photons in PIPE)

From build 228:
Fix custom elements disappearing after rotating a stamp
Fix cursor placement in textboxes with just a single character
Fix extremely rare crash when using water equalization with loop edge mode and other high velocity liquids nearby

From build 227:
Fix memory leaks in interface api
Fix TPT Window breaking sometimes when toggling "resizable window" while in fullscreen
Fix near-RTEMP temperatures being loaded incorrectly in some cases
Fix crash when closing game, while not on the main screen, with Lua components active
Disable text input on startup

From build 226:
Update version number: 96.2 (build 350)
Add a few more Lua functions: sim.replaceModeFlags, sim.listCustomGol, sim.addCustomGol, sim.removeCustomGol, sim.floodDeco, tpt.perfectCircleBrush
LIGH now lasts longer and expands frame-by-frame
Fix issue where stamping LIGH at the right moment caused every LIGH to strike at once

From build 225:
Patch libcurl to fix random disconnect issue in tptmp

From build 224:
Prevent property tool from being used with bad values
All HSV sliders in color picker
Add AMBP and AMBM tools
Optimise undo history memory usage

From build 223:
Win32: Fix certain Lua APIs mangling integers (hey, if you see this, try updating to the Win64 version instead!)
Bump version to 96.1.349

From build 222:
Fix "B12345678/S012345678/17" appearing in HUD for ctype 78
HUD: Show GLOW and LITH ctype as number, don't show ctype for elements which use it as data storage (such as PHOT or PRTI)
Don't let GLOW ctype go negative
Disallow CGOL with duplicate rulestrings or names > 7 chars
Make LITH->GLAS reaction easier
LITH explodes when overcharged, update charge graphics
Preserve GoL deco in older saves; deco on builtin GoL no longer renders when decorations are off
Fix elem.allocate corrupting LuaScriptInterface and causing crashes when running out of IDs
Fix element identifiers for newly allocated elements not being immediately valid
Fix find mode not always succeeding in darkening particles
Disallow GOL rulesets with no B states
Make Lua prints fade out better

From build 221:
Linux: support Ubuntu 18.04 and other distros with glibc 2.27

From build 220:
Fix GOL showing up where it shouldn't
Fix custom brush loading
Default drawfrequency to 0, because of frame drop issues

From build 219:
Bump version to 96.0.348
Make ROCK more resistant to DEST (like CNCT is)
Fix local saves and migration process on Windows
Adjust color of LITH
Show .LITH tmp2 in HUD
Update SLCN description
Form ROCK under pressure from both normal LAVA and LAVA(STNE), as these are basically the same thing
Prevent ROCK from repeatedly breaking into STNE and reforming under pressure
Burn timer / explosiveness enhancement for LITH

From build 218:
Add button in options menu to migrate to shared data directory
Make ROCK harder to get, greatly increase ACID resistance
Adjust LITH color slightly so that it isn't the same as CNCT
Change PTNM reactions to take pressure from reacting particle's coordinates (#784)
When air temp textbox is defocused, correct out of range temperatures
Fix crash when doing sim.ambientAirTemp(0/0)
restrict ambientAirTemp to valid limits when set from Lua
Return version (aka history index) from sim.getSaveID
sim.clearSim now clears active save information too
Return a reason for failure from sim.loadStamp
Ensure tpt.set_wallmap is called with 3, 5, or 7 arguments
Add bounds checking to sim. tool APIs (crash fix)

From build 217:
Fix issue in socket API where an error isn't raised after writing to a closed socket
Save ambient air temperature and add it to options
Restrict saves with ambient air temp set to v96.0
Remove pastel glow on "inactive" GLOW

From build 216:
Update Me4502's name in readme & intro text
Prop tool - only check GoL rulestings / names for ctype
Move IRC channel from to
Makes GLOW element glow under pressure
Fix dangling pointer smuggling in PreviewModelException
Remove LuaSocket, add new socket API backed by libcurl (this breaks tptmp, there is no workaround right now)
Rewrite tpt.set_wallmap, it can now set WL_FAN velocity
Take snapshot when using ctrl+x
Make debug mode show .tmp2 for VSNS too.

From build 215:
Fix "NONE" showing in HUD in many cases
Improve stack pasting behavior
Remove "Auto Draw Rate" option, there is no reason to turn this off
Fix issue allowing drawing unlimited LIGH with 1x1 cursor
Don't show GoL .tmp in HUD, check if create_part was successful while simulating GoL

From build 214:
Make username case-insensitive when logging in

From build 213:
Fix elementCount inaccuracies when undoing (fixes GoL not working for a short time after undo)
Fix ctype drawing for LDTC
Show proper GoL name in HUD for LDTC / DTEC
Write powder.pref immediately every time a setting is changed

From build 212:
Make custom can_move settings persistent (fixes #764)
Redo and add type parameter to sim.neighbours

From build 211:
New element: LITH. Reactive element that explodes on contact with water.

From build 210:
Fix air being able to go through walls for a frame after undoing
Show NONE in {ctype} signs instead of 0 when an element has no ctype
Fix some legacy lua api functions allowing you to set properties on element 0

From build 209:
Fix issue where Linux version couldn't be launched from some file managers

From build 208:
This snapshot contains no changes, it only has changes for macOS
Update README with info on all the external libraries we use

From build 207:
This one took a while. I'm sorry for the huge delay in getting this out. The snapshot server is back and running now, so check back for future updates.
Upgrade build process to use Meson instead of Scons
Replace build server with Github actions builds. All builds from now on will be built on Github, instead of on Starcatcher
Addition of Windows 64 bit builds. To get the 64 bit versions of the snapshots, please redownload it from the website.
Fix PIPE / PPIP breaking on rotation
Add Hangul main block and supported compat jamos to the font
Fix vertical alignment of text in signs (all signs now render text one character lower, this is to be consistent with the rest of the UI and make room for unicode characters)
Fix crash when giving incorrect arguments to some Lua interface API components
Fix infinite spark loops in photoelectric effect
Make molten ROCK produce vertical clusters of GOLD
Fix QRTZ/GLAS/TUNG breaking on load (again), for cases when pressure is negative
Add shortcut to start menu when installing (ctrl+i)
Don't draw intro text when HUD is disabled
Add ren.showBrush Lua api to hide the brush
Fix icons in Windows Explorer on .cps and .stm files (requires reinstall)
Add composition support (for users using international keyboards)
Add Lua functions to interact with composition: interface.grabTextInput, interface.dropTextInput, interface.textInputRect. Also, new "textediting" event.

From build 205:
Saves using GoL elements are now blocked from publishing online. You may only upload them unpublished
This is to prevent errors in vanilla clients trying to open these saves, as saves with GoL require the unreleased 96.0 version to load

From build 204:
Add Latin Extended-A characters to the font
Fix rendering of built-in GOL in thumbnails
Display ctype as a number in the HUD as a last resort
Fix explosive growth of PQRT produced by the SLCN-OXYG reaction

From build 203:
Allow saves with custom GOL to be loaded in snapshots
Fix replace mode to allow replacing with GOL types

From build 202:
Fix built-in GOL types

From build 201:
Fix a bug which caused a line of particles to sometimes be drawn between the cursor and the top left corner at startup
Stasis walls now keep dying GOL cells in stasis
Prioritise favourited elements in element search
New element: VSNS (velocity sensor). Similar to LSNS.
LSNS and HSWC can now interact with energy particles
New element: ROCK (rock, a solid). Melts into a lot of different materials at higher pressures, CNCT can stack on top of it, and is eroded by WATR.
Add an option to make scrollable UI elements more touchpad-friendly.
Add CUST (in the life menu), a custom game of life tool. Custom types can now be created with any rulestring and colours. See built-in types for example rulestrings, e.g. B36/S23 for HLIF.
These custom types save with the rest of the simulation perfectly, except their names, which only exist locally.
Add option to skip drawing frames for faster simulation. If enabled, only as many frames are drawn by default as your display can handle. The limit can be queried or set with tpt.setdrawcap.

From build 200:
Fix cyrillic lowercase D and T in the font
Ctrl+a no longer selects all saves if any of the textboxes in the view are in focus
Ctrl+a now deselects all saves if all saves are selected
Disable certificate revokation checks, to fix some 612 errors

From build 199:
Snapshots have now resumed. Sorry for not creating any since 95.0, but TPT development hasn't stopped
This new snapshot brings support for many new characters in the font, and two new elements. Changelog is presented in commit history order, not "importance" order.
Add Latin-1 and Cyrillic characters to the font
Add ability to type and copy/paste non-ascii characters in textboxes
Non-ascii characters will still be deleted by the website inside comments, save titles, and signs; and replaced with question marks in save descriptions. We will work to fix this in the website later.
Fix typo in "change resolution" option description
SPRK / METL no longer deleted when inside detector wall
Solid elements can no longer be drawn on detector wall
Extra sanity check in create_part, to prevent obscure crashes
Ctrl+u shortcut to reset ambient heat
Fix extra break; in LSNS, making it unable to deserialize in all directions at once
Fix off-by-one bounds check in !set
Fix floating point issue in FRAY
Add bounds check to tpt.brushx and tpt.brushy (fixes crash when setting to negative values)
Add bounds check to sim.floodParts and sim.partKill (fixes crash in sim.floodParts)
Fix obscure crash when crafting a special COAL/BCOL on fire
When launching the game without a powder.pref, data is now stored in an OS-specific user data directory
This is "%APPDATA%/The Powder Toy" on Windows and usually "~/.local/share/The Powder Toy" on Linux
If you already have data locally, it will continue using that and not migrate to the shared directory
Fix bug with line tool while WIND is selected (id:2554353)
Fix glitch in console when putting multiple spaces in a row
Remove gaps between lines of selected text
New element: SLCN (silicon). Sparkles, conducts electricity like GOLD, and has many reactions while in molten form
Add reaction to produce BCOL: WOOD at high temperature and low pressure
New element: PTNM (platinum). A catalyst in many reactions.
BRAY .life can be customized when firing from ARAY by setting ARAY's .life
Remove .life delay feature of ARAY/DRAY as this was historically not possible to use
ctrl+a to select all saves in save browser

From build 198:
Fix bug where deco renders on EMBR in save thumbnails
Fix text prompt interface (rarely used, only for some Lua scripts)
Restrict saved version to 95.0 if 95.0 features are present - signs with macros, LSNS .with .tmp
Upgrade SDL2 to version 2.0.10
Change version number to 95.0 - build 345

From build 197:
Fix crash when removing a tag fails
Add "perfect circle brush" option, turning this off will give you the old circle brush back
Fix replace mode not resetting element properties back to default
Fix fighters loaded from saves sometimes being blue

From build 196:
Fix ptsave links

From build 195:
Split http.request into http.get and

From build 194:
Fix division by 0 in DEUT (console shenanigans only)
Add http Lua api (subject to change). Documentation in the wiki
https is now (properly) enforced

From build 193:
Refactor UI callbacks to be more C++11-like
Guess best window scale on startup at first run instead of offering only double scale mode
Only do a single CoordStack allocation in each thread, should save some malloc overhead

From build 192:
Add Lua apis to interact with DefaultProperties, Create, CreateAllowed, and ChangeType
All are part of and elem.element
No wiki documentation yet, read the source code or figure it out yourself

From build 191:
Add CreateAllowed and ChangeType hooks for element creation
This refactor cleans up Simulation.cpp a little and moves element-specific code into the element files
This also cleans up some tracking of STKM/STK2 spawning and elementCount going out of sync

From build 190:
Fix STK2 rocket boots not saving in saves
Fix unsigned integer properties being returned as signed integers from certain Lua functions
Fix crash if error happens in ctypeDraw Lua function
Fix crash when returning invalid arguments from graphics or ctypeDraw Lua functions
Blacklist SPRK in PCLN's and PBCN's ctypeDraw function
Redo how default properties are handled. There's now a list of static properties such as .tmp = 7, and a function handler for dynamic properties
More to come later, to move even more code out of create_part, + Lua apis

From build 189:
Fix Newtonian Gravity
Add NewtonianGravity property to elements, controls how strongly newtonian gravity affects the element

From build 188:
Newtonian Gravity pull acceleration now takes element's .Gravity value into account

From build 187:
Circle brush now has smooth edges
Keep brush radius consistent between shapes

From build 186:
Remember unsubmitted commands in console even after scrolling through history
Fix off-by-one issue in occasionally causing particle at (0, 0) to be returned efficiency fixes
Smudge tool is now smudgier
Options for controller color space of smudge tool in simulation settings
Available options: sRGB, linear (old smudge tool), gamma 1.8, gamma 2.2

From build 185:
Fix deleting stamps not working
Use CoordStack for INST flood fill
A bunch of compile fixes for various platforms / scons flags

From build 184:
Fix frame # not showing properly in HUD when recording
Fix potential stack overflow with water when water eqalization is enabled
Make water equalization fill in areas slightly more naturally

From build 183:
Revert "Only allow strong ciphers to be used", fixes inability for Windows users to make network requests
May add it back later as an option

From build 182:
Fix tpt.eltransition..presHighType
Update gravity mask even while paused (gravity wall)
Prioritise ctypeDraw functions over sparking
Prevent protocol downgrade attacks (force https and TLS1.2)
Only allow strong ciphers to be used
Fix issue with text wrapping that could cause a newline to be unnecessarily appended at the end
Arbitrary newtonian gravity code cleanup
Fix CELL size check when loading saves

From build 181:
Revise ctype drawing code
Add ability to set "CtypeDraw" function for Lua elements. This function is called any time the user draws on top of your element
It takes the following arguments: i, t (type), v (often used for GoL index)

From build 180:
Fix random crashes when making network requests or on exit
Use current render mode when rendering a stamp
Add disable-network command line argument
Add file drop handler, you can now drop .cps and .stm files onto the window
"Rescan Stamps" now sorts stamps by time created

From build 179:
Reinstate option where holding shift inverts the decision on whether or not to include pressure in saves/stamps, or load pressure from saves/stamps
Element search ui can now search by description
Rewrite text wrapping, this fixes an issue where one character in words that wrapped over two lines were not shown
Remove syntax highlighting in console, we will add this back if we find a good way to support it with the new text wrapping

From build 178:
Add setting in options menu to control whether pressure is included in saves and stamps
Remove option where holding shift while loading or creating a stamp prevents pressure from being included
The shift option may be added back later

From build 177:
Use c++11 threads
Fix crash when searching in element search ui
Add sim.CELL Lua constant
Lua transition api cleanup / fix transition properties not being validated
Fix part_change_type not being called by sim.partProperty
Fix tpt.eltransition
Add transition constants to sim. api: NT/ST/ITH/ITL/IPH/IPL
Fix not removing the freed element from the menu
Add .life serialization support to lsns
Add option to change menu selection from hovering to click

From build 175:
Fix race condition with Newtonian Gravity (exceptionally rare, has been in there 7 years)
Fix garbage in certain error messages, such as errors when voting
Fix minor resource leaks in Lua
Fix minor memory leak when allocating Lua elements
Fix POLO eating PROT ID#0 no matter where it is
Search signs now drawn in purple instead of blue
Forum thread signs now drawn in red instead of blue

From build 174:
Add command line option "redirect" to redirect output to stdout.txt / stderr.txt
Print libcurl error buffer to stderr on client error (http code >= 600)

From build 173:
More descriptive SSL error messages

From build 171:
Fix "Error loading save" stamps appearing when using tptmp
Fix replace mode not affecting energy particles
Fix replace mode not working with Lua elements
Don't allow enabling both replace mode and specific delete at the same time
Fix pressure / ambient heat being saved as 0 instead of not at all when holding shift
Fix GLAS, TUNG and QRTZ breaking on load when saved at high pressures
Add new sign types: {type}, {ctype}, {life}, {tmp}, {tmp2}
These sign types now use substitution, you can make a sign such as "{type} with ctype {ctype}" and both will be replaced
Convert old {t} / {p} signs to say "Temp: {t}" and "Pressure: {p}"
PIPE with lava now shows in HUD as "PIPE with molten [ctype]"

From build 170:
Fix memory leak in local save browser
Fix saving/loading window position on 2nd monitor

From build 169:
Fix crash when opening stamp / local save browser or uploading a save

From build 168:
Allow unicode in element names (useful for Lua scripts)
Replace http.cpp with libcurl, a proper http library
Use https for all requests - communications to the TPT server are now encrypted

From build 167:
Fix updater
If you are on snapshot 165 or 166, redownload the snapshots at

From build 166:
Fix crash when exiting local save browser before all thumbnails load
code refactoring (virtual -> override)

From build 165:
Add Lua api to control zoom windows: ren.zoomEnabled, ren.zoomWindow, ren.zoomScope, courtesy of @ssccsscc
Large refactoring by @LBPHacker, refactor all http code to route through Request, delete RequestBroker, refactor thumbnail rendering
Thumbnails now show up immediately when ready, instead of being delayed by 1/10 of a second (or 1 full second in the 94.1 release version)

From build 164:
Fix stamp and local save thumbnails being stretched
Thumbnails (all types) now load much faster
Increase local browser ui size to make thumbnails larger

From build 163:
GoL is now affected by stasis wall
Change version number to 94.1 build 343

From build 162:
Fix issue on QWERTZ keyboard layouts where the first key input after opening the console would be ignored
Fix window glitching out when toggling "Change Resolution" while fullscreen is already enabled

From build 161:
Keyboard shortcuts are now based on en-US layout, no matter what layout you actually use
This fixes things like 'y' and 'z' being reversed on QWERTZ keyboard layouts, now, 'y' will continue to be zoom

From build 160:
Add "Force Integer Scaling" option for fullscreen
Recreate the window when enabling resizable window (Fixes some issues on Windows)
Recreate the window when toggling fullscreen, to work around some bugs where the window is sized incorrectly or the mouse position doesn't match where the cursor is
Fix issues when disabling resizable window while window is maximized

From build 159:
Ignore mouse button 4/5 when drawing
Update README date
Don't allow right click -> select a save when you aren't logged in
Restrict saves to version 94.0 when they use newer elements / features
Fix issues sampling GoL elements
Fix FIND tool finding all GoL types instead of just the one you had selected
Fix uncaught exception in console when trying to parse invalid numbers
Change version number to 94.0 build 342

From build 158:
Older icon - ok I'm just going to keep using the original icon for now because I can't make this look good
Original icon is now centered

From build 157:
Newer icon - now slightly larger and with a gradient

From build 155:
New icon - falling sand pile

From build 154:
Fix gravity sometimes persisting a frame after ctrl+z / clearing sim

From build 152:
Fix incorrect time format being used sometimes when not in UTC timezone
Change time format for old dates, instead of "Dec 2018" now says "29 Dec 2018"

From build 151:
Fix sim.brush using diameter instead of radius
Transfer properties of COAL breaking into BCOL
Add event.blur, called when opening another interface window
eventcompat.lua: Add shift mapping for US keyboard layout

From build 149:
Add new event. api, replaces legacy event functions
Embed a compatibility script to replicate the old api in the new one (this fixes tptmp support)
Documentation for new api will be put on the wiki at some point

From build 148:
Add a message while fetching the motd
Fix dray with tmp=0 acting weirdly

From build 147:
Fix elem.element crash

From build 146:
Fix particle #0 not being removed from the photons map when moving

From build 145:
Fix default elements disappearing when loading saves if the identifiers don't match
Fix "publish" button in save browser

From build 144:
Domain expired, use instead for now

From build 143:
Fix typo in favorites menu
Fix stasis wall not having blob mode effects
Rewrite LDTC to be less buggy:
Max range not checked properly in certain directions
Off by 1 error in tmp
Out of bounds check in wrong spot
Issues with filter mode
Incorrect default temp / airloss properties
Show LDTC tmp2 in HUD
Allow PROP tool to parse particle type for tmp
Show CONV tmp as element name in HUD

From build 142:
Make ctrl+shift+click toggle favorite status
Check for correct prefix in PROP hex decoding (0 -> #)

From build 141:
Update in-game rules to match the new TPT rules
Rename RAYT to LDTC (linear detector). RAYT in existing saves will disappear.
Fix PIPE being reversed

From build 140:
Fix Saves/ appearing before all saves in local save browser
Make FPS update less often in HUD
Fix blue line in smudge tool texture

From build 139:
Fix scrolling being inversed in the save / stamp browsers

From build 138:
Fix issues with scrolling

From build 136:
Upgrade to SDL 2
This is a major upgrade, which greatly improves video and input handling
Add "resizable window" option. Turning this setting on may make TPT look a little blurry
Fullscreen is now instant and no longer changes your screen resolution. The option to use old fullscreen is still there
Redo text input handling. This will allow for unicode input soon
The redone input handling breaks most Lua scripts which listen for key events, such as tptmp. There is no replacement text input API at the moment
Improve screen size detection, now checks the correct monitor and accounts for the taskbar

From build 135:
Fix error messages when adding tags and loading / creating saves being corrupted
Fix FIND mode turning off when selecting elements

From build 134:
Fix float parsing in PROP tool
Fix getting / setting string properties in legacy lua api

From build 133:
Fix getting / setting Description with Lua elements API

From build 132:
Add unicode support. This will eventually allow us to translate the game into other languages
All string handling everywhere has been changed to support unicode. Please watch out for and report any bugs you see

From build 131:
Update the rest of the rng calls
Fix single pixel pipe

From build 130:
Fix another crash when particles are out of bounds
Fix occasional issue where deleting the particle RAYT is detecting would delete the particle it is sparking instead
Update rng calls for elements up to 'P' reverse alphabetically, may fix bugs

From build 129:
Update rng calls in a few places to fix severe pressure / other bugs
The rest of the rng updates will come later, to fix the bugs caused by returning an unsigned int instead of an int
Fix crash when particles are out of bounds

From build 128:
Fix another minor memory leak + redo some update code handling
Use xoroshiro128+ random generator, should be much faster than built-in rand()
Make Cyclone tool faster

From build 127:
Add inverted mode for TSNS and PSNS with .tmp = 2

From build 126:
Fix memory leak when viewing saves
Fix memory leak when loading stamps with 'l'
Fix large memory leak when saving stamps

From build 125:
New element: RAYT

From build 124:
Fix single-particle PSTN bug

From build 123:
Make cyclone tool faster

From build 122:
Add STATIS wall, elements inside don't move / update until powered
STATIS wall must be powered via another powered wall

From build 121:
Fix obscure division by 0 issue with MERC

From build 120:
Fix solar panels sometimes not working
Allow thumbnails to render on saves using certain 93.0 features
Adjust SOAP links to non-SOAP particles properly when saving
Change version number to 93.3.340

From build 119:
Remove temporary snapshot save compatibility code
Saves containing PIPE or PPIP made in recent 93.0 snapshots will not load correctly
Change version number to 93.1.338

From build 118:
Fix STKM + fan wall
Save stickmen rocket boots / fan flag in saves

From build 117:
Changes / improvements to save loading, to prepare for 93.0
Save palette now works for elements stored in ctype/tmp/tmp2 (this is the thing that converts lua element IDs when they are reordered)
Change TSNS/HSWC/PSNS/PUMP .tmp to 0 when loading older saves
Fix antivirus false positive

From build 116:
Fix potential crash with PROT + SPRK(SPWN)
Saves using temperature/pressure serialization feature mark themselves as requiring 93.0
Add ctrl+q shortcut to exit the game from anywhere

From build 115:
Use std::string for all sign functions, fixes read/write error with link signs
Fix ambient heat going to high negative values with high life LIGH
More accurate (circular) O2 fusion calculation
Prevent people from stealing the 404 save
Digitization (PSNS) and Application of Digitized Pressure (PUMP)
Add hidden Simulation.LoadPressure and Simulation.IncludePressure powder.pref settings to set whether to load / save pressure in saves by default
Add limits on temperature serialization to valid temperature ranges
Only unserialize from FILT 1 pixel away
Ensure serialization only works through FILT, not sometimes PHOT or BRAY
HSWC with .tmp of 1 no longer conducts heat to FILT
When finding particles, show how many were found in HUD

From build 113:
Fix free particle list messing up during particle debug

From build 112:
Fix undoing changes in gravity mask (gravity wall)
Add new cyclone tool

From build 111:
ctrl+p shortcut to select PROP tool
ctrl+shift+p shortcut to select PROP tool to right click
Fix debug print in PLNT making it really laggy

From build 110:
Fix STOR->PIPE transfer

From build 109:
Fix STOR->PRTI transfer

From build 108:
Double the element ID limit to 512 (9 bits)
Update save format to optionally support two byte types
Replace all pmap bitshifts & bitmasks with macros
PIPE element stored in .ctype, PIPE colors stored in .tmp
Add conversion code to convert older PIPE/CRAY/DRAY to 9 bit element types
Disallow uploading saves with PIPE or two byte types
elem.allocate prefers one byte element IDs unless they are all out
Add sim.PMAPBITS and sim.PMAPMASK Lua constants

From build 107:
Update to C++11, now used in save building / loading code
Fix division by 0 in PHOT+C5 interaction, now shoots photon off at a 90 degree angle instead of causing infinite velocity
Sort local saves alphabetically, accounting for upper/lowercase

From build 106:
Fix issue where stamps would stack if you loaded multiple in one frame
Sort local saves alphabetically
Fix issue loading manually created SOAP bubbles in some saves

From build 105:
Fix everything being laggy

From build 104:
Fix SOAP links not saving / loading properly (stamps)
Fix ambient heat not loading in ctrl+c paste
Fix pressure resetting to 0 when loading saves without pressure

From build 103:
Tooltips now show in element search
TSNS with .tmp=1 can be used to digitize temperatures into FILT
HSWC with .tmp=1 can be used to read back those temperatures into FILT/PHOT/BRAY
Add support for additional scale modes beyond scale 2, if your screen is large enough

From build 102:
Newtonian Gravity infotip now shows when using key shortcut
Fix crash when using tpt.start_getPartIndex
Potentially fix crash on exit (very hard to reproduce so not sure)

From build 100:
CRAY wall checking fix (potential crash?)
Autoexpand stamp when particles are translated out of boundaries (arrow keys)
Translate wall grids when shifting stamps by more than 4 pixels

From build 99:
Fix buffer overflow in luasocket library
Fix illuminati symbols appearing when rescanning stamps
Remove 'r' record shortcut
Add tpt.record function
Recordings now go into recordings//, where timestamp is the time the recording was started. is returned by the tpt.record function. Each new recording starts the filenames over at 0 again.
Now uses luajit, which gives a 10-40% speed boost when running lua scripts.
Fix issue with molten STKM that could break the simulation and cause crashes
Change version number to 92.5

From build 98:
Fix crash with BOMB explosion
Add sim.takeSnapshot lua function

From build 97:
Use official DNS again
Fix undoing while unpaused setting .life incorrectly, breaking some saves

From build 96:
Change version number to 92.1
Use ip address instead of DNS temporarily

From build 95:
Fix newtonian gravity state transitions flashing

From build 94:
Fix pressure in HUD
'enter' closes SaveIDMessage interface after uploading a save

From build 93:
Ensure air doesn't "leak" out of TTAN containers when loading stamps and saves
Hold shift when saving or loading stamps to not save / load pressure

From build 92:
Fix lack of circle EMBR in BOMB explosion
Fix RFRG description typo (use more common spelling)
Hide .tmp in HUD for RFRG and RFGL

From build 91:
Remove useless debug print in !set
Authors fixes: fix duplication on loading/saving local saves that can cause saves to be slow to open
Attempt to fix crash when zooming in on signs
Fix ctrl+f shortcut not working with particle debugging enabled

From build 90:
Turned off HSWC acts as insulator for HEAC
Fix FIGH spawning glitch: id:2165807
Fix -nan RFRG glitch

From build 89:
Change version number to 92.0
Ctrl+a shortcut is now moderator only
Ensure DMG turns WOOD to SAWD
Fix HEAC conducting to HSWC which is turned off
"Failed to x" messages in save browser are no longer arbitrarily yellow

From build 88:
Undo authors changes on ctrl+z, prevent excessive nesting, other authors fixes
Add new PhotonReflectWavelengths property, add reflection color for POLO
sim.signs.delete() api function only prevent writing to dead particles, not reading

From build 87:
Fix issue that could read/write values from dead particles
Fix typo in PLUT description
POLO can now be made from PROT acceleration reaction
Source code refactoring: #include dependencies

From build 86:
Add logging inside saves which remembers which other saves material was taken from
Temporary ctrl+a shortcut for debugging this feature
Fix crash when attempting to save certain invalid signs

From build 85:
{aheat} signs now in Celcius
BCOL + NEUT -> SAWD (matches existing COAL + NEUT reaction)
Differentiate between created date / updated date in save preview
Workaround for incorrect 404 save

From build 84:
Add PROP_LIFE_DEC back to GLOW, fixes GLOW+PHOT reaction

From build 83:
Fix POLO not bring marked as a powder
Fix deco colors being 1 R/G/B value less than they should be
Fixes to palette in saves (ensures lua elements get the proper ID based on identifier)
CRAY can create FILT with .tmp already set
GAS+CAUS+pressure = RFRG
Move HEAC to solids menu

From build 82:
Make sure STKM / other particle graphics aren't drawn over the menus
HEAC now checks for insulators

From build 81:
Remove PROP_LIFE_DEC from some elements that don't need it
HEAC is now meltable via LIGH
Fix HEAC being dissolved by ACID
Fix BOMB explosions being able to delete energy particles
Minor VIBR heat releasing fix

From build 80:
Add warning messages when certain words are found in comments ("stolen", asking for votes, swearing)
Add error message when attempting to login using an email address
Sign justification is now called pointer alignment, new sign icons

From build 79:
Rename E180 to HEAC (Rapid heat conductor)
HEAC now also conducts heat to photons
Rename E181 to SAWD (sawdust)
SAWD is created by high velocity particles hitting WOOD
Rename E182 to POLO (Polonium)
Add new POLO+PROT->PLUT reaction, POLO now melts at 253.8C
Make Mrprocom's name blue in comments

From build 78:
Proper ctrl+backspace support (doesn't delete entire textbox)
Fix QRTZ killing life=0 PHOT
Add sim.TOOL_MIX to Lua API
Fix PHOT/PLSM not following the correct heat scale in heat view

From build 77:
Fix ambient heat being reset when creating saves

From build 76:
Save ambient heat in saves
CRAY(LIGH) defaults to LIGH with .life 30
Fix high hexadecimal numbers working when setting type with PROP tool (can cause crashes)
Misc code cleanup

From build 75:
C5 shows PHOT colors in debug HUD
Pressure and air velocity are now saved in saves
Redo RFGL and RFRG to be simpler and more realistic
New element: LSNS (life sensor)

From build 74:
Make FRAY and INVS customizable via .tmp

From build 73:
Fix photon refraction on windows
Fix some piston bugs that could cause it to not push as far as it can
Add optional sizeX, sizeY, brushID arguments to sim.brush
Fix cache value from lua graphics function being ignored

From build 72:
Changes by Skylark:
Double the preciseness of photon refracting
CRMC now slightly scatters photons when reflecting
BGLA now scatters photons
PQRT scatters photons like QRTZ does
C5 frequency doubling, id:2087410
Make GRAV prettier

From build 71:
Fix favorites being able to be added multiple times
Fix debug portal lines to the highest ID particle not working

From build 70:
Fix subframe WIFI cooldown issue

From build 69:
Fix typo, Gasses -> Gases
Change README to markdown
Fix a few potential memory leaks
Take history snapshot before loading save
Fix downvote button not being reset when opening a local save

From build 68:
Fix issue with air sim that could cause massive lag after leaving TPT idle for 20 minutes

From build 67:
Fix crash when doing
Fix ctrl+z crash if there was no undo history
Move UndoHistoryLimit preference location, update default to 5

From build 66:
Reduce ctrl+z memory usage
Add ctrl+shift+z as alternative shortcut for ctrl+y
Fix two blank undo states always being created at startup

From build 65:
Fix false positive virus detection in Avast

From build 64:
Add multiple undo and redo support - edit powder.pref to control the amount of undos (default: 1)

From build 63:
Fix issue where non-scrollable menus are stuck "scrolled"
Fix particle debugging issue with particle #0
Add sim.brush lua function, an iterator which returns a list of brush locations
Add two new FILT modes, red/blue shift based only on ctype

From build 62:
Fix icon
Support windows XP again, probably

From build 61:
Now compiled with the Microsoft Visual Studio Compiler (MSVC)
This should improve FPS by a noticeable amount (10-20%), and decrease the size by 40%

From build 60:
Disable STKM controls when pasting saves

From build 59:
Fix potential crash when SPRK with no ctype is killed by PROT

From build 58:
Fix crash with really high speed photons
Fix particle debug when unpaused
Some internal loop edge mode fixes
Fix bug with conservation of energy in RFGL

From build 57:
Fix floating point celcius in console: !set temp all 0.8C
CRAY copies own .life to the particles it creates
New elements by cxi: RFRG and RFGL. Some kind of refrigerant, see id:2038399 for an example

From build 56:
Prevent exit() in save data parsing library with certain invalid saves
Fix typo in BRMT's description
Fix unpausing while in the middle of particle debugging
Enable Simon's new test element: E182 (some kind of nuclear fuel)

From build 55:
Two experimental elements by Simon - one which conducts heat rapidly, and another which floats on top of water
Allow snapshots to continue to publish saves as long as they don't use new elements/features

From build 54:
Prevent diffusion of stored water between GEL and SPNG if no water is stored
Fix PIPE with STKM being invisible
Allow changing WHOL strengh with .tmp (like BHOL)
Fix not being able to undo stamp placement
Saves using RPEL with ctype require 91.4 and saves using WHOL tmp require 91.5
Minor text fixes
Change version number to 91.5 build 330

From build 53:
Fix crash when using custom lua elements and the favorites menu at the same time
Allow favoriting elements from the search UI
Hidden elements now show up in the favorites menu
Heart icon now shows on selected favorited elements
I compiled this snapshot two days ago but forgot to release it. Releasing it now, although 91.5 is out and I will do snapshot 54 in a few moments

From build 52:
RPEL's ctype sets the element it repels
Another fix for lua key events
MIX won't mix together elements with different states now
Add help text to favorite's menu tooltip when the list is empty
Allow using C/F for temperature in PROP tool
Fix LIFE tool sampling
Change version number to 91.4 build 329

From build 51:
New favorites menu icons

From build 50:
Limit MERC to valid .tmp range
Extra sanity check in STKM (could fix crash under extreme gravity)

From build 49:
Fix double screen dialog fail

From build 48:
Fix blank screen when hitting "Cancel" on double screen dialog
Minor performance increase
Make MIX tool work with liquids and gasses too

From build 47:
Less scary report message
Fix not being able to turn off FIND tool when a life element is selected
New Lua functions: tpt.num_menus and tpt.menu_enabled (allows hiding menusections)
Changes to allow mods to support the starcatcher build & update server (PM jacob1 for details)

From build 46:
Don't reset edge mode when saving local saves

From build 45:
Add favorites menu, by Me4502 (ctrl+shift+left/right click to add/remove)

From build 44:
Remove debugging thing that broke left ctrl

From build 43:
Fix first argument to lua keydown events when holding ctrl

From build 42:
Force a stacking check when undoing
Fix gravity field appearing after ctrl+z even if gravity is off
Update a few element descriptions

From build 41:
Update .life properly when using particle debug shortcuts
Change setting description, "3d glasses" -> "3D anaglyph"
Download now packaged with readme.txt and license.txt!

From build 40:
Fix 'n' toggle also resetting air
Fix first argument to keyup lua events
Fix ctrl/shift strength modifiers for MIX tool

From build 39:
Add MIX tool by Simon, mixes powders around, for landscapes

From build 38:
Add red/cyan 3D setting in options
THDR is no longer an energy particle
Some fixes to how edge mode / double scale mode are saved to powder.pref

From build 37:
Rewrite threading / http requests in save preview, should fix random crashes
Compile with -O3 again to fix false positive in AVG

From build 36:
Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience

From build 35:
Fix progress bar disappearing on hover in local save browser
Loop edge mode: allow particles to have velocities greater than the size of the screen
Stickman now has terminal velocity in loop edge mode
Don't remder AMTR as a gas

From build 33:
Compiled with -O2 instead of -O3

From build 32:
Remove beta flag, these snapshots will now match current tpt development while allowing you to upload saves

From build 31:
Prevent errors being printed to stderr when opening saves
New debug mode: tpt.setdebug(0x8). Enables subframe particle debugging. Alt+f will advance simulation by one particle, Shift+f will advance it to the particle under the mouse.

From build 30:
Change the first argument passed to lua keypress function, so that scripts can properly support alternate keyboard layouts
On first run, show a prompt when it automatically selects double screen size

From build 28:
Replace cajun (library used to parse json) with jsoncpp (a better library)
Note: some settings (render modes, deco color, window position) will be reset

From build 25:
Make jacobot / boxmein have blue nicks in save comments

From build 24:
Fix LIGH not defaulting to life of 30 with clones / console (separate t and v argument in create_part)

From build 23:
Fix FIRE still being able to go through powder wall (+ some other elements)
Prevent *all* Newtonian Gravity sources when inside a grav wall zone (lua + gravity tools)
Add ctrl+f shortcut to easily locate elements
Fix selected deco color being reset to 0x00000000 when loading a lua element

From build 22:
Change CRMC creation reaction from BREL + LAVA(CLST) to LAVA(QRTZ) + LAVA(CLST)

From build 21:
Newtonian Gravity sources inside of a no gravity grav wall zone no longer generate gravity
PHOT going through turned off GPMP turns into GRVT (GRVT .tmp depends on the GPMP temp)

From build 20:
Fix NTCT / PTCT / INWR triggering EMP blasts ...

From build 19:
Fix being unable to set floating point values in (broke scripts)
Fix STKM being unable to pick up most energy particles, or LOLZ/LOVE (broken in previous snapshot)
Redo EMP triggering to fix all lag when multiple EMP go off at once
Reduce ETRD lag (prevents most ETRD lag bombs)
Make sure ETRD can't conduct to particles before their .life cooldown period runs out

From build 18:
Ctrl+a support in labels
Use .Properties instead of .Falldown to determine if an element can move through walls
Revert FIRE, SMKE, and CO2 to a a .Falldown of 1, to fix movement in some saves
Remove all usage of .State
Make sure old lua scripts that still set .State still work properly

From build 17:
Fix crash when doing simulation = nil in console
Fix 'large screen' description
Overwriting a local save updates the reload button save now
Add "Saved Successfully" message when overwriting a local save

From build 16:
Readd "Unspecified Error" (removing it didn't help)

From build 15:
Fix flood fill delete on normal particles also deleting photons
Change shift+wind tool to not always act like alt was pressed
Remove "Unspecified Error"

From build 14:
Completely new build server
Now compiled with SSE2 (if you get a crash on startup, delete powder.pref and report it)
Fix a potential crash when messing with SOAP in the console

From build 13:
don't add extra newlines when downloading scripts via tpt.getscript
Only show wavelengths in HUD if there is at least one valid wavelength

From build 12:
Fix compatibility with stacked PSTN in older saves
Add LCRY, BUBW, TSNS, DTEC, and PSTN to .tmp2 HUD list

From build 11:
.tmp2 shows in the HUD for elements which use it

From build 10:
Fix really fast particles moving through EHOLE

From build 9:
Fix DLAY and CRAY with .tmp or .tmp2 set not loading correctly

From build 8:
Fix 'Prev' button placement (off by 1 pixel)
Fix liquids moving through walls with streamlines under them
CONV tmp value can now be used to set an element to be converted, no other elements will be(will break saves saved in previous snapshots with CONV(LIFE))
Warning here that since these are snapshots, saves you make in them may not load currectly in future versions

From build 7:
Fix json library failing to parse some json with invalid save titles
Fix edge mode not loading properly in saves
Fix options menu to show the edge mode the current save uses instead of the global one
Everything in snapshot 6:
New sim.gspeed function to set GoL speed
Fix empty save searches returning "Unspecified Error"
Show cursor when drawing even if mouse is out of bounds
Fix wall brush displaying incorrectly when drawing ctrl-boxes
Update last active tool & ctrl/shift state on mouse down
Reupload -> Re-upload

From build 5:
Fix DEUT absorption rate (broken in last snapshot)
More cracker64 efficiency improvements to FWRK, GLAS, PUMP, SING, URAN, and TTAN

From build 4:
Add minimumVersion flag to saves which has the minimum version a save is openable with
Show error message when opening corrupted stamps
cracker64 did a bunch of minor efficiency improvements to these elements: ARAY, BIZR, BOYL, BREC, CBNW, CLST =(, COAL, CRMC, DCEL, DEUT, EMP, QRTZ, SOAP

From build 3:
No longer error when opening saves from a newer version
No longer allow opening corrupted saves and voting on them
Adding a comment updates the total number of pages
Prevent element buttons from glitching out when names are longer than 7 characters
Support longer changelogs

From build 2:
Fix DRAY not working if the first space was empty
Improve / Fix DRAY .ctype
Fix creating WIND from Lua, fix crash with sim.floodWalls(1,1,4,0)

From build 1:
Initial version