Release 1.5.1: consumer R8 keep rules - #96
Merged
Merged
Conversation
Configure graphify so any maintainer can build/query a knowledge graph of the library's modules and cross-dependencies without reconstructing it from scratch: - .graphifyignore: keep resource XML, drawables, and Room schemas out of the graph - .gitignore: commit the durable bits (memory/ Q&A + GRAPH_REPORT.md), ignore the bulky regenerable artifacts (graph.json/html, manifest.json) — a stale committed graph misleads, and they bloat the published-library history - CLAUDE.md: document how to regenerate and where the saved architectural Q&A lives - graphify-out/memory/: two checked-in verdicts (UploadResult vs APIResult are deliberately decoupled; LazyGrid/LazyList paging mirroring is unavoidable, not debt) - graphify-out/GRAPH_REPORT.md: audit snapshot (god nodes, communities, bridges) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Consumer ProGuard/R8 rules were empty in every module, forcing consuming apps (AIM Capture) to hand-author keeps for AppolyDroid internals. Populate them, prove they hold under R8, and fill the demo app's coverage gaps. Consumer rules: - Populate consumer-rules.pro for the 8 modules with @serializable models, custom serializers, enum-serializer bases, and Room converters; mark the 12 rule-free modules as deliberately empty. - Keep only `Signature` (for generic serializers) — drop `*Annotation*`, which R8 warns disables annotation optimizations app-wide and which the library doesn't need (no polymorphic serialization). - Ship `-keepattributes` with the modules that own the generics, not BaseRepo. Verification (verifyConsumerKeepRules): - Demo app is minified (isMinifyEnabled = true) and depends on every module, so R8 applies all consumer rules. A device-free Gradle task reads R8's seeds.txt and asserts all 27 protected serializer/converter classes survive. - Wired into CI and an IDE run config. - An instrumented test against the minified APK was prototyped and dropped: minifying the test APK strips the test runner's own deps (androidx.tracing, Kotlin stdlib facades), which is plumbing unrelated to the library. Demo app: - LazyGrid paging via a List/Grid SegmentedControl toggle (HomeScreen advertised LazyGrid but only LazyColumn existed). - BaseRepo-AppolyJson demo: a real AppolyBaseRepo parses GenericResponse / nested-paged / BaseResponse envelopes, served offline by MockInterceptor. - DateHelperUtil Serialization + Room demo (date KSerializers + DBDateConverters). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jakeeilbeck
approved these changes
Jun 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 1.5.1
Promotes
developtomain. Headline of this release: every module now ships working consumer ProGuard/R8 keep rules, verified under R8.Why
Consumer
consumer-rules.profiles were empty in every module, forcing consuming apps (e.g. AIM Capture) to hand-author keeps for AppolyDroid internals. This release populates them and proves they hold.Consumer R8 rules
consumer-rules.profor the 8 modules with@Serializablemodels, custom serializers, enum-serializer bases, and Room converters; the other 12 modules are marked as deliberately empty.Signature(needed for generic serializers) — dropped*Annotation*, which R8 warns disables annotation optimizations app-wide and the library doesn't need.-keepattributesships with the modules that own the generics, not blanket on BaseRepo.Verification (
verifyConsumerKeepRules)seeds.txtand asserts all 27 protected serializer/converter classes survive.Demo app coverage
SegmentedControltoggle.BaseRepo-AppolyJsondemo parsingGenericResponse/ nested-paged /BaseResponseenvelopes, served offline byMockInterceptor.DateHelperUtilSerialization + Room demo (dateKSerializers +DBDateConverters).Housekeeping
TOOLBOX_VERSIONbumped1.5.0→1.5.1; READMEs auto-synced.🤖 Generated with Claude Code