2.1 KiB
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 declarationsapp/build.gradle.kts— app module build configapp/src/main/java/com/example/fluffytrix/— Kotlin sourcesapp/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 anymodel— 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).