quest'n'click 4.5.0 · r1

Built for quest'n'click 4.5.0, revision r1. Whether it is published, and which one is current, is recorded at publication.json.

Comments

Français · Type: how-to · Audience: author · Context: hosted Studio · Status: ready · Applies from: 4.2.3

The Studio Server (hosted team Studio) · contract: experimental · verified by CI (support matrix of 4.4.0, 2026-10-23): Postgres, S3 and Keycloak in CI; Chromium and Firefox (job studio-hosted); WebKit on macOS, by hand only · automated checks: jobs studio-hosted, studio-install-smoke; CI plan studioHosted; 3 test files · people's passes: studio-hosted not run (#149), studio-collab not run (#150), studio-preview not run (#166), studio-assets-hosted not run (#167), studio-mcp-remote not run (#196), studio-oidc-generic not run (#197) · known limits: comments-limits

On a team Studio, members comment on what the game names (a room, a door, an item, a rule, a storyboard panel) or on the game itself, in threads. Comments are kept by the Studio, never in a game file, so a reviewer comments too.

What you get

A thread anchored on a stable id of the game, with the revision it was written at, that the team answers, resolves and opens again; and the old notes.json notes brought in as comments.

Context and versions

A hosted Studio (the Studio Server), from 4.2.3. The local Studio has notes (notes.json), not comments. The code is studio-server/src/server/comments.ts.

Prerequisites

Where to run the commands

In the Studio, the Notes tab, panel Comments. Or through the API with a member's token.

Steps

  1. Write a comment. In the about field, type what it is about: a room id (hall), an entity (hall.door), an item (item:key), a character (char:lou), a rule's id, an objective (objective:<id>), a checkpoint (checkpoint:<id>), or a storyboard board or panel id. Leave it empty for the game itself. Type the text (1 to 4,000 characters), then Comment.
  1. Reply. Under a thread, type in Reply. A thread is one level deep: a reply to a reply joins the same thread, on its anchor.
  1. Resolve, or open again. Resolve closes the whole thread; Open again reopens it.
  1. Bring the notes in (owner). Bring the notes in turns each note of notes.json into a comment, once: its about becomes the anchor when it is an id, otherwise the note lands on the game's thread with its about in front of its text. Running it again brings only the new notes. It answers {imported, already}.

Through the API:

# anywhere, with a member's token
curl -H "Authorization: Bearer $TOKEN" "https://studio.example.fr/api/comments?anchor=hall.door"
curl -X POST -H "Authorization: Bearer $TOKEN" -H "content-type: application/json" \
  -d '{"anchor": "hall.door", "text": "The door should creak."}' https://studio.example.fr/api/comments
curl -X PUT -H "Authorization: Bearer $TOKEN" -H "content-type: application/json" \
  -d '{"resolved": true}' https://studio.example.fr/api/comments/<id>
RouteDoes
GET /api/comments[?anchor=<id>]every comment (or one anchor's), oldest first, the 2,000 newest at most
POST /api/comments {anchor?, text, parent?}a comment, or a reply with parent (201)
PUT /api/comments/<id> {text?, resolved?}its text changed (its author only), its thread resolved or opened again
POST /api/comments/import-notesthe notes of notes.json in, each once (owner)

Each comment has id, anchor ('' for the game), rev (the revision it was written at), parent, author, text, resolved, at, edited, and orphan.

The rules

Guarantee · comment-author-edits · referenced · executed on aff6caab7514 · scope self-checked by the author (AI), not reviewed Only its author changes a comment's text; a thread is resolved as a whole; a reviewer resolves their own threads only.

Limit · comments-limits A comment cannot be deleted (there is no route). One member keeps 2,000 open comments at most (429 past it: resolve some first). The list gives the 2,000 newest. Comments are not in the game's Git repository nor in an export: they live in the Studio's database.

Expected result, and how to check it

The thread appears in everyone's Comments panel, under its anchor, with its revision. GET /api/comments?anchor=<id> lists it.

Common errors

SymptomCauseFix
a comment is a text of 1 to 4000 characters (400)Empty or too longShorten it, or split it
an anchor is a stable id of the game (letters, digits, . : @ - _) (400)Spaces or other characters in aboutUse the id, not a sentence
only its author changes a comment's text (403)Someone else's commentReply instead
a reviewer resolves their own threads (403)A reviewer on someone else's threadAsk a dev
comments are a shared Studio's (404)A Studio Server without OIDC (local mode)Comments need a team Studio

Files or data changed

Rows of the studio_comments table. No game file, no revision.

Recovery or going back

A thread resolved by mistake is opened again. A text is corrected by its author. Nothing else can be undone.

References


Edit the source of this page · Report an error