IDE Ink editor
Creator Studio includes a full-screen Ink editor for writing conversations. It is not VS Code. It is Sexter's own multi-file IDE: save compiles into the game, with autocomplete for tags and externals, find/replace, media insert, and warning underlines.
The Creator Studio page covers Studio tabs (Characters, Modules, Publish, and so on). This page is only the Ink IDE.

Opening the editor
From Studio → Conversations:
- Open Editor opens the first main-chain Ink file
- Click a chapter, side conversation, injection, or DM row to open that file
- Click a warnings pill to jump to the first problem in that conversation
Inside the IDE, use the left Files list (or open tabs) to move between files.
Layout
| Area | Role |
|---|---|
| Left sidebar | Files, Media, or Search |
| Top toolbar | Save, Test, Git (if linked), reference tools, close |
| Tabs | One tab per open Ink file |
| Editor | Line numbers, syntax colors, warning squiggles |
| Find bar | In-file find / replace (⌘F / ⌘H) |
On phones, opening a file hides the sidebar so the editor has room. Use the panel toggle to bring Files back.

Files
Grouped as:
- Main Story (ordered chapters; unlock day/time on the chain)
- Side Conversations (by character)
- Injections
- TheGram DMs, FansOnly DMs, Swiper DMs
Click a row to open it. Drag to reorder the main chain. Use + (and insert-between rows) to add conversations.
Right-click a file in the sidebar:
| Item | Action |
|---|---|
| Edit | Conversation settings (character, slug, unlock time, and related fields) |
| Delete | Remove that conversation / side / injection / DM |
Media
Pictures, videos, and SFX from the story library. Search, upload, then insert at the caret as <media-id> (or <injectmic-id> for MIC TAP SFX).
Search
Project-wide search across Ink (needs at least 2 characters). Optional Match case, plus Replace / Replace all across every file in the story. Project replace saves and recompiles after you confirm.
Toolbar
Left to right (labels match the UI):
| Control | What it does |
|---|---|
| Panel toggle | Show or hide the file explorer |
| Title | Conversation name (click to rename when editable) |
| Search icon | Jump to sidebar Search (project find/replace) |
| Test | Play this conversation in the phone UI. If the tab is unsaved, Studio warns first. Test runs the last saved & compiled version |
| View only | Badge when you cannot edit. Browse, search, and Test still work |
| Save all | Appears when other tabs are dirty. Saves and compiles every unsaved tab (⌘⇧S) |
| Save & Compile | Saves the active file and compiles it. Shows Compiling… while working |
| Git | Only if the story is linked to GitHub. Pull / push from here |
| Emoji | Toggle the emoji insert strip |
| Book | Ink syntax cheat sheet (click a row to insert when editable) |
| Flag | Story data: flags and numbers used in the story, with Get/Set insert and jump-to-use |
| Sliders | Editor appearance (theme, font, size, line height). Stored in your browser |
| X | Close the IDE. Confirms if any tabs are unsaved |
After save you get a short status: Saved & compiled, or Saved with a compile error message (source is kept even if compile fails).

Appearance
Color profile: Vivid, Ocean, Warm, or Mono (no colors). Font: JetBrains Mono, System Mono, or Courier. Font size 12–20px. Line height: Tight, Cozy, Normal, Relaxed.
Right-click in the editor
Context depends on what is under the cursor and whether the file is editable.
| Item | When | Action |
|---|---|---|
| Add missing SFX / Add missing image | Media tag with a missing-media warning | Upload using that id (does not invent a new id) |
| Preview SFX / Preview player media / Preview gallery save / Preview media | Known media tag | Quick preview |
| Open injection: … | <inject-…> that has a conversation | Opens that Ink tab |
| Preview Injector image | Injection with Found images | Preview |
| Convert script to Ink | Multi-line selection | Turns a plain draft into Ink (NPC lines; mc: lines become player choices/knots) |
| Insert picture / video | Edit mode | Upload, then insert <id> |
| Insert MIC TAP SFX | Edit mode | Upload, then insert <injectmic-id> |
You can also ⌘-click (Ctrl-click on Windows) a divert, media tag, inject tag, or flag name to jump or preview.

Autocomplete
Suggestions appear while you type. Titles include Story flags, Story numbers, Speakers, Knots, Apps, Characters, Commands, and slug lists for sides / DMs / shares.
- Tab or click to accept
- ↑ / ↓ to move
- Esc to dismiss
- Enter always inserts a newline (it does not accept the suggestion)
Common triggers: [ in group chats, <side-conv- / <inject- / DM prefixes, -> and ===, InstallApp(", GetStoryFlag(" / SetStoryNumber(", and ~ followed by a command name.
Warnings
Studio scans the whole story for authoring problems. There is no separate "Problems" panel. Warnings show up in three places:
- Conversations list: pills like
1 warningorN warnings. Click to open the IDE at the first hit - Files sidebar: triangle on the row. Hover for the message; click to jump
- Editor: red underlines. Hover for the same message

Typical categories:
| Kind | Examples |
|---|---|
| Compile / Ink | inkjs errors after Save & Compile |
| Missing media | Image or <injectmic-…> SFX id not in the library |
| Broken links | Unknown <side-conv-…>, empty <inject-…>, unreachable side |
| Deprecated / Unity leftovers | <side-story-…>, legacy <insta-…>, leftover RunCommand |
| Modules | Tag or InstallApp while the module is off; MIC TAP without InstallApp("mictap") |
| Unknown names | Bad app id, NPC slug, or ~ command |
| Flags | Set never read, or Get never set (orphan hints) |
| Timing / Skipr | Odd unlock times on the main chain; Skipr points without a day |
Fix warnings before you publish. Many bad tags fail silently at runtime for players. Tag reference: Tags. Externals: External functions.
Shortcuts
Shown under the title when a file is open (Studio uses Mac symbols; Windows / Linux equivalents in parentheses):
⌘S (Ctrl+S) save · Tab/⇧Tab indent · ⌘/ (Ctrl+/) comment · ⌥↑↓ (Alt+↑↓) move · ⌘F (Ctrl+F) find · ⌘H (Ctrl+H) replace
| Shortcut | Action |
|---|---|
⌘S / Ctrl+S | Save & Compile |
⌘⇧S / Ctrl+Shift+S | Save all dirty tabs |
⌘F / Ctrl+F | Find in this file (or project Search if focus is elsewhere) |
⌘H / Ctrl+H | Replace in this file (or project replace) |
Tab / ⇧Tab | Indent / outdent (Tab also accepts autocomplete) |
⌘/ / Ctrl+/ | Toggle // comments |
⌥↑ / Alt+↑ · ⌥↓ / Alt+↓ | Move lines |
⇧⌥↑ / Shift+Alt+↑ · ⇧⌥↓ / Shift+Alt+↓ | Duplicate lines |
⌘⇧K / Ctrl+Shift+K | Delete line(s) |
⌘Z / Ctrl+Z | Undo |
⌘⇧Z / Ctrl+Shift+Z (or Ctrl+Y) | Redo |
⌘-click / Ctrl-click | Jump / preview divert, media, inject, or flag |
What you can and cannot do
You can
- Edit every story Ink file in one IDE (main chain, sides, injections, module DMs)
- Save and compile into Sexter (source stays even if compile fails)
- Find and replace in one file or across the project
- Insert media and MIC TAP SFX from the sidebar or right-click menu
- Use Sexter-aware autocomplete and the cheat sheet
- Test the conversation on the real phone UI
- Rename, reorder the main chain, set unlock day/time
- Sync with GitHub when the story is Git-linked
- Work in View only to browse and Test without saving
You cannot
- Format document / Prettier (there is no auto-format)
- Multi-cursor, code folding, or a minimap (this is not VS Code)
- Edit arbitrary folders on disk. Only this story's Ink tree
- Compile without saving
- Set breakpoints or step through Ink like a debugger
- Rely on Test while the tab is dirty without saving first (it uses the last successful save)
External editors (VS Code, Cursor) are optional for drafting. Studio remains the place that compiles, warns, and attaches media for Sexter.
Related
- Creator Studio for tabs outside the IDE
- Getting started for the first-story path
- Tags, External functions, Timing and pacing
- Side conversations
- Publish and updates
