From 2bf19572b20c913c420cf6ecbc3d39f26f18aadc Mon Sep 17 00:00:00 2001 From: James Harton Date: Thu, 27 Aug 2026 10:40:01 +1200 Subject: [PATCH 1/2] fix: correct a typo in the `color` entity's DSL documentation "meterial" -> "material", and regenerate the DSL cheat sheet. --- documentation/dsls/DSL-BB.md | 2 +- lib/bb/dsl.ex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/dsls/DSL-BB.md b/documentation/dsls/DSL-BB.md index 9e92337..ad5f6af 100644 --- a/documentation/dsls/DSL-BB.md +++ b/documentation/dsls/DSL-BB.md @@ -373,7 +373,7 @@ The material of the visual element ### topology.link.visual.material.color -The color of the meterial +The color of the material diff --git a/lib/bb/dsl.ex b/lib/bb/dsl.ex index 7ca3031..80815f2 100644 --- a/lib/bb/dsl.ex +++ b/lib/bb/dsl.ex @@ -660,7 +660,7 @@ defmodule BB.Dsl do @color %Entity{ name: :color, describe: """ - The color of the meterial + The color of the material """, target: BB.Dsl.Color, identifier: {:auto, :unique_integer}, From f47d9b22ff774db7be566421955bd73319483e63 Mon Sep 17 00:00:00 2001 From: James Harton Date: Thu, 27 Aug 2026 10:46:08 +1200 Subject: [PATCH 2/2] improvement: re-check the subproject PLT outside `mix check`'s parallel section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deleting `_build/*/*.plt.hash` forces dialyxir to re-check the PLT against bb's current source, but it left that check inside `mix check`, where it runs alongside every other tool. The check spends twenty seconds or so reading beams out of `_build/dev`, and a tool that recompiles the project during that window empties the ebin and the consolidated protocol directory underneath it — `bb_example_wx200` and `bb_example_so101` run `mix gettext.extract`, which force-recompiles, and dialyzer halts with "No .beam files to analyze". Priming the PLT in its own step shrinks dialyzer's exposure inside `mix check` to the moment it globs the ebin, and moves the same work out of the parallel section rather than adding any. --- .github/workflows/test-subprojects.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-subprojects.yml b/.github/workflows/test-subprojects.yml index 214d964..7854b4e 100644 --- a/.github/workflows/test-subprojects.yml +++ b/.github/workflows/test-subprojects.yml @@ -130,7 +130,7 @@ jobs: working-directory: ${{ matrix.project.name }} run: mix deps.get - - name: Force a PLT re-check + - name: Re-check the PLT against bb's current source # Dialyxir decides a cached PLT is current by hashing the subproject's # mix.lock plus its app list. `BB_VERSION=local` makes bb a path dep, so # bb's source moves on every PR while that lock sits still — the hash @@ -138,8 +138,15 @@ jobs: # predates bb's newest exports, reporting `call_to_missing` for them. # Dropping the hash forces the check, which is incremental (seconds) # rather than a full rebuild. + # + # Run the check here rather than leaving it to `mix check`. It spends + # twenty seconds or so reading every beam in the build directory, and + # `mix check` runs its tools in parallel — a tool that recompiles that + # directory meanwhile can empty it under dialyzer's feet. working-directory: ${{ matrix.project.name }} - run: rm -f _build/*/*.plt.hash + run: | + rm -f _build/*/*.plt.hash + mix dialyzer --plt - name: mix check --no-retry working-directory: ${{ matrix.project.name }}