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, orCompleted. - 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 |