0.3.0-WR3 2026-05-20

=== core ===
[+] new logo
[+] next-generation tweening with KinetixNG
[+] next-generation sliding camera model
[+] made Frame iterable over Frame._ls
[+] sprite() to draw a centered image
[+] block() to draw a centered rectangle 
[+] normal [0..1] coordinates in scope with nx(), ny(), nb()
[+] cmap() in the root context
[+] gammaCorrect(), bias(), gain() and boxstep() in math
[*] redefined math.normalizeAngle() and included math.biNormalizeAngle()
[+] included normal and bipolar distribution functions in random number generators - rndn(), rndg(), rndb()
[*] LabFrame .on(), .off() and .emit() to simplify event processing
[*] renamed Mod on()/off() -> activate()/deactivate() to avoid name clash with event processing
[+] LabFrame.pickArea()
[+] Frame.attachAll() and .detachAll()
[*] normalized LabFrame pick flow, optimized .poke() and .pick()
[+] introduced node unplug(), onTouchBy() and onShadowBy() handlers
[*] moved z-ordering out of evo() to LabFrame.attach()
[*] introduced negative Z in the Z-order
[+] introduced Frame.locate() as the future replacement for Frame.selectOne()
[+] introduced Frame._attachPolicy
[*] included x/y/w/h & width/height properties in /lab
[*] improved chain() function chaining with .list() and .dechain() submethods
[*] extended the log.dump() format
[+] pods list processing in spawn()
[*] introduced the dna registry and .spawn() by the plain name
[*] respawn-aware kill
[+] sys.killAll()
[+] trap/connect() to catch first user interaction
[*] custom canvas in img.screenshot() and img.screenshotArea()
[+] sys.attachCanvasToRenderingSurface
[+] migrated sound system core to Web Audio
[+] listed included fonts on the scenegraph
[*] realTime value propagated to all submod environments
[*] recursive touchParent() to properly patch nodes
[*] ability to create a buffered mod with env.config instead of a "-buf" suffix
[*] adapted scale() to receive a single argument
[+] included /job nodes into evo() processing
[+] included definition parent __ in the scope
[*] released _ and _$, introduce __$ instead
[*] renamed Mod.___ -> Mod.__$
[+] introduce default traps for uncaught signals
[*] include handling of __.disabled, ignore and mask sets in subtraps
[*] extended input types for rgb/rgba/RGB/RGBA root scope functions

=== hud ===
[-] fixed Hud dynamic list rendering
[+] Container.onMouseExit()
[+] Hud onMouseRelease() handler
[*] adjusted Hud and Container onMouseUp() handling
[-] fixed onMouseDrag() and onMouseMove() for Hud

=== expect test system ===
[+] expect.hasLength() assert
[+] expect .toMatch() and .toContain()
[*] accept typed arrays in expect.isAnyObject()

=== bugs ===
[-] fixed math.rnde() array check
[-] fixed null cases in Frame apply(), applyAll() and collide()
[-] fixed LabFrame pick()
[-] fixed fill/stroke sequence in /alt
[-] fixed the scope problem in alt/on()
[-] fixed dna._locate() parent mod access bug

=== cli ===
[+] added jam env command and JAM_MODULES env variable
[+] introduced JAM_HOME env variable
[*] defined rootConfig.json and redefined config.json
[+] ability to list multiple files in --lab monoLab mode
[*] provided web socket interface along with express app in hub/boost
[*] improved scanner/loader output format

=== docs ===
[*] include Nunito as the main font
[.] updated getting-started man page
[.] canvases man page
[.] multiple man updates to reflect the latest API changes




0.2.0-WR2 2025-10-14
[+] gadget/Console command history
[+] new LabFrame coordinate translation interface
[+] ability to set a custom evoParticle() in Emitter
[+] signal() and improved propagation logic
[+] /trap/start signal when starting the mix
[+] predicate in extend()
[+] new functions in expect - notToBe(), notToBeNear(), isNot(), notNull() -> isNotNull()
[+] added dir() to the global scope
[+] pointer lock change and pointer lock error events handling
[*] dist() => distance() in hud.Container
[*] renamed onAttached() -> onAttach()
[*] test for a typed array in isArr()/isArray()
[*] ability to spawn inside an orphan node 
[*] moved sfx() implementation to sys.sfx() with alt.sfx() just dispatching to it or lab/sfx()
[*] optimized Frame.collide()
[*] test for a container parameter in mixin()
[*] refactored Frame.detach logic and introduced Frame.detachSelf()
[-] removed pervasive _ current mod pointer in each node
[-] loaded resource tracking and fixed font naming for Firefox
[-] fixed MonoContainer onClick() processing
[-] fixed @depends and early _keyActions access
[-] fixed array exports



0.1.0-WR1 2025-03-22
[+] air raid alert monitoring and notification while in the debug mode
[+] webgl layer canvas and gl in the mod context
[+] expect test framework
[+] included math and color in scope
[+] introduced clamp(), fract(), trunc(), exp(), length(), sign(), step(), smoothstep() in the context
[+] otf, woff and woff2 font support
[+] blob file loading - raw/bin/dat/blob
[+] multiple switchable styles in the online help
[+] pixelated()
[+] renamed len -> hypot to match JS conventions
[*] renamed dist() -> distance(), vmap() -> remap(), limit() -> clamp() to be shader-compliant
[*] fixed and renamed rndfi() -> rnda()
[+] NativeRNGSourceFactory in math
[+] QUARTER_PI in the context
[+] EPSILON precision factor in the context
[+] TileSet.clone()
[+] blur and focus traps
[+] implicit trap chaining and subtraps
[+] Frame.xlink() for exclusive linking
[+] toDataURL(), downloadDataURL() and toPlainTextURL() in lib/obj
[+] /pin global frame
[+] _evoSpeed factor
[+] kinetix oscilators, 'exclusive' and 'follow' key options
[+] ability to set a custom DNA in Frame.touch()
[+] sys.mv()
[+] man/m jam command
[+] boot error sfx
[*] "Developing with Collider.JAM" message now in the --debug mode
[*] verbose version
[*] release and version information in the online help
[*] moved color shifting routines out of the global scope to the color object
[*] updated extend/augment/supplement logic, additional assert tests
[*] Frame.selectInstanceOf -> selectInstancesOf
[*] normalized type probe functions, math.fract()
[*] added LabFrame activate/deactivate, enable/disable and removed *All() functions
[*] externalized meta parser into the pre-eval handler to reduce total batched eval time
[*] units loading order pretty print
[*] config pretty print in the console
[*] refactored wormhole bootloader configuration structure
[*] introduced env._touched flag to hold sound effects
[*] function shadowing for meta info
[*] optimized degToRad and radToDeg
[*] upgraded test output
[*] eval rescheduling on missing requirement
[*] resettable boot loader
[*] Emitter's ability to reignite
[*] refactor obj utils to fix name collision problem
[*] dead flag in kill()
[-] removed mix()
[-] fixed lerp() logic to be shader-compliant
[-] fixed the shape flag bug
[-] fiked Emitter with particle spread = 0
[-] fix color mix-up bug in the alt/fill() function
[-] removed deprecated coord methods in SlideCamera
[-] fixed SlideCamera event injection by moving sys.after() -> trap.on()
[-] fixed Hud event handling by moving from sys.after() -> trap.on()
[-] fix a memory leak in the wormhole bootloader's segments
[-] fixed slide camera target zoom
[-] fix custom extension locator
[-] a hack to remedy the tile gap
[-] fixed Container onMouseMove and onMouseWheel
[-] fixed object patching
[-] fixed unable to find dependency handling
[-] fixed evalJS error handling



0.0.11-DR10 2020-04-05
[+] included log.list() and log.trace()
[+] disableOthers() and enableOthers() in mods
[+] obj.toData() utility to simplify serialization
[+] local/global coordinate transformations for tiles
[+] color manipulation with lighten(), saturate(), shiftHue()
[+] translate colors with color2rgba(), color2RGBA(), rgb2hsl(), RGB2HSL()
[+] array utils with next() and prev()
[+] trap debug console command
[+] help content download on F2
[+] planets.sample
[*] info.json data for samples
[*] disable other mods while the debug console or node inspector is active
[*] unify event handling for mixin function - augment()/extend()/supplement()/mix()
[*] optional delay in seconds in defer()
[*] matched RNG interface with scope rnd/RND functions
[*] proper aspect rate in image inspector
[*] tags support in help metadata
[*] isClass() classifier and parsing of class metadata
[*] keep Z-order for all Frames by default
[*] the plot() call renders a centered dot now
[*] _dna is no longer just a name, but links to an actual DNA object now
[*] spawned objects include _DNA name now
[*] iv2 vector functions are renamed to v2
[*] _sizable flag renamed to _rectangular
[*] proper object names in help metadata
[-] fixed infinite loop in malformed markdown
[-] fixed SlideCamera viewport test
[-] fixed isNumber() implementation
[-] fixed local/global coordinates mapping for containers
[-] fixed sfx multichannel upgrade problem
[-] fixed Hud trap injection to target local (instead of global) mod



0.0.10-DR9 2020-11-24
[*] $ is redefined in the mod scope to shadow the global one
[+] rndo() 1/0 random value multiplicator
[+] game time tracking in env.time
[+] empty and sample mod prototypes
[*] defer() is applied in kill() by default
[+] included 'jam ca' shortcut to clean all
[*] help and readme updated
[+] pong tutorial
[+] ``` code block support in markdown
[-] onSpawn() double-call issue is fixed



0.0.9-DR8 2020-10-08
[+] jam new command with a bunch of prototypes ready for creation
[*] local package.json/node_modules are used by default unless --global is specified
[+] improved help coverage
[+] console commands to navigate the mix - ls, cd, cmd, kill, select, exit
[*] moved kill() and killAll() to LabNode
[-] fixed missing module.path problem in jam help
[*] improved SlideCamera
[*] run setup() on all nodes in /lab on start
[+] multichannel sfx is enabled by default in standard sfx()
[+] math.normalVector() implementation
[+] mutable array-based 2d vector in /lib
[+] immutable object-based 2d vector  in /lib
[+] custom shape node within(x, y) support in pick() and hud
[+] require() implemented
[+] gtrap() to trap globally from included mods
[+] defer() function to schedule function calls
[+] Frame.flatMap() implementation
[+] on...() events handling in /lab
[+] onSpawn() now called for all spawned nodes
[+] select() and selectOne() included in global scope
[+] support of deep selection by instanceof, name and id in select/selectOne
[+] support of randomly placed * patters in select/selectOne path
[-] fixed mouse event button parameter
[-] fixed bearing() function
[-] isMutable() retired - no actual use for it anyway



0.0.8-DR7 2020-08-19
[+] major help enhancements
[*] optimized help loading speed
[*] updated help style
[+] list support in help markdown
[+] links support in help markdown
[+] embedded images support in help markdown
[+] headers support in help markdown
[+] SlideCamera smooth zooming and lookAt()
[+] _circular and _centered flags
[+] assert() with type refines is included in scope
[*] /res, /lib and /dna supplements for boxes
[+] onAugment() and onSupplement() handlers
[-] fixed spacing in comments meta
[-] fixed help metadata for auto-exported constructors
[*] included mouse/touch event handling for non-sizable components
[-] fixed LabFrame.pick() bug
[-] fixed event data in mouseDown
[-] fixed event coords transformation for zoomable nodes



0.0.6-DR6 2020-07-04
[+] jsDoc-style type metadata extraction
[+] autocomplete end-points with help metadata on the jam server
[+] kinetix animation subsystem
[+] mono-file playground.mod editor on F7
[+] Frame find(), filter(), reduce(), reduceRight(), applyAll() methods
[+] basic-style print(), input(), say(), ask() and cls() in scope
[+] sleep() for convenient async in scope
[+] sys.extend() function for shallow augmentation
[*] automatic fast boot in debug mode
[+] postBoot trap
[+] Z-ordering for mods
[+] keepFollowing and pinOnTarget flags on SlideCamera
[+] dynamic function patching of spawned objects on file update
[+] select, one, clear, kill and sync console commands
[-] fixed unit path resolution on Windows
[-] fixed touch capturing and end traps
[-] fixed hidden and disabled components handling on the HUD
[*] automatic skip of .hidden files on unit scans
[+] manual unit .include to map an arbitrary folder as a unit
[+] ignored paths in mapping
[+] new unit mapping scheme with map.json/remap.json
[+] included default fav icons
[+] sys.enableBox() helper function
[*] renamed angle() to angleTo()
[*] renamed targetAngle() to bearing()
[*] renamed close() to closePath()



0.0.5-DR5 2020-06-01
[+] gif files autoload support
[*] upper-case extensions
[+] map.json and remap.json configurations
[+] optional units and include the list in the scan man
[*] proper scan for mods and fixes in modules
[*] run all functions in /setup and all setup* functions on startup
[+] --pregen/-g option to run a pregenerated package
[*] sketch packaging updated
[-] width() and height() functions removed to avoid global namespace pollution



0.0.4-DR4 2020-04-28
[+] *.spawn.js entities autospawn
[+] custom post-processors for *.js and *.json files
[+] execute all *setup() functions on start
[+] enable background by default
[+] poke() and pick() support in lab frames
[+] getMod() in frames
[+] dynamic Z-sorting in lab frame
[+] masked and ignored traps
[+] get a custom random source with the ability to set the seed
[+] mod and lab control (pause, resume, hide, show etc)
[+] run mixes in sketch mode
[+] translate, scale and rotate nodes
[+] mod transitions
[+] flexible font() function with separate handling of fonts and sizes
[+] *.ogg and *.mp3 files support
[+] jam command shortcuts
[+] -y/--types option to generate types metadata
[*] migrated mods from collider-debug.mix to collider-dev.mix



0.0.3-DR3 2020-04-01
[+] new wormhole bootloader
[+] jam --release flag to ignore debug dependencies
[+] shuffle() array in lib/math
[+] mod.disabled flag to ignore traps on mod-level
[*] updated manual pages
[*] improved node inspector navigation (F2)
[-] fixed collider.jam module path determination (F1)
[-] fixed Firefox compatibility
[-] fixed Safari compatibility



0.0.2-DR2 2020-02-29
[+] help mod with metadata auto scan
[+] new node inspector
[+] hot code reload
[+] boxes subsystem
[+] alt node for in-scope values
[+] extended default in-scope functions and objects
[*] new module structure
[-] multiple bug fixes



0.0.1-DR1 2019-09-27
[!] first public release
[+] core scene structure
[+] game lifecycle
[+] main game loop
[+] entities spawning
[+] resources auto-loading
[+] customized scope code evaluation
[+] basic libraries including math helpers
[+] rudimentary hud subsystem
[+] debug tools - log, status info, console, explorer
[+] web packaging
[+] electron packaging



