# Nodalin

A creative node-based system for building real-time animated graphics; in the browser.

## Changelog

- 1.9
    - Microphone input leakage on recording fixed.
    - Layered network-error handling
    - Error reporting fixing session

- 1.8 
    - Major refactor of instancing 
    - 3d primitives can now be rotated with Field

- 1.7
    - * new * Remap node

- 1.6
    - Displace node now has a second optional "background" input
    - Fixed displace node alpha calculations

- 1.5
    - Add nodes in-between a connection
    - Various fixes 

- 1.4
    - Direct manipulation of effects and procedural in the render view

- 1.3
    - preserve previous property value when switching via the connection menu
    - Updated Trail effect quality
    - InstanceIndex on Grid returns current instance origin
    - * new * Trail translate mode
    - Safari export fix
    - Audio service optimizations

- 1.2
    - * new * Previous node

- 1.1.9
    - Intergrade with Pexels API

- 1.1.8
    - UI font update

- 1.1.7
    - Switch to .app

- 1.1.6
    - Major code refactor of the context menu
    - Fixed Type node menu layout

- 1.1.5
    - "Show more" on Giphy search
    - Invert on Adjust node
    - Gate on Audio node
    - Type node serialization fix
    - Correct audio device reactivation to last selected
    - Type node fonts

- 1.1.4
    - new Type node
    - automatic addition of demo loop
    - icon for audio reactive projects

- 1.1.3
    - Presentation builder
    - ISF based nodes fixed when working with Fields

- 1.1.2
    - Blur and Bloom radius correction

- 1.1.1
    - Audio asset fixes and demo loop

- 1.1.0
    - new Adjustment node
    
- 1.0.9
    - Audio assets import
    - Audio Node v2.0
    - Node sub-categories
    
- 1.0.8
    - Fixes and optimizations

- 1.0.7
    - Video Node & video imports
    - Image new property: assetIndex
    - Sanitised metadata while saving 

- 1.0.6
    - Instanciated images can now used with Field

- 1.0.5
    - Introducing image assets imports

- 1.0.4
    - Number Operand secondary input

- 1.0.3 
    - Similuation foundation
    - Lock Color Field

- 1.0.2
    - Sharing settings

- 1.0.1
    - Launch bug fixes

- 1.0.0
    - First public release

- 0.7.3
    - Stripe integration

- 0.7.2
    - Premium features overlays
    - Pricing cards
    - Testimonials

- 0.7.1
    - Custom and Native Resolution
    - MP4 muxin fixes
    - Optimising Recording settings

- 0.7.0
    - Bug fixes
    - Optimising saving sizes

- 0.6.9
    - Direct bundled imports for shaders

- 0.6.8 
    - Presentation View mode and embeds
    - Sharing modal
    - Thumbnail migration
    - Recording settings

- 0.6.7
    - Extensive refactor and Controller extracting off the App shell
    - Prettier canonical URLs for projects

- 0.6.6
    - Error reporting review and cleanup pass
    - Signal & Noise rotation fix
    - Various optimizations and fixes
    - * new * Retro node

- 0.6.5
    - Startup dashboad
    - Reset settings & warnings
    - User account settings

- 0.6.4
    - * new * Polygon node
    - Maximum call stack fix

- 0.6.3
    - * new * Noise node
    - Signal node property Offset renamed to Level
    - Even mode zindex fixes "instance shape's z-index governs entirely."

- 0.6.2
    - Introducing global timing clock to retain modulation speeds at different target FPS
    - Updated Wave node duration to seconds
    - Updated Counter node to increment with timing
    - Optimised color sampling
    - Critical fixes on rotation
    - Various optimisations


- 0.6.1
    - Properties Menu deep refactoring
    - Layers reordering modal

- 0.6.0
    - Direct property selection upon connecting nodes
    - Smarter connection menu placement

- 0.5.9
    - Animated Gif boomerang
    - Icon view in Available Nodes modals
    - Smarter Properties menu placement
    - Project list view
    - Example project filtering by category
    - Text node info toggle as project description
    - Ordered beginner examples

- 0.5.8
    - * new * 3D Wireframe Nodes
    - Massive refactoring of Field and Instancing system
    - Various improvements across the board

- 0.5.7
    - Default aspect ratio in settings
    - Counter node limit
    - Fields
    - Color node sampling

- 0.5.6
    - Fixed Text nodes UI
    - Better keyboard shortcuts
    - Fixed inconsistency in verbiage
    - Correct URL when save
    - Group selection

- 0.5.5
    - Grid ripple and glow effects for UI
    - Better menu positioning
    - Scrollable value boxes on context menu
    - Shift modifier for fine-grained control 

- 0.5.4
    - Spatial hash culling - Removes overlapping instances
    - LOD culling - Reduces density when instances are too dense
    - Fixed branching of instancing chains (again)

- 0.5.3
    - GPU instancing refactoring
    - Viewport culling
    - Cleaner codebase

- 0.5.2
    - UI polishing
    - Reset to Defaults
    - Reset to Initial state
    - Nodes Duplication with/without connections
    - Fixed copy/paste/delete and undo to work with states
    - Fixed branching of instancing chains

- 0.5.1
    - Refactored modal visibility code
    - Connection cancellation before node deletion
    - Fixed zindex accumulation between projects
    - Better Undo history (one history entry per interaction)

- 0.5.0
    - Comprehensive logging to help diagnose FF mp4 export errors 
    - Keep context menu open while auditting text options
    - Project rename now prompts to save as new copy or rename current
    - Tracking unsaved changes
    - Clear extended render view on new project
    - Transparency on extended render view
    - Image node now features a preview
    - Context menu for Number and Text nodes
    - Various UI fixes

- 0.4.9
    - Viewport aware renderview sizing
    - MP4 export improvements
    - Reviewed zero value handling on node properties
    - Fixed angle related issues on ISF-based effects
    - Image node now accepts external image URL
    - Mouse node support on extended view
    - Extended render view toggle in Settings (peristance on reload)
    - Enhanced interactivity of the example projects
    - Trail now support emanation point input

- 0.4.8
    - Extended display mode
    - Sources and Effects branching is now allowed
    - MP4 encoder

- 0.4.7
    - * new * Displace node
    - Node icons update
    - Search and keyboard navigation in Available Nodes menu

- 0.4.6
    - Signal & image origin normalisation fix
    - * new * Kaleido(scope) node
    - Checks for common integrated GPU
    - Checks for WebGL and hardware acceleration

- 0.4.5
    - Pre-beta optimisations

- 0.4.4
    - Intergrading documentation
    - New keyboard shortcuts to zoom and bring up the Node Details view
    - Various improvements
    - Post node now features opacity and blend mode properties.

- 0.4.3
    - Signal node now accepts Color nodes to set the low and high hues.
    - Signal now features a radial mode.

- 0.4.2
    - * new * Signal node
    - * new * Audio in node
    - MIDI settings optimisations

- 0.4.1
    - Number extracts X/Y coordinates from Point, Shapes Nodes and Hue from Color nodes.
    - * New * Mouse node
    - Point node now features easing
    - Various fixes

- 0.4.0
    - Switching to 16:9 for fullscreen
    - Detachable Render view to support projectors and dual monitor setups.
    - Optimised standalone loading.

- 0.3.9
    - Trail node now renders back or front of input based on the "front" property.
    - Trail node now also supports shape or world center pivot.
    - !! Added 3D rotation node !!
    

- 0.3.8
    - Context menu better slider interaction
    - Significant video recorder quality improvements
    - Node name display on hover

- 0.3.7
    - ISF support!
    - Node list family filter

- 0.3.6
    - Connection menu to switch between properties!
    - Fixed forgot password
    - Improved and secured logging out
    - Fixed gif transparency glitches
    - Optimised loading of projects list and projects
    - Various UI improvements

- 0.3.5
    - Fixed mid-chain instancing effects. 
    - Fixed line start & end coordinates when using point nodes.
    - Optimised Grid node data saving.
    - Several bug fixes and optimisations.
    - Better handling of browser extentions related errors
    - Better handling of network disconnection
    
- 0.3.4
    - Themes
    - Preliminary standalone export testing on Windows & MacOS

- 0.3.3
    - * New * Grid node, with true WebGL instancing support.

- 0.3.2
    - MIDI support and * new * MIDI CC node!

- 0.3.1
    - * new * Image node with Giphy search support!

- 0.3.0
    - WebGPU preliminary support
    - Persistent settings
    - Fixed transparent background
    
- 0.2.9 preview
    - Context menus

- 0.2.8
    - * New * Post Node - Get the final or previous frame as a texture, supporting 3 configurations.
    - Additional blending modes to the blend node, including "difference" and good'ol "dissolve".
    - Enabled blend node to receive a texture as an input to create feedback loops!
    - UI improvement: The chain of renderable nodes is now highlighted in the graph.
    - Selected blending modes, wave types, etc now highlighted in node context menu.

- 0.2.7
    - Easy wave type change with right click
    - Fixing z-index ordering for instancing groups with effects
    - Blur node deep refactor
    - Major upgrade of the rendering quality.
    - Major refactor of the renderer - noticable performance improvements.
    - * new * Blend node! - Still under development.

- 0.2.6
    - Persistent error reporting system
    - (More) accurate Wave node display
    - Shader async loading
    - Feedback button
    - Alpha test preperations
    - Early testing fixes and improvements
    - Email registrarion transactional fix / avoid spam flags
    - Quick start project, instead of random example

- 0.2.5:
    - Onboarding flow & invitation system
    - ** new ** Line node

- 0.2.4:
    - * New * Bloom Effect node !
    - Better random example loading
    - Initial Mobile support
    - * New * Select instance by index
    - * New * Wavetypes
    - Better Keyboard shortcuts
    - copy/cut/paste

- 0.2.3:
    - Fixed node grid snapping
    - Larger zoom in/out
    - Blur node radius sets to 0 if u or v are connected
    - Contextual loading indicators
    - Text Node creation bug fixed
    - Text Node better text wrapping
    - Uncontrolled feedback avoidance mechanisms (e.g between shapes or effects)
    - Nodes documentation
    - App preloading
    - Bug fixes and optimisations
    - User projects list can directly be opened by the URL app.nodalin.app/u/username/
    - Projects can be opened by the URL app.nodalin.app/p/project_id
    - New keyboard shortcut "H" to automatically center the graph and zoom to fit
    - Streamlined google one tap sign in
    - removed _shouldClearBeforeGroupEffect() method

- 0.2.2:
    - Browsing Example projects
    - Shape instancing branching
    - Fixed visibility issue with multiple instancing groups
    - Ensured all instances from different groups render correctly

- 0.2.1:
    - Shuffle example projects
    - Restricted usernames
    - Username and avatar display
    - Optimised project list loading

- 0.2.0:
    - Added composite render to better support effects on instancing groups

- 0.1.9:
    - Effects system overhaul: group effects like blur and trail now respect individual shape modules and preserve input fidelity.
    - Improved framebuffer handling: smarter clearing logic prevents unintentional smearing or alpha artifacts.
    - Fixed: shapes outside effect groups no longer get blurred or affected incorrectly.
    - Cleaned up internal render logic for better separation between individual and group module application.
    - Miscellaneous optimizations and debugging improvements.

- 0.1.8:
    - Added outline support
    - Trail effect now supports scaling!
    - Chromatic aberration effect now renders correctly
    - Fixed source shape visibility issue for instances

- 0.1.7:
    - Code base refactoring

- 0.1.6:
    - URL handler basic infrastructure & URL parsing (not yet active)
    - *New* Text Node.
    - Number node can now do basic math operations.

- 0.1.5:
    - Saving & Loading project per user
    - Aspect Ratio saving and restoring
    - Metadata for remix initial code
    - Preparing for Alpha Testing
    - Added Shuffle, Randomize, and Export buttons
    
- 0.1.4:
    - Better error handling and reporting
    - Reviewing and cleaning up the code
    - Settings view

- 0.1.3:
    - User registration and login.

- 0.1.2:
    - Introducing Triangle node
    - Isolated trail effect instances
    - Optimised renderer to work with transparency
    - Temporarily disabled transparency setting & transparent video exports
    (needs so more care)

- 0.1.1:
    - Global error handling and error reporting
    - Transparency setting - while ON the videos will be recorded with transparent background.
        - Added trasparency checkers pattern
    - Overhauled Video Recordering.
    - Aspect Ratio options
    - Fullscreen render support
    - Exposed current dimensions to nodes; 
        - will be useful to create responsive nodes. So far used in Bounce node.

- 0.1.0:
    - Introducing Wave node
    - User email registration and google one-tap sign up
    - API auth endpoints
    - Several UI enhancements including:
        - Node shapes to distinguishing node families
        - Animated connection lines indicating data streaming
        - Nodelist display available properties per node, with description and default values
        - Information modal toggler for each node, showing its family, outputs, and description.
        - Visibility toggle for Shape and Effect nodes.

- 0.0.9:
    - New node location indicator
    - Fixed trail node antialiasing
    - Onboarding flow improvements
    - Automatic FPS calibration system
    - Movie export - WebM for Chromium browsers
    - Resizable Render Window

- 0.0.8:
    - Navigation Toolbar
    - FPS monitoring
    - Renderer deep optimisation
    - made this file public at app.nodalin.app/changelog.md
    - Disabling visibility for instancing group's parent nodes
    - Bounce node now supports instancing
    - Cyclic values for Saturation and Luminosity in Color node
    - Project name generator

- 0.0.7:
    - Chromatic aberration Node (use it with blur node)
    - Trail Node (apply it on moving shapes)
    - Splash Screen & visual enhancements

- 0.0.6:
    - WebGL modules System is now fully modular and can be used to create custom modules
    - Instructions on how to create new module nodes can be found in /docs/Module Nodes Guide.md 
    - Image node (Beta)
    - Introducing z-index system

- 0.0.5:
    - Blur node now implements directional blur (u,v,radius)
    - Switched from box to Gaussian blur kernel
    - Added Texture Manager and refactor module system

- 0.0.4c:
    - Optimising the webGL renderer
    - GL modules now work on instances too
    - Bug fixes

- 0.0.4b:
    - WebGL Shader Manager & WebGL modules System
    - GL modules would now work per shape and also if chained 
    - Introducing Blur Node

- 0.0.4:
    - Transition from 2D canvas to webGL

- 0.0.3b:
    - Refactoring colors & bugs fixes
    - UI scaling compensation of zoom in/out
    - Zooming for trackpad and by CTRL/CMD + mouse click & drag (Wacom tablet)

- 0.0.3:
    - Automatically avoid overlapping nodes
    - Zoom in and out ( with mouse wheel / to-do: track pad)

- 0.0.2:
    - Canvas drag easing
    - Node grid snapping (key 'G' to toggle)
    - Error catch on connecting Point node to an instance shape node

- 0.0.1:
    - Initial release
    - Basic nodes and graph processing
    - Renderer (2D canvas)
    - Saving and Loading .nod files
