Productivity add-ons for Beekeeper.
Profile hover, pinned chats, polls, reminders, stats — all toggleable.
Unofficial — not affiliated with or endorsed by Beekeeper AG.
Beekeeper is built for frontline workers, but the desktop web client lacks many quality-of-life features power users want: rich profile previews on hover, pinning specific chats above the activity-sorted list, scheduling reminders for messages, etc.
BeePlus adds these as a modular, toggleable suite. Each feature is an
independent plugin under features/<id>/ — enable only what you need.
| Feature | What it does |
|---|---|
| Profile Hover Tooltip | Hover any avatar → tooltip with configurable profile fields (name, role, custom fields like accommodation, mobile, supervisor) |
| Sticky Pinned Chats | Hover a chat → click pin → keeps it at the top regardless of activity |
| Quick Polls | Floating button (only when composer present) → modal → numbered-emoji poll inserted into composer; recipients vote via reactions |
| Personal Stats | Local-only counters: messages sent, reactions given, active days, peak hour, hourly activity chart |
| Reminder Bot | Right-click any message → snooze; native desktop notification at the chosen time; survives browser restart |
| Theme Tweaks | Compact layout, larger font, accessibility focus outlines, custom CSS — Beekeeper's own dark mode handles theming |
See ROADMAP.md for upcoming features and the plugin
architecture.
Install BeePlus from the Chrome Web Store →
- Clone or download this repo
- Open
chrome://extensions/ - Enable Developer mode (top right)
- Click Load unpacked
- Select this folder
- Open Beekeeper, hover any profile picture
All processing happens in your browser. No analytics, no tracking, no remote servers. The extension uses your existing Beekeeper login session cookie — no API token needed and nothing is uploaded.
Full policy: PRIVACY.md.
beekeeper-extension/
├── manifest.json
├── content.js ← entry: bootstraps registry + initAll
├── page-script.js ← MAIN-world: CSRF + avatar→user map sniffing
├── core/
│ ├── registry.js ← runtime FeatureRegistry
│ ├── options-registry.js ← options-page registry
│ ├── bkpr-api.js ← shared Beekeeper API helpers (cached)
│ ├── dom-helpers.js ← shared DOM helpers
│ ├── stats-tracker.js ← per-day local activity counter
│ └── diagnose.js ← BeePlus.diagnose() / suggestSelectors()
├── features/
│ ├── profile-hover/
│ ├── sticky-pin/
│ ├── theme-engine/
│ ├── quick-polls/
│ ├── reminder-bot/
│ └── personal-stats/
│ ├── index.js ← runtime (init + teardown)
│ └── options-ui.js ← settings UI in options page
├── options.html / .css / .js
├── background.js ← seeds defaults, opens options
├── styles.css
├── _locales/{en,de}/messages.json
├── icons/icon{16,32,48,128}.png
├── build.ps1 / build.bat ← build ZIP for Chrome Web Store
├── PRIVACY.md
├── ROADMAP.md
├── LICENSE
├── NOTICE
└── README.md
.\build.ps1
# or double-click build.batProduces beeplus-for-beekeeper-v<VERSION>.zip ready for the Chrome Web
Store upload.
- Create
features/<my-feature>/index.js— runtime module - Create
features/<my-feature>/options-ui.js— settings UI - Add both to
manifest.jsoncontent_scripts.jsandoptions.html<script>tags - Add i18n keys in
_locales/{en,de}/messages.json - Add default in
background.jschrome.runtime.onInstalled - Move from "Planned" → "Shipped" in
ROADMAP.md - Bump
versioninmanifest.json
A feature module:
window.BeePlus.FeatureRegistry.register({
id: "my-feature",
name: "myFeatureI18nKey",
description: "myFeatureDescI18nKey",
defaultEnabled: true,
init: async (ctx) => { /* attach listeners, mount UI, etc. */ },
teardown: async () => { /* remove everything cleanly */ }
});If BeePlus saves you time, consider supporting development:
- ⭐ Star this repo on GitHub
- ♥ Donate via PayPal
- 🐛 Report bugs in the Issues
- 💡 Suggest features — same place
Apache License 2.0 © LUPZN — see LICENSE and NOTICE.
BeePlus is a third-party tool that is not affiliated with, endorsed by, or sponsored by Beekeeper AG. "Beekeeper" is a trademark of Beekeeper AG and is used here under nominative-fair-use principles to identify the platform this extension enhances.
The extension uses Beekeeper's internal SPA REST API via the user's existing session cookie. Beekeeper may change the internal API at any time, which would require updates to this extension. For mission-critical workflows, prefer Beekeeper's official Bot/API token system.