Files
fluffytrix/CLAUDE.md
2026-02-25 12:23:31 +00:00

2.1 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

Fluffytrix is an Android Matrix chat client with a Discord-like UI. Built with Kotlin, targeting Android 14+ (minSdk 34, targetSdk 36, compileSdk 36).

Build Commands

./gradlew assembleDebug          # Build debug APK
./gradlew assembleRelease        # Build release APK
./gradlew test                   # Run unit tests
./gradlew connectedAndroidTest   # Run instrumented tests
./gradlew app:testDebugUnitTest  # Run unit tests for debug variant only

Architecture

  • Package: com.example.fluffytrix
  • Build system: Gradle with Kotlin DSL, version catalog at gradle/libs.versions.toml
  • AGP: 9.0.1
  • Java compatibility: 17 (configured in app/build.gradle.kts)
  • Single module (:app)

Key Files

  • gradle/libs.versions.toml — all dependency versions and library declarations
  • app/build.gradle.kts — app module build config
  • app/src/main/java/com/example/fluffytrix/ — Kotlin sources
  • app/src/main/res/ — Android resources (layouts, themes, drawables)

Design Intent

  • Discord-like layout: space sidebar → channel list → message area → member list
  • Static channel ordering (never auto-sort by recency)
  • Material You (Material 3 dynamic colors) theming
  • Matrix Rust SDK (org.matrix.rustcomponents:sdk-android) for Matrix protocol
  • Jetpack Compose for UI

Matrix Rust SDK: Raw Event JSON

The SDK exposes full raw event JSON through the LazyTimelineItemProvider on each EventTimelineItem:

val rawJson: String? = try {
    eventItem.lazyProvider.debugInfo().originalJson
} catch (_: Exception) { null }

EventTimelineItemDebugInfo fields:

  • originalJson — full raw JSON of the event (what Element shows in "View Source")
  • latestEditJson — raw JSON of the latest edit, if any
  • model — internal SDK model debug string

This is useful for reading custom/unstandardized fields that the SDK doesn't expose directly (e.g. fi.mau.gif, com.beeper.per_message_profile, bridge metadata).