Skip to content

Migrate desktop UI from Slint to Tauri + React #9

@TheSameCat2

Description

@TheSameCat2

Overview

Replace the Slint-based pikachat-desktop with a Tauri + React + Tailwind frontend while preserving the existing Rust backend crates.

Architecture Principle

Thin Tauri command/event bridge:

  • Frontend sends commands: send_message, join_room, load_rooms, etc.
  • Backend emits events: timeline_updated, sync_state_changed, login_required, etc.
  • Frontend never sees Matrix internals
  • Backend never cares about React component structure

This separation enables agents to work independently on frontend and backend.

Tasks

Phase 1: Scaffold Tauri project

  • Create apps/pikachat-desktop-tauri with Tauri + Vite + React + TypeScript
  • Configure Tailwind CSS
  • Set up workspace to include existing crates
  • Wire backend-core, backend-matrix, backend-platform as dependencies

Phase 2: Command bridge

  • Define Tauri command handlers wrapping existing backend
  • init, login_password, restore_session, logout
  • start_sync, stop_sync
  • list_rooms, open_room, paginate_back
  • send_message, send_dm_text
  • Media upload/download commands

Phase 3: Event bridge

  • Set up Tauri event emission from backend
  • timeline_updated, room_list_updated
  • sync_state_changed, lifecycle_changed
  • login_required, error_occurred

Phase 4: React frontend

  • Login screen with homeserver/user/password form
  • Room list sidebar
  • Timeline view with message bubbles
  • Message composer
  • Sync status indicator
  • Logout flow

Phase 5: Cleanup

  • Remove old Slint pikachat-desktop
  • Update README and AGENTS.md
  • Verify Tailscale serve works for remote testing

Benefits

  • Agent can test UI via browser tools (localhost or Tailscale)
  • Hot reload for frontend development
  • Preserves all existing backend work
  • Cleaner separation of concerns

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions