# Changelog

This is the living change history for RNGED. Update it whenever user-facing behavior, data structure, defaults, UI organization, or documentation changes.

Date precision note: this project was developed rapidly in one local workspace without commit timestamps. Exact times for older changes are not fully recoverable from the repo, so older entries are grouped by the available conversation/workspace context. Future entries should be added with the actual date of the change.

## 2026-06-21

### Fixes

- Fixed Image tile offset rendering so images stay centered at `0 / 0`, X/Y offsets no longer change image size, and a separate Image Scale Offset control handles explicit zooming.
- Fixed the tile context menu Copy Parts submenu so scrolling and toggling fields inside it no longer closes or rebuilds the submenu.
- Restored token editing directly in the compact Asset Lookup list, using the same rename and token-rewrite behavior as the full Asset Library.
- Corrected Winner Display directional zones so left/right edge zones cover only the middle half of the overlay height while top/bottom zones keep their full height.

## 2026-06-20

### Import And Export

- Added synced Include Used Assets controls to Board Data and the Options Data tab so board/tile exports can be either lean JSON or self-contained JSON with only referenced assets.
- Added full backup export for sharing/restoring the complete local session, including board, drawer, settings, UI state, pinned controls, hotkeys, notepad items, and all assets.
- Added full backup import with confirmation, large-asset warnings, session restore, and replacement of the local asset library.
- Reworked Board Data and Options Data into Export, Import, and Manage sections, with the Import JSON field now available in Options Data too.
- Added Selective Import buttons to the Data import sections, opening an overlay where the user can choose which available JSON sections to import.
- Updated the JSON format and feature references with board, tile, asset pack, and full backup sharing guidance.

### Fixes

- Changed drag modifier controls from Alt to Shift: Pattern Move is now Shift-drag and Swap is now Ctrl+Shift-drag.
- Added Alt-drop duplication for board and drawer drag/drop, including multi-selected tile groups.
- Added a visible `+` badge for Alt-copy drags on the drag preview and source tiles.
- Fixed board Ctrl/Shift multi-selection while the Drawer is open so it can activate directly from modifier clicks without pressing Board Select first.
- Fixed stagger countdown display so staggered tiles count down from their full value and move on after `1` instead of showing `1` twice.
- Fixed primary action highlighting for Drawer and Assets, and made Drawer clear Edit mode when switching primary actions.
- Made the Delete hotkey context-aware so Asset Library selections and Drawer selections are deleted in their own surfaces instead of triggering board tile deletion.

## 2026-06-19

### Performance

- Reduced play-loop work by using a narrower board/status render path during active flyover selection instead of refreshing unrelated panels on every count.
- Added a guarded optimized play-frame renderer that updates existing tile classes/stagger labels during flyover play, avoids rewriting unchanged stagger labels, caches rendered tile elements, defers session saves while running, and falls back to the full board render whenever the DOM is not safe to update incrementally.

### Top Bar

- Changed the RNGED brand mark/name into the play/stop button, removing the separate visible Play button.
- Moved the whole-board turn control to the left-side run cluster and renamed it to the static label Turn Tiles.
- Restyled the RNGED play control as a genuine primary button.
- Added draggable primary actions in the top bar with left, centered, and right snapping zones.
- Added drop grouping: near drops join an existing group, while farther drops in the same zone create a separator/new group.
- Saved the primary action layout in the local session.

### Sidebar

- Added a Quick Start Guide to the empty sidebar state.
- Added compact onboarding content explaining JSON board import, the board data structure, and AI prompt ideas for generating boards.
- Added a json_format.md download link and guidance to use the format reference as AI model context.
- Added Bulk mode as a second Quick Start creation path with a simpler front/back title example.
- Added an in-textbox next-line format hint inside Bulk mode so the expected syntax stays visible while typing.
- Changed the Bulk guide example to `Front Title|Subtitle || Back Title|Subtitle` and made entered blank lines advance the guide.
- Reworked the standalone sidebar into a navigation hub for pages that are not primary actions or option menus.
- Moved Quick Start Guide into its own standalone sidebar page instead of a collapsible details block.
- Added a standalone Changelog sidebar page that loads the living `docs/changelog.md` reference.
- Added a subtle rotating quick tip area at the bottom of the standalone sidebar.
- Added a Notepad primary action next to Sidebar with its own sidebar panel.
- Added stackable Notepad item types: Text, Player, and Numbers.
- Added Player and Numbers point/value controls with direct input plus compact decrement/increment buttons.
- Added up/down Notepad item reordering and local session persistence for Notepad items.
- Added drag-and-drop reordering for Notepad items from the item header.
- Reworked Player items so one Player item can hold multiple player rows.
- Made Player and Numbers items more compact with inline `-` and `+` score controls.
- Fixed Notepad drag handles so dragging from the item header reliably reorders items.
- Added per-item Notepad settings via a gear button, including item names and configurable add/subtract amounts for Player and Numbers items.

### Assets

- Added an Assets primary action with a sidebar panel for user-imported assets.
- Added asset library management tools with search, filters, sorting, grid/list views, usage counts, visible-selection batch actions, delete-unused, and a detail inspector.
- Split asset management into a compact Assets sidebar lookup and a full Asset Library overlay for filters, editing, selection, deletion, usage, import, and export.
- Moved asset exporting into the Asset Library overlay while keeping image and asset-pack import available from both the sidebar and overlay.
- Added Asset Library multi-selection controls with card click toggling, Ctrl/Cmd single toggles, and Shift range selection.
- Fixed Asset Library grid card input sizing so editable text fields stay inside grid cards.
- Raised confirmation overlays above the Asset Library overlay so delete confirmations remain visible and clickable.
- Fixed native asset preview dragging so dragging items inside the Asset Library no longer re-imports and duplicates them.
- Added asset usage detection across board tiles, drawer tiles, and last winners, plus a detail action to select board tiles using a chosen asset.
- Added image asset import for PNG, JPG, WebP, and GIF files.
- Added drag-and-drop import for supported image files and JSON asset packs in the Assets panel.
- Added visible not-supported messaging for unsupported dropped files.
- Stored imported assets locally in IndexedDB instead of localStorage.
- Added inline text tokens such as `:crown:` that render imported images inside tile, drawer, last-winner, and winner-display text.
- Added standalone asset pack import/export for sharing assets without board data.
- Added board and tile export support for including used assets so shared JSON can render inline image tokens.
- Added collision-safe asset import: conflicting imported tokens are renamed and imported board/tile text is updated.
- Hardened asset import safety: image assets must be self-contained base64 data URLs with matching supported MIME types, remote URLs are rejected, and large imports now require confirmation with a storage/performance warning.
- Added Image tiles, which use an imported image asset token as fitted tile media on the board and in Winner Display.
- Added an Image tile option to hide the fitted image on the board while still showing it in Winner Display.
- Added Bulk support for Image tiles with the `@image :token:` line prefix.
- Changed Image tiles to render images as full-bleed cover media behind tile and Winner Display text.
- Added Image tile X/Y position offset controls while keeping Image tile media centered-cover and full-bleed by default.
- Added Image tile options to hide text on the board or in Winner Display.
- Hid Image tile controls in the Edit menu while editing Text tiles.

### Typography

- Added exact numeric inputs beside title/subtitle scale sliders.
- Expanded accepted title/subtitle scale values to `0.1` through `8` for edit controls, global look controls, imports, and session restore.
- Added left, center, and right text orientation controls for tile and Winner Display text.
- Changed Edit mode so side-specific fields affect only the selected tile side currently visible on the board.
- Compactified the Edit menu Content group with aligned content fields and inline image/text visibility toggles.
- Cleaned up the Edit menu structure with clearer section names, grouped Appearance controls, and unclipped Image tile options.
- Added drag-and-drop reordering for Edit menu groups, with the group order saved in the local session.

### Board Display

- Added front/back tile text visibility controls for Name, Pre-Title, Subtitle, and Extra Info in Board and Look.
- Made front-side board tiles support the same text slots as backside tiles.
- Added `tileDisplay` to board settings export/import and session restore.
- Reworked the tile text visibility controls into an aligned Front/Back matrix for a cleaner Board menu.
- Consolidated Text Visibility pinning into one group-level pin instead of separate pins for each visibility checkbox.
- Added compact Winner Display actions for Flip Card, Hide, Fade, and Discard.
- Added Winner Display directional zones and arrow-key navigation for adjacent tiles in the current board layout.
- Moved Winner Display controls into a separate overlay toolbar and expanded directional navigation zones to the window edges so controls no longer sit on top of the tile.
- Repositioned Winner Display controls closer to the tile without covering it: Edit/close align to the card edges, Hide/Fade/Discard sit as a compact lower group, and Flip Card is a larger centered icon button below the card.
- Rebalanced Winner Display arrow hit zones so vertical zones are shorter and left/right zones are wider.
- Added a compact Winner Display text toolbar in edit mode for per-field font, weight, italic, uppercase, alignment, color, and size overrides.

### Color Mode

- Added a Color primary action with its own sidebar panel for bulk tile color work.
- Added front/back side targeting and per-field toggles for Base, Text, and Highlight color application.
- Added Color mode board selection support so selected tile groups can be colored without entering Edit mode.
- Added a tile picker that samples the visible side's base, text, and highlight colors into the Color panel.
- Added Apply Current, Apply Selected, and Apply All color actions.
- Added a recent color history that keeps the last 5 full color combinations.
- Added color presets, including saving current colors or saving a recent combination as a preset.
- Included Color mode settings, history, and presets in local session restore.
- Reworked Color mode from apply buttons into cursor tools: Brush paints tiles while holding left mouse, and Pick samples the visible tile side.
- Disabled board drag-and-drop and multi-selection while Color mode is active so brush strokes can pass over tiles cleanly.
- Split Color mode text controls into Name Text, Pre-Title Text, Sub-Title Text, and Extra Text.
- Added tile data fields and export support for individual front/back text colors per text type.
- Added tile data fields and export/import support for Image tile type, image asset token, board image visibility, and text orientation.
- Adjusted Color history so full combinations are recorded on committed color changes, picks, presets, and brush strokes instead of every intermediate picker movement.
- Condensed Color side targeting into one Both sides toggle.
- Changed Color brushing to target each tile's currently visible side unless Both sides is enabled.
- Added a brush-follow highlight contour so the tile under the brush visibly tracks the brush position.

## 2026-06-18

### Board Layout Adjustments

- Removed the Radial and Wheel board layouts from the active layout options.
- Added Frame layout, which places tiles around the outside of a square/rectangular frame.
- Kept Frame on the standard Flyover, Shuffle, and Cascade gameplay modes.
- Kept Slots on Up/Down directional gameplay modes.
- Kept Cases on Left/Right directional gameplay modes.
- Added per-count movement animation for Slots and Cases so tiles slide through the visible strip during play.
- Revised the reel animation so Slots/Cases render a repeated virtual strip under a fixed indicator, avoiding visible strip breaks on short boards.
- Changed the moving-layout indicator to a small static arrow instead of a center line.
- Improved Slots/Cases smoothness so the tile strip moves for almost the whole count interval instead of snapping and waiting.
- Updated Cases movement to behave more like a CS2-style case strip, with the next item sliding under the arrow.
- Replaced active-tile count highlight frames in moving layouts with the fixed arrow indicator.
- Reworked Slots/Cases play into a continuous reel system: tiles glide freely under the arrow, duration/pace settings drive the travel, and the winner is sampled from the tile range under the arrow when motion ends.
- Simplified the Slots/Cases arrow into a plain static triangle with no pulse or count animation.
- Fixed a Frame/border layout layering bug where high-z-index board tiles could appear above the winner display.
- Added a Pinned primary action with a sidebar panel for pinned option groups and option rows.
- Added pin buttons to option groups and option rows so live controls can be collected in Pinned without duplicating settings.
- Added pinned item reordering and collapsible pinned option groups, with pinned setup saved locally.
- Made every pinned option card collapsible/minimizable and closeable from its pinned header.
- Rearranged pinned item headers so move controls sit before the item label and window-style minimize/close controls sit on the right.
- Added drag-and-drop reordering for pinned items, including a compact drag preview and subtle movement animation.
- Hid source-menu pin buttons inside pinned item bodies so each pinned item only uses the header close control for removal.
- Made Edit sidebar sections and individual edit rows pinnable into the Pinned menu.
- Fixed pinned Edit control formatting so pinned rows keep the same label/input styling as the Edit sidebar.
- Reduced pin-button visual interference by making source pins smaller, hover/focus-revealed on desktop, and removing duplicate pins from composite color/text containers.
- Added full local session restore so board data, settings, selected/edit state, flipped tiles, last winners, pinned controls, hotkeys, and UI panels survive closing or reloading the app.
- Added a confirmed Reset All action in Board Data to clear saved session, pinned controls, and hotkeys before reloading defaults.
- Reordered and visually grouped the top command bar into run, edit, panel, and workspace actions for easier scanning.
- Removed the bottom shortcut overlay so LAST WINNERS can use the full bottom bar width.
- Moved Board Data controls from the Options tabs into the Board primary panel.
- Made the Board Data controls collapsible inside the Board panel so import/export/reset stays available without filling the panel by default.
- Added a Tile Drawer primary action for storing discarded tiles in the sidebar.
- Added context-menu Discard for moving one tile or the active multi-selection into the Tile Drawer.
- Added drag-to-sidebar storage, including a visible Drop to Drawer target while dragging over the sidebar.
- Added drawer tile reordering and drag-back-to-board insertion, with drawer contents included in local session restore and undo/redo history.
- Added drawer-specific multi-selection, including Ctrl-click toggles, Shift-click ranges, and grouped drawer drag/reinsert behavior.
- Kept board multi-selection available while the Drawer is open and added Board Select controls to the Drawer panel.
- Added multi-location menu access for common settings: a Data tab in Options for reset/clear/export actions, Play-side Dramatic End, Gameplay-side winner flip sync, and Look-side board display toggles.
- Added Escape as a quick way to leave multi-select mode.
- Removed board-wide Normalize Staggers controls so stagger normalization is surfaced only through active multi-select actions.
- Updated the feature and JSON references to list Frame instead of Radial/Wheel.

## 2026-06-17

### Board Layout Framework

- Added a Board primary action in the top command bar.
- Added a dedicated Board sidebar panel for layout, board display, and board flip behavior.
- Moved Show Stagger, Show Turn Button, and Winner Flip Sync into Board options.
- Reworked the board renderer around a layout config so each layout can share the same tile rendering pipeline.
- Added Automatic Grid as the default layout:
  - It measures the available board space.
  - It chooses rows and columns to keep all tiles inside the board.
  - It scales tile text down as the board becomes denser.
- Added Set Grid with width/height-in-tiles controls.
- Added Radial layout with circular tile placement.
- Added Wheel layout that keeps the active count tile on the far right while tiles rotate around the center.
- Added Slots layout with a vertical slot-machine style strip, visible tile count, and faded edges.
- Added Cases layout with a horizontal strip, visible tile count, and faded edges.
- Restricted Gameplay mode choices by board layout:
  - Auto Grid, Set Grid, and Radial use Flyover, Shuffle, and Cascade.
  - Wheel and Cases use Right and Left.
  - Slots uses Down and Up.
- Updated board export to version `2` and added optional `board.settings` for layout/display options while keeping imports forgiving for missing settings.
- Updated the JSON and feature references for board layout settings.

### Tile Turning And Winner Motion

- Smoothed the winner display entrance animation.
- Recentered tile text by removing asymmetric face padding that had reserved visual space for the turn button.
- Added a Look option to hide tile turn buttons.
- Added an editable hold-click hotkey for turning tiles, defaulting to `F`.

### Side Staggers And Bulk Syntax

- Split tile stagger into front and back values.
- Made play use the stagger value for the side currently visible on the board.
- Fixed board flips so the visible stagger number updates when the tile turns between front and back.
- Kept partial data forgiving:
  - If only one side's stagger is imported, the other side inherits that value.
- Added Bulk stagger syntax with `<number>` prefixes, for example `Hello | part one || <5> World | part two`.
- Made Bulk output omit stagger prefixes when the value is the default `1`.
- Made missing Bulk stagger prefixes mean that side uses the default `1`, so front and back can differ even when one side omits its marker.
- Kept the `||` separator in Bulk output when front and back staggers differ but the back side has no text.
- Updated stagger normalization so it reduces front and back stagger values together.
- Updated the JSON and feature references for side-specific stagger data.

### Hotkeys And Documentation

- Normalized letter hotkeys to use the active keyboard layout instead of physical QWERTY key positions.
- Restored standard history hotkey labels:
  - Undo is `Ctrl+Z`.
  - Redo is `Ctrl+Y`.
- Added compatibility migration so previously saved physical-position history hotkeys are upgraded to the layout-aware defaults on load.
- Added migration for old saved default letter hotkeys so they become layout-aware without changing intentionally custom shortcuts.
- Added this changelog document.
- Updated the feature reference to match the new undo/redo hotkey behavior.

### Dramatic End And Staggers

- Changed Dramatic End chances:
  - 30% chance the selection stays.
  - 30% chance it moves one more tile and immediately ends.
  - 40% chance it moves one more tile and rolls another dramatic decision.
- Increased the accepted stagger range from `1..9` to `1..99`.
- Added stagger normalization:
  - Context-menu normalization applies to the active multi-selection when right-clicking inside it.
  - Multi-select toolbar normalization applies to selected tiles.
  - Normalization divides target stagger values by their greatest common divisor.

### Bulk Editing

- Added a Bulk options menu.
- Added a sidebar-filling bulk textarea for live board editing.
- Added bulk line parsing:
  - Each line represents one tile.
  - `||` separates front and back text.
  - `|` separates title and subtitle on each side.
  - Empty lines create empty tiles.
- Opening Bulk serializes the current board into the editable line format.
- Bulk edits update tiles in real time while preserving non-bulk attributes on existing rows.

### Undo, Redo, Drag Cancellation, And Selection Feedback

- Added undo and redo history for board and tile edits.
- Added undo/redo coverage for imports, deletes, flips, color applies, count filters, text edits, and drag/drop changes.
- Grouped normal editor typing into one undo step per focused edit session.
- Made drag-and-drop transactional:
  - Drag start stores a restore snapshot.
  - Successful drop commits one undo step.
  - Escape or pointer cancel restores the board to the drag-start state.
- Added an `Esc` cancel hint to the sidebar drag helper.
- Improved multi-selection indicators so a deselected active tile no longer looks multi-selected.
- Made selected tiles use a stronger outline and checkmark.
- Made swap previews clearer:
  - Source tiles are shown in red.
  - Target slots are shown in blue.
  - The preview uses the same target logic as the release action.

### Sidebar And UI Organization

- Established a persistent sidebar so edit mode and option menus no longer change the board height.
- Added an option to hide or show the sidebar.
- Moved menus and contextual action hints into the sidebar.
- Made Edit, Bulk, and Options behave as swapped top-level modes instead of allowing Edit and Options to stay active together.
- Promoted Bulk from the Options tabs into the top command bar.
- Removed duplicate Edit/Options primary controls from inside the sidebar panel.
- Made the sidebar show a blank state when no edit/options/interaction panel is active.
- Moved drag and selection modifier guidance into the sidebar action view.
- Constrained long sidebar menus to scroll inside the sidebar without widening it or distorting the board.
- Kept top-level buttons available while moving deeper controls into sidebar panels.
- Organized options into Play, Gameplay, Look, Animation, Hotkeys, and Data menus.

### Board And Tile Editing

- Added tile drag-and-drop reordering in edit mode.
- Added cursor-attached drag previews.
- Added animated layout movement during drag reordering.
- Added Alt-drag Pattern Move for vertical and horizontal board placement.
- Added Ctrl+Alt drag Swap mode.
- Added multi-selected group movement.
- Added direct swap animation where swapped tiles move to their new positions.
- Removed extra arrow controls after Pattern Move became modifier-based.
- Suppressed accidental browser text selection during drag and multi-select actions.
- Made normal tile clicks in multi-select mode deselect selected tiles while keeping single-selection behavior for unselected tiles.

### Multi-Selection

- Added multi-selection mode.
- Added checkbox selection on tiles.
- Added Ctrl-click individual selection.
- Added Shift-click rectangular area selection.
- Made Ctrl and Shift selection combine.
- Made area selection use the last selected tile as the anchor.
- Made area selection invert states inside the selected area.
- Made context menu and hotkey actions work with multi-selected tiles.
- Added multi-selected delete behavior.
- Added multi-selected replace behavior.

### Context Menu

- Added tile context menu actions for Winner Display, Flip, Copy, Replace, Duplicate, Paste, and Delete.
- Renamed edit menu `Show Winner` to `Winner Display`.
- Added Winner Display to the context menu.
- Made context-menu Delete destructive/red and confirmed before deleting.
- Changed Paste to duplicate copied data.
- Added Replace as a separate action.
- Changed the order of Replace and Duplicate in the context menu.
- Added Copy options for specific tile parts.
- Made Copy reveal its toggle panel on hover while clicking Copy performs the copy action.
- Added status actions to the context menu.
- Made status actions work like Copy, with a selectable status panel and front/back side toggles.
- Fixed status context menu choices so they persist independently from the target tile's current status.
- Streamlined copy/status naming conventions.

### Tile Data, Backside, And Status

- Split front and backside text into separate fields:
  - Front Name
  - Front Pre-Title
  - Front Sub-Title
  - Front Extra Info
  - Back Name
  - Back Pre-Title
  - Back Sub-Title
  - Back Extra Info
- Separated backside pre-title from backside extra text.
- Added editable backside text in the edit menu.
- Kept backside text read-only in the winner display unless winner-display edit mode is active.
- Added separate front and back base colors.
- Removed secondary tile color and gradients.
- Added text color customization for front and back text.
- Added front and backside status values:
  - Normal
  - Faded
  - Hidden
- Made faded sides greyed out while keeping text readable.
- Made hidden sides darken the card, hide text, and show an eye icon.
- Added status controls to the edit menu and context menu.

### Winner Display

- Added an extended winner overlay.
- Changed the winner label from `SELECTED TILE` to configurable front/back pre-title text.
- Changed LAST WINNERS to show recent winners left to right.
- Removed raw attribute labels from the winner overlay.
- Added front/back winner display with card flip.
- Added larger centered flip button below the winner card.
- Added winner-display edit mode for editing visible text directly.
- Added direct winner-display editing for both front and back sides.
- Preserved newlines in winner display text.
- Fixed backside winner-display edit hit areas so fields respond like the front side.
- Fixed text loss when flipping while editing the winner display.
- Removed an unnecessary flip when exiting winner-display edit mode on the backside.
- Added a fade-and-slide-up entrance animation for the winner display and later made it more noticeable.
- Made winner display open on the backside if the winning board tile is currently flipped to its back.

### Board Flips

- Added card flipping on the board.
- Exposed board flip through context menu, edit menu, multi-select controls, and the Reveal Backs button next to Play.
- Added 3D-style board flip animation.
- Added Turn All cascade animation.
- Made Turn All cascade diagonally from top left to bottom right with overlap.
- Added gameplay option to sync winner-display flips back to the board tile.

### Play, Audio, And Dramatic End

- Built a tile-based random selector instead of a wheel.
- Switched play feedback from a moving streak to tile highlighting.
- Added Mario Kart item-box-inspired cycling tune.
- Changed the note behavior to a staircase pattern loop instead of continuously pitch-shifting upward.
- Added a final sound/tune when the winner is selected.
- Renamed slowdown to Duration and made it control selection length.
- Added duration variety from `0s` to `3s`.
- Adjusted play timing so fast counting is shorter and slow counting is more dramatic.
- Added Dramatic End with chance values tracked in `Dramatic End And Staggers`.
- Dramatic End has a maximum of 5 extra checks.
- Adjusted dramatic-end timing so the final pause is less predictable.

### Pacing Curve And Animation

- Added animation options and photosensitive mode.
- Added highlight animation presets.
- Added late blink behavior so blinking only occurs once the count is slow enough to perceive.
- Set late blink default threshold to `3.5` counts per second.
- Added animation parameter controls.
- Added gradual highlight fade-out mode.
- Fixed gradual fade so non-selected tiles do not keep blinking.
- Added an After Effects-inspired velocity graph for pacing.
- Made the graph represent time on the x-axis and velocity on the y-axis.
- Added handle-based controls for in/out influence and velocity.
- Colored in/out curve controls blue and red.
- Allowed exaggerated curve handles after initial After Effects-like restrictions proved too limiting.
- Updated count speed range to `0.5` through `5` in `0.1` steps.
- Set defaults:
  - Count speed: `2`
  - Out influence: `1.5`
  - In influence: `0.2`
  - Duration variety: `1s`
  - Hold to select: `0.5s`
  - Gradual fade: enabled

### Gameplay Filters

- Added Gameplay options menu.
- Added skip-counting rules for:
  - Frontside
  - Backside
  - Hidden
  - Faded
- Renamed the skip section to `Skip Counting`.
- Added Count Only filters for:
  - Stored selected tiles
  - Front color
  - Back color
  - Front title text
  - Back title text
- Added stored-selection mode for Count Only with a selected tile count button.
- Made Play disabled when filters exclude all countable tiles.

### Hold To Select

- Added hold-to-select as a direct winner trigger.
- Added visible tile hold progress as a loading indicator.
- Made hold-to-select toggleable.
- Changed hold duration slider to `0.1s` through `3s` in `0.1s` steps.

### Import, Export, And Data Documentation

- Added board import/export.
- Added tile import/export.
- Used JSON as the import/export format.
- Made imports tolerant of partial data:
  - Full board objects are accepted.
  - Tile arrays are accepted.
  - Single tile wrappers are accepted.
  - Single tile objects are accepted.
  - Empty tile objects create empty/default tiles.
  - Missing attributes do not block import.
  - Unknown attributes are ignored.
- Added documentation for the JSON format in `json-format.md`.
- Added feature documentation in `features.md`.

## 2026-06-16

### Documentation Folder

- Created the `docs` folder and documentation README. This date is based on local file metadata, not a commit record.

## Date Not Precisely Preserved

These changes happened before this changelog existed, but the exact date/time is not preserved in the repository:

- Started the app concept as a minimal Wheel of Names alternative using customizable tiles instead of a wheel.
- Established the main grayscale visual direction.
- Trimmed tile content to core fields early in development:
  - Title
  - Subtitle
  - Stagger Number
  - Color options in edit mode
- Made stagger default to `1`.
- Made empty text fields hidden instead of showing placeholder text like `No subtitle`.
- Added Clear Board with confirmation.
- Added global overwrite controls with confirmation.
- Added random color controls for individual tiles and global colors.
