Commit graph

13 commits

Author SHA1 Message Date
5d143808a3
feat: add direct message testing to XMPP doctor command
- Add reusable MessageBody and XMPPMessage structs to xmpp client
- Refactor SendMessage to use shared structs instead of inline definitions
- Add SendDirectMessage method for direct user messaging (type="chat")
- Enhance doctor command with --test-dm flag (enabled by default)
- Add testDirectMessage function that sends test message to admin@localhost
- Update help text, examples, and timing measurements for direct messages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 16:58:02 +02:00
5551a8bc8d
feat: add /xmppbridge unmap command for channel unmapping
- Add DeleteChannelRoomMapping method to Bridge interface
- Implement channel unmapping logic in XMPP bridge (cache + KVStore removal)
- Add /xmppbridge unmap command handler with validation
- Bridge user automatically leaves XMPP room when unmapping
- Update command help text and autocomplete

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 16:44:59 +02:00
43f0fb1892
feat: implement bridge-agnostic channel mapping keys
- Replace channel mapping keys with bridge-agnostic pattern: channel_map_<bridge>_<identifier>
- XMPP mappings now use: channel_map_mattermost_<channelID> → roomJID, channel_map_xmpp_<roomJID> → channelID
- Update KV store constants with BuildChannelMapKey() and ExtractIdentifierFromChannelMapKey()
- Make KV store completely bridge-agnostic for future Matrix/Discord/Slack bridge support
- Fix getAllChannelMappings() to correctly read XMPP keys for room joining on startup
- Scalable design supports N bridges with consistent naming pattern

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 16:20:21 +02:00
8a8c9af611
feat: implement XMPP message sending and enhance MUC testing
- Implement proper SendMessage function with XML encoding and timeout protection
- Add message sending to MUC test workflow in doctor command
- Test results: join (16.87ms) → send message (75.46µs) → wait (5s) → leave (111.58µs)
- Enhanced doctor logging shows actual message content and comprehensive timing
- Validates complete bidirectional XMPP bridge functionality for production use

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 16:03:02 +02:00
d159c668c2
feat: implement production-ready MUC operations and comprehensive testing
- Implement proper XMPP MUC operations using mellium.im/xmpp/muc package
- Add session readiness checking to prevent blocking on room joins
- Create comprehensive bridge manager architecture with lifecycle management
- Add complete channel mapping functionality with KV store persistence
- Remove defensive logger nil checks as requested by user
- Enhance XMPP client doctor with MUC testing (join/wait/leave workflow)
- Add detailed dev server documentation for test room creation
- Implement timeout protection for all MUC operations
- Add proper error handling with fmt.Errorf instead of pkg/errors
- Successfully tested: MUC join in ~21ms, 5s wait, clean leave operation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 13:47:15 +02:00
4d6929bab6
feat: complete XMPP bridge implementation with configuration fixes
- Fix configuration loading by matching JSON field names with plugin manifest keys
- Move configuration to separate package to resolve type conflicts
- Implement bridge startup logic that initializes on OnActivate and updates on OnConfigurationChange
- Add certificate verification skip option for development/testing environments
- Create XMPP client initialization helper function to avoid code duplication
- Add SetOnlinePresence() method to XMPP client for presence management
- Set bridge user online presence automatically upon successful XMPP connection
- Remove unused mock generation and test files as requested
- Update bridge constructor to accept configuration parameter
- Implement proper bridge lifecycle management with Start/Stop methods

The bridge now properly loads configuration from admin console, creates XMPP connections
with appropriate TLS settings, and manages online presence for the bridge user.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-31 18:56:59 +02:00
07ff46624d
feat: implement XMPP client and development server infrastructure
## XMPP Client Implementation
- Create XMPP client with mellium.im/xmpp library
- Add SASL Plain authentication with TLS support
- Implement basic connection, ping, and disconnect functionality
- Add TLS certificate verification skip option for development

## Development Server Management
- Add custom makefile targets for XMPP server management
- Implement devserver_start, devserver_stop, devserver_status commands
- Add devserver_logs, devserver_clean, devserver_doctor commands
- Create comprehensive sidecar/README.md with setup instructions

## XMPP Client Doctor Tool
- Create cmd/xmpp-client-doctor diagnostic tool
- Add CLI flags for server configuration with sensible defaults
- Implement verbose logging and connection testing
- Include insecure TLS option for development environments

## Bridge Architecture Foundation
- Create placeholder bridge structs in proper package hierarchy
- Add server/bridge/mattermost and server/bridge/xmpp packages
- Update plugin initialization to create bridge instances
- Maintain clean separation between Mattermost and XMPP concerns

## Dependencies and Configuration
- Add mellium.im/xmpp dependencies to go.mod
- Fix plugin.json password field type validation
- Update README.md with XMPP bridge description and doctor usage
- Add .claude.md to .gitignore for local development notes

All tests passing. Ready for Phase 4 (Bridge Logic) implementation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-31 13:55:24 +02:00
f1a6cb138f
feat: implement XMPP bridge configuration and logger setup
- Add comprehensive XMPP settings schema to plugin.json
- Implement configuration struct with validation and helper methods
- Add configurable username prefix for XMPP users
- Set up logger in Plugin struct following Matrix bridge pattern
- Update KV store constants to use XMPP terminology
- Replace Matrix references with XMPP equivalents in test helpers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-31 12:46:45 +02:00
202622f2c4
chore: retrieved base logic files from matrix bridge 2025-07-31 12:17:24 +02:00
b10a439a29
pluginctl: update assets 2025-07-31 12:17:06 +02:00
421b4f562f
chore: logo 2025-07-31 12:16:53 +02:00
1755c6e0b5
chore: sidecar folder with xmpp compose for testing 2025-07-31 12:16:36 +02:00
acbc69f7eb
Initial commit from mattermost-plugin-starter-template 2025-07-30 13:12:52 +02:00