The Dev Overlay
The dev overlay is a floating debug panel that appears in --dev builds. It's your primary debugging tool for Pulse scripts. It doesn't exist in regular builds — so there's no performance cost in your final output.
How to get it
Build with the --dev flag:
rb build --dev
Inject build/script.dev.lua (or build/script.dev.obf.lua). The overlay appears as a small pill button in the bottom-right corner labelled ◉ DEV.
Opening and moving it
Click the ◉ DEV button to open and close the panel.
Press Insert to toggle it from the keyboard.
Drag the ◉ DEV button to move it anywhere on screen — useful if it's covering the UI you're testing.
Drag the panel header to reposition the main window.
The LOG tab
The log tab shows every Pulse.Log call made since the script started, in real time.
Level filters — Click TRC, DBG, INF, WRN, ERR to show or hide each level. TRC is off by default (too noisy). Turn it on when you need per-frame detail.
Search — Type a tag or message keyword in the search box to filter. Only matching entries show. This is your fastest tool for isolating one component's behaviour.
ERR↑ — Jump directly to the most recent error entry.
COPY — Copies all visible log entries to clipboard for pasting into a bug report.
Collapsible entries
Each log entry shows a one-line summary. A ● dot means the entry has structured data attached.
Click ▶ on any entry to expand it. The expanded panel shows:
- The full non-truncated message
- Each data field on its own line:
name = "Kastervon118",dist = 15 - A COPY button that copies the full plain-text line to clipboard
Click ▼ again to collapse. This keeps the log readable when data payloads are large.
The FEAT tab
The FEAT tab shows every toggle in your script with its current state (ON/OFF). You can flip them without opening the main script window.
ALL ON / ALL OFF — Toggle all features at once.
This is useful when you want to isolate a feature: disable everything, then enable only the one you're investigating.
The CFG tab
The CFG tab shows a snapshot of everything:
- All toggle states (ON/OFF)
- All slider/dropdown values
- All Monitor values (live runtime stats)
REFRESH — Rebuild the snapshot.
COPY — Copy the entire snapshot as plain text (useful for sharing your exact config in a bug report).
The TOOL tab
The TOOL tab gives you one-click launchers for common Roblox development tools. Each tool is fetched over HTTP and executed in an isolated task.spawn — the main script continues running normally.
| Tool | What it does |
|---|---|
| Infinite Yield | Admin commands and executor utilities — speed, noclip, fly, command bar |
| Dex Explorer | Browse and inspect the live game tree; find instances, read properties |
| Remote Spy | Monitor every RemoteEvent / RemoteFunction call in real time |
LAUNCH — Fetches and executes the tool. The button shows ✓ on success or error (red) on failure. Errors are logged to the LOG tab under the dev-tools tag.
Each tool only launches once per session — clicking LAUNCH again shows "already running".
The monitor bar
The strip at the top of the overlay shows live Monitor values — updated every 0.25 seconds regardless of which tab is open:
players:3 titans:5 shifters:1 mode:Anarchy
These come from Pulse.Monitor.set(key, value) calls anywhere in your code.
Practical debugging flow
- Build
--devand inject - Enable the feature you're testing
- Open the overlay, switch to LOG, filter by your component tag
- Watch what happens in real time
- If you see "no target in FOV" but there should be targets: check the
candidatescount in the log data field — if it's 0, your target list is empty (wrong folder path). If it's > 0, the FOV check is failing (try a larger radius). - If you see throttled warnings: the loop is catching errors. Click ERR↑ or search "ERR" to find the error message.
What the overlay doesn't show
- Errors that crash the script before logging is initialised
print()/warn()calls (those go to the executor's console, not the overlay)- Errors inside pcall blocks that you didn't log yourself
Runtime errors in on Event blocks do appear in the overlay at ERR level — they're logged via Pulse.Log.error automatically, so you don't need to wrap them yourself.
For everything else, check your executor's Roblox output window alongside the overlay.