Repository navigation
v0.7.17
Added — the comparison as a PDF
epochix compare --format pdf,GET /api/export/compare/pdfand 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 thepdfextra 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'scompletemessage. 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'sinitand
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.jsonnow pins every log's fold readings: the extension must
collect exactly what the Python pipeline stores.