**Language / Langue :** [[fr:editeur:linter-export|FR]] | **EN** ====== Graphical editor - Linter and export ====== ===== Built-in linter ===== The linter analyses your scenario and reports errors and warnings. **Running it:** the **Linter** button in the toolbar. **Kinds of messages:** * **Error** - a blocking problem (missing variable, wrong syntax, dead end) * **Warning** - a possible problem (unreachable room, unused variable) * **Info** - a suggested improvement **Checks include:** * Variables used but never declared * ''trigger_event:'' identifiers that do not exist * Rooms with no exit (dead ends) * Conditions with invalid operators * Timers started but never stopped * A choice with neither ''button:'' nor ''command:'': no button appears and the player cannot type anything * A global timer declared without ''id:'', which the engine would ignore * A video link that does not point to one precise video (a channel page or a playlist) The label of a choice is written ''button:''. Written ''text:'', the choice keeps its destination but shows no button: the room looks like a dead end. The linter reports it and names the expected key. **Platform warnings.** With a Discord or Terminal profile, the report adds the incompatibilities of that platform, with their location: more than 25 options in a room, a label longer than 100 characters, or a media file Discord cannot reach publicly. Clicking an error opens the matching room in the inspector. For an undeclared variable, the click leads to the place that uses it; when it is used in several places, a window lists them with their kind of usage. ===== Test button ===== The **Test** button starts a game right inside the editor, without going through Discord. A game window opens, running the full engine. It lets you check conditions, the order of events, timers and the HUD, exactly as if you were playing in the browser. ===== Export ===== **YAML export** generates a ''.yaml'' file the engine can read. **Standalone HTML5 export** generates a ZIP ready to be hosted or uploaded to itch.io as an HTML5 game. * Self-contained JS runtime: it runs on its own, with no JDR-Bot backend * Clean slug based on the file name (a ''jdrbot-'' folder inside the ZIP) * Automatic local resume, with progress restored on the browser side * Online variables converted into persistent local variables * Assets sorted as embedded, external or missing, with automatic remapping * UTF-8 export, so accented text displays correctly **PDF gamebook export** generates a PDF with numbered chapters, cross-references, a tracking sheet and editable fields, playable on paper like a choose-your-own-adventure book. HTML exports bundle media that could be retrieved; the report lists missing, external or dynamic files. PDFs include available images and describe sounds and videos without playing them. See [[en:yaml:export|HTML and PDF exports]]. ===== Diagnostics and author tests (4.17) ===== Diagnostics include file, line and column when the source allows it, including YAML fragments and ZIP archives. Clicking opens the relevant field; similar names may be suggested. Unknown destinations in ''do:'' are reported. Indices that depend on previous actions remain checked during play. **Globals > Health** gathers diagnostics. Media checks run on request. During **Test**, a panel displays runtime errors. **Test data** opens a separate window showing current variables, text, lists and collections. Click a structure to browse it and use the path to move up. Data refreshes automatically while the window is visible; **Refresh** reads it immediately. Inspection changes nothing, consumes no turn and keeps the game dimensions. This tool belongs to Web/Desktop editor tests, and is absent from normal games and HTML exports. If the browser blocks the window, allow it and click again. Close it with its close button or Escape inside that window.