- Cmd/Ctrl+Enter submits any open composer (universal Slack/GitHub/Linear pattern)Rev 14/22/24 + the rev-115 markdown toolbar + the rev-117/118 visible draft-saving made every typed-input composer on the dashboard rich and recoverable, but submission still required reaching for the mouse. Rev 119 closes the keyboard surface gap with a shared `useComposerShortcuts` hook in `src/lib/composer-shortcuts.ts` that binds Cmd/Ctrl+Enter to a submit handler and Esc to a cancel handler on the supplied textarea ref. Wired into all nine typed-input composers — artifact body editor, operator note, renew, memory edit, top-level comment, signal-add, memory-add, task-create (summary AND goal), and bulk import — so an operator with hands on keyboard can compose, format, and submit without ever touching the mouse. The hook scopes to the textarea ref so multiple composers on the same page coexist cleanly; preventDefault on both events stops Enter from submitting surrounding forms and Esc from bubbling to the rev-23 dashboard shortcuts overlay.
- Cmd+B / Cmd+I / Cmd+Shift+K markdown shortcuts in the rev-115 toolbarThe rev-115 markdown toolbar shipped one-tap Bold / Italic / Code / Link / Quote / List / Heading buttons above every typed-input composer, but no keyboard shortcuts. Rev 119 adds the standard rich-text editor pattern via a new useEffect inside `MarkdownToolbar` that binds Cmd/Ctrl+B (bold), Cmd/Ctrl+I (italic), and Cmd/Ctrl+Shift+K (link insert) on the textarea ref. Plain Cmd+K is reserved by the rev-27 command palette — composing Shift keeps the link affordance discoverable without shadowing the palette. Tooltips updated to reflect the platform-aware shortcut glyph (⌘ on macOS, Ctrl+ elsewhere) so operators discover the shortcuts without opening the rev-23 overlay. Single change to `markdown-toolbar.tsx` automatically reaches all nine composers using the toolbar.
- Esc-to-cancel symmetry across composersMost rev-119 composers now respect Esc to close. The shared `useComposerShortcuts` hook accepts an optional `onCancel` that fires on Esc when the textarea is focused. Wired into the artifact body editor, operator note, renew composer, memory editor, memory-add, task-create, and bulk import — pairs with the rev-117/118 'Discard draft' affordance so an operator can either persist or abandon in-progress work with a single key. Task comments deliberately skip the Esc binding because the existing inline keydown handler already handles Esc (dismissing the @-mention popover or cancelling edit mode); double-binding would clash. The hook calls preventDefault but NOT stopPropagation so existing inline Esc handlers can still observe the event.
- Keyboard shortcuts overlay split into Global + Composer sections + cumulative visual polishThe rev-23 keyboard shortcuts overlay (`?` to open) gains a 'Composer (typed-input fields)' section listing the rev-119 shortcuts (⌘ Enter submit, Esc cancel, ⌘ B bold, ⌘ I italic, ⌘ ⇧ K link) so they're discoverable without reading the toolbar tooltips. New `.ld-shortcut-section-head` CSS divides the overlay into Global vs Composer groups, anchored by an uppercase eyebrow + subtle bottom border that matches the rev-22+ design language. Submit/Cancel buttons across every composer also gained `title` attributes naming the shortcut (e.g. 'Save edit (⌘/Ctrl + Enter)', 'Cancel (Esc)') so even operators who don't open the overlay see the affordance on hover. Cumulative micro-polish (every rev 22+ has carried at least one); rev 119 closes the keyboard discoverability gap on the most-frequent operator action across the dashboard.