Application commands

These commands manage the app itself — the current tab's transcript and name, the syntax theme, and quitting. For creating tabs see Agents; for opening files and pages see Opening files and pages.
| Command | What it does |
|---|---|
help | List the available commands and key bindings |
state | Show the current agent's saved state fields (long values truncated) |
clear | Empty the current tab's transcript — other tabs are unaffected |
rename [newname] | Set (or, bare, clear) the tab's display alias — see Tabs |
theme [name] | Switch the application color theme; bare form opens a picker |
syntax theme [name] | Switch the editor syntax theme; bare form opens a picker |
notifications [left|right] | Open the notifications feed, optionally docked in a sidebar |
notify <message> | Push a custom line into the notifications feed |
plugins | List the bundled tab plugins with their version and state |
quit | Exit the application, after confirmation |
theme
theme <name> sets the application's color theme — the tab strip, transcript colors, panels, borders, pickers, dialogs, and editor chrome — and applies it immediately, with no restart. It persists to the theme key in .janissary/config.json, so it survives a restart. Names match case-insensitively. An unrecognized name shows an error listing the six built-in themes: dark (the default), light, solarized-dark, solarized-light, nord, and dracula. There are no custom themes.
Bare theme opens a picker overlay listing every theme, each row showing a swatch of that theme's own colors next to its name, with the active theme marked. ↑/↓ move the selection, Return applies it, Escape closes, and a row can be clicked.
theme sync sets the syntax-highlighting theme to the app theme's name, when a syntax theme with exactly that name exists — otherwise it reports that no matching syntax theme exists and leaves the syntax theme unchanged. The application theme and the syntax theme are independent settings; nothing keeps them in sync automatically, so theme sync is the only bridge between them. Today only nord exists in both name sets, so sync usually reports no match.
Embedded web pages and ANSI-colored shell output are deliberately outside the theme.
syntax theme

syntax theme <name> sets the syntax-highlighting theme used by every open editor tab, and persists it so it survives a restart. Names match case-insensitively. An unrecognized name shows an error listing the available themes — which is also a quick way to see what's on offer. Bare syntax theme opens a picker overlay instead: arrows move, Return picks, Escape closes.
quit and the confirmation dialog

quit is the only command that exits the whole app, and it always asks first: a dialog reading "Are you sure you want to quit?" with Quit (y) and Cancel (n) buttons. Cancel is selected by default, so a stray Enter is safe. Press y to confirm or n / Escape to cancel; ←/→ move the selection. While the dialog is open it traps all other input — clicks outside it and other keys do nothing.
Don't reach for exit to leave the app: exit is an alias of close and closes the current tab. The one overlap is the last tab — closing it exits the app, so close, exit, the tab strip's × and Cmd+W/Ctrl+W all show the same confirmation dialog there (see Tabs).
Quitting with unsaved work
If any tab has unsaved changes when you quit, you get a different dialog instead: "You have unsaved changes. Close anyway?" with Close anyway (y) and Cancel (n). It answers to the same keys as the ordinary quit dialog, with Cancel selected by default.
Confirming quits straight away and throws those edits away. There's no per-file save prompt on this path, so save what you want to keep before you confirm. Cancelling leaves every tab open with its edits intact.
Unsaved work means an editor tab holding a buffer you haven't written, or an image tab holding edits you haven't saved. Both raise this dialog. This is a different thing from the save prompt you get when closing one tab while others remain — that one offers to save the file first.
Closing the browser window or reloading the page while work is unsaved gets you the browser's own "leave site?" prompt, which is the one close path the app can't put a dialog in front of.
notifications and notify
notifications opens a single feed tab that collects background-tab events — an agent finishing, a message arriving, a scheduled command firing, an agent starting a turn. Each event type is off until you turn it on in .janissary/config.json. notifications left or notifications right docks the feed into a sidebar. notify <message> posts your own line into that feed from any tab, which always shows (even from the focused tab) as long as the feed is open. If the feed isn't open, events and notify messages are simply dropped — nothing is queued up. The full page is Notifications.
Command comments
Anything between ## markers is stripped from a command before it runs or is saved to history:
git status ## check before the demo ##
## just cleaning up ## clearBoth run normally with the comment removed. A ## with no closing marker comments out the rest of the line. A line that's only a comment does nothing. You'll also see the app use this itself: commands fired by the scheduler appear in the transcript as <command> ## scheduled ##.