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
- Select text in a file, HTML preview, or browser page.
- Click the ๐ฌ Add Comment button that appears near your selection.
- Type your comment in the inline composer and press
Cmd+Returnto 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
| Action | Shortcut |
|---|---|
| Add comment to selection | Ctrl+Shift+C |
| Toggle comments panel | Option+Cmd+C |
| Cross-file comments view | Ctrl+Shift+Cmd+C |
| Next comment in file | Cmd+] |
| Previous comment in file | Cmd+[ |
| Submit comment | Cmd+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.