Discuss, rebuilt as a real chat app
A modern, feature-rich redesign of Odoo 19 Discuss — quick reactions, polls, scheduled messages, message formatting, custom statuses and more. Inspired by Slack, Telegram and Discord, built entirely on Odoo's own colors, and it never forks the mail module.
mail — uninstall and Odoo returns to stock, no DB residue.Everything in one familiar place
Quick reactions on hover, a live poll, rendered formatting, custom statuses next to names and a brand-accent active channel — all inside the Discuss you already use.

A 30-second walkthrough
Quick switcher, live formatting, a one-tap reaction, a code block, a poll with real-time results, favoriting a channel, a filtered search, Do Not Disturb and a density toggle — captured in one pass on a real Odoo 19 install.
The chat features your team expects
Eight focused additions that make Discuss feel like the apps everyone already knows.
Quick reactions
A one-click emoji bar appears on every message on hover — react in a single tap, just like Slack and Telegram.
Polls with live results
Create a poll right from the composer, vote, and watch the bars and percentages update in real time for everyone in the channel.
Scheduled send
Compose now, send later. Pick a time, and a panel lets you review or cancel anything still pending.
Message formatting
A composer toolbar for bold, italic, strikethrough and inline code — rendered live in the feed.
Forward messages
Send any message to another channel in two clicks, keeping the original author and content.
Custom status
A personal emoji and short text shown next to your name across Discuss — set it in your Preferences.
Multi-select & bulk
Select several messages at once and star or delete them together from a floating action bar.
Quick switcher
A “Jump to…” box opens the command palette to hop to any channel or person — keyboard-first.
Density & refinements
Compact / Comfortable density per user, circular avatars, accent active channel, refined composer, dividers and scrollbar.
Pinned bar
A persistent bar at the top of every channel surfaces the latest pinned message — click it to jump straight there.
Favorite channels
Star the channels you live in and they group into a Favorites section at the top of the sidebar, saved per user.
Code blocks
Fenced ``` blocks render as a clean, dark, copy-able code box — perfect for sharing snippets and logs.
Search filters
Narrow message search with from:, has:link, has:file and has:star — find that message fast.
Do Not Disturb
One click silences notification sounds and desktop alerts across Discuss, saved on your account until you turn it off.
Profile cards
Hover or click a name to see a profile card — now showing that person's custom status emoji and text.
Theme-safe by design
Every color is derived from Odoo's own theme variables and exposed as CSS custom properties — never hardcoded. Install a backend theme that changes the primary color and Discuss Pro recolors to match automatically, with no configuration. The screenshots here use Odoo's default plum accent; your install follows yours.
A closer look
React in one tap
Hover any message and a bar of your most-used emoji appears. No menus, no extra clicks — exactly the muscle memory your team already has.

Decide together, live
Spin up a poll from the composer with as many options as you like. Votes, bars and percentages update in real time for everyone — and the author can close it anytime.

Write it the way you mean it
Bold, italic, strikethrough and inline code from a composer toolbar — rendered cleanly in the feed so important things stand out.

Move a message where it belongs
Forward any message to another channel in two clicks, with the original author kept as attribution.

Send it at the right moment
Write now, deliver later — handy across time zones. A header panel lists everything pending so you can review or cancel.

Tidy up in bulk
Select several messages and star or delete them together from a floating action bar — no one-by-one clicking.

Jump anywhere, fast
A visible “Jump to…” box surfaces Odoo's command palette — type # for channels or @ for people and hit Enter.

Roomy or compact — your call
Toggle Comfortable or Compact spacing from the channel header. Compact fits far more on screen; your choice is saved to your account.

Important messages stay in view
A bar at the top of the channel always shows the latest pinned message. Favorites group at the top of the sidebar, and a code block keeps snippets readable — all visible at once here.

Share code that stays readable
Wrap text in triple backticks and it renders as a dark, monospaced block with a one-click Copy button — no more mangled snippets.

Find the exact message
Combine free text with from: and has:link / has:file / has:star to cut straight to what you're after.

Focus when you need to
One toggle at the bottom of the sidebar silences sounds and desktop notifications. Pair it with a custom status so teammates know you're heads-down.

Know who you're talking to
A profile card shows a teammate's details and their custom status — the personal emoji and note they set in Preferences.

Built the right way
Implemented with Odoo's official extension points — message-action and thread-action registries, component patches and template inheritance. The mail module is never forked, so your upgrades stay clean and the uninstall is fully reversible.
Give your team the chat they already expect
BambooForge Discuss Pro · Odoo 19.0 · OPL-1 · never forks the mail module · full source included
bambooforge.labs@gmail.comMore from BambooForge Labs — one vendor, the same standard: tested, source included, supported.
BambooForge Discuss Pro
A modern, feature-rich redesign of Odoo 19 Discuss. It adds the chat features your team expects — quick reactions, polls, scheduled messages, formatting, forwarding, custom statuses and more — on top of a refined interface that follows your backend theme's colors.
This module does not fork the mail module. It uses Odoo's official extension points only, so it stays compatible with other apps and uninstalls cleanly.
- Installation
- Features and how to use them
- Preferences
- Theme compatibility
- Technical notes
- Uninstall
- Support
- Frequently asked questions
- Which features are turned on by default?
- Does it work on mobile and small screens?
- If a colleague does not have the module, does it affect them?
- Do polls and scheduled messages persist?
- Is any external or third-party service used?
- What is the performance impact?
- Does it change or migrate core Discuss data?
- Troubleshooting
- Upgrading & version compatibility
- Uninstallation
- Changelog
Installation
- Copy bambooforge_discuss_pro into your addons path (or install from the Apps store).
- Go to Apps, click Update Apps List, search for Discuss Pro and install.
- That's it — open Discuss and the new interface is live for every user.
No configuration is required. A couple of preferences are available per user (see Preferences below).
Features and how to use them
Quick reactions
Hover any message and a small bar of frequently used emoji appears at the top-right. Click one to react instantly. The full emoji picker and the existing reaction tools remain available — this is just a faster path to the common ones.
Message formatting
The composer has a small formatting toolbar (Bold, Italic, Strikethrough, Inline code). Select some text and click a button, or type the markers yourself:
- **bold** → bold
- *italic* → italic
- ~~strike~~ → strikethrough
- a backtick pair around text → inline code
Formatting is rendered when the message is displayed.
Polls
- Click the chart icon in the composer.
- Enter a question and at least two options (add as many as you like).
- Optionally tick Allow multiple answers.
- Click Create poll — the poll is posted to the channel.
Anyone in the channel can vote by clicking an option. Bars and percentages update in real time for everyone. The poll author can Close poll at any time to stop further voting.
Scheduled send (send later)
- Type your message, then click the clock icon in the composer.
- Pick a time (or use a quick preset) and click Schedule.
- The message is delivered automatically at that time.
To review or cancel pending messages, open the Scheduled messages panel from the channel header (clock icon). A background job posts due messages every couple of minutes.
Forward a message
Open a message's action menu and choose Forward, pick a destination channel, and the message is reposted there with the original author kept as attribution.
Custom status
Set a personal emoji and short status text under Preferences (avatar menu → Preferences). Your emoji then appears next to your name in Discuss, with the full text shown on hover.
Multi-select and bulk actions
Hover a message and click the checkbox on its left to select it. Select as many as you like; a floating bar appears with Star, Delete and Clear. Useful for cleaning up or bookmarking several messages at once.
Quick switcher
Click Jump to… at the top of the sidebar (or press Ctrl+K) to open the command palette. Type # to find a channel or @ to find a person, then press Enter to jump there.
Density
Toggle Compact / Comfortable spacing from the channel header. Compact fits more messages on screen. Your choice is saved on your own account.
Pinned bar
When a channel has pinned messages, a bar at the top shows the most recent one. Click the bar to jump straight to that message in the conversation. (Use the stock Pinned Messages panel in the channel header to pin or unpin.)
Favorite channels
Hover a channel in the sidebar and click the star to mark it a favorite. Favorites are grouped into a Favorites section at the top of the sidebar, saved on your account. Click the star again to remove it.
Code blocks
Wrap text in triple backticks to post a multi-line code block:
``` your code here ```
It renders as a dark, monospaced block with a one-click Copy button. Use the code-block button in the composer toolbar to insert the markers.
Search filters
In the message search, combine free text with filters:
- from:name — only messages from a given author.
- has:link — messages that contain a link.
- has:file — messages with an attachment.
- has:star — messages you starred.
For example, from:alice has:file report finds attachments shared by Alice that mention "report".
Do Not Disturb
Click Do Not Disturb at the bottom of the sidebar to silence notification sounds and desktop alerts across Discuss. It stays on (saved to your account) until you turn it off, and can also be set in Preferences.
Profile cards
Click a person's name or avatar to open their profile card. It now shows their custom status — the personal emoji and text they set in Preferences.
Preferences
Each user can set, under Preferences:
- Discuss Density — Comfortable (default) or Compact.
- Status Emoji and Status Text — your personal status shown in Discuss.
- Do Not Disturb — silence notification sounds and desktop alerts.
Density can also be toggled from the Discuss channel header, Do Not Disturb from the bottom of the sidebar, and favorites via the star on each channel.
Theme compatibility
Every color used by Discuss Pro is derived from Odoo's own theme variables (the primary color, grays and semantic colors) and exposed as --bf-discuss-* CSS custom properties. No color is hardcoded.
If you install a backend theme that changes the primary color, Discuss Pro recolors to match automatically, with no configuration. The screenshots in the store listing use Odoo's default accent; your installation follows yours.
Technical notes
Discuss Pro is implemented entirely through Odoo's supported extension points:
- mail.message/actions and mail.thread/actions registries (forward action, density toggle, scheduled-messages panel).
- Owl component patches and template inheritance for the message, composer and sidebar enhancements.
- A small set of backend models for the server-side features:
- bf.discuss.poll / bf.discuss.poll.option / bf.discuss.poll.vote
- bf.discuss.scheduled.message (with a scheduled job to post due messages)
- additive fields on res.partner / res.users (custom status, density, favorite channels, Do Not Disturb) and mail.message (poll link)
- A dedicated search route (/bambooforge_discuss_pro/search) powers the from: / has: filters, so the stock message routes are not overridden.
- The pinned bar and favorites reuse Odoo's own pinned-messages store and sidebar registries; Do Not Disturb patches the out-of-focus notification service.
Real-time poll updates use the standard Odoo bus. The mail module itself is never modified, so upgrades remain clean.
Uninstall
Uninstalling the module removes its assets, models and the few additive fields, and Discuss returns to stock Odoo. No database residue is left behind.
Support
- Email: bambooforge.labs@gmail.com
- License: OPL-1 (full source included)
- Tested on Odoo 19.0.
Frequently asked questions
Which features are turned on by default?
All of them. Once installed, the redesigned interface and every feature are live with no configuration. The only per-user preferences are Density (Comfortable by default), your status emoji/text and Do Not Disturb.
Does it work on mobile and small screens?
Yes. It runs in the standard Odoo web client, so it works anywhere Discuss does, including mobile browsers, and Compact density helps on narrow screens. Hover-only affordances (quick-react bar, select checkbox) surface on tap on touch devices.
If a colleague does not have the module, does it affect them?
The module is installed per database, not per user, so everyone on that database gets the new interface. Content degrades gracefully: a poll, forward or scheduled message posts as an ordinary channel message, readable by any Odoo user.
Do polls and scheduled messages persist?
Yes. Polls (bf.discuss.poll) and pending scheduled messages (bf.discuss.scheduled.message) are stored in your database and survive reloads and restarts. A scheduled message leaves the queue once posted; a poll lives with its channel.
Is any external or third-party service used?
No. Everything runs inside your own Odoo instance — no external API calls, no third-party servers, no telemetry. Live poll and reaction updates use Odoo's built-in bus; scheduled sending uses a standard Odoo scheduled action (cron).
What is the performance impact?
Minimal. The features are lightweight client components plus a few small backend models queried only when you open a poll or the scheduled panel. The scheduled-send cron runs every two minutes and processes only messages that are due.
Does it change or migrate core Discuss data?
No. The mail module is never forked. It adds its own models and a few additive fields (custom status, density, favorite channels, Do Not Disturb, and a poll link on mail.message). Existing data is untouched, so it uninstalls cleanly.
Troubleshooting
The new interface or a feature does not appear
Cause. The browser is serving cached JavaScript/SCSS assets from before the install or update.
Diagnosis. Confirm the module is Installed under Apps, then test whether a hard refresh restores the missing element.
Resolution. Hard-refresh (Ctrl+F5 / Cmd+Shift+R). If it persists, in Developer mode use Settings → Technical → Regenerate Assets Bundles and reload.
Scheduled messages are not being sent
Cause. The scheduled action is inactive, or the cron scheduler is not running.
Diagnosis. In Developer mode open Settings → Technical → Scheduled Actions, find Discuss Pro: Post scheduled messages, and confirm it is active with an advancing next-execution date. Pending items show in the Scheduled messages panel.
Resolution. Ensure a cron worker is enabled (max_cron_threads > 0 or a dedicated cron process) and reactivate the action if disabled. Messages post on the next run after their send time, so allow up to the two-minute interval.
Markdown or code blocks are not rendered
Cause. Formatting is applied by the client at display time, so a cached client shows raw markers, or the markers are malformed.
Diagnosis. Check whether the message renders after a hard refresh, and verify balanced markers: **bold**, *italic*, ~~strike~~, a backtick pair for inline code, and triple backticks for a code block.
Resolution. Hard-refresh to load current assets and fix unmatched markers. Formatting is presentational only — the stored body is unchanged, so older messages format as soon as they re-render.
Poll results or reactions do not update live
Cause. Live updates rely on Odoo's bus (long-polling / websocket); if it is blocked, clients update only on reload.
Diagnosis. Check whether reloading shows the correct counts. If it does, the live channel — not the stored data — is the issue.
Resolution. Ensure the longpolling/websocket endpoint is reachable; behind a reverse proxy the /websocket and longpolling routes must be forwarded. Stored votes are always correct; only the live push is affected.
Upgrading & version compatibility
This build targets Odoo 19.0. Each Odoo major series (17.0, 18.0, 19.0) has its own dedicated build of this module — always install the build that matches your Odoo version. Mixing a build with a different Odoo series is not supported.
Patch upgrades (same series, e.g. 19.0.1.0.0 → later)
Back up your database and filestore first.
Replace the module folder with the newer build.
Restart Odoo with the module updated:
./odoo-bin -c your.conf -u bambooforge_discuss_pro -d your_db
Odoo applies any schema/data changes automatically. Your existing records and configuration are preserved.
Cross-version migration (e.g. Odoo 17 → 18)
Upgrading Odoo itself is a database migration handled by Odoo's standard upgrade tooling. When you migrate the database to the next Odoo series, install the matching build of this module for that series. Data created by this module carries over with the database migration.
After any upgrade the module's scheduled actions resume on their normal cadence — no manual re-activation is required.
Uninstallation
You can remove this module at any time from Apps → (this module) → Uninstall, or from the command line. Uninstalling is clean and reversible by reinstalling — but note what is and is not deleted.
What is removed
- The module's own tables and every record in them (4 models, prefixed bf.*) — this is the data this module created.
- The menus, actions, views and reports this module installed.
- Its scheduled actions (cron jobs) — they stop immediately on uninstall.
What is preserved
- Your standard Odoo data (partners, products, sales, invoices, inventory moves) is not deleted — this module only reads and annotates it; the underlying records stay.
- Attachments and chatter messages on standard records are kept.
As always, take a database backup before uninstalling in production.
Changelog
19.0.1.0.0
Current release for Odoo 19.0. This build includes:
- A modern, professional redesign of Odoo Discuss.
- Quick reactions, compact density, brand-aware styling.
- Built entirely on Odoo's own theme colors.
Feature additions and fixes ship as new builds on the Odoo Apps store; this page and the module's version reflect the current published release. Always keep the build matched to your Odoo series (see Upgrading & version compatibility).
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module