Skip to content

Workspace tab kinds

The central pane of the Forge workspace is a tabbed editor surface. Every tab has a kind that determines what it renders. Most you’ll open by clicking files in the project explorer or picking from the Tools menu; a few open automatically when the agent generates an asset of the matching shape; a few are agent-driven.

KindOpens viaWhat it shows
chatCtrl+N, command palette → New chatConversation surface. Messages, mode chip, prompt input.
monacoClick code file in explorerCode editor with syntax highlighting. Save with Ctrl+S.
markdownClick .md file in explorerSource / rendered split view. Memory files default to rendered.
imageClick .png / .jpg / .webp / .gif / .svgPan + zoom viewer with size and color depth metadata.
audioClick .wav / .mp3 / .oggInline player with waveform and clip metadata.
previewTools menu → View → Open previewWeb preview control panel.

Open from Tools menu → Asset generation (BYO key). Each is documented under Custom tools.

KindVendorOutput format
voiceElevenLabsMP3
musicElevenLabsMP3
sfxElevenLabsMP3
meshMeshyGLB
spriteScenario.ggPNG
motionDeepMotionFBX

Open from Tools menu → Pipeline tools or by clicking a matching asset file. Each is documented under Custom tools.

KindPurposeAuto-opens for
paletteColor harmonies and ramps.palette.json
spritesheetMaxRects atlas packing.spritesheet.json
tilemapSingle-layer tile painting.tilemap.tmj
shaderWebGL2 fragment sandbox.glsl / .frag (with descriptor)
aseprite.ase reader.ase / .aseprite
audiotrimAudio cropping(Tools menu only)

Forge ships visual editors for the data-driven scene formats the starter bundles use. Each auto-opens when you click a matching file in the explorer or when the agent emits a forge-link pointing at one.

KindAuto-opens forWhat it shows
platformerscene.platformer-scene.jsonSide-scroller painted-ground + entity spawn editor (platforms, pickups, enemy spawns, exit)
topdownscene.topdown-scene.jsonTop-down map viewport (x, z) for NPC and prop placement
scene3d.scene3d.json3D adventure / arena scene loader (camera and prop placement)
dialog.dialog.jsonBranching dialogue node graph (linear / choice / terminal nodes, per-node voice id, emotion)
animation.animation.jsonSprite-sheet animation clips (frames, fps, loop)
parallax.parallax.jsonMulti-layer scrollable scene editor (depth multipliers, layer ordering)

The Platformer bundle uses platformerscene, animation, and parallax. The Top-down RPG bundle uses topdownscene, animation, dialog, palette, tilemap, and shader. The Narrative bundle uses dialog.

KindOpens viaWhat it shows
qaClick .forge/qa/*.toml or Tools → QAQA scenario browser. Lists Playwright scenarios per project, runs them via the harness. See QA playtest.
librarySidebar → Library tab → expand to full screenFull-screen Library browser with filters, search, tags.
gamemanagerInspector → Systems → Game Manager → OpenThe GameManager spine: registered systems, startup order, per-system editors.
KindOpens viaWhat it shows
cliTools menu → CLI launchers (Codex CLI, Claude Code)Terminal session running an external CLI tool.

Common operations:

  • New chat tab: Ctrl+N.
  • Close active tab: Ctrl+W.
  • Cycle within active pane: Ctrl+Tab / Ctrl+Shift+Tab.
  • Drag a tab to reorder within its pane.
  • Drag a tab to a pane edge to split off into a new pane.
  • Drag a tab out of bounds to detach into a new window.

When tabs overflow the strip width, a menu appears at the right edge and horizontal scroll handles the rest. The pattern matches VS Code’s behaviour.

Forge with the sidebar collapsed for a focused-mode view

Toggle the sidebar with Ctrl+B for a focus mode that hides the project explorer.

Workspace with the Monaco editor on top and an integrated PowerShell terminal session in the bottom panel

The bottom panel hosts a real PTY terminal session that you can split off per project task. Toggle it with Ctrl+`.

Open tabs are written to <project>/.forge/workspace.json (project mode) or localStorage (open mode) so reopening a project restores the same layout. Most tab kinds restore by file path; chat tabs restore by session ID.

A few kinds intentionally don’t restore: asset studio tabs (in-flight generations would lose state) and audiotrim (the loaded buffer doesn’t survive). These open fresh next time.