Add notification discord - #3
Merged
Merged
Conversation
Adds a TintCap sealed class (All / Undefined / Index / Range / Layers) that controls which top-level layers of an ImageVector receive the tint color. The Icon and Image composables now accept a tintCap parameter; layers not matched by the cap keep their original colors. - TintCap.All tints every layer (default for Icon) - TintCap.Undefined skips tinting entirely (default for Image) - TintCap.index(n), TintCap.range(r), TintCap.layers(...) for selective tinting of one, a range, or a set of layers Includes the Icons.MapTruck fixture with 4 distinct top-level layers and unit + instrumented UI tests covering every TintCap variant.
- Add .github/workflows/release-pipeline.yml (PR to develop) * Unit tests (JVM) on every PR open + when merged * Instrumented tests on API 36 only (matrix reduced from [30, 34]) * Tag & version validation (semver bump check) * :component:assembleRelease → publish AAR to GitHub Release * JitPack build verification + log dump * PR summary comment with per-step status - Add version = "0.1.0" in root build.gradle.kts (required by check-tag) - Rename Maven artifactId from 'query' → 'compose-components' - Document JitPack install in README Verified: ./gradlew :component:assembleRelease produces component/build/outputs/aar/component-release.aar
Verified end-to-end on a physical device (VH-C83, Android 11 / API 30):
./gradlew :component:connectedDebugAndroidTest
→ 12 tests, 0 failures, 0 errors, 0 skipped (13.891s)
MapTruck.kt:
- Wrap cab-shell + cab-window in a single 'cab' group so the cab is one
logical layer (was 2 separate top-level paths before).
- Redesign layout so layers occupy non-overlapping visual regions:
wheels → bottom strip (y 49–59)
body → thin chassis strip (y 44–48)
cab → top-right (x 40–62, y 14–42)
cargo → top-left (x 2–38, y 4–42)
This makes each layer pixel-testable in isolation.
IconTintCapTest / ImageTintCapTest:
- Move testTag from the Icon modifier to the outer Box so the semantic
tree is stable across re-renders (fixes sporadic 'No compose
hierarchies' failures on Android 11).
- Update sample positions to the new layout:
wheels (12, 54), body (32, 46), cab (52, 32), cargo (20, 20).
README.md:
- Reflect Compose BOM 2026.02.00, Kotlin 2.3.10, AGP 9.0.0+
- Add TOC, CI badge, fixture section, tests section, JitPack install
…ents
Aligns naming with the rest of the library (SliderComponent,
LinearProgressIndicatorComponents, RangeSliderComponent) and avoids
shadowing the Material 3 Icon / Foundation Image composables when both
are imported in the same file.
- Icon → IconComponents (component/src/main/.../Icon.kt)
- Image → ImageComponents (component/src/main/.../Image.kt)
- Updated all call sites in IconTintCapTest / ImageTintCapTest
- Updated TOC, section headers, examples and project-structure
comments in README.md
Verified: ./gradlew :component:compileDebugKotlin +
:component:compileDebugAndroidTestKotlin → BUILD SUCCESSFUL
Three new test classes under component/src/androidTest, bringing instrumented
UI coverage to every public composable in the library.
LinearProgressIndicatorComponentsTest (7 tests):
- progress_zero / progress_full / progress_half pixel-sampling
- custom range mapping (0f..100f with progress 25f)
- drawStopIndicator callback verification (custom red vertical line)
- out-of-range and at-range-start cases
SliderComponentTest (6 tests):
- active/inactive track colours at value=0.5
- thumb colour visible at value position (accounting for Material's
internal horizontal padding, sample at x=46%)
- value=0 and value=1 extremes
- custom thumbSize footprint
- value parameter actually drives active track length
RangeSliderComponentTest (5 tests):
- middle of active range → active colour
- both sides outside active range → inactive colour
- full range → all active
- empty range (start == end) → all inactive (sample away from the
rounded end-cap which draws active colour at the start/end x position)
Verified end-to-end on physical device VH-C83 (Android 11 / API 30):
./gradlew :component:connectedDebugAndroidTest
→ 30 tests, 0 failures, 0 errors, 0 skipped (29.962s)
Bugs fixed during the run:
- RangeSlider empty-range: round cap at start/end was hit by centre sample
- Slider thumb: 10dp internal padding shifts thumb x by ~5% from centre
- Slider progress_changes: double setContent → switched to single composition
Workflow split: - ci.yml: PR to master (opened/synchronize) → check-version + unit-tests + android-tests (API 36). Runs on every push to the PR, cancels previous runs. - release.yml: PR to master (closed, only if merged) → check-tag + build-release + create-release + jitpack-build + pr-summary. Master branch protection (applied via GitHub API): - Pull request required before merging - 1 approving review + code owner review (CODEOWNERS) - Stale reviews dismissed on new push - Linear history required (squash/rebase) - Force-push, branch deletion, fork sync disabled - Conversation resolution required - enforce_admins: true (rules apply to everyone) Owner can self-approve via CODEOWNERS (LeandroLCD is the sole code owner, GitHub auto-requests their review on every PR including their own). Files added: .github/CODEOWNERS — maps /* to @LeandroLCD .github/branch-protection/master.json — reproducible protection config .github/workflows/ci.yml — CI on PR open/synchronize .github/workflows/release.yml — release on PR close+merge Files removed: .github/workflows/release-pipeline.yml — replaced by ci.yml + release.yml
The android-tests job in ci.yml used a different cache key prefix
(${{ runner.os }}-gradle-...) than unit-tests and build-release
(gradle-...), so the cache saved by one workflow could not be reused by
the other. All three blocks now use:
key: gradle-${{ runner.os }}-${{ github.ref_name }}-${{ hashFiles(...) }}
restore-keys:
- gradle-${{ runner.os }}-master- (exact branch hit)
- gradle-${{ runner.os }}- (fallback to any other branch)
This means ci.yml unit-tests, ci.yml android-tests and release.yml
build-release all read/write the same cache entries, so a Gradle warm-up
done in CI is reused by the release pipeline (and vice versa).
# Conflicts: # .github/workflows/release.yml
🧪 Unit Test Report — :component module17 tests 17 ✅ 0s ⏱️ Results for commit b5063ae. ♻️ This comment has been updated with latest results. |
🤖 Instrumented Test Report (API 36)1 tests 1 ✅ 0s ⏱️ Results for commit b5063ae. |
🚀 Release Pipeline — Resumen
📌 Versión nueva: 📥 Dependency (JitPack)// settings.gradle.kts
maven { url = uri("https://jitpack.io") }
// build.gradle.kts
implementation("com.github.LeandroLCD:compose-components:0.1.11")🤖 Generado automáticamente por el Release Pipeline · Run #3 |
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.
No description provided.