From 7b5d8acc9bbeb4b2185296d98565af34d959cb4a Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Mon, 2 Nov 2026 18:52:02 -0500 Subject: [PATCH] docs(claude): test gestures with device input and keep mode state at screen level --- CLAUDE.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 74258b47c7..bc1b1db07a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -84,11 +84,14 @@ The feature plugin automatically includes `:libs:logging`, `:ui:core`, `:ui:comp - **Feature modules are self-contained**: Each has its own state, controllers, and UI; communicates via shared modules - **Protobuf models**: Backend models come from the published `com.flipcash:{ocp,flipcash2}-client-protocol` artifacts, not from protos in this repo; the contracts are generated in their own repos - **Dark mode only**: App forces `MODE_NIGHT_YES` +- **Mode state lives at screen level**: drive mode transitions (select, edit) from screen-level state. A composable whose structure changes with the mode rebuilds its children and drops their running transitions (the chat list's select circle lost its slide-in this way). ## Definition of Done A code change is done when the touched modules' unit tests pass and `./gradlew :apps:flipcash:app:compileDebugKotlin` succeeds. +Tests for gestures and pointer input replay the sequence a finger makes on the device, such as a partial reveal followed by a full swipe. A semantics action or a single fling can pass while the real gesture fails: the leading swipe's reset and the desktop peek toggle both did. + ## Namespaces - App: `com.flipcash.app.android` (no `applicationIdSuffix` — debug and release share the ID, so installing one replaces the other)