Skip to content

feat: add independent flex shrink for Web and MyGo - #347

Merged
tiensonqin merged 2 commits into
mainfrom
devin/1794111601-typed-shrink
Nov 8, 2026
Merged

tiensonqin merged 2 commits into
mainfrom
devin/1794111601-typed-shrink

Conversation

@tiensonqin

@tiensonqin tiensonqin commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Expose row/column/box ~shrink:0. so direct layout children can retain their natural extent without abusing grow:0 (which also changes auto basis in MyGo).

  • Add one typed ShrinkValue / shrink wire property: finite nonnegative floats, only row/column/box; omitted/removed means the existing factor 1. Grow and basis are unchanged.
  • Map Web to flex-shrink and MyGo to the already-pinned SDK's Element.Shrink. Generic/SwiftUI/Kotlin opt-in is explicitly rejected, including direct Apple/Android standard wire patches; no raw extension escape is added.
  • Regenerate canonical schema/MyGo artifacts and capability evidence, and document downstream migration. No SDK, dependency, lockfile, Dune or Logseq consumer changes.

Originally based on public 2475de1e9fecf3c987b3d07617699dd90c21ec73; merge commit 790ca9e0e6a807368a7b61db49021ed11d178f58 incorporates public main 347de2f7a22968e2a54c4504cfa07fe3800f97a6 without rewriting either history. The resolved constructors/schema retain both shrink and focus-within observation, including both unsupported-host guards. Generated artifacts and the three affected capability hashes were regenerated from the combined contract.

Current-head local validation: OCaml @all @web, 235 core tests and 8 portable-service tests; schema tooling 12 tests; Web build + 160 tests; MyGo race tests, vet and build; and swift build --build-tests all passed. Component/MyGo freshness checks and git diff --check passed. Current-head remote CI for merge commit 790ca9e0e6a807368a7b61db49021ed11d178f58 is complete: 16 checks passed, 0 failed, 0 pending, 0 skipped, including Apple, Android and all three MyGo platforms. This is the new merge head's result, not the earlier head's CI.

The original single shared contract case covers kind/value/profile admission; an existing native property-removal scenario proves default shrink -> factor 0 -> removal and basis preservation, with a red run when the new native mapping is absent. No additional tests, helpers or fixtures were introduced for conflict resolution.

Historical Swift caveat: the original local c6f18c26 full-suite attempt had one unresolved fullWidthIdentifiers focus/pinned-row failure (212 tests, one issue); its focused base run passed, so that attempt did not prove a baseline failure. The suite includes AppKit windows and should not have been run under this task's no-GUI limit; further local window tests were stopped. Subsequent pure retained sparse-contract tests passed 8/8 on that head and exact base, but do not replace GUI evidence. The merge includes main's separate sparse-focus recovery fix; this conflict-resolution task only compiled Swift tests and did not rerun AppKit or establish the original failure's cause. Application GUI acceptance was not performed.

Link to Devin session: https://app.devin.ai/sessions/eccad85c243745debb033bc62ba68c4e
Open in Devin Desktop: https://app.devin.ai/desktop/session/eccad85c243745debb033bc62ba68c4e?variant=devin
Requested by: @tiensonqin

@devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@tiensonqin
tiensonqin merged commit bab4f3a into main Nov 8, 2026
16 checks passed
@tiensonqin
tiensonqin deleted the devin/1794111601-typed-shrink branch November 8, 2026 09:04
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.

1 participant