Skip to content

romanyanke/basecamp-hotkeys

Repository files navigation

Basecamp extension (MVP)

Minimal browser extension:

  • loads on basecamp.com and *.basecamp.com;
  • enables keyboard navigation hotkeys on Basecamp pages.

Run in Firefox

  1. Open Firefox and go to about:debugging#/runtime/this-firefox.
  2. Click Load Temporary Add-on...
  3. Select ./manifest.json from this folder.
  4. Open any Basecamp URL, for example:
    • https://basecamp.com

Run in Chrome

  1. Open chrome://extensions.
  2. Enable Developer mode.
  3. Click Load unpacked.
  4. Select this project folder (the one containing ./manifest.json).
  5. Open any Basecamp URL, for example:
    • https://basecamp.com

Settings

  • Open extension settings from browser extensions page:
    • Chrome: chrome://extensions -> Basecamp Hotkeys -> Extension options
    • Firefox: about:addons -> Basecamp Hotkeys -> Preferences
  • Available setting:
    • Context menu hotkey: key that opens/closes aside.perma-toolbar menu.
    • Default value: q.
    • Breadcrumbs mode hotkey: key that toggles breadcrumbs mode.
    • Default value: b.
    • Create/Add hotkey: key that opens the first visible Add/New action.
    • Default value: n.
    • Badge CSS: plain CSS text applied to hotkey badges (.bcff-hotkey-badge).
      • preview in settings uses --color-theme / --color-ink values captured from the last opened Basecamp page.
    • Highlight linked comments: highlight thread comment when URL hash is #__recording_<id>.
    • Default value: disabled.
    • Enable Vim-style scroll keys: enable j/k for small scroll and d/u for 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.

MVP hotkeys

  • ? shows/hides a help overlay with all available commands.
  • While the native jump/search (cmd+j) is open, extension hotkeys are temporarily disabled.
  • Esc globally clears focus from active fields (for example chat input) and returns control to hotkeys.
    • On Home (/projects), if a stack is open, Esc closes it.
    • If a context menu from aside.perma-toolbar is open, Esc closes it.
  • configurable hotkey (default q) opens the page context menu from aside.perma-toolbar (where available).
  • g, then h (within ~1.2s) opens:
    • https://<current-host>/<accountId>/my/readings
  • g, then b (within ~1.2s) opens:
    • https://<current-host>/<accountId>/my/bookmarks
  • g, then d (within ~1.2s) opens Home:
    • https://<current-host>/<accountId>/projects
  • g, then l opens Lineup:
    • https://<current-host>/<accountId>/lineup
  • g, then p opens Pings:
    • https://<current-host>/<accountId>/circles
  • g, then a opens Activity:
    • https://<current-host>/<accountId>/reports/progress
  • g, then s opens My Stuff:
    • https://<current-host>/<accountId>/my/assignments
  • g, then f opens 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;
    • Esc or the breadcrumbs hotkey exits breadcrumbs mode.
  • configurable create/add hotkey (default n) opens the first visible Add... / New... action on the page.
  • On notification list pages (article):
    • visible article items get labels 1..9,0 (first 10 visible);
    • <digit> (1..9,0) marks the notification as read (if Mark as read exists) and opens the corresponding article link;
    • labels are recalculated on scroll.
  • On bookmarks page (/my/bookmarks):
    • visible links in main get labels 1..9,0 (first 10 after filtering);
    • <digit> (1..9,0) opens the corresponding bookmark link.
  • 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, and Assign/Schedule… links).
  • 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>).
  • 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 / k scroll a little down/up;
    • d / u scroll 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.
  • 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.
  • On a kanban board (/buckets/<bucketId>/card_tables/<tableId>):
    • digits 1..9,0 open board columns.
  • On a column page (/buckets/<bucketId>/card_tables/columns/<columnId>):
    • digits 1..9,0 open cards in that column.
  • When a context menu (perma-toolbar) is open:
    • digits are applied to visible menu items;
    • <digit> (1..9,0) clicks the corresponding menu item.
  • accountId is resolved dynamically from the current URL (first numeric path segment).
  • Hotkeys do not trigger inside input/textarea/select/contenteditable.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors