Skip to content

Releases: vojtech-krupicka/web-roll-the-dice

v1.0.1 — App icon

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 20 Sep 22:22
b506622

A small patch release: the app finally has a proper icon.

Added

  • A d20-style gradient hexagon icon matching the home screen logo, used as the browser-tab favicon and as the touch icon for Android/iOS home-screen shortcuts. It replaces the default Next.js favicon.

Changed

  • Documented the new development workflow: main is production, work happens on dev and lands via PR.

Full Changelog: v1.0.0...v1.0.1

v1.0.0 — Public launch

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 15 Sep 23:14

No functional changes since phase06 — this release retires the phaseNN branch/tag/version scheme in favor of semantic versioning (major.minor.patch), tagged directly on main from here on out. Marks the app's public launch, ahead of connecting it to Vercel.

Full Changelog: phase06...v1.0.0

Phase06 — Launch polish

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 15 Sep 23:06

A grab-bag of polish ahead of the app's public launch — the last release under the phaseNN scheme; from here on the project uses semantic versioning (starting with v1.0.0, once it's live on Vercel).

Added

  • Help menu item covering games, hands, rolling, players, and 3D mode
  • "Game options" menu item at the top of the settings menu, for quick access to rename/password/delete/leave
  • About popup: current version, links to source and release notes, and a Buy Me a Coffee link
  • MIT license, crediting @3d-dice/dice-box and Kenney's CC0 Casino Audio pack

Changed

  • Bottom-bar Players/Hand buttons padded away from the center Roll button; Hand button's icon swapped for a hand icon
  • "Next" pill renamed to "Next player"

Fixed

  • Legend/Help/About and the confirm dialog occasionally rendering underneath other UI due to a CSS stacking-context bug
  • The settings menu staying open after pressing Roll or the roll-history pill

Full Changelog: phase05...phase06

Phase 05 — 3D Physics Roll Mode (BETA)

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 15 Sep 08:42

A real physics-based dice roll, sitting alongside the existing 2D mode rather than replacing it.

Added

  • 3D physics roll mode (@3d-dice/dice-box), marked BETA, switchable per-game from the settings menu — the choice persists to the game itself, not just your browser
  • Dice are tinted in the current player's color on every roll; the physics engine's own settled values are the real result
  • A landing sound per die as it individually settles, instead of one sound lumped at the end
  • Respects your OS's "reduce motion" setting — a roll still takes its usual time and plays all its sounds, just without the spatial movement

Changed

  • The 3D view is a transient overlay on the existing flat drop area rather than a replacement, so idle state, per-player hand resets, and coin rendering all keep working exactly as before
  • Coins (no 3D model exists for them) get their own flip animation and landing sound instead of sitting inert during a 3D roll
  • Next-player, Players/Hand navigation, and the roll-mode toggle itself now all disable while a roll is in flight or its result is showing — a physics roll can't be safely interrupted once started

Fixed

  • The settings menu staying open after pressing Roll or the roll-history pill
  • A second roll briefly showing the previous roll's 3D dice still sitting in their landed spots
  • The 3D-to-2D model swap flashing visibly instead of happening underneath the result banner

Full details in CHANGELOG.md.

Phase 04 — Midnight Arcade: UI redesign, dice animation, and sound

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 14 Sep 14:04

A full visual and animation overhaul, plus the app's first sound effects.

Added

  • Full "Midnight Arcade" dark UI redesign (no more light mode) — near-black radial-gradient background, cyan→violet gradient accents, Space Grotesk/Space Mono fonts, a large circular Roll button, edge-docked pills for the last roll and next player
  • One shared dialog shell and bottom nav used across every dialog (Players, Hand, Roll history, Game edit, Game hash), instead of each rolling its own
  • Dice now tumble while rolling — CSS movement and rotation with genuine deceleration as each die settles, then a short pause before the result reveals
  • The result reveal is a full-width banner with real die sprites and an avg/median/min/max stat row, blurring the drop area behind it
  • Sound effects throughout — button taps, a roll press sound, per-die tumble/landing sounds (randomized, pitched by die size), and a fanfare on the result — real audio clips with synthesized fallbacks if a file's missing
  • A Sound on/off switch in the settings menu, remembered across sessions

Fixed

  • Bottom bar disappearing/unusable while a roll result was showing
  • The last-roll pill overlapping the Roll button with long player names
  • A dialog's whole screen sliding (including a duplicate bottom bar) instead of just its own content

Full details in CHANGELOG.md.

Phase 03 — Games, players, and roll history

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 12 Sep 23:58

Everything now persists to Postgres — games, players, and roll history.

Added

  • Postgres persistence (Drizzle ORM): games, players, and rolls tables
  • Home page rebuilt as a join/create screen — join by 5-character hash (protected games prompt once for a password), or create a new game (name + optional password)
  • Password-protected games gated by a signed session cookie; a one-time "here's your hash" dialog after joining/creating
  • Game top bar gains a Settings menu (Leave game / Legend / About) and a clickable name (rename, change password, delete, leave)
  • Multiple players per game: name, auto-distinct random color, icon, enabled flag; drag-to-reorder player list
  • A player bar shows who's active; "Next player" cycles forward (confirmed), picking a specific player from the list goes anywhere (also confirmed); each player's hand is saved and restored independently; dice tint in the current player's color
  • Roll history: every roll's sum, per-die breakdown, average, median, min, and max are recorded; a footer bar shows the latest roll, a full history dialog lets you mark rolls invalid without deleting them

See CHANGELOG.md for the complete list.

Phase 02 — A hand of dice

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 11 Sep 18:42

Build a custom hand of dice and roll all of them at once.

Added

  • Top bar with a "Hand" toggle button that opens/closes the Hand pane
  • Hand pane: one row per die type (enable checkbox, shape icon, minus/count/plus), plus an "Add die" popup listing all 8 types (d4/d6/d8/d10/d12/d20/d100 and a d2 coin flip) in a 2x4 grid, disabling types already in the hand
  • Drop area now renders every die in the hand, each labeled with its type, instead of a single fixed d6
  • Distinct 2D shape per die type (triangle, diamond, kite, pentagon, hexagon, octagon, plus the existing pip d6 and a coin) so a mixed hand is readable at a glance
  • Rolling now covers the whole hand: each die animates for an independent random duration (0.5-2s) and settles on its own; the result popup shows the sum once every die has stopped

Changed

  • Unchecking a die type in the hand only excludes it from rolls; its count is preserved and restored when re-enabled (previously reset to zero)
  • Newly added die types start at count 1 instead of 0

See CHANGELOG.md for details.

Phase 01 — Single d6 roller

Choose a tag to compare

@vojtech-krupicka vojtech-krupicka released this 11 Sep 13:34

First iteration of the dice roller — a local, single-die interaction with no backend yet.

Added

  • Next.js app scaffold (App Router, TypeScript, Tailwind v4, ESLint)
  • Drop area displaying a single d6 face as an SVG pip sprite
  • Roll button with a ~500ms random face-swap animation, settling on a Math.random() result
  • Result popup shown in front of the Roll button; dismissible with any click, which re-enables the button

No persistence or multiplayer yet — purely local, client-side state. See CHANGELOG.md for details.