File Comments

Attach comments to specific lines or selections in any file. Comments are persistent, threaded, and accessible to AI agents through the crispy CLI.

Adding a comment

  1. Select text in a file, HTML preview, or browser page.
  2. Click the ๐Ÿ’ฌ Add Comment button that appears near your selection.
  3. Type your comment in the inline composer and press Cmd+Return to submit.

In code/source mode, right-click and choose Add Comment to Selection, or press Ctrl+Shift+C. The comments panel opens on the right.

A blue dot appears in the gutter and a subtle highlight underlines the anchored text.

Comments panel

Toggle the panel with Option+Cmd+C. Each thread shows:

  • Anchor context โ€” the code or text you commented on
  • Author and timestamp
  • Comment body
  • Action buttons โ€” Reply, Resolve, Delete

The panel is per-pane โ€” you can have it open in one split and closed in another.

Replying and resolving

Click a thread to reply. Click the green checkmark to resolve โ€” resolved threads fade and hide from the active list. Use the panel filter (Active / Resolved / Stale / All) to show them again.

Stale comments

If the anchored text changes beyond recognition, the comment is marked stale with a dashed underline. The original anchor text is preserved so you can see what it referred to.

Cross-file view

Open View > All Comments in Vibespace (Ctrl+Shift+Cmd+C) to see every comment across all files, grouped by file.

Bulk operations

The panel toolbar provides bulk actions:

  • Copy All / Copy Unresolved โ€” copies threads as formatted markdown (designed for pasting into agent conversations)
  • Delete Resolved / Delete All โ€” bulk cleanup

HTML preview and browser comments

In HTML previews and browser pages, comments anchor to DOM elements via CSS selectors. Selecting text in a rendered preview shows the same ๐Ÿ’ฌ Add Comment button. URLs are canonicalized (tracking params stripped, fragments dropped) for stable anchoring across page reloads.

Browser comments are scoped to the canonical URL โ€” navigating to a different page hides unrelated threads.

Notebook comments

In Jupyter notebooks, comments anchor to a cellโ€™s id rather than a line. A thread stays attached to its cell even as you reorder others, and the panel labels each notebook thread by position โ€” Cell 1, Cell 2, and so on.

Agent integration

AI agents can manage comments via the crispy CLI:

crispy comments list --file src/foo.swift
crispy comments add --file src/foo.swift --line 42 --comment "consider a guard here"
crispy comments reply --id <comment-id> --comment "fixed in abc123"
crispy comments resolve --id <comment-id>

Comments authored by agents display an agent badge.

Keyboard shortcuts

ActionShortcut
Add comment to selectionCtrl+Shift+C
Toggle comments panelOption+Cmd+C
Cross-file comments viewCtrl+Shift+Cmd+C
Next comment in fileCmd+]
Previous comment in fileCmd+[
Submit commentCmd+Return

Known limitations

  • Anchor relocation searches ยฑ50 lines. If text moves further, the comment goes stale.
  • Single-user โ€” no real-time collaboration.
  • Cross-origin iframes in browser pages cannot be commented on.