build: remove unused :ammolite module

The :ammolite module contained no production Kotlin/Java sources (just
a manifest, build.gradle, and proguard stubs) and no module in the
codebase imports com.vitorpamplona.ammolite.*.

Removes:
- ammolite/ directory (5 files)
- :ammolite project include in settings.gradle
- implementation project(':ammolite') from :amethyst
- androidTestImplementation project(':ammolite') from :benchmark
- :ammolite:testDebugUnitTest from CI workflow and pre-push hook
- -keep class com.vitorpamplona.ammolite.** rules from
  :amethyst, :commons, and :desktopApp proguard files
- Stale references in CONTRIBUTING.md, CLAUDE.md, and the
  gradle-expert skill dependency-graph doc

Small build-graph win: one fewer module to configure, compile, lint,
and spotless-check on every build, and one fewer unit-test target in
both CI and the local pre-push hook.
This commit is contained in:
Claude
2026-05-16 14:40:03 +00:00
parent 5ed6f063a9
commit 2e8bf0d45d
16 changed files with 14 additions and 180 deletions
+1 -2
View File
@@ -46,8 +46,7 @@ amethyst/
│ └── jvmAndroid/ # Opus encode/decode, AudioRecord/AudioTrack
├── desktopApp/ # Desktop JVM application (layouts, navigation)
├── amethyst/ # Android app (layouts, navigation)
── cli/ # Amy — non-interactive CLI (JVM only, no Compose)
└── ammolite/ # Support module (unused)
── cli/ # Amy — non-interactive CLI (JVM only, no Compose)
```
**Sharing Philosophy:**
@@ -8,13 +8,13 @@
│ (Amethyst) │
└─────────────────────────────────────────────────────────┘
┌────────────────┼────────────────┬────────────
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────┐
│ :amethyst │ │ :desktopApp │ │ :benchmark │ │:ammolite │
│ (Android) │ │ (JVM) │ │ (Android) │ │ (Support)│
└─────────────┘ └─────────────┘ └─────────────┘ └──────────┘
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ :amethyst │ │ :desktopApp │ │ :benchmark │
│ (Android) │ │ (JVM) │ │ (Android) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
│ │ │
└────────────────┼────────────────┘
@@ -77,7 +77,7 @@
**Type:** Android Application
**Targets:** Android
**Dependencies:**
- Modules: `:commons`, `:quartz`, `:ammolite`
- Modules: `:commons`, `:quartz`, `:nestsClient`
- External: Android SDK, AndroidX, Firebase, Tor
**Role:** Android-specific navigation, layouts, and entry point
@@ -91,13 +91,6 @@
**Role:** Performance benchmarking for Android builds
### :ammolite (Support Module)
**Type:** Android Library
**Targets:** Android
**Dependencies:** Android-specific utilities
**Role:** Android support utilities for amethyst
## Dependency Flow Patterns
### Desktop Build Chain
@@ -112,8 +105,8 @@
### Android Build Chain
```
:amethyst → :commons (androidMain) → :quartz (androidMain)
:ammolite jvmAndroid
jvmAndroid
commonMain
```
-1
View File
@@ -21,7 +21,6 @@ TASKS=(
:commons:jvmTest
:nestsClient:jvmTest
:quic:jvmTest
:ammolite:testDebugUnitTest
:amethyst:testPlayDebugUnitTest
:cli:test
)
-1
View File
@@ -218,7 +218,6 @@ jobs:
:quartz:jvmTest \
:commons:jvmTest \
:nestsClient:jvmTest \
:ammolite:testDebugUnitTest \
:amethyst:testFdroidDebugUnitTest \
:amethyst:testPlayDebugUnitTest \
:amethyst:assembleBenchmark \
-1
View File
@@ -164,7 +164,6 @@ Modules:
- `amethyst/` — Android app: Activity, layouts, navigation.
- `desktopApp/` — Desktop JVM app: Window, sidebar, keyboard shortcuts.
- `cli/``amy`, a non-interactive JVM CLI over `quartz` + `commons`.
- `ammolite/` — Legacy support module.
Per-module design docs live in `<module>/plans/YYYY-MM-DD-<slug>.md`. The
global `docs/plans/` folder is frozen.
-1
View File
@@ -270,7 +270,6 @@ dependencies {
implementation project(path: ':quartz')
implementation project(path: ':commons')
implementation project(path: ':ammolite')
implementation project(path: ':nestsClient')
implementation libs.androidx.core.ktx
implementation libs.androidx.activity.compose
-1
View File
@@ -62,7 +62,6 @@
# JSON parsing
-keep class com.vitorpamplona.quartz.** { *; }
-keep class com.vitorpamplona.amethyst.** { *; }
-keep class com.vitorpamplona.ammolite.** { *; }
# Room generates *_Impl subclasses instantiated reflectively via no-arg constructor.
# -keepnames preserves the name but R8 still strips the unused <init>().
-1
View File
@@ -1 +0,0 @@
/build
-60
View File
@@ -1,60 +0,0 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
alias(libs.plugins.androidLibrary)
}
android {
namespace = 'com.vitorpamplona.ammolite'
compileSdk = libs.versions.android.compileSdk.get().toInteger()
defaultConfig {
minSdk = libs.versions.android.minSdk.get().toInteger()
targetSdk = libs.versions.android.targetSdk.get().toInteger()
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
buildFeatures {
buildConfig = true
}
buildTypes {
release {
minifyEnabled = true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
create("benchmark") {
initWith(getByName("release"))
signingConfig = signingConfigs.debug
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_21
targetCompatibility JavaVersion.VERSION_21
}
packagingOptions {
resources {
excludes += ['**/libscrypt.dylib']
}
}
}
kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_21
}
}
dependencies {
// Lru Cache used in Relay stats
implementation libs.androidx.core.ktx
implementation project(path: ':quartz')
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
}
-40
View File
@@ -1,40 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# preserve the line number information for debugging stack traces.
-keepattributes LocalVariableTable
-keepattributes LocalVariableTypeTable
-keepattributes Signature
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes EnclosingMethod
-keepattributes MethodParameters
-keepparameternames
-keepdirectories libs
# Keep all names
-keepnames class ** { *; }
# Keep All enums
-keep enum ** { *; }
-keep class com.vitorpamplona.ammolite.** { *; }
-44
View File
@@ -1,44 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# preserve the line number information for debugging stack traces.
-dontobfuscate
-keepattributes LocalVariableTable
-keepattributes LocalVariableTypeTable
-keepattributes *Annotation*
-keepattributes SourceFile
-keepattributes LineNumberTable
-keepattributes Signature
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes EnclosingMethod
-keepattributes MethodParameters
-keepparameternames
-keepdirectories libs
# Keep all names
-keepnames class ** { *; }
# Keep All enums
-keep enum ** { *; }
-keep class com.vitorpamplona.ammolite.** { *; }
-4
View File
@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
</manifest>
-1
View File
@@ -60,7 +60,6 @@ dependencies {
androidTestImplementation libs.androidx.benchmark.junit4
androidTestImplementation project(path: ':quartz')
androidTestImplementation project(path: ':commons')
androidTestImplementation project(path: ':ammolite')
// Custom C secp256k1 (libschnorr256k1) for the 3-way Android benchmark
androidTestImplementation libs.schnorr256k1.kmp
-1
View File
@@ -22,4 +22,3 @@
-keep class com.vitorpamplona.quartz.** { *; }
-keep class com.vitorpamplona.amethyst.** { *; }
-keep class com.vitorpamplona.ammolite.** { *; }
-1
View File
@@ -70,7 +70,6 @@
# JSON-mapped first-party types (mirrors mobile)
-keep class com.vitorpamplona.quartz.** { *; }
-keep class com.vitorpamplona.amethyst.** { *; }
-keep class com.vitorpamplona.ammolite.** { *; }
# ============================================================================
# Desktop-only JNI keep rules libraries the mobile module doesn't ship
-1
View File
@@ -36,7 +36,6 @@ include ':benchmark'
include ':quartz'
include ':geode'
include ':commons'
include ':ammolite'
include ':quic'
include ':nestsClient'
include ':desktopApp'