Skip to content

v0.7.17

Choose a tag to compare

@github-actions github-actions released this 28 Sep 19:21
· 78 commits to main since this release

Added — the comparison as a PDF

  • epochix compare --format pdf, GET /api/export/compare/pdf and a
    Download comparison (.pdf) button in the comparison view. The Markdown
    comparison carried the explanation and the numbers but no curve, and the
    race GIF carried curves but no explanation; the PDF has the narrative, the
    runs' curves overlaid on one chart, and the table. Runs measured on
    different metrics are not overlaid — the text already refuses to rank them,
    and a chart would rank them anyway, by eye. Farsi comparisons are drawn in
    Farsi with the pdf extra and fall back to English, saying why, without it.
    Built from the same comparison as the Markdown, so the two cannot disagree.

Fixed — comparisons and chart legends

  • With three or more runs, the "no meaningful difference" sentence could
    name the wrong pair.
    It quoted the gap between the best and worst runs
    but named the first two runs given. It names the two the gap is between.
  • A long run name in a PDF chart legend ran into the next entry's swatch.
    Legend entries were fixed 42 mm slots; each is now as wide as its label.

Fixed — Farsi PDFs scrambled their word order

Found by rendering a Farsi page and reading it; every test passed. Two
faults, present since Farsi PDFs could first be drawn (0.7.15):

  • A Farsi sentence that opened with a run name or a metric was laid out left
    to right.
    fpdf2 takes a paragraph's direction from its first strong
    letter, as the Unicode bidi algorithm does, and "{a} و {b} …" or
    "{metric} در دوره …" open with a Latin one — so the Farsi after every
    number came out in reverse. Such a paragraph now begins with a
    right-to-left mark.
  • fpdf2 misplaces text around a zero-width non-joiner, which written Farsi
    uses in almost every sentence (می‌شود, آن‌ها): the joined pieces were drawn
    in the wrong place, even on a single line. The PDF draws it as a narrow
    no-break space, which keeps the letters unjoined, shows the half-space
    Farsi type uses, and cannot break a line inside the word.

Every Farsi narrative template, message and export label is checked against
fpdf2's own bidi algorithm, and a real Farsi report is rendered with every
string it draws recorded and checked.

Added — the parameter search on the dashboard

  • The dashboard showed one setting of a GridSearchCV; its reports showed
    all of them.
    A Parameter search panel now ranks every setting the search
    tried — mean, spread, range and folds, with the one that was charted marked —
    or, for a plain cross-validation, its folds. The section is absent for runs
    without folds. It reads the run's stored folds on load, and a page watching
    a run live receives them with the run's complete message. In English,
    Farsi and French.
  • The VS Code extension shows it too, without the Python package. Its
    engine already collected every setting's folds to pick the winner, and
    never passed the rest on; it now sends them with the panel's init and
    the run's summary.
  • One ranking, three places. The dashboard's JavaScript ranking and the
    reports' Python ranking are held to one fixture generated from Python
    (tests/fixtures/cv_ranking.json), so they cannot name different winners.
    A GridSearchCV log joins the corpus both engines are tested against, and
    corpus_truth.json now pins every log's fold readings: the extension must
    collect exactly what the Python pipeline stores.