Editing and AI Suggestions
Canvas gives you two ways to change a memo: edit it directly, or propose changes as suggestions that someone reviews. AI-assisted edits — from chat and from Deep Brushes — arrive as suggestions, so you stay in control of every change to the document.
The three editor modes
Section titled “The three editor modes”The mode you’re in decides what your keystrokes do:
- Viewing — read-only. Select text, read comments, navigate. No changes.
- Suggesting — typing creates suggestion marks (proposed insertions and deletions) instead of changing the document. Each suggestion is reviewed and then accepted or rejected.
- Editing — direct edits. Your changes land in the document immediately. Editing a section acquires that section’s edit lock (in the non-collaborative path) or marks your editing presence (in the collaborative path — see Real-Time Collaboration).
Mode is a per-user preference: switching to suggesting mode affects only you, not the other people in the same memo.
Which modes you get
Section titled “Which modes you get”Available modes are derived from your deal role and the document state:
| Role | Draft / Editing state | Approved state |
|---|---|---|
| Owner / Editor | viewing, suggesting, editing (default: editing) | viewing, suggesting (default: suggesting) |
| Commenter | suggesting only | suggesting only |
| Viewer | viewing only | viewing only |
Two things fall out of this table:
- Owners and editors edit directly while the memo is in Draft or Editing, but once it’s Approved they drop to viewing/suggesting — to directly edit an approved memo, an owner must first reopen it.
- Commenters never edit directly; their contribution is always a suggestion. Viewers never change the document at all.
See Roles and Permissions for the full role model.
How suggestions work
Section titled “How suggestions work”A suggestion is a proposed change rendered inline in the document — proposed new text and proposed deletions are visibly marked so you can see exactly what would change before committing to it.
Under the hood, suggestions are ProseMirror marks, not transient highlights. A suggestionInsert mark flags proposed new text; a suggestionDelete mark flags text proposed for removal. Both carry a shared suggestionId linking the insertion and deletion halves of a single proposed edit.
Where suggestions come from
Section titled “Where suggestions come from”- AI chat — when you ask the in-editor assistant to revise a passage, it returns the change as a suggestion rather than overwriting your text.
- Deep Brushes — brush workflows (source it, quantify, enrich, audit, compare, compliance, and deal-structure) produce their edits as suggestions. See Deep Brushes.
- Suggesting mode — your own typing while in suggesting mode becomes suggestions for someone with edit rights to accept.
Accepting and rejecting
Section titled “Accepting and rejecting”You resolve suggestions one at a time or in bulk:
- Accept a suggestion — the proposed insertion becomes real text and any proposed deletion is removed. The suggestion marks are cleared.
- Reject a suggestion — the proposal is discarded and the original text is left untouched.
- Accept all / Reject all — resolve every pending suggestion in the document at once.
The suggestion toolbar and the section UI expose accept/reject for the active suggestion and accept-all/reject-all for the whole document.
Keyboard shortcuts
Section titled “Keyboard shortcuts”Canvas registers shortcuts globally. The suggestion shortcuts only fire when there is an active suggestion — letter shortcuts are suppressed while you’re typing in a field, so pressing A mid-sentence types an “a” rather than accepting anything.
| Shortcut | Action |
|---|---|
| A | Accept the active suggestion |
| R | Reject the active suggestion |
| ⌘ Enter | Accept all suggestions |
| Esc | Dismiss all suggestions (reject all) / close the open panel |
| ⌘ S | Save the document |
| ⌘ ⇧ A | Approve the memo (owners; only when there are no unsaved changes) |
| ⌘ ⇧ M | Cycle editor mode (View → Suggest → Edit) |
| ⌘ ⇧ L | Toggle the AI chat panel |
| ⌘ F / ⌘ H | Find / find and replace |
| ⌘ / or ? | Show the full shortcuts help |
Editing directly
Section titled “Editing directly”In editing mode you change text the way you’d expect — type, delete, format, restructure. Standard formatting (bold, italic, lists, links, headings, alignment), tables, and the memo’s richer content (charts, images, footnotes) are all editable in place.
Your edits autosave in the background, and the first save promotes the memo from Draft to Editing. While you’re directly editing a section, other collaborators see that you’re in it (presence) so two people don’t unknowingly fight over the same paragraph — covered in Real-Time Collaboration.
Sources
Section titled “Sources”canvas-ui/src/types/editorMode.ts— the three modes (viewing / suggesting / editing) and their semanticscanvas-ui/src/utils/editorModeDerivation.ts— role × document-state → available modes and default mode (the truth table)canvas-ui/src/hooks/useDocumentShortcuts.ts— concrete keyboard bindings (A accept, R reject, ⌘ Enter accept-all, Esc reject-all/close, ⌘ S save, ⌘ ⇧ A approve, ⌘ ⇧ M cycle mode, ⌘ ⇧ L chat, ⌘ F/⌘ H find)canvas-ui/src/hooks/useKeyboardShortcuts.ts— global shortcut dispatch; letter shortcuts suppressed while typingcanvas-ui/src/editor-core/commands/suggestions.ts—acceptSuggestion/rejectSuggestion/acceptAllSuggestions/rejectAllSuggestions, suggestion-mark stripping before savememory/canvas_ui_suggestion.md— mark-based (not decoration) suggestions,suggestionInsert/suggestionDeletewith sharedsuggestionId,stripBeforeSave, why marks survive serializationmemory/prosemirror_roundtrip_contract.md— suggestion marks are stripped at serialize time (client applies all suggestions before save)