Dicey Table

Editor URLs and Modes

Edit Mode is a URL, not a hidden state. Every editor address is bookmarkable, pasteable and shareable with yourself across devices — and the address says which mod you are editing and, increasingly, which part of it.

The URLs#

URL Opens
/editor Edit Mode with no mod chosen — the Projects panel picks one for you (most recently updated first)
/editor?project={id} Edit Mode on a specific mod
/editor/room/{id} The Room Editor on that mod
/editor/table/{id} The Table Editor on that mod
/editor/asset/{id} The Asset Editor on that mod
/editor/game/{id} The Game Editor on that mod
/editor/room (no id) The Room Editor with no mod chosen yet

{id} is the project id shown in your Projects panel — the same id the editor's own API uses.

The address bar keeps itself current. Switch mods inside the editor and the URL follows, so reloading (or copying the address) returns you to the same mod in the same mode. It is a replace, not a push: Back leaves the editor rather than walking backwards through the mods you clicked. Any other query parameter already on the URL is left alone.

A URL you mistype opens the plain editor. /editor/kitchen/my-mod is not an error page — it opens /editor with no mode and no mod, and logs a warning to the console saying so. That is deliberate: /editor/… has always been served by the app, and turning a typo into a 404 would break old bookmarks.

An id in the URL that is not one of your mods is reported by name — "No project "x" in your account" — rather than silently opening a different one. Opening the wrong pack is worse than opening none.

The modes#

A mode is one editor configured for one subject. It is not a separate application, a separate canvas, or a separate document — the hierarchy, the panels and the viewport chrome change; nothing else does.

Mode Edits
Room Editor The room shell: floor, ceiling, the four walls and their posters, lights, decor, environment
Table Editor The table itself: its model, colliders, triggers, play surface and seat ring
Asset Editor Prefabs, decks, materials, textures and scripts as a standalone unit
Game Editor Composition: which room and which table a game uses, plus player zones and entities

Each mode shows the subject it owns plus what that subject legitimately contains, and nothing else. The Game Editor assigns a room; it does not edit a wall.

That is not a restriction added for tidiness. A room and a table are published packs with their own repos, their own versions and their own authors, and a game references one of each at an exact version. The Game Editor is where that reference is made; the Room and Table Editors are where the thing being referenced is built.

The Room Editor's camera is built for interiors: it opens in a first-person walk rig you steer with WASD and right-drag to look, and its orbit camera can raise its focus to frame a wall rather than staying pinned near the table. The ceiling toggles off, and a wall you have moved outside of hides itself — along with anything hanging on it — so you are never framing a room from behind its own wall.

The camera and both of those toggles are driven from the right-hand end of the viewport toolbar, which shows exactly the controls the mode you are in declares — and shows none of them on plain /editor.

/editor with no mode segment stays exactly as it always was: the full tree, every panel. Nothing about it changed when the modes arrived.

Opening a second editor#

The Projects panel offers two ways out of the mod you have open:

  • OPEN IN → the editors this mod's kind allows. Switches this tab to that mode on the mod you already have open. It reloads the page, so unsaved changes are confirmed first.

    The buttons you get depend on what the mod is. A mod's kind is chosen once, in the create chooser, and frozen at its first publish — so it is not a view you switch between:

    This mod is a… OPEN IN offers
    Table Table Editor
    Room Room Editor
    Asset pack Asset Editor
    Game Game Editor, Full Editor

    A table pack has no room to dress, no pieces to place and no script to write, so the other editors are not offered: their panels describe a different kind of document. A game is the one kind with two, because the Game Editor and the Full Editor are two views of the same document. Creating a mod takes you straight to its own editor for the same reason.

    Type a URL that names the wrong editor for a mod — /editor/game/{a-table-pack} — and it still opens, with a line in the Projects panel naming the editor that mod belongs in. It is not redirected: a forced navigation would discard whatever that tab has unsaved.

    Game Editor and Full Editor are not the same thing. Full Editor is plain /editor with no mode: the whole nested tree and every panel, exactly as it has always been. The Game Editor is the composition view, where Room and Table are two assignable rows instead of twelve scenery rows — see Assign a room or a table.

  • The open-in-new-tab icon on any other mod in the list. Opens that mod in its own tab. Click it again later and the browser focuses the tab you already have instead of making a third one — each mod's editor tab has a name, and a named tab is reused.

Notice what is missing: there is no button that opens a second tab on the mod you are already editing. That is the point of the next section.

One mod, one writing tab#

Two editor tabs on the same mod cannot both save. The second one opens read-only.

Your working files live in your browser's own storage, on disk, in one tree per mod. Two tabs editing that tree are two writers with no coordination between them: each saves a complete picture of the mod built before the other's changes existed, and whichever saves last wins silently. Nothing errors. Work simply disappears.

So the first tab to open a mod owns it. A second tab — from a pasted link, a duplicated tab, a restored session — detects the first one and opens read-only:

  • a Read-only badge next to the mode name in the topbar;
  • a notice in the Projects panel explaining why;
  • Save Draft and Publish disabled, and every other write refused with the same reason.

You can still look at everything: the hierarchy, the Inspector, the viewport, the asset explorer. It is a viewer, not a broken editor.

Closing the owning tab does not silently promote the read-only one. It offers a Take control (reloads) button instead, because a tab that has been sitting read-only is looking at a picture of the mod from before the other tab's saves — promoting it in place would let stale state overwrite newer files. Reloading re-reads everything, and then this tab owns the mod.

A crashed tab does not lock you out. Ownership is renewed continuously while a tab is alive; a tab that dies stops renewing, and the next tab takes over within a few seconds. A tab that is mid-save is given considerably longer, so a large save is never interrupted by another tab deciding it looked dead.

This is per browser profile, not per account. Ownership is decided between tabs in the same browser on the same machine. Two different machines — or two browser profiles — cannot see each other, and each has its own copy of the working files. Publish is what reconciles them; see the publish flow.