Skip to content

Commit e1f4a6e

Browse files
Merge pull request #8 from TimeWarpEngineering/dev
style: tree-wide dotnet format; kanban closeout; visual layout demo
2 parents c61373d + 5de9517 commit e1f4a6e

96 files changed

Lines changed: 55984 additions & 55402 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

kanban/in-progress/101-yoga-csharp-port/dependency-map.md renamed to kanban/done/101-yoga-csharp-port/dependency-map.md

File renamed without changes.

kanban/in-progress/101-yoga-csharp-port/task.md renamed to kanban/done/101-yoga-csharp-port/task.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,14 @@ See `dependency-map.md` in this folder for the complete C++ file dependency anal
108108
## Results
109109

110110
(Add after completion)
111+
112+
## Results (2026-07-03)
113+
114+
Port complete and functional. All dependency levels ported (enums, numerics,
115+
style storage, node, config, events, debug utilities, algorithm modules,
116+
public CalculateLayout entry point with caching). Verified against Yoga's own
117+
test suites: 530 generated conformance tests plus hand-ported measure/relayout
118+
unit tests — 1335 passed / 0 failed / 3 skipped. Merged to master via PR #7.
119+
120+
Follow-ups tracked separately: task 139 (naming/style gate re-enablement),
121+
remaining low-priority unit tests and benchmarks (see task 138 results).

kanban/in-progress/123-algorithm-helpers.md renamed to kanban/done/123-algorithm-helpers.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,12 @@ public static class AlignUtils
9696
public static float GetAlignmentOffset(Align align, float remaining, int itemCount, float gap);
9797
}
9898
```
99+
100+
## Results (2026-07-03)
101+
102+
All helper modules ported and in production use: PixelGrid.cs, Baseline.cs,
103+
FlexLine.cs, AlignUtils.cs, BoundAxis.cs, plus supporting utilities. Verified
104+
by unit tests and by the full Yoga generated conformance suite (530 tests, all
105+
passing). Notable post-port fix: ConstrainMaxSizeForMode in LayoutHelpers.cs
106+
was rewritten 2026-07-03 to match C++ (mode preservation, margin in maxSize,
107+
MaxContent handling).
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,9 @@ The following private helper methods were implemented:
9595
The implementation handles the following errata:
9696
- `Errata.AbsolutePositionWithoutInsetsExcludesPadding`
9797
- `Errata.AbsolutePercentAgainstInnerSize`
98+
99+
## Results (2026-07-03)
100+
101+
AbsoluteLayout.cs ported and verified: all 34 generated AbsolutePosition
102+
conformance tests and all 62 StaticPosition conformance tests pass, LTR and
103+
RTL passes included.

kanban/in-progress/125-calculate-layout-epic/task.md renamed to kanban/done/125-calculate-layout-epic/task.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,12 @@ Bottom-up approach:
9898

9999
### Generated Tests (~29,000 lines)
100100
- 25 test files covering all layout scenarios
101+
102+
## Results (2026-07-03)
103+
104+
Epic complete. All subtasks (126-137) done; the assembled algorithm was then
105+
hardened by fixing eight mistranslations found via end-to-end verification and
106+
Yoga's conformance suite (owner semantics in child management, debug module,
107+
FlexBasis FitContent fallback + WebFlexBasis check, MeasureNodeWithMeasureFunc
108+
fast path, multi-line alignment two-pass structure, ConstrainMaxSizeForMode,
109+
style-change dirtying, canSkipFlex min/max clamp). Suite: 1335/0/3.

kanban/in-progress/138-integration-testing.md renamed to kanban/done/138-integration-testing.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,21 @@ Critical test: consecutive layouts with no changes should:
167167
- Negative margins
168168
- Percentage dimensions with undefined parent
169169
- Circular aspect ratio dependencies
170+
171+
## Results (2026-07-03)
172+
173+
Complete. Public API works end-to-end; suite is 1335 passed / 0 failed /
174+
3 skipped.
175+
176+
- All 25 Yoga generated test files converted via runfiles/port-generated-tests.cs
177+
(530 conformance tests, all passing). Upstream GTEST_SKIP tests excluded.
178+
- Hand-ported YGMeasureTest, YGMeasureCacheTest, YGMeasureModeTest,
179+
YGRelayoutTest (49 tests).
180+
- Six algorithm mistranslations found and fixed along the way (multi-line
181+
alignment two-pass structure, ConstrainMaxSizeForMode, WebFlexBasis
182+
generation check, style-change dirtying, canSkipFlex min/max clamp).
183+
184+
Deferred (pick up as future tasks if desired): remaining low-priority
185+
hand-written unit tests (Baseline, AspectRatio, Edge, HadOverflow, Dirtied,
186+
Persistence, FlexGap, ...), a text-measurement helper to unlock the skipped
187+
IntrinsicSize tests, performance benchmarking and memory profiling.

kanban/to-do/139-restore-style-enforcement.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,20 @@ code is written with 4-space indentation while `.editorconfig` mandates 2-space,
1010

1111
## Todo List
1212

13-
- [ ] Decide the indentation standard: either update `.editorconfig` to 4-space (matches the
14-
ported code and Yoga C++ style) or keep 2-space and reformat the code
15-
- [ ] Run `dotnet format` across the solution and commit the result as a standalone
16-
formatting-only commit (no logic changes mixed in)
17-
- [ ] Fix or explicitly suppress remaining analyzer diagnostics (IDE1006 naming,
18-
CA/RCS rules) with justification comments where suppressed
13+
- [x] Decide the indentation standard — kept 2-space per .editorconfig
14+
- [x] Run `dotnet format` across the solution and commit the result as a standalone
15+
formatting-only commit (no logic changes mixed in) — commit eb29f1a, 88 files,
16+
~15.5k IDE0055 errors eliminated; suite verified unchanged (1335/0/3)
17+
- [ ] Fix or explicitly suppress remaining analyzer diagnostics. Remaining with gates on
18+
(~120 unique errors as of 2026-07-03):
19+
- **IDE1006 (~83, DECISION NEEDED):** ported code uses `_camelCase` private fields
20+
paired with PascalCase properties (`_direction`/`Direction`); .editorconfig forbids
21+
the `_` prefix and PascalCase field names would collide with the properties.
22+
Either add a naming rule allowing `_camelCase` (+ `s_` for static) private fields,
23+
or restructure field/property pairs (invasive).
24+
- **IDE0078/0072/0010/0011/0251/0370/0004 (~37):** pattern matching, switch
25+
exhaustiveness, braces, readonly members — no batch fixer; hand-fix per file
26+
(`dotnet format style --diagnostics ...` only resolved 4 files)
1927
- [ ] Re-enable `TreatWarningsAsErrors`, `CodeAnalysisTreatWarningsAsErrors`, and
2028
`EnforceCodeStyleInBuild` in `Directory.Build.props` (remove the temporary relaxation
2129
block referencing this task)

0 commit comments

Comments
 (0)