# Changelog

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

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

## [1.2.2]
### Added
- SingleSlotReelsSpinSystem settings now expose `slotStopDelay` to pause between individual slot stops within a column while `reelStopDelay` continues to pace the first slot in each column, enabling layered timing without manual timers.
- HoldAndWin stories expose `slotStopDelay` as a dedicated control to preview staggered slot timing.
- HoldAndWin stories configure fractional steps for all numeric controls to enable fine-grained tuning during demos.
- Added a stub `MaskingSystem` and wired it into Reels spin stories to prepare future masking orchestration work.
- Introduced `BlurSymbolsSystem` to centralise blur orchestration for reels symbols.
- Added dedicated Storybook demos for `MaskingSystem` and `BlurSymbolsSystem`, now mirroring the reel spin setup while piping Storybook controls through each system's `setSettings` method for live configuration tweaks.

### Changed
- Reels reel states no longer toggle blur directly; `ReelsSpinSystem` marks blur intent while `BlurSymbolsSystem` applies filters.
- `BlurSymbolsSystem` removes cached filter areas, zeroes padding, and supports runtime velocity/kernel/offset configuration through `setSettings`.
- `MaskingSystem` exposes an `enabled` flag so Storybook demos and games can disable masking without removing the system from st
ates.

### Fixed
- SingleSlotReelsSpinSystem trims transient slot symbols and collapses each delayed reel to its landed symbol so duplicates cannot appear when `slotStopDelay` is enabled.
- Column stop scheduling now respects `reelStopDelay` for the first slot in each column even while previous columns finish their queued slots, keeping staggered visuals aligned across reels.
- Reel symbols remain visible when blur and masking are enabled together by removing conflicting bitmap caching from the blur toggle.
- Motion blur applied to masked reel symbols now clips to the mask bounds so blur streaks no longer extend beyond the masked area.

## [1.2.1] - 2025-10-20
### Added
- Story: DoubleHoldAndWinStory showing two HoldAndWinMachine instances stacked vertically, each with different initMap/screenMap.

### Changed
- HoldAndWin stories: scaled all MachineContainer instances to 0.5 (half size). In DoubleHoldAndWinStory both containers are scaled; spacing uses containerTop.height and respects scale. centerView alignment remains correct.

## [1.2.0] - 2025-10-20
### Added
- Introduced HoldAndWin machine scaffold and Storybook story (features/HoldAndWin).
- Single-slot reels support:
  - SingleSlotReelsSpinSystem
  - SingleSlotReel
- Hold-and-win demo assets and manifest:
  - configs/slotMachine.json
  - symbols, anticipation, winline assets, bitmap fonts, textures
- Auto-trigger spin in HoldAndWin story with generated screenMap and applied spin settings.

### Changed
- ReelsSpinSystem: support preventReelsSpin map to disable start/stop for selected reels; skip prevented reels in the spin flow.
- ReelsMachine: integrate new maps/behavior for single-slot reels and preventReelsSpin handling.
- Reel: adjustments to support single-slot behavior.
- createScreenInputMap: generate maps aligned with the new HoldAndWin config.
- SlotMachineConfig: extended with properties required by HoldAndWin and updated spinning behavior.
- index.ts: export newly added modules.
- ReelsSpinSystem story: updated with example demonstrating disabled first/last reels.

## [1.1.23] - 2025-10-20
### Added
- Initialize CHANGELOG for the current branch.

### Changed
- Bump package version to 1.1.23.

