Introduce Luna.Identity project with user identity service, pairing code
generation, and channel linking. Channels (Telegram, CLI) now verify link
status before routing messages and prompt users to pair via the web
interface. WebChannel handles /link <channel-type> <code> commands to
complete the pairing flow.
Fix inverted expiration check in IsPairingCodeExpired that caused codes
to be treated as expired immediately after creation.
Implement web frontend using Vite + React + TypeScript with:
- Chakra UI component library for theming and styling
- SignalR bridge (lunaBridge) for real-time server communication
- Chat components (ChatPanel, ChatInput, ChatMessage)
- Layout components (AppLayout, Sidebar, StatusBar, SystemPanel)
- Custom useChat hook for conversation state management
- Dark/light theme support via ColorModeProvider
- Mock conversation data for development