Skip to content

Open Tabletop 0.19.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 04:03
· 66 commits to main since this release

Added

  • Asset collections. Site admins can organize mixed custom assets into shared, private or
    published collections, with a searchable bulk chooser and rename/delete controls. Per-account
    local filters support multiple memberships, Uncollected, and Show all / Show none. Collections
    preserve each asset's permissions; deleting a collection keeps its assets, and conflicting
    edits cannot silently overwrite one another.
  • Portable assets and collections. Site admins can export custom dice textures, decks/tile
    sets, boards, player mats, skyboxes and 3D models individually or as saved collections in
    .ott.zip packages. Packages preserve original images/GLBs, embedded materials, authored card
    order and geometry, colliders, model transforms, and saved dispenser definitions, including
    separate container models. Imports preview contents and create new private copies with remapped
    references and collection membership; existing assets are never overwritten. Earlier
    .ott.json packages remain importable. Unsupported members reject the whole collection export.
    Live player data and scene ZIP exports are outside this format.
  • Private deck browsing. Right-click or long-press a deck to browse one card at a time
    without changing its order. GMs can enable active-player browsing per deck; all decks default
    to GM-only. Take a card into hand, place it face-up/down, or move it to the top/bottom.
    Exclusive expiring sessions prevent conflicting draws, shuffles and combines, and recover
    inventory when placement fails or access changes.
  • Spectator mode. Choose More → Spectate / Return to play, or Watch in the lobby. New
    spectators join without a seat; converted players keep their reserved seats, hands and trays.
    Spectators retain camera, chat and authorized inspection, and are skipped by turns/dealing.
    The mode persists per room/account across tabs and reconnects. Rooms support eight playing
    seats and up to 24 total connections.
  • GM time-outs. Apply or lift a durable time-out from the member list, with visible status
    and an explanation for the affected player. Time-outs block gameplay and release active grabs
    safely while preserving seats, hands and trays. Camera, chat, authorized inspection and personal
    notes remain available. Returning from spectator mode never lifts a GM time-out.
  • Object labels and low-stock warnings. GMs use Labels… in the desktop/touch menu or press
    L over a piece to edit a saved label. Decks, tile decks and finite dispensers can show a gold
    remaining-count label below an explicit full-quantity percentage threshold. Labels follow
    moving objects; unlimited dispensers do not offer stock warnings.
  • Shared object highlights. Middle-click an unheld object or choose Highlight from its menu
    to show everyone a pulsing halo for 3.2 seconds. Repeating refreshes the halo; it follows movement
    without changing materials, selection or physics. Held-piece rotation and empty-table pings
    retain their gestures.
  • Account placard presets. Settings → Placard offers feminine/masculine bodies, pointed-ear
    and floppy-ear dogs, shorthair/fluffy cats, frog and gecko. Choose solid, gradient, stripes,
    dots, stars or checkerboard with two custom colors and a private live preview. Saved choices
    follow the account across rooms, tabs and reconnects, retaining avatar faces, readable names
    and seat-color outlines.
  • Tile sound variants. Three original synthesized tile flips and three box-shake shuffles
    give named tile sets distinct cues. Paper cards keep their existing sounds; mixed selections
    play one flip cue per material. Existing SFX mute/volume controls apply. Include the reproducible
    offline generator and CC0 provenance.

Changed

  • Centralize server-side participation checks across table requests, including access rechecks
    after asynchronous reads. Preserve authorized observation, communication, personal notes,
    cleanup and administration while gameplay is restricted.
  • Enlarge player placards, improve their texture detail, and raise new avatar uploads to 512×512.
    Existing avatars remain compatible; re-upload to benefit from the higher source resolution.
    Replaced placards dispose their owned rendering resources.
  • Move Multi-Select into a floating button above Seat. A click/tap on empty felt without a drag
    exits the mode while retaining the selection; real drags keep it active. Hide Seat and Table
    Actions while the mobile private hand is expanded.
  • Improve large-library scrolling with lazy, asynchronously decoded WebP thumbnails, retained
    unchanged asset lists, and batched button measurements. Saved/bundled image previews use bounded
    derivatives across library cards, finish pickers, hands and editor image squares. Original
    files and full tabletop rendering retain their quality; thumbnail caches build on demand.
  • Give Collections and library assets one scrolling body with a fixed header and visible
    collection Save/Cancel controls. Use consistent Tabler icons for collections, asset transfers,
    labels, highlights and spectator actions.
  • Keep member names/status readable in narrow room docks, with compact moderation controls and
    emphasized Kick/Reject actions. Increase the initial schema-encoding buffer for busy tables
    without changing table capacity.

Fixed

  • Store new model-board uploads under /assets/boards/; continue exporting older boards from
    their original /assets/props/ location. Imports use the boards directory, preserving existing
    shared originals and authored model materials.
  • Measure hand scroll arrows when the hidden tray opens or resizes, without requiring Rearrange,
    and release observers and pending measurements when rebuilding it.
  • Keep object-label rendering/editing idle until room pieces are available, clear stale labels
    on state loss, and resume on hydration.
  • Center the masculine placard head around its avatar opening and use a symmetrical outline.

Deployment

  • Apply additive migrations 018–021 for time-outs, spectators, collections and account
    placards. Normal startup applies pending migrations using the existing migration role; refresh
    all browsers after restarting the server. With automatic migration disabled, apply the pending
    numbered migrations in order using the schema-owner connection before starting the new server.
    Existing memberships remain unrestricted players, assets begin uncollected, and accounts receive
    the default placard. Existing scenes/game snapshots require no conversion.
  • Source installs must install the updated locked dependencies (npm ci); packaged images include
    them. No new services, environment variables or runtime database privileges are required.
  • ZIP packages support up to 64 assets, 5,000 cards/tiles, 4,096 images and 512 MiB of original
    files, with a 544 MiB transfer ceiling and 32 MiB per image. Full-size transfers need adequate
    temporary storage and reverse-proxy upload allowances. Transfers are streamed through private
    temporary storage, serialized per server process and validated before transactional imports.
    Image-count and byte-limit failures report distinct errors.

Documentation

  • Reconcile the roadmap with completed gameplay, customization, touch and server/client
    refactoring work. Add implementation plans and verification checkpoints for recent features
    and discovery briefs for remaining work.
  • Document gesture paths, account/room privacy boundaries, package formats and asset provenance.
    Feature approvals are recorded separately from comprehensive real-device and live multiplayer
    validation; the device checklist remains available for further testing.