Settings

Every setting in JSLab's nine Settings tabs, with its default and what it changes.

⌘,, or JSLab → Settings…, opens the Settings window. It has nine tabs: General, Editor, Formatting, Appearance, Keybindings, AI, NPM, Build and Advanced. Search across all of them with the search field.

Every field has help text, and changes apply as you make them. Only a change of interface language needs a restart, and JSLab says so.

Every option, searchable in one window, applied the moment you change it.

General

Setting Default What it does
Auto Run On Runs code automatically as you type.
Auto Log On Shows the value of each top-level expression.
Default Runtime Bun The runtime for new tabs.
Default Language TypeScript The language for new tabs.
Format on Run Off Formats with Prettier before each run, unless you’re typing.
Confirm Close Off Asks before closing any tab.
Language System The language of menus and panels. Needs a restart.
Show tips On A short tip in the status bar the first time you meet a feature, during your first week.

Reset tips shows the first-week tips again and clears the ✓ marks in Learning & Tips.

Editor

Line numbers, wrapping, brackets, minimap, hovers, fonts and more are all in Settings.

Setting Default What it does
Line Numbers On Line numbers in the gutter.
Line Wrap On Wraps long lines to the editor’s width.
Vim Keys Off Vim key bindings. ⌘R still runs in every mode.
Close Brackets On Inserts the closing bracket or quote as you type the opening one.
Invisibles Off Shows spaces and tabs.
Active Line Off Highlights the line with the cursor.
Autocomplete On Suggests completions as you type.
Linting On Shows TypeScript diagnostics inline. They never block a run.
Hover Info On Shows type information when you hover over code.
Hover Delay 400 ms How long before hover information appears, from 100 to 2,000 ms.
Signatures On Parameter hints as you type a call.
Format on Save Off Formats with Prettier before saving a file.
Minimap Off A code overview beside the scroll bar.

Formatting

The Prettier options: Print Width, Tab Width, Use Tabs, Semicolons, Single Quotes, Quote Props, JSX Single Quotes, Trailing Commas, Bracket Spacing, Bracket Same Line and Arrow Parens. See Formatting for their defaults.

Appearance

Setting Default What it does
Theme Graphite The color theme for the editor and the window.
Follow System Appearance Off Switches between the Light Theme and Dark Theme with macOS.
Light Theme Graphite Light The theme in light mode, when following the system.
Dark Theme Graphite The theme in dark mode, when following the system.
Font JetBrains Mono The font for the editor and the output.
Font Size 14 From 8 to 72.
Font Ligatures On Combines pairs like => when the font supports it.
Zoom 1 Scales the editor, output and side bar, from 0.5 to 2.
Motion System How much JSLab animates: System follows macOS Reduce Motion; Reduced and Full override it.
Intro Sound On Plays the chime during the first-launch intro.
Tab Bar On Shows the tab bar even with one tab open.
Activity Bar On The activity bar on the left.
Status Bar On The status bar at the bottom.
Side Bar Off The side bar.
Side Bar Width 280 In pixels, from 240 to 600. Dragging the side bar’s edge sets it too.
Layout Horizontal The split direction for new tabs.
Output Highlighting On Colors output values by type.
Output Line Numbers On Shows the source line beside each output row.

See Themes and appearance.

Keybindings

Every command, its shortcut, where it applies and whether the binding is a default or yours. Record, reset or clear shortcuts here, or open keybindings.json. See Keybindings and the command palette.

AI

Setting Default What it does
Provider None Which service answers AI Chat: None, Ollama (Local), OpenAI, Anthropic or Google Gemini.
Ollama Model, OpenAI Model, Anthropic Model, Gemini Model Blank The model to ask for. Blank uses the default that ships with this version.
Ollama Base URL, OpenAI Base URL, Anthropic Base URL, Gemini Base URL Blank The endpoint. Blank uses the provider’s standard endpoint.
Send Recent Output On Includes the most recent run’s output as context, up to 20 KB.

Below them, API Keys stores a key for OpenAI, Anthropic and Google Gemini in your macOS Keychain. See AI providers and keys.

NPM

Setting Default What it does
Allow Install Scripts Off Lets packages run their install scripts, with your permissions. Applies to future installs.
Install Types Automatically Off Installs @types/<package> when an installed package has no types of its own.

Below them is an editor for JSLab’s own .npmrc, with Save and Reset. See npm packages.

Build

Decorators work as they are, and Settings → Build turns on pipelines, do expressions and other proposals.

function logged<This, Args extends unknown[], Result>(
  method: (this: This, ...args: Args) => Result,
  context: ClassMethodDecoratorContext<This>,
) {
  return function (this: This, ...args: Args): Result {
    console.log(`→ ${String(context.name)}(${args.join(", ")})`);
    return method.apply(this, args);
  };
}

class Greeter {
  @logged
  hello(name: string) {
    return `Hello, ${name}`;
  }
}

new Greeter().hello("Ada");

The syntax the transform accepts, and Tailwind for browser tabs.

Setting Default What it does
Decorators 2023-11 (standard) Decorator syntax: 2023-11 (the standard), Legacy (TypeScript’s experimentalDecorators) or None.
Pipeline Operator Off Hack-style |> with % as the topic token.
Do Expressions Off do { … } blocks that produce a value.
Throw Expressions Off throw as an expression, for example value ?? throw new Error().
function.sent Off The value last passed to a generator’s next().
RegExp Modifiers On Inline flags such as (?i:a) in regular expressions.
Optional Chaining Assignment On a?.b = c assigns only when a isn’t null or undefined.
Tailwind by Default Off Tailwind for every browser tab that hasn’t set its own. A tab’s Tailwind switch in the status bar overrides it.

Advanced

Setting Default What it does
Show Undefined Off Gives expressions whose value is undefined their own output row.
Loop Protection On Stops loops that run more iterations than the Loop Limit.
Loop Limit 2,000 Iterations before loop protection stops a loop, from 100 to 10,000,000.
Auto Run Delay 300 ms How long after you stop typing before code runs, from 0 to 5,000 ms.
Unresponsive Timeout 3,000 ms How long without a response before JSLab offers to kill a run, from 1,000 to 60,000 ms.
Output Limit 10,000 The most entries kept per run before output is truncated, from 100 to 100,000.
Automatic Updates On Checks for, downloads and installs updates in the background. See Updates.

The Advanced tab also has three buttons:

  • Open Data Folder shows JSLab’s data folder in Finder.
  • Reset All Settings… returns every setting to its default, after you click Confirm Reset.
  • Restart in Safe Mode relaunches JSLab with Auto Run paused. See Troubleshooting.

Settings are saved in settings.json in JSLab’s data folder.

Last updated