-
-
Notifications
You must be signed in to change notification settings - Fork 558
Hidden Features
xyOps includes a number of shortcuts and quality-of-life features that are easy to miss. This guide collects them in one place so you can work faster without having to discover them by accident.
On macOS, use the Option key wherever this guide mentions Alt. On Windows and Linux, use Alt.
Holding Alt while you click unlocks several shortcuts throughout xyOps:
- Skip a confirmation dialog. Hold Alt while clicking an action that normally asks for confirmation. xyOps immediately accepts the dialog's primary action. This works for regular and destructive confirmations, so use it carefully.
-
Toggle protected enable/disable checkboxes. When accidental-click protection is enabled by your administrator (
client.alt_to_toggle), hold Alt while toggling Events, Alerts, Plugins, Web Hooks, Roles, Buckets, or Channels. - Zoom out on a graph. Clicking a zoomable graph zooms in around the point under the pointer. Alt-click the graph to zoom out instead.
- Copy graph data as JSON. Hover over a graph to reveal its tools. Hold Alt while clicking Copy Image Link to copy the graph's raw JSON data instead of uploading and copying an image link.
Other Alt shortcuts for editing Events and Workflows are covered in the sections below.
You can select a continuous range of items in a multi-select menu with Shift:
- Select the first item in the range.
- Hold Shift and select the last item.
- xyOps selects both items and everything between them.
This works in multi-select menus that stay open until you click Accept, such as target, tag, action-condition, and similar menus.
You can also select a repeating pattern of items in a multi-select menu with Alt:
- Select the first item in the pattern.
- Hold Alt and select the next item.
- xyOps uses the distance between those two items as a step, then selects the same pattern through the rest of the menu.
For example, select item 2 normally and then Alt-click item 5. xyOps also selects items 8, 11, 14, and so on.
For advanced edits, open an Event or Workflow's view page, hold Alt, and click Edit. Instead of opening the normal form or Workflow editor, xyOps opens the underlying editable object in a JSON editor.
Make your changes and click Save Changes to update the object. xyOps preserves the object's internal creation, modification, and revision metadata automatically.
Warning
Raw JSON editing bypasses many of the guardrails provided by the UI editor. Invalid or inconsistent data can prevent an Event or Workflow from loading or running correctly. Export a copy first if you are making a substantial change.
Whenever xyOps opens a Code Editor dialog, you can drag a local text or code file directly onto the editor to load its contents. This works anywhere the shared Code Editor appears, including Plugin scripts, raw JSON editors, and other advanced configuration fields.
If the editor is not locked to a particular format, xyOps examines the file contents and automatically selects an appropriate syntax-highlighting mode. Only the first dropped file is loaded.
Warning
Dropping a file replaces everything currently in the editor. Copy any unsaved work you want to keep before loading the file.
When a job is waiting in Start Delay or Retry Delay, its state label is clickable. Click the label, then confirm Skip Delay to release the job immediately instead of waiting for the countdown to finish.
This shortcut appears anywhere xyOps renders the live job state, including Job Details and live job tables. You need the Run Jobs privilege to use it.
You can also hold Alt while clicking the delay label to accept the confirmation immediately.
Normally, tags in a Plugin's STDOUT push message are specified using their internal IDs. When your running job needs to choose tags dynamically, you can specify each tag by its title instead:
process.stdout.write(JSON.stringify({
xy: 1,
push: {
tags: ['Needs Triage', 'Severity 1']
}
}) + '\n');When the job completes, xyOps looks for tag definitions with those exact titles and replaces the titles with their internal IDs. This also means tag-based completion actions see the normalized IDs.
Title matching is exact and case-sensitive. If xyOps cannot find a matching tag ID or title, it ignores that value and adds a warning to the job's activity log. Continue to use tag IDs for tags configured through the xyOps UI and for tag actions.
A Plugin can add an email action to its own running job by printing a push message to STDOUT. The action can wait for a result condition such as success, error, or complete, so the Plugin can decide at runtime whether an email should be added and what it should contain.
Here is a Node.js example that adds an email to be sent when the job completes:
const emailBody = [
'<!-- Subject: Custom xyOps Job Report -->',
'<!-- Title: Job Report -->',
'<!-- Button: View Job | {{links.job_details}} -->',
'',
'The job has finished. This message was created dynamically by the running Plugin.'
].join('\n');
process.stdout.write(JSON.stringify({
xy: 1,
push: {
actions: [{
condition: 'complete',
type: 'email',
enabled: true,
users: [],
email: 'admin@example.com',
body: emailBody
}]
}
}) + '\n');The body supports GitHub Flavored Markdown, xyOps expressions, and special HTML comments for metadata such as Subject, Title, and Button. You can omit body to use the standard job notification email.
Pushed actions are appended to the job's existing actions. They cannot replace or remove actions that are already present. Use the special instant condition if the email should be sent as soon as xyOps receives the push instead of waiting for the job to finish.
A Plugin can fire a configured Web Hook using the same dynamic-action technique. Print a push.actions message to STDOUT with the web_hook action type and the ID of the Web Hook you want to invoke.
xyOps ships with a sample Web Hook named Example Hook, which has the fixed ID example_hook. This Node.js example uses the instant condition, so xyOps fires the Web Hook as soon as it receives the message:
process.stdout.write(JSON.stringify({
xy: 1,
push: {
actions: [{
condition: 'instant',
type: 'web_hook',
enabled: true,
web_hook: 'example_hook',
text: 'This Web Hook was fired dynamically by the running Plugin.'
}]
}
}) + '\n');The optional text property is appended to the standard job message sent to the Web Hook. The configured Web Hook controls the destination URL, HTTP method, headers, body template, timeout, retries, and other delivery settings.
The built-in Example Hook sends a JSON POST request to https://httpbin.org/post, making it useful for a quick test. You can inspect the Web Hook result in the job's action details. For a production integration, create or edit a Web Hook on the Web Hooks page and replace example_hook with its ID.
You do not have to detach an entire Workflow node just to remove the connections on one side of it.
- Select a single node so its solder points appear.
- Hold Alt and click the solder point you want to clear.
- xyOps removes the connections attached to that solder point and leaves the node's other connections intact.
For Event and Job nodes, this lets you clear incoming connections, normal outgoing connections, or resource-limit connections independently. If multiple connections share the selected solder point, they are all removed together.
While soldering a Workflow connection, click an empty spot on the canvas instead of an existing solder point. xyOps opens an Add New Node menu containing only node types that are compatible with the connection you started.
Choose a node type and complete its configuration. xyOps places the new node at the clicked location and automatically connects it to the original node.
You can also finish a solder by clicking anywhere on a compatible existing node. You do not have to click its small solder-point button.
The Workflow editor includes several quick gestures that save trips to the toolbar:
- Edit a node: Double-click a node to open its editor.
- Change a condition: Click the condition label on a connection to choose a new result condition or custom tag.
- Add an area to the selection: With the Draw tool active, hold Shift while dragging a selection rectangle. Nodes inside the rectangle are added to the current selection instead of replacing it.
To line up Workflow nodes precisely, select one or more nodes and begin dragging them. Hold Alt while you drag to snap every selected node to the Workflow editor's 20-pixel grid.
You can also select a node and use the arrow keys to move it one 20-pixel grid step at a time.
Hold Shift while clicking individual nodes to add or remove them from the current selection.
On a Workflow Job Details page, click an Event, Job, or Controller node in the Workflow diagram. xyOps highlights every related row in the job table below and smoothly scrolls the first matching row into view.
This is especially useful when a node ran more than once because of retries, loops, or multiplexing. Click the selected node again, or click the diagram background, to clear the highlight.
You can also double-click an Event or Job node to open the first available job associated with that node.
Hover over a completed result label in the Status column on the Event or Workflow list to see the exact date and time when the latest job completed.
The label updates live as jobs start and finish. It also shows a relative age after the completed result is at least one minute old.
Click a completed result label in the Status column to open that job's details page directly.
Active labels are clickable too. Click one to open the live job. If the Event has multiple active jobs, the label opens the Event view so you can see all of them.
You can test edits without saving them first. While editing an Event or Workflow, click Test or press T. xyOps builds an ad-hoc test job from the form's current state, including any changes that have not been saved to the Event.
The Test dialog also lets you:
- Choose which action conditions are enabled for the test.
- Enable or disable all resource limits.
- Supply custom JSON input data.
- Upload input files.
- Enter values for user-defined Event parameters.
Click Run Now to launch the test in a new browser tab. Your editor stays open in the original tab with all unsaved changes intact. Test jobs are labeled and tagged as test runs so you can distinguish them in history and search results.
The performance graphs on an Event view follow the Completed Jobs table. When you change the completed-job filter or move to another page of results, xyOps rebuilds the graphs from that same filtered page of jobs.
This applies to the Performance, CPU, Memory, I/O, and Network graphs. It also affects the summary values calculated from the completed jobs, including average elapsed time, average CPU and memory, average log size, and success rate.
This behavior is useful for comparing slices of history. For example, select Errors to graph only failed runs, or move through the table's pages to compare an older batch of jobs with the newest batch. A graph is hidden when the current result page contains fewer than two jobs.
You can open a Ticket directly by putting its number after the xyOps URL hash. For example, this shortened URL opens Ticket 1234:
https://your-xyops.example/#1234
xyOps automatically expands the numeric shortcut into the full Ticket view URL. This is handy when typing a Ticket link manually or sharing one in chat.
On a Server or Group Historical View, press Left Arrow to move to the previous time slice and Right Arrow to move to the next one.
The amount of time depends on the current view:
| Historical View | Each Arrow-Key Step |
|---|---|
| Hourly | One hour |
| Daily | One day |
| Monthly | One month |
| Yearly | One year |
The shortcuts perform the same actions as the Prev and Next buttons in the page header. xyOps also accounts for month and year boundaries and daylight-saving time changes when moving between slices.
You can drag and drop an xyOps Portable Data Format (XYPDF) file onto any xyOps browser window. You do not need to navigate to the Events, Workflows, or Plugins page first.
Drop a plain .json XYPDF file or a Gzip-compressed .json.gz XYPDF file into the window. xyOps reads the file, identifies the object types it contains, and opens the normal import confirmation flow. Multi-item files, such as Workflows exported with dependent Events or Plugins, are imported together.
Before importing, xyOps shows the contents for inspection. It also warns you when an object will replace existing data or when an imported Event or Workflow contains active triggers. Review this information carefully and only import XYPDF files from sources you trust.
Your account still needs the required privileges for every object type in the file. Drag and drop is a shortcut into the standard import process, not a way around its validation or security checks.
For details about the file format, see the xyOps Portable Data Format documentation.
xyOps includes global shortcuts plus shortcuts that only apply on specific pages. Open Preferences and find Keyboard Shortcuts to view the current bindings, change any shortcut, remove a binding, or reset everything to the defaults.
Shortcuts only perform an action when it is available on the current page. For example, N activates the page's New button when that button exists.
| Keys | Action |
|---|---|
| Left Arrow | Go to the previous page of search results. |
| Right Arrow | Go to the next page of search results. |
| N | Create a new item. |
| Cmd+S or Ctrl+S | Save changes. |
| Escape | Close the current editor when it is safe to do so. |
| 1 through 9, or 0 | Scroll to the corresponding visible section on the page. 0 selects the tenth section. |
| /, Cmd+K, or Ctrl+K | Focus the page's primary search or filter field. |
These shortcuts are available while viewing an Event or Workflow:
| Keys | Action |
|---|---|
| E | Edit the current Event or Workflow. |
| R | Run the current Event or Workflow. |
| T | Test the current Event or Workflow. |
The Workflow editor has additional shortcuts:
| Keys | Action |
|---|---|
| Escape | Cancel the current solder operation. |
| Cmd+A or Ctrl+A | Select all nodes. |
| Cmd+D or Ctrl+D | Deselect all nodes. |
| Backspace or Delete | Remove the selected nodes. |
| Cmd+Z or Ctrl+Z | Undo. |
| Cmd+Y or Ctrl+Y | Redo. |
| = | Zoom in. |
| - | Zoom out. |
| E | Edit the selected node. |
| T | Test the selected node. |
| Arrow Keys | Nudge the selection by one 20-pixel grid step. |
| N | Add a new node. |
| V | Select the Draw tool. |
| H | Select the Move tool. |
| Hold Space | Temporarily switch from the Draw tool to the Move tool. Releasing the key returns to the Draw tool. |
The Detach Selection and Duplicate Selection commands can also be assigned shortcuts in Preferences, but they have no default bindings.
| Keys | Action |
|---|---|
| R | Run the job again. |
| E | Edit the job's Event. |
| A | Add the job to a Ticket. |
| C | Create a new Ticket for the job. |
| V | View the Job JSON. |
| D | Download the Job JSON. |
| Backspace or Delete | Delete the job. |
| Left Arrow or Right Arrow | Move between slides when viewing job media. |
| Page | Keys | Action |
|---|---|---|
| Server view | E | Edit the server. |
| Server view | H | Open Historical View. |
| Server view | Cmd+S or Ctrl+S | Take a snapshot. |
| Server view | W | Add a server watch. |
| Server list | A | Add a new server. |
| Group view | E | Edit the group. |
| Group view | H | Open Historical View. |
| Group view | Cmd+S or Ctrl+S | Take a snapshot. |
| Group view | W | Add a group watch. |
| Group view | A | Add a server to the group. |
| Server or Group Historical View | Left Arrow or Right Arrow | Move to the previous or next time slice. |