This code was written by Claude Code.
A Chrome extension that displays desktop notifications when you receive wave, chat, or call notifications in gather.town.
- Advanced Notification Detection: Multi-method detection using console log monitoring and DOM-based observation
- Audio Notifications: Acoustic feedback based on notification type
- Do Not Disturb Mode: Temporary notification pause functionality for focused work
- Automatic Tab Management: Automatic creation and management of Gather.town tabs
- Configurable: Enable/disable settings for each notification type
- Debug Mode: Optional debug logging for troubleshooting and development
- Multi-language Support: Supports Japanese, English, German, and French (automatically selected based on browser language settings)
- Notification Detection: Monitors gather.town console logs to detect wave, chat, call, and calendar notifications
- Desktop Notifications: Displays desktop notifications when notifications are detected
- Badge Display: Shows notification status with badges on the extension icon
- Calendar Timing Settings: Customize when to receive calendar notifications (0-5 minutes before)
- Tab Management: Clear notifications and activate gather.town tab by clicking the icon
- Notification Click: Click desktop notifications to automatically activate gather.town tab
- Auto Clear: Automatically clear notifications when gather.town tab becomes active
- Audio Notifications: Loop audio playback during notifications (stops when notifications are cleared)
- Focus Mode: Do not disturb mode functionality that disables notifications for a certain period
- Settings Management: Individual enable/disable toggle for each notification type (Wave, Chat, Call, Calendar)
- Version Selection: Choose between Gather V1 or V2 for tab creation
- Auto Tab Creation: Automatic tab creation when gather.town tab is not found (uses selected version)
- Language Selection: Manual language selection dropdown in popup (Auto/English/Japanese/German/French)
- Debug Mode: Debug logging toggle for troubleshooting (enabled via checkbox in bottom left of popup)
- Internationalization: Automatically displays messages in appropriate language based on browser language settings or manual selection
- Open
chrome://extensions/in Chrome - Enable "Developer mode"
- Click "Load unpacked extension"
- Select this folder
- Install the extension and open a Gather.town page
- Wave, Chat, and Call notifications are automatically detected and desktop notifications are displayed
- Click the extension icon to change settings from the popup
- Use do not disturb mode to temporarily disable notifications
- Use the "Go to Gather.town" button to automatically create/switch tabs
- Select your preferred language from the dropdown (marked with 🌐) at the bottom right of the popup
- Enable debug mode using the checkbox in the bottom left of the popup for detailed logging
Open create-icons.html in your browser to download icons of each size.
manifest.json- Extension configuration and permission definitionsbackground.js- Background script (notification processing and state management)content.js- ISOLATED world content script (event reception)content_main.js- MAIN world content script (console log monitoring)popup.html- Popup UIpopup.js- Popup behavior and event processingoffscreen.html- Offscreen document (for audio playback)offscreen.js- Audio playback processing using Web Audio API
icon*.png- Extension icons (16px, 32px, 48px, 128px)create-icons.html- HTML file for icon creation
welcome.html- Welcome page displayed on install/updatewelcome.js- Welcome page behavior and functionality
_locales/en/messages.json- English resources_locales/ja/messages.json- Japanese resources_locales/de/messages.json- German resources_locales/fr/messages.json- French resources
docs/spec/- Technical specifications and architecture documentsCLAUDE.md- Development workflow instructionsREADME-ja.md- Japanese version of this README
- Welcome page on install/update: Automatic display of welcome page when extension is installed or updated
- Installation instructions: Clear guidance to reload Gather.town tabs for proper functionality
- Feature overview: Visual introduction to all 6 key features with icons
- Wave, Chat, Call, and Calendar notifications
- Multiple notification methods (desktop, badge, sound)
- Concentration mode with badge indicator
- Step-by-step usage guide: 4-step walkthrough covering:
- Tab reloading requirement
- Notification configuration
- How notifications work (desktop, badge, sound)
- Concentration mode usage
- Multi-language support: Welcome page fully localized in 4 languages
- Dynamic version display: Automatically shows current version using i18n placeholders
- Quick actions: Buttons to open Gather.town or close the welcome page
- Calendar notification timing: Configurable notification timing (0-5 minutes before events)
- Improved notification messages:
- Dynamic username insertion in wave and chat notifications
- Localized fallback to "Someone" when username is unavailable
- All notification messages now consistently show sender information
- Enhanced audio reliability:
- Improved offscreen document initialization with ready state verification
- Reduced audio playback failures through better lifecycle management
- Extended external meeting detection:
- Added "Go to lobby" and "Go to desk" patterns for V2
- Better coverage of concentration mode edge cases
- V2 multi-language detection: All V2 notifications now support English, Portuguese, and Japanese
- Wave detection patterns:
- English: "$name waved to you"
- Portuguese: "$name acenou para você"
- Japanese: "$nameさんが手を振りました"
- Chat detection patterns:
- English: "$name sent a message"
- Portuguese: "$name enviou uma mensagem"
- Japanese: "$nameさんがメッセージを送信しました"
- Calendar detection patterns:
- English: "in $n minutes"
- Portuguese: "em $n minutos"
- Japanese: "$n 分後"
- Concentration mode detection:
- English: "Enter office"
- Portuguese: "Entrar no escritório"
- Japanese: "オフィスに入る"
- Automatic language detection: Works seamlessly with user's Gather V2 language preference
- V2 notifications (DOM-based detection):
- Wave: Detects "$name waved to you" in DOM
- Chat: Detects "$name sent a message" in DOM
- Calendar: Detects "in $n minutes" in DOM
- V1 notifications (Console log detection):
- Wave: "Alerting Wave event"
- Chat: "Skipping ChatV2 notification"
- Call: "Alerting Ring event"
- User name extraction: Wave and Chat notifications now include the sender's name (e.g., "John waved to you!")
- Flexible calendar detection: Supports any time interval (1 minute, 5 minutes, 10 minutes, etc.)
- V2 concentration mode support:
- Auto-detection of V2 concentration mode via "Enter office" button
- Multi-language support (English "Enter office" / Japanese "オフィスに入る")
- Automatic clicking to exit concentration mode when toggled off
- Improved reliability: DOM-based detection (V2) is more accurate than console log monitoring (V1)
- Enhanced debugging: Comprehensive debug logging to diagnose detection and audio issues
- DOM-based wave detection: Added MutationObserver to detect wave notifications by DOM content ("waved to you")
- Dual-method detection: Combines console log monitoring and DOM observation for improved reliability
- Better notification distinction: More accurate wave detection using actual notification elements
- Version indicators: Popup UI now shows "(V1 only)" and "(V2 only)" labels for version-specific features
- Gather V2 domain support: Added support for the new Gather V2 domain (
app.v2.gather.town) - Calendar notification type: New notification type with dedicated settings toggle (V2 only)
- Version selector: Users can now choose between V1 or V2 when creating new Gather.town tabs
- Backward compatibility: Both V1 and V2 notification patterns are supported simultaneously
- Optimized monitoring logs: The
[WAVE-NOTIFIER-CONTENT] Monitoring active atmessage now only appears when debug mode is enabled - Comprehensive log optimization: All
console.logstatements are now wrapped with debug mode checks - Improved log quality: Significantly reduced unnecessary log output during normal usage, showing detailed logs only during debugging
- Error log preservation:
console.errorstatements remain always visible to ensure important error information is preserved
The extension automatically detects your browser's language setting and displays messages in the appropriate language:
- English (en) - Default language
- Japanese (ja) - 日本語
- German (de) - Deutsch
- French (fr) - Français
If your browser language is not supported, the extension will fall back to English.
This project is licensed under the MIT License - see the LICENSE file for details.