Repository navigation
Widens the Map for a same-column timer - #717
Merged
Merged
Conversation
The hook holds the SVG wide enough for a timer edge between two steps of one column, its run and its delay, with or without a key beside the drawing. A timer edge's description is found by its own edge rather than by its position in the outline's rendered lines. A test holds the Map's timer edges equal to Describe's for a delayed send at the root.
johnnyt
force-pushed
the
sb-eidj-map-timers-captions
branch
from
October 11, 2026 03:58
3b66e55 to
ecd71d6
Compare
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.
What this changes
Three of the four parts of the Map's timer bead. The caption wording part is held (below).
drawnRightinassets/js/statifier_blocks_map.js, used byrenderSvgandkeyOf). Before, only the key widened the SVG for it. Pinned by a Node layout test over the vendored elkjs that lays out a send and the await hearing it in one column with the graph'slegendremoved.Describe.outline/3for a parentless send. A delayed send that is the document's root has no parent:Describedraws no timer edge from it, and neither doesStatifierBlocks.Map.graph/2, though the send carries the clock mark. A test inmap_test.exsholds the two equal for that case.Info.elements/6finds a timer edge's sentence by its edge. The privatetimer/2inStatifierBlocks.Map.Infonow renders the outline's nodes with the one edge it describes and takes that edge's line (defp edge_line/2), instead of taking the line at the edge's position in the whole render. The sentence it answers is unchanged. A test with two delayed sends, each heard by its own wait, pins each edge's own sentence.A Changed fragment,
changelog.d/sb-eidj.md, carries the SVG width. The other two parts change no answer and get no fragment.Held: the caption wording
The ruling (ruled by the operator, 2026-10-10): a group caption is the whole first sentence of the type's explanation, wrapped to the band and never cut mid-word, and the rules column is captioned "Rules: watch the steps while they run". This PR does not change the captions. Today a group's caption is drawn on its rules column, and the column carries one caption string. Drawing both the ruled column caption and the group's whole sentence, wrapped, there needs a new field on the graph. Drawing only the ruled caption there takes the group's explanation off the map, and the accepted ADR-0017 (decision 4) says a structural container carries its explanation as a caption. The bead's acceptance makes any change to
graph/2's answer beyond the wording a stop, so the placement goes back for a ruling. No caption string changes here.Sabotage
Each new test was run red against a mutation of the code it covers, then the file was restored from a copy and checked byte-equal:
renderSvgtook the laid-out width alone when there is no key: the layout test went red on the delay's right edge.core.sendadded to@timer_targets, so a send could hear its own event: the parentless-send test went red.edge_line/2rendered every edge and took the first timer line: the two-reminder test went red on the second edge.Gate
Full
mix qualitygreen on this commit's tree, rebased on the drafts drawer change: format, compile with warnings as errors, doc links, dependencies, ADR cites, docs, Credo, Dialyzer, and the suite (4,007 of 4,007 passed, 95.4% coverage). Doctor, Gettext and Sobelow are not installed in this project and skipped.Rebased over "Draws the drafts shelf as a drawer", which also edits
map.ex, the hook andmap_test.exs; the rebase merged without a conflict and the gate above ran on the rebased tree.