TurboWarp custom extension

Wait for the signal you need.

Coordinate scripts with named notifications, keyboard events, and optional timeouts—without polling.

controllersend “next”→waiting scripts

01 · Install

Use the reviewed 0.1.1 build.

  1. Open TurboWarp Desktop.
  2. Add the version-pinned URL below as a custom extension.
  3. Enable Run extension without sandbox when prompted.
https://cdn.jsdelivr.net/npm/@kubohiroya/turbowarp-extended-notification@0.2.1/dist/extended-notification.js

Why unsandboxed? Keyboard waits listen for browser key events and all waits are cancelled when the TurboWarp runtime stops. Load the extension only from a source you trust.

For a local dependency, run:

npm install --save-exact @kubohiroya/turbowarp-extended-notification@0.2.1

02 · Blocks

Send, wait, or race a timeout.

Send a notification

send extended notification [MESSAGE]

Resumes every script already waiting for the same name.

Wait for a notification

wait until extended notification [MESSAGE] is received

Pauses this script until that notification arrives.

Wait with a timeout

extended notification [MESSAGE] received before [SECONDS] seconds

Returns true for the notification and false for timeout or project stop.

Wait for a key

wait until [KEY] key is pressed

Observes a new keydown after the block starts waiting.

Wait for a key or timeout

[KEY] key pressed before [SECONDS] seconds

Returns which event happened first.

03 · Behavior

Notifications are live signals, not a queue.

See the complete behavior specification for normalization and compatibility details.

Extended Notification: complete block reference

All 5 blocks are documented below, including compatibility blocks and blocks available through optional features. Select a block to read its behavior, arguments, default values, and menu choices. Each block has a permanent link.

send extended notification [MESSAGE]

Sends a named notification to every script currently waiting for that name.

Block type: COMMAND. Opcode: sendNotification. Permanent link

ArgumentTypeDefault valueMenu choices
MESSAGESTRINGnext

wait until extended notification [MESSAGE] is received

Pauses the current script until the named notification is received.

Block type: COMMAND. Opcode: waitForNotification. Permanent link

ArgumentTypeDefault valueMenu choices
MESSAGESTRINGnext

extended notification [MESSAGE] received before [SECONDS] seconds

Returns true when the named notification arrives before the timeout, otherwise false.

Block type: BOOLEAN. Opcode: waitForNotificationOrTimeout. Permanent link

ArgumentTypeDefault valueMenu choices
MESSAGESTRINGnext
SECONDSNUMBER5

wait until [KEY] key is pressed

Pauses the current script until the selected key is pressed.

Block type: COMMAND. Opcode: waitForKey. Permanent link

ArgumentTypeDefault valueMenu choices
KEYSTRINGspace

[KEY] key pressed before [SECONDS] seconds

Returns true when the selected key is pressed before the timeout, otherwise false.

Block type: BOOLEAN. Opcode: waitForKeyOrTimeout. Permanent link

ArgumentTypeDefault valueMenu choices
KEYSTRINGspace
SECONDSNUMBER5

Repository guide and examples

Fixed input editing

With a compatible TurboWarp GUI, enable fixed-input forms to edit only standard literal fields. Numbers use complete finite JSON number tokens; menu fields use existing choices. Connected reporters and unavailable fields stay read-only and are never evaluated. Saving an unchanged form preserves exact existing raw values, including legacy spellings and unknown choices. Invalid drafts stay in the same editing session; cancel, project/target replacement, or block removal discards them. Disabling the GUI feature flag restores native field editing. This form does not run blocks, open network/audio/key/QR sessions, resolve names, or edit Schema arguments.