Skip to content

v0.8.9

Choose a tag to compare

@github-actions github-actions released this 16 Aug 15:54
· 27 commits to main since this release
1e95387

Perth v0.8.9

Diff since v0.8.8

Perth.jl v0.8.9 — nothing is written on top of anything else

Nothing breaks: no API change, no new field, and a project written by any 0.8 is read exactly as it was. This release is about what the chart draws where. Full changelog: https://github.com/dantebertuzzi/Perth.jl/blob/main/CHANGELOG.md

Fixed

  • Nothing on the chart is written on top of anything else any more. Instead of looking for collisions by eye, this release measures them: an audit takes the box of every text, shape and line and crosses all of them against each other. It found 11 to 17 per view — worst at month zoom, present in every density — nearly all of one family: the sideways names of calendar bands and marked days written across task names, and the full-height lines (today, marked day, band edge) drawn straight through them. Only the dependency arrows knew how to get out of the way.

    The machine the arrows use is now shared. Lines open a gap wherever they cross a label, and sideways names look for a free stretch instead of always starting at the top, which is where almost every plan has its first bars. label_at, set by hand on the slider, still wins over the automatic choice. Order matters and is now written down in the code: first every sideways name finds its place, then every line is drawn — doing it annotation by annotation leaves the first line cut only by what existed before it, and the second name lands on top of it.

    Measured after: zero collisions at day, week, month and fit zoom, in both densities, with lanes on and with the critical path on.

  • Two of the bugs were found by measuring rather than by looking, and neither was visible from the source: the box of a sideways name was six pixels off (rotated, the glyphs sit from x-3 to x+11, not centred on the anchor), which is why a marked day's line still clipped its own name; and a label's box was estimated from its baseline instead of measured, missing the four pixels the tallest letters reach — exactly the sliver a vertical line was still eating. A first attempt also made things worse in a way only the audit caught: told to look for a free height, a name that only avoided text walked straight onto a bar.

  • The Share dialog no longer breaks on a payload without view_urls. The read-only link added the field in 0.8.8 and the dialog iterated it without a guard, so a server from an earlier version — or any response that omits it — threw and took the whole dialog down.

Added

  • A test that measures what the screen is doing. The audit now runs in CI: in a real browser (jsdom has no layout engine, and without real text widths there is no collision to find) it seeds a project built to collide and sweeps four zooms, both densities, lanes and critical path. The geometry underneath — cutting a line around a box, finding a free height for a sideways name — is unit-tested without a browser, so the logic stays covered where Chrome is not installed. Both layers were checked against a deliberately sabotaged build: they report 10 to 33 collisions per scenario when the fix is removed.

  • The four languages are level again: every string the interface can show is translated in all of them. The glossary shipped in 0.8.8 in Portuguese only, which the i18n suite had been calling out — 54 keys × 3 languages.

Merged pull requests:

  • fix: nada é escrito por cima de nada no gráfico (0.8.9) (#7) (@dantebertuzzi)