# Changelog

All notable changes to this project will be documented in this file.

The format is based on **[Keep a Changelog](https://keepachangelog.com/en/1.1.0/)**, and this project adheres to **[Semantic Versioning](https://semver.org/spec/v2.0.0.html)**.

---

## [Unreleased]

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.3.3] - 2026-07-01

- **Added**
  - (placeholder)

- **Changed**
  - Refreshed the published dependency baseline to `@plasius/gpu-shared@^1.0.2`, `@playwright/test@^1.61.1`, and `eslint@^10.6.0`.

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.3.2] - 2026-06-22

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.3.1] - 2026-06-22

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - Made WGSL browser-runtime validation a CI-enforced gate so shader compilation can no longer pass only through a locally skipped Playwright path.

- **Security**
  - (placeholder)

## [0.2.18] - 2026-05-13

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.17] - 2026-05-13

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.16] - 2026-04-02

- **Added**
  - Contract tests that keep the demo on the public `@plasius/gpu-shared`
    browser import surface.

- **Changed**
  - Updated the README to describe the live 3D queue-driven validation scene
    and visible DAG scheduler state correctly.

- **Fixed**
  - Removed the demo's deep import of `@plasius/gpu-shared` internals in favor
    of an import-map-backed package import.

- **Security**
  - (placeholder)

## [0.2.15] - 2026-03-23

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.14] - 2026-03-14

- **Added**
  - `createDagJobGraph(...)` now derives `priorityLanes`, `jobIds`,
    `unresolvedDependencyCount`, and `dependentCount` so host code can size
    multi-root ready queues and inspect dependency fan-out directly.

- **Changed**
  - DAG scheduler docs now describe the host-side graph contract in the same
    terms as the GPU ready-queue implementation.
  - Updated GitHub Actions workflows to run JavaScript actions on Node 24,
    refreshed core workflow action versions, and switched Codecov uploads to
    the Codecov CLI.

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.13] - 2026-03-13

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.13] - 2026-03-13

- **Added**
  - (placeholder)

- **Changed**
  - Git-based installs now run `prepare` so built `dist/` assets exist when
    downstream packages pin the queue repo directly.

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.13] - 2026-03-13

- **Added**
  - Added `dag-queue.wgsl` for multi-root DAG-ready scheduling with priority
    ready lanes and dependency unlock hooks.
  - Added `loadDagQueueWgsl(...)`, `loadSchedulerWgsl(...)`, and
    `createDagJobGraph(...)`.
  - Added ADR, TDR, and design docs for DAG scheduler rollout.

- **Changed**
  - `queue.wgsl` now exports a no-op `complete_job(...)` hook so worker code can
    target flat and DAG scheduler assets through one lifecycle contract.

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.12] - 2026-03-04

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.8] - 2026-03-01

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.7] - 2026-03-01

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.6] - 2026-03-01

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.4] - 2026-03-01

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.3] - 2026-03-01

- **Added**
  - `lint`, `typecheck`, and security audit scripts for local and CI enforcement.

- **Changed**
  - CI now fails early on lint/typecheck/runtime dependency audit before build/test.

- **Fixed**
  - Pack-check regex cleanup to remove an unnecessary path escape.

- **Security**
  - Runtime dependency vulnerability checks are now enforced in CI.

## [0.2.2] - 2026-02-28

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.2] - 2026-02-28

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.2] - 2026-02-28

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.2] - 2026-02-28

- **Added**
  - (placeholder)

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)

## [0.2.1] - 2026-01-23

- **Changed**
  - **Breaking:** Queue payloads are now referenced by fixed metadata offsets into caller-managed payload buffers (no internal payload arena).
  - **Breaking:** Queue header and bindings updated to remove payload arena fields and buffer.
  - Demo and tests updated to reflect the new payload-handle layout.
  - **Breaking:** Queue header now includes payload arena head/tail and capacity/mask fields.
  - Queue helpers now expose a `queue_len` backlog snapshot for schedulers.
  - Demo and tests updated to use job metadata and variable payload copies.

- **Fixed**
  - Payload allocations now validate arena capacity before enqueue.

## [0.2.0] - 2026-01-23

- **Changed**
  - **Breaking:** WGSL bindings now include a dedicated payload ring buffer plus input/output payload buffers.
  - Queue headers now carry `payload_stride` (u32 words) and job payloads are copied into the ring on enqueue.
  - Demo and tests updated to use payload buffers instead of `input_jobs`/`output_jobs`.

- **Fixed**
  - Payload job counts now clamp to payload buffer lengths to prevent overruns.

## [0.1.2] - 2026-01-22

- **Added**
  - Deterministic demo test pattern mode for stable image hashing in e2e tests.
  - 4x4 demo grid for multi-canvas output.
  - Timestamped demo logging.
  - Demo FPS counter and per-image progress indicators.
  - Loader and WGSL guard tests, plus an e2e WGSL compilation check.

- **Changed**
  - `loadQueueWgsl` accepts `url`/`fetcher` overrides and falls back to filesystem reads for `file:` URLs.
  - Demo renders 500 interleaved static frames using per-image queues per frame.
  - Demo updates canvases line-by-line for progressive static output.
  - Build outputs now ship as ESM and CJS bundles with the WGSL asset in `dist/`.

- **Fixed**
  - WGSL entry points now validate queue configuration and clamp job counts to buffer lengths.
  - WGSL load errors now surface with explicit HTTP status details.
  - CD build now installs TypeScript for the tsup build step.

- **Security**
  - None.

## [0.1.0] - 2025-01-08

- **Added**
  - WebGPU lock-free MPMC queue with sequence counters.
  - Demo for enqueue/dequeue, FFT spectrogram, and randomness heuristics.

[0.1.0]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.1.0
[0.1.2]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.1.2
[0.2.0]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.0
[0.2.1]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.1

## [0.2.1] - 2026-02-11

- **Added**
  - Initial release.

- **Changed**
  - (placeholder)

- **Fixed**
  - (placeholder)

- **Security**
  - (placeholder)
[0.2.2]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.2
[0.2.3]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.3
[0.2.4]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.4
[0.2.6]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.6
[0.2.7]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.7
[0.2.8]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.8
[0.2.12]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.12
[0.2.13]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.13
[0.2.14]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.14
[0.2.15]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.15
[0.2.16]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.16
[0.2.17]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.17
[0.2.18]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.2.18
[0.3.1]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.3.1
[0.3.2]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.3.2
[0.3.3]: https://github.com/Plasius-LTD/gpu-lock-free-queue/releases/tag/v0.3.3
