# Changelog

## 1.4.1

- **`[Updated]`** interactive audio example demonstrates effects, streamed music, looping, pause, mute, and volume controls.
- **`[Fixed]`** initial Wayland size events no longer change the logical size of non-resizable canvases or detach their buffers.
- **`[Fixed]`** detach commits pending buffer changes before releasing the attachment.
- **`[Fixed]`** duplicate size events do not detach buffers when the logical canvas size is unchanged.

## 1.4.0

- **`[Added]`** sprite sheets and time-based animations with looping, pause, reset, and one-shot playback.
- **`[Added]`** texture cropping, scaling, rotation, flips, opacity, filtering, and unloading.
- **`[Added]`** SVG loading from files or bytes, with optional rasterization dimensions.
- **`[Added]`** rectangle, circle, point, intersection, and penetration collision helpers.
- **`[Added]`** SDL_mixer audio for WAV, MP3, OGG, and FLAC effects, plus streamed music, volume, pause, stop, and looping.
- **`[Added]`** synchronous drawing batches and a paced frame loop with elapsed time and configurable frame limits.
- **`[Added]`** SDL window handlers, unsubscribe functions, resize support, and cancellable close requests.
- **`[Fixed]`** the resizable option now enables interactive window resizing.
- **`[Changed]`** texture dimensions and fonts are cached; temporary text and screenshot resources are released.
- **`[Changed]`** audio and canvas have separate lifetimes; only one Audio instance may be open at a time.
- **`[Changed]`** Mario replaces game.js and demonstrates platforming, shared collisions, animations, effects, and an original OGG background track.
- **`[Added]`** separate animation, audio, SVG, window-event, and rendering benchmark examples.
- **`[Updated]`** Windows packages include SDL_mixer, codec dependencies, and licenses; CI verifies installation from the packed release.

## 1.3.8

- **`[Fixed]`** Windows x64 SDL libraries and upstream licenses in the npm package.
- **`[Added]`** packaging validation and Windows installation tests against the packed release.

## 1.3.7

- **`[Added]`** framebuffer filters with `Canvas.applyFilter`
- **`[Updated]`** Node.js build dependencies and TypeScript; Node.js 22.22.2+, 24.15.0+, or 26+ required
- **`[Fixed]`** persistent canvas framebuffer preserves pixels after display for drawing and filters
- **`[Fixed]`** filters now display their output and detach when callbacks throw
- **`[Fixed]`** framebuffer byte indexing, scaled reads, texture row padding, and attached buffer lifetime
- **`[Fixed]`** window close clears rendering timers
- **`[Fixed]`** Linux library discovery through pkg-config
- **`[Fixed]`** release packaging compiles JavaScript and removes the self-dependency
- **`[Changed]`** retained deprecated pixel-format methods for compatibility

## 1.3.6

- **`[Fixed]`** Linux SDL library lookup

## 1.3.5

- **`[Added]`** get mouse position
- **`[Added]`** remove default decoration option
- **`[Changed]`** deprecated all gets
- **`[Fixed]`** scale

## 1.3.4

- **`[Added]`** close window and end loop
- **`[Fixed]`** detach

## 1.3.3

- **`[Added]`** move layer
- **`[Added]`** attach buffer to video memory
- **`[Added]`** PixelFormats class
- **`[Changed]`** get layers returns the layer in order of appearance
- **`[Fixed]`** optimizations for path drawing
- **`[Fixed]`** memory leak
- **`[Fixed]`** fixed a problem with RGB888 format

## 1.3.2

- **`[Added]`** antialiasing
- **`[Fixed]`** DPI scale for Windows

## 1.3.1

- **`[Added]`** activate / deactivate layers
- **`[Changed]`** get width and height
- **`[Changed]`** convert to polar coordinates static
- **`[Fixed]`** layer bland mode

## 1.3.0

- **`[Added]`** layers
- **`[Added]`** get fps and frametimes
- **`[Changed]`** project compilation

## 1.2.2

- **`[Added]`** path
- **`[Fixed]`** general optimization

## 1.2.1

- **`[Added]`** texture drawing
- **`[Added]`** polar coordinates conversion
- **`[Added]`** the possibility to get the screen resolution
- **`[Added]`** the possibility to get the resolution of a texture
- **`[Added]`** the Resolution type

## 1.2.0

- **`[Added]`** text drawing
- **`[Added]`** arc drawing
- **`[Added]`** constant positions relative to the canvas
- **`[Added]`** new colors

## 1.1.2

- **`[Fixed]`** Linux compatibility

## 1.1.1

- **`[Fixed]`** Linux compatibility

## 1.1.0

- **`[Updated]`** removed unnecessary files for the release

## 1.0.9

- **`[Updated]`** Linux compatibility (stable)

## 1.0.8

- **`[Added]`** loop event
- **`[Added]`** optimization
- **`[Added]`** on keys up/down events
- **`[Fixed]`** general optimization

## 1.0.7

- **`[Added]`** Linux compatibility (beta)

## 1.0.6

- **`[Added]`** on click event
- **`[Added]`** on key down event
- **`[Added]`** on key up event
- **`[Updated]`** added fill parameter in `drawRectangle`
- **`[Fixed]`** clear canvas

## 1.0.5

- **`[Added]`** scale option in `CanvasOptions`
- **`[Added]`** get scale method

## 1.0.4

- **`[Added]`** dump JPG to save the canvas as a JPG file
- **`[Added]`** dump PNG to save the canvas as a PNG file
- **`[Added]`** the possibility to get the color bit depth
- **`[Added]`** the possibility to set the color bit depth

## 0.1.10

- **`[Added]`** draw rectangle

## 0.1.9

- **`[Added]`** load JPG to load a JPG image into the canvas
- **`[Added]`** load PNG to load a PNG image into the canvas
- **`[Added]`** the possibility to load raw pixels


## 0.1.3

- **`[Added]`** the possibility to clear the canvas

## 0.1.0

- **`[Added]`** show and hide the window
- **`[Added]`** change background color
- **`[Added]`** sleep
- **`[Added]`** draw single pixels
- **`[Added]`** draw lines
