The window

Open a project in its own window to browse, edit, run and take back any change.

shot open Demo.ssp

opens the project in an app window of Microsoft Edge, with a profile of its own.

  • Run it again with the window open: that window comes forward.
  • Without Edge, shot open says so and names the address to open in any browser.
  • shot open Demo.ssp --url prints that address and opens nothing.

While the window is open, the project stays open. Changes made in the window and by shot commands show in both at once.

The ShotScript window under its File, Edit and Help menus, with a project's tree, a Luau program in the editor, an object's properties and the program's output after a run.

The menus

Above the panes: File, Edit and Help, an Undo button and the project's kind. Esc or a click outside closes a menu.

File   New project...                         a new project, opened in this window
       Open project...                        another project, opened in this window
       Rename project...                      a new name for this project's file
       Save                    Ctrl+S         every open script, then the file, with a dated copy (SAVING)
       History                                the History pane (HISTORY)
       Go to...                Ctrl+P         an action, a script or an object, by name
       Search the project...   Ctrl+Shift+F   every line holding the text
Edit   Undo                    Ctrl+Z         named after the step it takes back, and who made it
       Redo                    Ctrl+Y         the same, for redo
Help   ShotScript docs, Getting started, The window, Running a project: these pages, in your browser
  • New project asks for a name (letters, digits and _, starting with a letter, at most 60), a kind (System, Generic or Roblox) and a folder's full path. A bad or taken name, or a missing folder, is refused under the fields; after a taken name, OK opens that project instead.
  • Open project lists Recent (newest first) and the other project files In this folder. Click one, or type a project file's full path.
  • Both save the Editor's text, then show the other project in this window.
  • Rename project renames the file and its dated copies, but not while the program runs. Renaming the root in the Explorer or in Properties does the same.
  • An older project file, <Name>.shotsystem, opens with a bar offering Save as <Name>.ssp or Keep .shotsystem.
The window's File menu open, offering New project, Open project, Rename project, Save, History, Go to and Search the project, over the Explorer beside the Properties of a number value.

The panes

The window with all five panes open at once: the Explorer and Properties on the left, a Luau program in the Editor, its output after a run, and the History of the project's changes.
  • Explorerthe project's tree
  • Propertiesthe selection's properties, attributes and tags, edited in place
  • Editorscripts, checked as you type
  • Outputruns (RUNNING)
  • Historythe project's steps and dated copies (HISTORY)
  • Problemsevery error and warning in the project, by file; a click opens the line

History and Problems start closed, and each opens in a pane of its own. The window's title counts the problems.

A pane's name, or a right-click on its header, opens its menu:

Split left and right
Split top and bottom
Swap with                 another pane, picked by name
Maximize / Restore        Ctrl+Space
Explorer ... Problems     what this pane shows (the current one ticked)
Reset layout

Splitting History or Problems gives an Editor beside it. With the mouse:

Drag a dividerresize
Drag a corner inwardsplit the pane
Drag a corner outwardjoin the pane with its neighbour
Ctrl and a corner dragswap two panes

Esc cancels a drag. The layout and the Editor's text size are kept, for every project.

Keys

Ctrl+Ssave (SAVING)
Ctrl+Zundo the project's last step (HISTORY)
Ctrl+Y, Ctrl+Shift+Zredo it
Ctrl+Pgo to an action, a script or an object
Ctrl+Shift+Fsearch every file of the project
F5, Shift+F5run, stop, while there is an Output pane (RUNNING)
F8, Shift+F8the next, the previous problem
Ctrl+Spacemaximize or restore the pane under the pointer
Ctrl+= / Ctrl+- / Ctrl+0the Editor's text larger, smaller, as it was; Ctrl and the wheel too
Escclose a menu, cancel a drag

In the Explorer:

Ctrl+Iinsert: pick what, then type its name; beside a script, inside a folder (the + on a row too)
F2rename
Deletedelete
Enteropen a script, or expand or collapse
arrow keysmove the selection; right and left open and close
Ctrl+C, Ctrl+X, Ctrl+Vcopy, cut, paste
Ctrl+Dduplicate
Ctrl+Alt+Ggroup as a Folder
Ctrl+click, Shift+clickpick several

In the Editor:

Ctrl+Icompletions (the list also opens as you type)
Alt+F12go to definition
Shift+Alt+F12find usages
F2rename a member across the .shot scripts, as one step

Outside a text field, Ctrl+Z and Ctrl+Y work on the project, whoever made the last step; inside a box, on the box.

The editor's steps

Typing goes into the project as one step, edit <file> by editor, when it ends: 2 seconds without a key, the caret on another line, the Editor left, Run or Ctrl+S.

Ctrl+Z in the Editor takes back a whole typed change: in the project too if nothing changed since, else as a new step. Ctrl+Y works the same way.

If the script changed elsewhere meanwhile, a bar above it says who changed it, with Load theirs and Save over it.

Saving

The file is written 1.5 seconds after every change. A save also keeps a dated copy. Ctrl+S and File > Save first put the Editor's text in, then show what shot save prints:

saved Demo.ssp; dated copy Demo_2026-10-20_01-21-43

Nothing new since the last copy:

saved Demo.ssp; no change since the last dated copy

shot save itself doesn't wait for the Editor: typing goes in when it ends.

A script that couldn't go in turns the message red until clicked: "<file> isn't saved: <why>", then "Everything else:" and the save's message.

Copies go in Demo.history beside the file, one also every 10 minutes while changes come in. All of the last 24 hours are kept, then one a day. shot history lists them with their size and the steps since the copy before (its first line, naming the folder, left out):

 Demo_2026-10-20_01-21-480 KB write Helper.luau
 Demo_2026-10-20_01-21-430 KB as opened

History

Every change is one step, from the window or a command. The pane's head counts them: "5 steps · 1 copy".

The Properties of a new value beside the History pane listing the project's recent changes, with the last change undone and a dated copy under them.
  • Steps, newest first: label, who (cli, editor, explorer, properties, history, output) and time. Undone steps sit above the current one, greyed. Opened and Opened again mark each opening.
  • A click previews a step: what going there changes, line by line. Its button, Go back to this step (or Go forward to this step), goes there; Esc closes. Going back is one new step that Ctrl+Z takes back. If the project changed meanwhile, the pane refuses and reads it again.
  • The last 500 steps are kept (20 MB at most), and the pane shows the newest 200. Once older ones are dropped, the list ends "Older steps aren't kept (the last 500 are)."
  • Dated copies have Restore (one step); a click shows what changed since, with Restore this file.
  • File > History opens the pane; a script's right-click Show History shows only that script's steps.

It rereads after every change, a save, and every 20 seconds.

Steps outlast closing the project, minus undone ones not redone, but undo and redo reach only those made since it was opened. Going back to an older step in the pane still puts back the text of every file changed since, as one new step; properties and tags come back only over steps made since it was opened.

Make this the export

Right-click a script in the Explorer (a .shot file, a folder module or a .luau file, not a Types.shot): Make this the export is the first item.

It points the header's export line at the script's path from the root, names joined by dots, as one step; the window says what the export was. On Helper.luau beside Main.shot, shot show .shotsystem --project Demo.ssp then prints:

.shotsystem  lines 1-3
   1  shotsystem 1
   2  kind System
   3  export Helper

and shot map --project Demo.ssp:

export Helper: a library, Helper.luau

A name with a character other than letters, digits and _, or two things on the way with one name, can't be an export path; the window says why. The export's row says "export" in grey, and it heads the Output's Run menu (One-file projects, THE EXPORT).

Running a project

The Output pane runs the project as the window holds it, in a process of its own.

A short Luau program next to the lines it printed when it ran.
  • Run (F5) puts the Editor's text in, then runs, never writing the file. Before the first run, the Output says what Run runs.
  • After Insert object makes a Script, the Output offers "Make <Name> the export" until taken, closed or a run starts.
  • The menu beside Run picks what Run and F5 run: the export, a scenario or All scenarios.
  • Stop (Shift+F5) ends the program and all it started; Run during a run restarts it.
  • While it runs, the title is "<Name> - Running", and "edited since this run started" shows after a change.
  • An error's file and line opens the Editor there. A run keeps its last 5000 lines; Clear empties the pane.

From a command line: shot run Demo.ssp (see Running a project).