Bono [Bookmarks + Notes] for VS Code

Bono is a overengineered VS Code extension for bookmarking important code lines and attaching notes to them. It helps you organize bookmarks into groups and sub-groups, add workflow statuses to notes, customize gutter icons and line highlights, and navigate back to the correct code even after common edits and line shifts.
Features at a Glance
| Feature |
What it does |
| Line bookmarks |
Mark important lines and jump back to them quickly. |
| Context-aware tracking |
Helps bookmarks follow code when lines move or files change. |
| Structural matching |
Improves tracking in XML, HTML, JSX/TSX, JSON, YAML, Markdown, and common code files. |
| Multi-line bookmarks |
Bookmark a block or multiple selected lines. |
| Diff editor bookmarks |
Bookmark lines in VS Code compare/diff editors and reopen the correct side. |
| Groups and sub-groups |
Organize bookmarks into folders like Todo, Fix, Review, or Feature/Auth/API. |
| Workspace-aware active groups |
In multi-root workspaces, each folder can keep its own active group. |
| Notes |
Attach notes to bookmarks and edit them in the Notes Manager or note preview. |
| Note statuses |
Mark notes as In Queue, WIP, Blocked, Completed, Drafted, or Deleted. |
| Drafts and recycle bin |
Preserve or recover note data based on your deletion policy. |
| Colors and gradients |
Use solid colors, CSS linear gradients, built-in themes, or custom palettes. |
| Custom gutter icons |
Choose built-in icons, 3D/outline/border variants, dynamic note overlays, or custom SVGs. |
| Pin and hide |
Pin important groups/bookmarks/notes or hide bookmark decorations temporarily. |
| Tree cut/paste and reordering |
Reorder and move bookmarks or groups from Bono tree views. |
| Undo/redo in tree views |
Undo and redo supported bookmark, group, and tree operations. |
| Export/import |
Backup and restore bookmarks and notes through JSON commands. |
How to Use Bono
Toggle a Bookmark
- Open any file in VS Code.
- Put the cursor on the line you want to bookmark.
- Run BN: Toggle Bookmark from the Command Palette or press:
| Windows/Linux |
macOS |
Ctrl+Alt+K |
Cmd+Alt+K |
Run the same command again on the bookmarked line to remove it.
Navigate Between Bookmarks
Use keyboard shortcuts:
| Action |
Windows/Linux |
macOS |
| Next bookmark |
F8 |
F8 |
| Previous bookmark |
Shift+F8 |
Shift+F8 |
| Open selected bookmark from tree |
Enter |
Enter |
Navigation can stay in the same file or jump across files depending on:
{
"bonoExtension.allowCrossFileJump": true
}
Create and Use Groups
Groups let you organize bookmarks by task, feature, bug, review, or priority.
Common examples:
Todo
Fix
Review
Feature/Auth
Feature/Auth/API
Feature/Auth/UI
How to use:
- Open the Bookmarks view.
- Create a group using BN: Create Group.
- Select a group as active using BN: Set Active Group.
- New bookmarks are added to the active group.
- Use BN: Create Sub-group to create nested folders.
- Use move/rename/delete/pin/hide commands from the tree item context menu.
The active group is shown with the configured marker, default:
{
"bonoExtension.activeGroupMarker": "⭐"
}
Move, Reorder, Cut, and Paste Tree Items
Inside Bono tree views:
| Action |
Shortcut |
| Rename selected item |
F2 |
| Delete selected item |
Delete |
| Cut selected item |
Ctrl+X / Cmd+X |
| Paste selected item |
Ctrl+V / Cmd+V |
| Undo tree operation |
Ctrl+Z / Cmd+Z |
| Redo tree operation |
Ctrl+Y or Ctrl+Shift+Z |
Supported tree workflows include moving bookmarks between groups, reordering bookmarks, reordering groups, and working with nested group folders.
Add Notes to Bookmarks
A bookmark can have a note attached to it.
Common ways to work with notes:
- Select a bookmark in the tree.
- Run BN: Open Notes Manager (Bookmark).
- Add or edit the note text.
- Set a workflow status such as
WIP, Blocked, or Completed.
- Use the Notes Manager to search, filter, edit, restore, or delete notes.
Notes can be edited inline in the sidebar preview or in a side-by-side editor depending on:
{
"bonoExtension.notesEditMode": "inline"
}
Use Note Statuses
Default note statuses:
| Value |
Label |
Abbreviation |
Meaning |
inQueue |
In Queue |
Q |
Queued for future work. |
wip |
WIP |
WIP |
Work in progress. |
blocked |
Blocked |
BLK |
Waiting on dependency or decision. |
completed |
Completed |
OK |
Finished. |
drafted |
Drafted |
DRF |
Detached note saved for recovery. |
deleted |
Deleted |
DEL |
Deleted or no longer active. |
Useful status settings:
{
"bonoExtension.notes.defaultStatus": "inQueue",
"bonoExtension.notes.enableStatus": true,
"bonoExtension.notes.statusDisplay": "abbreviation"
}
Recover Notes with Drafts and Recycle Bin
Bono can protect note data when bookmarks or source lines are removed.
Deletion policy setting:
{
"bonoExtension.notes.deletionPolicy": "preserveAndAutoRelink"
}
Options:
| Policy |
Behavior |
preserveAndAutoRelink |
Keeps note data as a recoverable draft and tries to reconnect it later. |
moveToRecycleBin |
Moves note/bookmark data into the recycle bin. |
deletePermanently |
Permanently removes the data. |
Recycle bin retention:
{
"bonoExtension.notes.recycleBinRetentionSeconds": 2592000
}
Set it to 0 to disable automatic recycle-bin cleanup.
Search Bookmarks
Use these commands:
| Command |
What it searches |
| Search Active Group Bookmarks |
Bookmarks inside the active group view. |
| Search All Bookmarks |
Bookmarks across workspace/group views. |
Shortcut in Bono tree views:
| Windows/Linux |
macOS |
Ctrl+F |
Cmd+F |
Export and Import
Use export/import when you want to backup, transfer, or restore your bookmark and note data.
| Command |
Purpose |
| Export Bookmarks |
Save bookmarks/groups/colors/order to JSON. |
| Import Bookmarks |
Restore bookmark data from JSON. |
| Export Notes |
Save note data to JSON. |
| Import Notes |
Restore note data from JSON. |
Bookmark Tracking Settings
These settings control how Bono keeps bookmarks attached to the right line.
{
"bonoExtension.bookmarkThisLine": true,
"bonoExtension.bookmarks.smartStructuralContext": true
}
| Setting |
Default |
Description |
bonoExtension.bookmarkThisLine |
true |
Enables context-aware line tracking. |
bonoExtension.bookmarks.smartStructuralContext |
true |
Uses structural identity matching for XML, HTML, JSX/TSX, JSON, YAML, Markdown, and code files. |
Navigation Settings
{
"bonoExtension.scrollAnimation": "all",
"bonoExtension.horizontalScrollOnJump": "dynamic",
"bonoExtension.flashHighlight": true,
"bonoExtension.allowCrossFileJump": true
}
| Setting |
Default |
Options |
bonoExtension.scrollAnimation |
"all" |
"none", "sameFileOnly", "all" |
bonoExtension.horizontalScrollOnJump |
"dynamic" |
"dynamic", "keep" |
bonoExtension.flashHighlight |
true |
true, false |
bonoExtension.allowCrossFileJump |
true |
true, false |
Group and Tree Settings
{
"bonoExtension.sidebarUI": "workspace",
"bonoExtension.viewLocation": "sidebar",
"bonoExtension.activeGroupMarker": "⭐",
"bonoExtension.hiddenGroupDisplay": "both",
"bonoExtension.treeIndent": 8
}
| Setting |
Default |
Description |
bonoExtension.sidebarUI |
"workspace" |
Use "workspace" for a unified tree or "tree" for separate group/bookmark views. |
bonoExtension.viewLocation |
"sidebar" |
Show Bono in the custom Activity Bar sidebar or in Explorer. |
bonoExtension.activeGroupMarker |
"⭐" |
Marker shown next to the active group. Empty string hides it. |
bonoExtension.hiddenGroupDisplay |
"both" |
Show hidden groups with icon, text, or both. |
bonoExtension.treeIndent |
8 |
Tree indentation in pixels. This uses VS Code's global tree indentation setting. |
Default groups:
{
"bonoExtension.defaultGroups": [
{ "name": "Todo", "color": "#29B6F6" },
{ "name": "Fix", "color": "#FF7043" },
{ "name": "Review", "color": "#AB47BC" }
]
}
Color and Theme Settings
Bono supports hex colors and CSS linear gradients.
{
"bonoExtension.groupColors": {
"Fix": "#FF7043",
"Review": "linear-gradient(90deg, #7c4dff, #00b8d4)"
},
"bonoExtension.colorTheme.active": "none",
"bonoExtension.colorTheme.showBuiltinThemes": true,
"bonoExtension.colorTheme.updateDefaultColors": true
}
| Setting |
Default |
Description |
bonoExtension.groupColors |
{} |
Per-group color or gradient overrides. |
bonoExtension.defaultColors |
Built-in palette |
Color sequence used for new groups. |
bonoExtension.customColorThemes |
[] |
User-defined color themes. |
bonoExtension.colorTheme.active |
"none" |
Active built-in color theme. |
bonoExtension.colorTheme.showBuiltinThemes |
true |
Show built-in themes in the theme picker. |
bonoExtension.colorTheme.updateDefaultColors |
true |
Applying a theme also updates future default group colors. |
Built-in theme families include:
Default Pastels
Ocean Breeze
Sunset Glow
Forest
Galaxy
Neon Night
Monochrome
Candy
Fire & Ice
Aurora Borealis
Autumn Harvest
Tropical
Aurora Gradients
Sunset Gradients
Ocean Gradients
Line Highlight Settings
{
"bonoExtension.lineHighlight": true,
"bonoExtension.lineHighlightStyle": "outline",
"bonoExtension.opacity": 0.3,
"bonoExtension.opacityStep": 0.05
}
| Setting |
Default |
Options |
bonoExtension.lineHighlight |
true |
Enable or disable bookmark line highlighting. |
bonoExtension.lineHighlightStyle |
"outline" |
"background", "left-border", "underline", "outline", "overview-ruler", "gutter" |
bonoExtension.opacity |
0.3 |
Highlight opacity from 0 to 1. |
bonoExtension.opacityStep |
0.05 |
Step used by transparency increase/decrease commands. |
Commands:
| Command |
Purpose |
| BN: Increase Bookmark Transparency |
Makes highlight more transparent. |
| BN: Decrease Bookmark Transparency |
Makes highlight less transparent. |
Gutter Icon Settings
{
"bonoExtension.gutterIcon.bookmark": "ribbon",
"bonoExtension.gutterIcon.note": "note",
"bonoExtension.gutterIcon.bookmarkWithNote": "dynamic-notes-icon",
"bonoExtension.gutterIcon.customMode": "single",
"bonoExtension.gutterIcon.customSvg": "",
"bonoExtension.gutterIcon.customGroupSvgs": {}
}
Bookmark icon options:
ribbon
star
tag
heart
ribbon3d
star3d
tag3d
heart3d
ribbonOutline
starOutline
tagOutline
heartOutline
ribbonBorder
starBorder
tagBorder
heartBorder
custom
Note icon options:
note
note3d
noteOutline
noteBorder
custom
dynamic
dynamic-notes-icon
Bookmark-with-note icon options include the bookmark icon options plus:
dynamic
dynamic-notes-icon
Custom SVG example:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
<path fill="{color}" d="M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 22 12 18.56 5.82 22 7 14.14l-5-4.87 6.91-1.01z"/>
</svg>
Use {color} to inject the group color.
Tree Icon and Hover Settings
{
"bonoExtension.showBookmarkIconInTree": true,
"bonoExtension.showGroupIconInTree": true,
"bonoExtension.showBookmarkHover": true
}
| Setting |
Default |
Description |
bonoExtension.showBookmarkIconInTree |
true |
Show bookmark icons in tree views. |
bonoExtension.showGroupIconInTree |
true |
Show group icons in tree views. |
bonoExtension.showBookmarkHover |
true |
Show note/actions hover on bookmarked editor lines. |
Inline Action Settings
Choose which buttons appear inline on tree items. Actions not shown inline remain available from menus/commands.
{
"bonoExtension.bookmarkInlineActions": ["rename", "delete"],
"bonoExtension.groupInlineActions": ["moveUp", "moveDown", "hide"]
}
Bookmark inline action options:
notes
delete
rename
moveUp
moveDown
hide
Group inline action options:
moveUp
moveDown
hide
rename
delete
notes
color
Notes Manager Settings
{
"bonoExtension.notesEditMode": "inline",
"bonoExtension.autoSaveNotes": false,
"bonoExtension.notes.lineHighlight": true,
"bonoExtension.notes.cursorHighlight": false,
"bonoExtension.notesManager.showLocation": true,
"bonoExtension.notesManager.showLinkedLine": true,
"bonoExtension.notesManager.showCodePreview": true,
"bonoExtension.notesManager.showCardShadows": true,
"bonoExtension.notesManager.hoverColor": "blue",
"bonoExtension.notesManager.saveCodeLensStyle": "autosave"
}
| Setting |
Default |
Options / Description |
bonoExtension.notesEditMode |
"inline" |
"inline" or "sideBySide". |
bonoExtension.autoSaveNotes |
false |
Save note changes while typing. |
bonoExtension.notes.lineHighlight |
true |
Show editor line highlight for Notes Manager notes. |
bonoExtension.notes.cursorHighlight |
false |
Highlight bookmarked line under cursor when enabled. |
bonoExtension.notesManager.showLocation |
true |
Show source file and line information. |
bonoExtension.notesManager.showLinkedLine |
true |
Show linked line reference and content preview. |
bonoExtension.notesManager.showCodePreview |
true |
Show code preview inside expanded cards. |
bonoExtension.notesManager.showCardShadows |
true |
Enable note card shadows. |
bonoExtension.notesManager.hoverColor |
"blue" |
"blue" or "group". |
bonoExtension.notesManager.saveCodeLensStyle |
"autosave" |
"autosave", "universal", "individual", "both". |
Note Status Settings
You can customize the status list.
{
"bonoExtension.notes.statuses": [
{
"value": "inQueue",
"label": "In Queue",
"icon": "circle-outline",
"abbreviation": "Q",
"symbol": "○",
"color": "#78909c",
"description": "Queued for future work."
},
{
"value": "wip",
"label": "WIP",
"icon": "sync",
"abbreviation": "WIP",
"symbol": "↻",
"color": "#ffb300",
"description": "Work in progress."
}
],
"bonoExtension.notes.defaultStatus": "inQueue",
"bonoExtension.notes.enableStatus": true,
"bonoExtension.notes.statusDisplay": "abbreviation"
}
Status object fields:
| Field |
Meaning |
value |
Internal value stored on the note. |
label |
Human-readable label. |
icon |
VS Code codicon name without $(). |
abbreviation |
Short display text. |
symbol |
Compact symbol. |
color |
Hex badge color. |
description |
Explanation shown in pickers/settings. |
Display Template Settings
Bono lets you customize bookmark labels in tree views.
{
"bonoExtension.workspaceBookmarkTemplate": "{ifText:{text}}{ifNotText:{fileName}:{lineNo} {content}} | {ifNote:📝 {note}}",
"bonoExtension.activeBookmarkTemplate": "{prefix}{lineNo} {content} | {ifNote:📝 {note}}"
}
Placeholders:
| Placeholder |
Meaning |
{prefix} |
Line prefix such as ↳, L, or 📌. |
{lineNo} |
Source line number or multi-line range. |
{fileName} |
File basename. |
{filePath} |
Workspace-relative path. |
{content} |
Bookmarked source line text. |
{text} |
Custom bookmark label. |
{note} |
First line of the attached note. |
{noteIcon} |
Note icon shorthand. |
Conditional blocks:
{ifText:{text}}
{ifNotText:{fileName}:{lineNo} {content}}
{ifNote:📝 {note}}
{ifNotNote:No note}
Command Reference
| Command ID |
Title |
Use |
bn.toggleBookmark |
BN: Toggle Bookmark |
Add/remove a bookmark on the current line. |
bn.clearBookmarks |
BN: Clear All Bookmarks |
Clear bookmarks in the active group. |
bn.clearWorkspaceBookmarks |
BN: Clear All Workspace Bookmarks |
Clear all workspace bookmarks. |
bn.openBookmark |
BN: Open Bookmark |
Open selected bookmark. |
bn.removeBookmark |
BN: Remove Bookmark |
Remove selected bookmark. |
bn.setActiveGroup |
BN: Set Active Group |
Set selected group as active. |
bn.createGroup |
BN: Create Group |
Create a group. |
bn.createSubGroup |
Create Sub-group |
Create a nested group. |
bn.renameGroup |
BN: Rename Group |
Rename a group. |
bn.setGroupColor |
BN: Set Group Color or Gradient |
Set group color or gradient. |
bn.pinGroup / bn.unpinGroup |
Pin Group / Unpin Group |
Pin or unpin group. |
bn.deleteGroup |
BN: Delete Group |
Delete group. |
bn.clearGroupBookmarks |
BN: Clear All Bookmarks in Group |
Clear bookmarks in a group. |
bn.moveBookmarkToGroup |
BN: Send To... |
Move bookmark to another group. |
bn.renameBookmark |
BN: Rename Bookmark |
Set custom bookmark label. |
bn.pinBookmark / bn.unpinBookmark |
Pin Bookmark / Unpin Bookmark |
Pin or unpin bookmark. |
bn.pinBookmarkNote / bn.unpinBookmarkNote |
Pin Note / Unpin Note |
Pin or unpin bookmark note. |
bn.setNoteStatus |
BN: Set Note Status |
Change note status. |
bn.nextBookmark / bn.prevBookmark |
BN: Next Bookmark / BN: Previous Bookmark |
Navigate between bookmarks. |
bn.toggleCrossFileJump |
BN: Toggle Cross-File Jump |
Toggle cross-file navigation. |
bn.increaseBookmarkTransparency |
BN: Increase Bookmark Transparency |
Increase highlight transparency. |
bn.decreaseBookmarkTransparency |
BN: Decrease Bookmark Transparency |
Decrease highlight transparency. |
bn.moveBookmarkUp / bn.moveBookmarkDown |
Move Up / Move Down |
Reorder bookmark. |
bn.moveGroupUp / bn.moveGroupDown |
Move Group Up / Move Group Down |
Reorder group. |
bn.hideBookmark / bn.unhideBookmark |
Hide Bookmark / Unhide Bookmark |
Hide/reveal bookmark. |
bn.hideGroupBookmarks / bn.unhideGroupBookmarks |
Hide Bookmarks / Unhide Bookmarks |
Hide/reveal group bookmarks. |
bn.toggleShowHiddenBookmarks |
Toggle Hidden Bookmarks Visibility |
Show/hide hidden bookmarks in views. |
bn.exportBookmarks / bn.importBookmarks |
Export Bookmarks / Import Bookmarks |
Backup/restore bookmarks. |
bn.exportNotes / bn.importNotes |
Export Notes / Import Notes |
Backup/restore notes. |
bn.openNoteRecycleBin |
BN: Open Notes Manager (Recycle Bin) |
Open recycled notes. |
bn.emptyNoteRecycleBin |
BN: Empty Note Recycle Bin |
Empty recycled notes. |
bn.showAllBookmarks |
Search All Bookmarks |
Search all bookmarks. |
bn.searchActiveGroupBookmarks |
Search Active Group Bookmarks |
Search active group bookmarks. |
bn.addBookmarkNote |
BN: Open Notes Manager (Bookmark) |
Add/edit bookmark note. |
bn.deleteBookmarkNote |
BN: Delete Note (Bookmark) |
Delete bookmark note. |
bn.editActiveNote |
Edit Note |
Edit preview note. |
bn.saveActiveNote |
Save Note |
Save preview note. |
bn.cancelActiveNoteEdit |
Cancel Edit |
Cancel preview note edit. |
bn.editNotesInFile |
BN: Edit Notes in Editor |
Edit notes in editor. |
bn.saveBulkNote |
BN: Save Note in Editor |
Save one bulk note. |
bn.saveAllBulkNotes |
BN: Save All Notes in Editor |
Save all bulk notes. |
bn.applyColorTheme |
BN: Apply Color Theme |
Apply color theme. |
bn.treeRename |
BN: Rename Selected (F2) |
Rename selected tree item. |
bn.treeDelete |
BN: Delete Selected (Del) |
Delete selected tree item. |
bn.treeCut |
BN: Cut Selected (Ctrl+X) |
Cut selected tree item. |
bn.treePaste |
BN: Paste Here (Ctrl+V) |
Paste cut tree item. |
bn.undo / bn.redo |
BN: Undo / BN: Redo |
Undo/redo tree operation. |
bn.uploadCustomGutterIcon |
Customize Gutter Icons... |
Configure custom gutter icons. |
bn.refreshDecorationsFromConfig |
BN: Refresh Decorations from Config |
Refresh icon/highlight settings. |
bn.openBookmarkSettingsMenu |
BN: Open Bookmark Settings Menu |
Open bookmark settings menu. |
Keyboard Shortcuts
| Shortcut |
macOS |
Command |
Context |
Ctrl+Alt+K |
Cmd+Alt+K |
Toggle Bookmark |
Editor |
F8 |
F8 |
Next Bookmark |
Editor |
Shift+F8 |
Shift+F8 |
Previous Bookmark |
Editor |
Ctrl+F |
Cmd+F |
Search bookmarks |
Bono tree views |
Enter |
Enter |
Open Bookmark |
Bono tree views |
F2 |
F2 |
Rename selected item |
Bono tree views |
Delete |
Delete |
Delete selected item |
Bono tree views |
Ctrl+X |
Cmd+X |
Cut tree item |
Bono tree views |
Ctrl+V |
Cmd+V |
Paste tree item |
Bono tree views |
Ctrl+Z |
Cmd+Z |
Undo |
Bono tree views |
Ctrl+Y / Ctrl+Shift+Z |
Cmd+Y / Cmd+Shift+Z |
Redo |
Bono tree views |
Deprecated / Compatibility Settings
These settings still exist for compatibility, but new users should prefer the newer settings shown above.
| Deprecated setting |
Prefer |
bonoExtension.defaultIcon |
bonoExtension.gutterIcon.bookmark |
bonoExtension.customGroupIconSvg |
bonoExtension.gutterIcon.customSvg or bonoExtension.groupIcons |
bonoExtension.customIcon.bookmark |
bonoExtension.gutterIcon.customSvg |
bonoExtension.customIcon.note |
bonoExtension.gutterIcon.customSvg |
bonoExtension.customIcon.bookmarkWithNote |
bonoExtension.gutterIcon.bookmarkWithNote |
bonoExtension.activeGroupInlineActions |
bonoExtension.bookmarkInlineActions |
bonoExtension.workspaceInlineActions |
bonoExtension.bookmarkInlineActions |
bonoExtension.bookmarkLineDeletionBehavior |
bonoExtension.notes.deletionPolicy |