The Editor is where every Knowledge Base article is authored. It opens whenever you click Edit on an article row in /admin, or click Create draft on the /admin/new form. This article walks through every component and shows what each one does.
Layout
The editor page is a single column with two main vertical zones, plus an optional sidebar at desktop widths.
Header bar — the article title, a Status: line showing DRAFT / PUBLISHED / ARCHIVED, an amber draft pending chip when an unpublished draft exists, and the action buttons: Save Draft, Publish, Archive (only when the article is published). A Cancel link returns to /admin.
Keywords field — comma-separated tags. They feed the Related panel and the search index. See The keywords field below.
Toolbar — every formatting and inserting action, grouped by purpose.
Editor canvas — the editable area where you type. Drag images onto it, or paste them.
Shortcuts panel (sticky right rail at large widths) — a cheat-sheet of the keyboard shortcuts, headed Keyboard shortcuts. Collapse it with ✕ and bring it back with ⌨. On smaller screens the ⌨ Shortcuts button in the header opens it as a bottom-sheet.
The toolbar
The main toolbar row holds twenty-one buttons: B, I, U, S, <>, 🔗, 🚫🔗, H1, H2, H3, ¶, •, 1., +Table, 📝, 💡, ⚠️, ❗, ↵, ↶, ↷ — followed on the same row by three media buttons (🖼️ insert image, 🎬 upload video file, 🌐 embed a YouTube / Vimeo URL). A second row below it holds the colour palettes.
Text formatting
Five inline marks via B (bold), I (italic), U (underline), S (strikethrough), and <> (inline code). Select text first, then click the button or use the keyboard shortcut.
Headings
H1, H2, and H3 set the current paragraph's block type. Place the cursor on the line you want to change and click. ¶ returns the line to a paragraph.
Lists
The • button wraps the current selection (or current line) in a bullet list. 1. does the same for numbered. Enter starts a new item; Enter on an empty item leaves the list.
Tab and Shift+Tab do not indent or outdent list items — in this editor they are reserved for moving between table cells. Nested lists are not available from the toolbar.
Tables
+Table inserts a 3×3 table at the cursor. Click any cell to start typing. While the cursor is inside a table, a floating table menu appears just above the table's top-left corner (it drops below the table when there is no room above). Its buttons are + Row↑, + Row↓, − Row, + Col←, + Col→, − Col, and ✖ Table, which deletes the whole table.
Tab and Shift+Tab move to the next and previous cell. Column widths can be dragged. See Use callouts and tables for conventions.
Callouts
Four highlight blocks surface advisory content. Each has its own colour and icon, and is rendered the same way in the editor, on the public reader, and inside the chat-widget Help tab.
Note — general informational asides. Inserted via 📝.
Tip — best-practice suggestions. Inserted via 💡.
Warning — things the reader should watch out for. Inserted via ⚠️.
Danger — actions that can lose data or break things. Inserted via ❗.
Once inside a callout, Enter keeps adding paragraphs inside the block. Press Ctrl+Enter (or click ↵) to break out and continue with a new paragraph below — see Exit block below.
Links
One dialog handles both kinds of links.
Select the text you want to turn into a link.
Click 🔗 in the toolbar, or press Ctrl+K. The Insert link dialog opens.
Pick a tab:
External URL — paste any https:// link and click Insert.
KB article — start typing in the search box (Search the knowledge base…); the editor searches the Knowledge Base and shows live results. Click any result to insert a link to that article. The href is /a/, which means it works in the chat-widget too — clicks open the linked article inside the widget without losing the chat session.
To remove a link, select the linked text and click 🚫🔗.
Esc or a click on the backdrop closes the dialog without inserting.
Code
For inline code spans, use the <> toolbar button. For multi-line code blocks, paste a fenced code block or content that already contains a code block; there is no dedicated toolbar button.
Ctrl+Enter exits a code block the same way it exits a callout.
Images
Four ways to put an image in the editor:
Drag-and-drop — drag any image file from your file manager onto the editor canvas. Upload starts immediately; an Uploading … notice shows under the toolbar until it finishes.
Paste — Ctrl+V an image from the clipboard. Same upload flow.
Toolbar 🖼️ — opens a file picker.
Programmatically — see the agent API for POST /api/kb/admin/blobs if you're scripting imports.
Every image has four corner resize handles (drag any corner to scale) plus a small side menu with three controls: an Alt text field, alignment buttons Inline, Left, Right, and a ✕ delete button. Left and Right float the image so following text wraps around it; Inline keeps it in the text flow. Details in Insert images and embeds.
Video
Two flavours:
Upload a video file via 🎬 — same blob storage as images. Renders as a
Embed YouTube or Vimeo via 🌐 — opens the Embed video dialog with a single URL field. Paste the watch URL (https://www.youtube.com/watch?v=… or https://vimeo.com/…) and click Insert or press Enter. The editor converts it to the right embed URL automatically; an unrecognised URL shows an inline error instead. Press Esc, click Cancel, or click outside the dialog to close it.
Text colour and highlight
The palette row below the main toolbar has two groups:
Text — five swatches (Gray, Blue, Red, Orange, Green). Applies a coloured to the selection.
BG — five background swatches with the same names. Same UI, different mark.
A Plain button at the end of the row clears both text colour and highlight from the selection.
Both palettes are closed-set (no custom colour input) — this keeps the rendered articles consistent across light and dark themes and avoids accessibility issues with low-contrast custom picks. The sanitiser strips any other colour on save.
Exit block
Ctrl+Enter (or the ↵ toolbar button) escapes any container block — callout, blockquote, or code block — by inserting a fresh paragraph immediately after the container and moving the cursor to it. Without this shortcut, Enter keeps you inside the container.
This is the single most common reason authors get stuck inside a callout. Memorise Ctrl+Enter early.
Undo and redo
Undo: ↶ or Ctrl+Z. Step back through every transaction in this editing session.
Redo: ↷, or Ctrl+Y / Ctrl+Shift+Z.
Undo history is in-memory per editing session — closing the tab discards it. The published / drafted state on disk is unaffected.
The keywords field
The Keywords input above the toolbar takes a comma-separated list of words. They feed two systems:
Related articles at the bottom of every public reader page and the chat-widget article view. The server combines an article's keywords with the text of its own headings (H1/H2/H3) and runs a MySQL MATCH … AGAINST over the title and body of every other published article in the same content cluster — the article's top-level folder and everything beneath it (or, for an article with no folder, the other uncategorised articles). The top-ranked hits become the Related list. If fewer than five hits result, the list is filled with the most recently updated articles from that same cluster.
Search — the keywords column is part of the search index, so a word placed here ranks the article for that query even if it never appears in the body. This is how the chat-widget's Suggested for this page block finds an article for a given mywork screen: tag the article with the screen's label. See Search the Knowledge Base.
Keep them short, lowercase, and overlapping with the vocabulary you'd expect a reader to type. Examples for a Dashboard article: dashboard, home, overview, attendance, schedule, work order.
Save, publish, archive
Three actions, three states:
Save Draft stores the current editor content as a draft. The article keeps its previous status — usually DRAFT for new articles, PUBLISHED for edits to live ones. The draft pending chip shows next to the status while a draft sits unconfirmed.
Publish runs the body HTML through the server-side sanitiser, copies the draft into the live article row, deletes the pending draft, sets the status to PUBLISHED, and revalidates the public reader pages. The article is immediately visible on /a/ and to the chat-widget. Publish is available for any status — including ARCHIVED, which makes it the way to bring an archived article back.
Archive sets the status to ARCHIVED. Public readers stop seeing it; admins still do. Use this instead of deleting — it preserves history. The button only appears while the article is published.
Save Draft does not publish. If you've made edits to a live article and forget to click Publish, readers will continue to see the previous published version while your draft sits queued.
Keyboard shortcuts cheat-sheet
The right-rail panel lists the essentials; the full set is enumerated in Editor keyboard shortcuts field definitions. In short:
Bold / Italic / Underline — Ctrl+B / Ctrl+I / Ctrl+U.
Strikethrough, inline code, headings, paragraph, lists, table, callouts, media — toolbar only.
Add / edit link — Ctrl+K. Remove link — toolbar 🚫🔗.
Exit container block — Ctrl+Enter or ↵.
Undo / Redo — Ctrl+Z / Ctrl+Y (or Ctrl+Shift+Z).
Next / previous table cell — Tab / Shift+Tab.
Where to next
This article is a tour. For deeper how-to guides on individual workflows, see Insert images and embeds, Use callouts and tables, and Editor keyboard shortcuts field definitions.