Skip to content

Create v0.39.0-RC02#2447

Merged
dipenpradhan merged 11 commits intostable/0.39.xfrom
main
Apr 22, 2026
Merged

Create v0.39.0-RC02#2447
dipenpradhan merged 11 commits intostable/0.39.xfrom
main

Conversation

@dipenpradhan
Copy link
Copy Markdown
Collaborator

@dipenpradhan dipenpradhan commented Apr 22, 2026

Create v0.39.0-RC02

v0.39.0-RC01(#2446)
This commit bumps the version across all Gradle
(gradle/libs.versions.toml) and Cargo configuration files to 0.39.0
(0.39.0-SNAPSHOT in Gradle). It also unifies the
dc_squoosh_animation and dc_squoosh_parser crates under the
workspace dependencies.

Changes and issues addressed since 0.38.4:

anshu10sep and others added 4 commits April 22, 2026 00:32
## Summary
Configure the release build type in the Tutorial reference app to use
debug signing, fixing build failures when running release builds.

## Changes
- **reference-apps/tutorial/app/build.gradle.kts**: Added `signingConfig
= signingConfigs.getByName("debug")` to the release build type.

## Testing
- Verified Gradle build succeeds for the tutorial app.

Fixes #436
## Summary
Fix `findProgressMarkerDescendant()` returning the wrong node when the
progress marker is nested deeper than one level in component instances.

## Root Cause
When the progress marker was found recursively (not as a direct child),
the function returned the intermediate `child` node instead of the
actual `childProgressMarkerDescendant`. This caused incorrect alignment
calculations.

## Changes
- **designcompose/.../squoosh/SquooshResolvedNode.kt**: Return
`childProgressMarkerDescendant` instead of `child`.

## Testing
- Verified Kotlin compilation succeeds (BUILD SUCCESSFUL)

Fixes #291
## Summary
Fix margin calculation for rotated nodes by using the pre-rotation
`node.size` instead of the post-rotation AABB bounding box dimensions.

## Changes
- **crates/dc_figma_import/src/transform_flexbox.rs**: Use `node.size`
for constraint margin math on rotated nodes; added regression test.

## Testing
- New regression test added
- All 36 existing tests pass

Fixes #244
This commit bumps the version across all Gradle
(`gradle/libs.versions.toml`) and Cargo configuration files to `0.39.0`
(`0.39.0-SNAPSHOT` in Gradle). It also unifies the
`dc_squoosh_animation` and `dc_squoosh_parser` crates under the
workspace dependencies.

Changes and issues addressed since 0.38.4:
- Enhance LiveUpdate feature (Issues #2282, #2379)
- Add cargo publish steps to GitHub release workflow (Issues #2435,
#2436)
- Squoosh Designer Plugin: Figma plugin for orchestrating layout
animations (Issue #2402)
- Replace println!/eprintln! with Rust log API in library code (Issues
#2403, #2411)
- Update dc_figma_import README to reflect current architecture (Issues
#426, #2427)
- Add comprehensive unit tests for mergeStyles function (Issues #1963,
#2416)
- Avoid double key events during animated transitions (Issues #1514,
#2417)
- Clean up unwrap() calls in dc_jni crate (Issues #670, #2415)
- Security: Update rustls-webpki 0.103.10 -> 0.103.12 (Issue #2434)
- Document supported Android SDK levels (Issues #163, #2429)
- Restore Modifier customization support in squoosh renderer (Issues
#2292, #2426)
- Handle unknown Figma features in deserialization (Issues #2305, #2414)
- Add adaptive polling with exponential backoff for LiveUpdate (Issues
#2282, #2423)
- Add comprehensive Rust layout unit tests (Issues #405, #2413)
- Update JNI dependency to 0.22.4 and refactor dc_jni (Issue #2432)
- Enable CodeQL security scanning (Issues #926, #2412)
- Prevent Design Switcher from briefly showing 'Offline' (Issues #142,
#2421)
- Stroke gradients account for stroke thickness (Issues #1549, #2420)
- Add performance logging for high-cost fetch operations (Issues #281,
#2419)
- Remove unclaimed Open VSX extension recommendation (Issue #2431)
- Add assembleRelease to CI to catch minified build issues (Issues #435,
#2425)
- Deprecate and remove publish_designcompose.sh script (Issue #2433)
- Clarify visibility documentation — parameter name is flexible (Issues
#660, #2428)
- Add JDK installation instructions to Getting Started docs (Issues
#707, #2424)
- Add security check for Figma token file permissions (Issues #249,
#2418)
- Fix whilePressing interaction getting stuck on multi-touch drag (Issue
#2422)
- Fix SquooshRoot infinite recomposition and freeze on rapid tap (Issue
#2409)
@dipenpradhan dipenpradhan requested review from anshu10sep and kovmarci86 and removed request for anshu10sep April 22, 2026 01:23
@dipenpradhan dipenpradhan enabled auto-merge (squash) April 22, 2026 01:24
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Apr 22, 2026

Codecov Report

❌ Patch coverage is 70.58824% with 25 lines in your changes missing coverage. Please review.
✅ Project coverage is 49.27%. Comparing base (52d5570) to head (0e399d9).

Files with missing lines Patch % Lines
crates/dc_figma_import/src/transform_flexbox.rs 70.58% 25 Missing ⚠️
Additional details and impacted files
@@                 Coverage Diff                 @@
##             stable/0.39.x    #2447      +/-   ##
===================================================
+ Coverage            47.53%   49.27%   +1.73%     
  Complexity              19       19              
===================================================
  Files                   44       44              
  Lines                 5070     5155      +85     
  Branches                51       51              
===================================================
+ Hits                  2410     2540     +130     
+ Misses                2646     2601      -45     
  Partials                14       14              
Flag Coverage Δ
kotlin 73.35% <ø> (ø)
rust 47.36% <70.58%> (+1.91%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@dipenpradhan dipenpradhan disabled auto-merge April 22, 2026 01:30
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 22, 2026

Snapshot diff report vs base branch: stable/0.39.x
Last updated: Tue Apr 21 23:37:46 PDT 2026, Sha: 0e399d9
No differences detected

## Summary
Fix text brush customizations (from `setBrush`/`setBrushFunction`) not
being applied when the underlying Compose State changes.

The `TextMeasureCache` was only comparing `text` and `customStyle` when
deciding whether to reuse a cached entry, completely ignoring brush
customizations. Animated brushes driven by State were never invalidated.

## Changes
- **designcompose/.../squoosh/SquooshText.kt**:
  - Moved `customBrush` evaluation before the cache check
  - Added `customBrush` field to `TextMeasureCache.Entry`
  - Added `customBrush` comparison to cache validity check

## Testing
- Verified Kotlin compilation succeeds (BUILD SUCCESSFUL)

Fixes #572
## Summary
Fix the design switcher being hidden behind overlay composables (modals,
bottom sheets, etc.).

## Root Cause
`designSwitcher()` was rendered BEFORE the overlay rendering loop.
Overlays with `Modifier.fillMaxSize()` were drawn on top of the
switcher, making it completely invisible and inaccessible.

## Changes
- **designcompose/.../squoosh/SquooshRoot.kt**: Move `designSwitcher()`
to AFTER the overlay rendering loop so it's always the topmost z-order
element.

## Testing
- Verified Kotlin compilation succeeds (BUILD SUCCESSFUL)

Fixes #154
#2441)

## Summary
Verify that absolute positioning within AutoLayout (flex) containers is
correctly supported end-to-end. The Taffy layout engine and Figma import
pipeline already handle this correctly — this PR adds comprehensive
regression tests to prevent future regressions.

## Changes
- **crates/dc_layout/src/layout_manager.rs**: Added
`test_absolute_position_in_autolayout` proving absolute children use
inset offsets
- **crates/dc_figma_import/src/transform_flexbox.rs**: Added
`test_absolute_position_in_autolayout_import` verifying correct import

## Testing
- 45/45 layout tests pass
- 37/37 import tests pass

Fixes #175
…hLayer (#2440)

## Summary
Fix placement of replacement content composables that have rotation
transforms. The squoosh layout was using `placeRelative` which doesn't
honor rotation, causing misalignment.

## Changes
- **designcompose/.../squoosh/SquooshRoot.kt**: Use
`placeRelativeWithLayer(rotationZ = ...)` for replacement composables
via matrix `decompose()`.

## Testing
- Verified Kotlin compilation succeeds (BUILD SUCCESSFUL)

Fixes #1279
## Summary
Fix constraint preservation when replacement content frames (nodes
without parent context) are imported from Figma, ensuring their layout
constraints are not lost during the import pipeline.

## Changes
- **crates/dc_figma_import/src/transform_flexbox.rs**: Preserve
constraint types for replacement content; added regression tests.

## Testing
- 2 new integration tests added
- All 36 existing tests pass

Fixes #341
)

## Summary
Fix DesignDoc expanding to full screen size by constraining the reported
layout dimensions to the parent's constraint bounds.

`squooshLayout()` was reporting the raw computed Figma design size to
Compose without constraining it. When placed inside a Column or other
container, it consumed all available space and prevented sibling
composables from being visible.

## Changes
- **designcompose/.../squoosh/SquooshRoot.kt**: Pass constraints to
`squooshLayout()` and use `coerceIn()` to clamp reported width/height to
the parent's min/max constraint bounds.

## Testing
- Verified Kotlin compilation succeeds (BUILD SUCCESSFUL)

Fixes #279
Updates the Masks golden screenshot to match the new rendering behavior
from the `coerceAtMost` layout constraint change in
`SquooshRoot.squooshLayout()`.

The layout capping correctly constrains DesignDoc reported size to
parent constraints, which slightly changes the Masks example rendering.
This is expected and correct behavior.

Related: #279, PR #2442
@dipenpradhan dipenpradhan enabled auto-merge (squash) April 22, 2026 05:57
@dipenpradhan dipenpradhan merged commit 5d4f50c into stable/0.39.x Apr 22, 2026
58 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants