synpad 0.1.0

A full-featured Matrix chat client built with Dioxus
# Synpad

A full-featured [Matrix](https://matrix.org) chat client built with Rust and [Dioxus](https://dioxuslabs.com/).

Synpad aims for near-complete feature parity with Element Web, delivering a fast, secure, and cross-platform Matrix experience.

## Features

**Messaging**
- Rich Markdown formatting, inline code, and code blocks
- Message editing, deletion, replies, and threads
- Reactions, read receipts, and typing indicators
- Polls, voice messages, and location sharing
- Message forwarding and edit history
- Message effects (confetti, fireworks)

**Encryption & Security**
- End-to-end encryption enabled by default for private rooms
- Cross-device verification (QR code and emoji)
- Key backup, recovery, export, and import
- Secure session persistence

**Rooms & Spaces**
- Room creation with encryption, permissions, and alias configuration
- Space hierarchy navigation and space-based filtering
- 23 configurable room permissions
- Room upgrades and chat history export (HTML, plain text, JSON)

**Calls & Media**
- Voice and video calls via Element Call integration
- Screen sharing and video rooms
- Media uploads with progress tracking
- Image viewer and file downloads

**Search & Navigation**
- Spotlight search (Ctrl+K) for rooms and users
- Server-side and local persistent search index
- Breadcrumb navigation for recent rooms

**Customization**
- Light and dark themes with custom theme support
- Bubble layout option
- Configurable notification rules
- Keyboard shortcuts

## Tech Stack

| Layer | Technology |
|---|---|
| Language | Rust |
| UI Framework | Dioxus 0.7 |
| Matrix SDK | [matrix-rust-sdk]https://github.com/matrix-org/matrix-rust-sdk |
| Async Runtime | Tokio |
| State Store | SQLite (bundled) |
| Markdown | comrak + ammonia |

## Getting Started

### Prerequisites

- [Rust]https://rustup.rs/ (stable)
- [Dioxus CLI]https://dioxuslabs.com/learn/0.7/getting_started (`cargo install dioxus-cli`)

### Desktop (default)

```bash
# Development
cargo run --bin synpad

# Or with Dioxus hot-reload
dx serve

# Release build
cargo run --bin synpad --release
```

### Packaging

```bash
# Desktop package
dx bundle --release --desktop

# Android package
dx bundle --release --android --features mobile --no-default-features

# iOS package
dx bundle --release --ios --features mobile --no-default-features
```

Mobile packaging requires the platform SDKs:

- Android: Android SDK + NDK available to the Dioxus CLI toolchain
- iOS: Xcode and Apple signing tools on macOS

### Web

```bash
dx serve --features web
dx build --release --features web
```

### Mobile

```bash
dx serve --android --features mobile --no-default-features
dx serve --ios --features mobile --no-default-features
```

## Project Structure

```
src/
  app.rs            # App routing and global state initialization
  main.rs           # Entry point (desktop/web/mobile)
  auth/             # Login, registration, SSO, OIDC, password reset
  client/           # Matrix SDK client setup, session management, sync
  state/            # Global application state and signals
  room/             # Room view, timeline, composer, calls, media, widgets
  room_list/        # Room list, spaces, filtering, room creation
  right_panel/      # Room info, members, threads, files panels
  components/       # Reusable UI components
  settings/         # User settings pages
  encryption/       # E2E encryption, verification, key management
  notifications/    # Desktop notifications and push rules
  cache/            # Media and avatar caching
  persistence/      # Session and state persistence
  theme/            # Theming and design tokens
  i18n/             # Internationalization
  utils/            # Markdown, HTML rendering, search, formatting
  layouts/          # Main and auth layout containers
  pages/            # Top-level page components
assets/
  css/main.css      # Application styles
  fonts/            # Font files
  icons/            # Icon assets
```

## License

[AGPL-3.0-only](https://www.gnu.org/licenses/agpl-3.0.html)