fix: the format picker shows the format's name only — the slide count is the one length control
Some checks failed
Forgejo Docker Build / Root app tests (push) Successful in 1m2s
Forgejo Docker Build / Build Docker image (push) Successful in 7s
Forgejo Docker Build / End-to-end (browser) (push) Failing after 7s

The picker labels carried each format's typical length ('15–25 cases, three
or four slides each, 60–90 minutes'), which sat under a slide-count field and
read as a second, contradicting number. The label is the name, the hint says
who the format is for, and the brief tells the model that the slide count
asked for is the length and the parts fit into it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016fZGJNyDvERbMgS2Uc2msP
This commit is contained in:
Daniel 2026-09-14 16:07:05 +02:00
parent 6ca278c0e6
commit 57ba2a268c
3 changed files with 7 additions and 3 deletions

View file

@ -219,7 +219,8 @@ the material needs (one case-question-answer run per topic, one timeline
segment per event) and may leave out when the material has none. segment per event) and may leave out when the material has none.
The author picks the format beside the theme; "Free" is the default and is The author picks the format beside the theme; "Free" is the default and is
what every deck was before. The choice is stored on the deck (`deck.format`, what every deck was before. The slide count stays the one length control —
a format's typical length is not shown or sent, so the two never disagree. The choice is stored on the deck (`deck.format`,
validated against the catalogue the same way `deck.theme` is) so a later validated against the catalogue the same way `deck.theme` is) so a later
modification keeps the shape it was written in — the revision prompt carries modification keeps the shape it was written in — the revision prompt carries
the same brief. the same brief.

View file

@ -184,7 +184,7 @@
formats.forEach(function (f) { formats.forEach(function (f) {
var option = document.createElement('option'); var option = document.createElement('option');
option.value = f.id; option.value = f.id;
option.textContent = f.name + (f.length ? ' · ' + f.length : ''); option.textContent = f.name;
formatSelect.appendChild(option); formatSelect.appendChild(option);
}); });
if (chosenFormat && formats.some(function (f) { return f.id === chosenFormat; })) { if (chosenFormat && formats.some(function (f) { return f.id === chosenFormat; })) {
@ -271,6 +271,9 @@
var hint = document.getElementById('mr-format-hint'); var hint = document.getElementById('mr-format-hint');
if (!select || !hint) return; if (!select || !hint) return;
var chosen = formats.filter(function (f) { return f.id === select.value; })[0]; var chosen = formats.filter(function (f) { return f.id === select.value; })[0];
// Audience and shape only: how long the session runs is the slide count
// above, which guides rather than dictates, and a second number here
// read as a contradiction of it.
hint.textContent = chosen hint.textContent = chosen
? [chosen.audience ? 'For ' + chosen.audience : '', chosen.description || ''].filter(Boolean).join('. ') ? [chosen.audience ? 'For ' + chosen.audience : '', chosen.description || ''].filter(Boolean).join('. ')
: 'The layouts are chosen slide by slide with no fixed order of parts.'; : 'The layouts are chosen slide by slide with no fixed order of parts.';

View file

@ -51,7 +51,7 @@ function instructions(id) {
if (!format) return ''; if (!format) return '';
var lines = [ var lines = [
'FORMAT: this is a ' + format.name + (format.audience ? ' for ' + format.audience : '') + '.', 'FORMAT: this is a ' + format.name + (format.audience ? ' for ' + format.audience : '') + '.',
format.length ? 'Typical length: ' + format.length + '.' : '', 'The slide count asked for above is the length; fit the parts into it.',
'Its parts, in this order:' 'Its parts, in this order:'
]; ];
(format.sequence || []).forEach(function (part, i) { (format.sequence || []).forEach(function (part, i) {