Skip to content

Open Tabletop 0.17.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 23:15
· 124 commits to main since this release

Added

  • Show a bottom-left desktop control guide for hovered and held table pieces and private-hand
    cards, listing the gestures and keyboard actions available in the current context.
  • Let custom 3D objects declare an N×N grid footprint so large-base pieces align across multiple
    square cells during live dragging, release, and settle/pin while remaining centered on hexes.
  • Add a GM-only, device-local physics diagnostic that draws the current collider around every
    synchronized piece, including live deck and dispenser sizes.
  • Add npm run assets:colliders to measure registered bundled GLBs, report suggested collider
    half-extents/scales, and optionally validate authored registry values with --check.
  • Let room owners and GMs preview and apply synchronized table lighting with a draggable shaded
    globe, presets, directional and ambient colors/intensities, and shadow softness. Owners can save
    or factory-reset the durable room default, while library scenes may optionally include lighting.
  • Let admins attach finite or infinite dispensers to uploaded custom objects, choosing an automatic
    visible stack, a generic container, or a second uploaded model. Custom pieces retain a
    server-authored asset snapshot so matching color/finish variants can be gathered and absorbed
    without allowing ad-hoc dispenser definitions.
  • Let uploaded object and custom-dispenser models target one named GLB material for recoloring and
    finishes, preserving all other baked textures; the editor discovers material names from the GLB.
  • Cover room entry with a Loading Table screen until synchronized pieces, visual assets, and the
    first complete rendered frame are ready, preventing large tables from visibly popping into place.
  • Let uploaded custom 3D objects choose a default shared material during creation and change it
    later from the Inspect panel, while preserving compatible authored GLB texture maps and supplying
    procedural UVs when needed.
  • Let built-in pipped GLB dice and modeled dispensers use standard material finishes during Inspect,
    while retaining independently colored pips and named tint slots.

Changed

  • Replaced various built-in assets with new/custom built 3D models. Updated credits as needed.
  • Preserve authored GLB color and normal maps when tinting built-in pieces and modeled dispensers,
    including chips, coins, chess pieces, and Go bowls.
  • Preserve authored color textures, normal maps, and roughness when tinting the built-in pouch's
    bag and drawstring materials on spawned decks.
  • Let WASD and the arrow keys pan the desktop camera relative to its current view whenever their
    contextual held-piece or selection action does not apply.
  • Recalibrate the bundled chess/checkers and Go boards to their retuned model scales, measured
    collider bounds, and printed playing-grid spacing.
  • Increase generated die and board texture resolution and widen the table camera field of view.
  • Move the default player-seat camera closer to the table, and let the High graphics tier use
    sharper procedural card art plus larger cached derivatives for uploaded card images.
  • Enlarge private-hand cards on touch layouts and reduce the Inspect control's share of each card,
    providing a much larger surface for dragging cards onto the table.

Removed

  • Remove the bundled train piece and train dispenser from the built-in object catalog; their
    historical changelog and roadmap entries remain as the record of the earlier feature.

Fixed

  • Prevent OrbitControls from throwing when a pointer lifts while an untracked mouse pointer
    remains on the canvas, and prevent a first touch tap from counting as a double-tap soon after
    page load.
  • Align the poker-stack collider test with the resized built-in poker-chip model.
  • Make small tabletop pieces easier to grab on touch screens with invisible screen-space hit
    padding, keep held pieces visible above the fingertip for precise placement, and keep
    deck/dispenser movement tracking after choosing Move from a long-press menu.
  • Align the Go-board calibration regression test with its authored 0.41 × 0.41 cell spacing.
  • Load saved card-library preview images from standard-size WebP derivatives instead of the full
    uploaded source files.
  • Honor the configured collider primitive for built-in modeled dispensers in both server physics
    and the local collider diagnostic overlay.
  • Keep the custom-object library renderable when legacy assets omit optional model metadata.
  • Keep both buttons visible on custom-dispenser scale steppers and give library quantity fields
    enough width to display multi-digit values.
  • Delete custom dispenser configurations from their library view without deleting the associated
    custom object or its primary 3D model.
  • Export the custom-object lookup through the production database facade so saved models and their
    authored dispensers load correctly, omit undefined Three.js material options from previews, and
    decode mixed-back deck entries before using their first card as a thumbnail URL.
  • Preserve the remaining inventory of finite dispensers across manual table-state saves and room
    shutdown/re-entry, including gathered stacks above the normal single-spawn limit.
  • Keep the WebGL canvas hidden until the synchronized table and player-seat camera are both ready,
    preventing the bootstrap camera angle from flashing during room entry.
  • Use center-based escape detection on rectangular tables while retaining footprint-aware checks
    for shaped surfaces, preventing valid edge placements from repeatedly triggering recovery.

Security

  • Run the Docker container as a non-root user (appuser) instead of root, limiting the impact if an attacker gains access to the container.