From d9eb44df1f33632d20d6184580ef5d2db7d15107 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 12 Mar 2026 19:52:36 -0400 Subject: [PATCH 1/2] Improving the spacing in the new translation settings screen --- .../ui/screen/loggedIn/settings/UserSettingsScreen.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt index 3237243e6..2f9c5717f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt @@ -63,6 +63,8 @@ import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.Size10dp import com.vitorpamplona.amethyst.ui.theme.Size20dp +import com.vitorpamplona.amethyst.ui.theme.SpacedBy10dp +import com.vitorpamplona.amethyst.ui.theme.SpacedBy5dp import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow import java.util.Locale as JavaLocale @@ -93,6 +95,7 @@ fun UserSettingsScreen( .padding(top = Size10dp, start = Size20dp, end = Size20dp) .verticalScroll(rememberScrollState()), horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = SpacedBy10dp, ) { DontTranslateFromSetting(accountViewModel) TranslateToSetting(accountViewModel) @@ -219,7 +222,7 @@ fun LanguagePreferencesSetting(accountViewModel: AccountViewModel) { if (languagePreferences.isEmpty()) return - Column { + Column(verticalArrangement = SpacedBy5dp) { SettingsRow( name = R.string.language_preferences, description = R.string.language_preferences_description, From 198aa0971ca858ae6d55fedf98f4ef24cc24542c Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 12 Mar 2026 22:13:33 -0400 Subject: [PATCH 2/2] adds ./gradlew spotlessApply request to claude improves description of the .md file --- .claude/CLAUDE.md | 26 ++++++++++++++++++++------ .claude/settings.json | 16 ++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 .claude/settings.json diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 72b5c7264..8c87760cd 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -1,8 +1,14 @@ -# Amethyst Desktop Fork +# Amethyst ## Project Overview -Fork of [Amethyst](https://github.com/vitorpamplona/amethyst) adding Compose Multiplatform Desktop support. Quartz library converted to full KMP for code sharing between Android and Desktop JVM. +Amethyst is a Nostr Client for Android that was made for Android-only and has been slowly switching +over to a Kotlin Multiplatform project. This project has 4 main modules: `quartz`, `commons`, +`amethyst` and `desktopApp`. Quartz should contain implementations of Nostr specifications and +utilities to help implement them. Commons stores shared code between Amethyst Android (`amethyst`) +and Amethyst Desktop (`desktopApp`). The Desktop App is designed to be mouse first and so uses a +completely different screen and navigation architecture while sharing the back end components with +the android counterpart. ## Architecture @@ -12,7 +18,8 @@ amethyst/ │ └── src/ │ ├── commonMain/ # Shared Nostr protocol, data models │ ├── androidMain/ # Android-specific (crypto, storage) -│ └── jvmMain/ # Desktop JVM-specific +│ ├── jvmMain/ # Desktop JVM-specific +│ └── iosMain/ # iOS-specific ├── commons/ # Shared UI components (convert to KMP) │ └── src/ │ ├── commonMain/ # Shared composables, icons, state @@ -20,12 +27,12 @@ amethyst/ │ └── jvmMain/ # Desktop-specific UI utilities ├── desktopApp/ # Desktop JVM application (layouts, navigation) ├── amethyst/ # Android app (layouts, navigation) -└── ammolite/ # Support module +└── ammolite/ # Support module (unused) ``` **Sharing Philosophy:** -- `quartz/` = Business logic, protocol, data (no UI) -- `commons/` = Shared UI components, icons, composables, **ViewModels** +- `quartz/` = Nostr business logic, protocol, data (no UI) +- `commons/` = Shared UI components, icons, composables, flows and ViewModels - `amethyst/` & `desktopApp/` = Platform-native layouts and navigation ## Tech Stack @@ -241,6 +248,13 @@ actual fun openExternalUrl(url: String) { } ``` +## Code Formatting +After completing any task that modifies Kotlin files, always run: +``` +./gradlew spotlessApply +``` +Do this before considering the task complete. + ### Navigation Shell - **Desktop**: Sidebar + main content area - **Android**: Bottom navigation diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 000000000..fb09a8e87 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,16 @@ +{ + "hooks": { + "Stop": [ + { + "matcher": "", + "hooks": [ + { + "type": "command", + "command": "./gradlew spotlessApply", + "timeout": 120 + } + ] + } + ] + } +} \ No newline at end of file