- Run cargo fmt on all Rust crates for consistent formatting - Update CLAUDE.md with WASM plugin commands and dev.ps1 instructions - Update wiki: add WASM plugin architecture, rewrite dev environment docs - Minor frontend cleanup (unused imports)
- Fix composite primary keys in role_permissions and user_roles tables (PostgreSQL does not allow multiple PRIMARY KEY constraints) - Fix FK table name mismatch: tasks → tokens (was wf_tokens) - Fix FK table name mismatch: messages → message_templates (was message_templates_ref) - Fix tenant table name in main.rs SQL: tenant (not tenants) - Fix React Router nested routes: add /* wildcard for child route matching
Implement the complete message center with: - Database migrations for message_templates, messages, message_subscriptions tables - erp-message crate with entities, DTOs, services, handlers - Message CRUD, send, read/unread tracking, soft delete - Template management with variable interpolation - Subscription preferences with DND support - Frontend: messages page, notification panel, unread count badge - Server integration with module registration and routing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>