### PaperScape Quick Reference

Cheat sheet for everyday scene authors working inside the PaperScape canvas.

## Launch & Layout

- Open `/OpenForum/AddOn/PaperScape`; the canvas fills the viewport and the off-canvas menu toggles with the hamburger icon.
- Use the mouse wheel (or pinch) to zoom; drag the backdrop to pan while no items are selected.
- Toggle full screen via Actions → Full Screen for maximum space.

## Working with Items

- Drag files onto the canvas: `.giraffe.js` components, `.giraffe.json` scenes, or images (JPG/PNG/SVG/WEBP).
- Each drop appears under Items in the side menu so you can reopen its edit window.
- Select an item and press Delete (or use the edit modal) to remove it.
- Need precision? Enable select-box via developer tools, or add snap-to-grid through custom scripts.

## Saving & Loading

- Use Actions → Save to persist the current scene into `paperScape.json`.
- Use Actions → Load to reload the saved scene. Note: loading currently adds to existing items; clear the canvas first.
- Saved images are embedded as data URLs; large assets will increase load/save time.

## Editing Items

- Many components expose a modal configuration form. Click their entry in the side menu to reopen it.
- Use the Remove button inside the modal to delete the item and close the dialog.
- Measure tool: adjust the end points, open its modal to rename, change units, and recalibrate distance.
- Whiteboard: click a coloured circle to change pen width/color; draw by dragging on the board.

## Developer Utilities

- Open Developer Console for the dual editors.
- Run executes the JavaScript editor content inside the live PaperScape instance.
- The JSON editor is handy for crafting `.giraffe.json` snippets and sending them over IntraQ.

## Queue Automation

- PaperScape now listens on the `PaperScape` IntraQ queue—the same tab-to-tab bus used elsewhere in OpenForum.
- Load `/OpenForum/AddOn/PaperScape/paperscape-queue.js` and run `var psq = new PaperScapeQueue();` to start broadcasting.
- `psq.sendUrl("/OpenForum/AddOn/PaperScape/Apps/object-model-view.giraffe.js")` queues a drop exactly like dragging the file onto the canvas.
- `psq.sendFile(fileInput.files0, {pointer:{x:300,y:200}})` converts any supported file into a data URL and spawns it near the chosen coordinates (defaults to the canvas centre).
- `psq.sendCode(editor.getValue(), {name:"Workflow Builder", replace:true})` hot-swaps custom apps—ideal for iterative development.
- Queued loads append just like manual drops; clear the canvas first when you intend to fully replace a scene.

## Object Model Toolkit

- Drop `/HomeLab/ObjectModelView/object-model-view.giraffe.js` to embed the editable object model canvas.
- Drag `.omv.json` files/URLs onto the canvas to import or replace the current model—PaperScape prompts you before applying changes.
- Top-left controls include Save Model (server path), Open Model (file picker with import/replace), Download (save JSON to desktop), and New Model (blank scene with suggested file name).
- PaperScape reminds you if a file name does not end with `.omv.json` so downloads and drops keep working everywhere.
- Use the + New Entity control button (top-left overlay) to spawn a new class box; it drops near the viewport centre.
- Hover an entity title to reveal the ✎ icon—click it to rename the entity or manage fields and methods. Identifiers must be unique.
- Hover the bottom-right ⇄ icon to add relationships: choose a target entity and type (association, inheritance, composition); existing links can be removed from the same dialog.

## Tips

- Keep a backup of `paperScape.json` before experimenting; there is no version history yet.
- Only load trusted `.giraffe.js` files—drops execute code instantly.
- If the Items menu stops updating, refresh the page; duplicated load actions can confuse the registry.