Minimal browser extension:
- loads on
basecamp.comand*.basecamp.com; - enables keyboard navigation hotkeys on Basecamp pages.
- Open Firefox and go to
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on...
- Select
./manifest.jsonfrom this folder. - Open any Basecamp URL, for example:
https://basecamp.com
- Open
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select this project folder (the one containing
./manifest.json). - Open any Basecamp URL, for example:
https://basecamp.com
- Open extension settings from browser extensions page:
- Chrome:
chrome://extensions-> Basecamp Hotkeys -> Extension options - Firefox:
about:addons-> Basecamp Hotkeys -> Preferences
- Chrome:
- Available setting:
- Context menu hotkey: key that opens/closes
aside.perma-toolbarmenu. - Default value:
q. - Breadcrumbs mode hotkey: key that toggles breadcrumbs mode.
- Default value:
b. - Create/Add hotkey: key that opens the first visible
Add/Newaction. - Default value:
n. - Badge CSS: plain CSS text applied to hotkey badges (
.bcff-hotkey-badge).- preview in settings uses
--color-theme/--color-inkvalues captured from the last opened Basecamp page.
- preview in settings uses
- Highlight linked comments: highlight thread comment when URL hash is
#__recording_<id>. - Default value: disabled.
- Enable Vim-style scroll keys: enable
j/kfor small scroll andd/ufor half-page scroll. - Default value: enabled.
- Reset to defaults: reset all settings to defaults.
- Export settings: download current settings as JSON.
- Import settings: load settings from exported JSON.
- Context menu hotkey: key that opens/closes
?shows/hides a help overlay with all available commands.- While the native jump/search (
cmd+j) is open, extension hotkeys are temporarily disabled. Escglobally clears focus from active fields (for example chat input) and returns control to hotkeys.- On Home (
/projects), if a stack is open,Esccloses it. - If a context menu from
aside.perma-toolbaris open,Esccloses it.
- On Home (
- configurable hotkey (default
q) opens the page context menu fromaside.perma-toolbar(where available). g, thenh(within ~1.2s) opens:https://<current-host>/<accountId>/my/readings
g, thenb(within ~1.2s) opens:https://<current-host>/<accountId>/my/bookmarks
g, thend(within ~1.2s) opens Home:https://<current-host>/<accountId>/projects
g, thenlopens Lineup:https://<current-host>/<accountId>/lineup
g, thenpopens Pings:https://<current-host>/<accountId>/circles
g, thenaopens Activity:https://<current-host>/<accountId>/reports/progress
g, thensopens My Stuff:https://<current-host>/<accountId>/my/assignments
g, thenfopens Find:https://<current-host>/<accountId>/search
- configurable breadcrumbs mode hotkey (default
b) toggles breadcrumbs mode on pages where breadcrumbs exist. - while breadcrumbs mode is active:
<digit>(1..9,0) opens the corresponding breadcrumb link;Escor the breadcrumbs hotkey exits breadcrumbs mode.
- configurable create/add hotkey (default
n) opens the first visibleAdd.../New...action on the page. - On notification list pages (
article):- visible
articleitems get labels1..9,0(first 10 visible); <digit>(1..9,0) marks the notification as read (ifMark as readexists) and opens the correspondingarticlelink;- labels are recalculated on scroll.
- visible
- On bookmarks page (
/my/bookmarks):- visible links in
mainget labels1..9,0(first 10 after filtering); <digit>(1..9,0) opens the corresponding bookmark link.
- visible links in
- On assignments page (
/my/assignments):- tabs are labeled first (
My assignments,My assignments with dates,Stuff I’ve assigned); - then visible assignment item links are labeled on the page (excluding
Note, comment counters, andAssign/Schedule…links).
- tabs are labeled first (
- On to-do set pages (
/buckets/<bucketId>/todosets/<todosetId>):- digits prioritize visible to-do task links (
/todos/<id>); - when no visible tasks are found, digits are applied to visible list links (
/todolists/<id>).
- digits prioritize visible to-do task links (
- When Highlight linked comments is enabled, on pages with comment anchors like
#__recording_<id>:- the matching thread comment is highlighted in the feed.
- When Enable Vim-style scroll keys is enabled:
j/kscroll a little down/up;d/uscroll half page down/up.
- On Home (
/projects):- visible project/stack cards get labels
1..9,0(first 10 visible); <digit>(1..9,0) opens the selected project or stack;- if a stack is open, labels switch to projects inside that stack.
- visible project/stack cards get labels
- On a project page (
/projects/<projectId>):- labels are applied to the 8 docked tool blocks in the project tools section (
project-tools); <digit>(1..9,0) opens the corresponding block.
- labels are applied to the 8 docked tool blocks in the project tools section (
- On a kanban board (
/buckets/<bucketId>/card_tables/<tableId>):- digits
1..9,0open board columns.
- digits
- On a column page (
/buckets/<bucketId>/card_tables/columns/<columnId>):- digits
1..9,0open cards in that column.
- digits
- When a context menu (
perma-toolbar) is open:- digits are applied to visible menu items;
<digit>(1..9,0) clicks the corresponding menu item.
accountIdis resolved dynamically from the current URL (first numeric path segment).- Hotkeys do not trigger inside
input/textarea/select/contenteditable.