From 57ba2a268c410a9697925819d989fd1b2ed69afc Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 14 Sep 2026 16:07:05 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20the=20format=20picker=20shows=20the=20fo?= =?UTF-8?q?rmat's=20name=20only=20=E2=80=94=20the=20slide=20count=20is=20t?= =?UTF-8?q?he=20one=20length=20control?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_016fZGJNyDvERbMgS2Uc2msP --- docs/my-resources.md | 3 ++- public/js/myResources.js | 5 ++++- src/utils/deckFormats.js | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/my-resources.md b/docs/my-resources.md index af50e003..8e2721bc 100644 --- a/docs/my-resources.md +++ b/docs/my-resources.md @@ -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. 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 modification keeps the shape it was written in — the revision prompt carries the same brief. diff --git a/public/js/myResources.js b/public/js/myResources.js index 33ef64e9..3dbd6a06 100644 --- a/public/js/myResources.js +++ b/public/js/myResources.js @@ -184,7 +184,7 @@ formats.forEach(function (f) { var option = document.createElement('option'); option.value = f.id; - option.textContent = f.name + (f.length ? ' · ' + f.length : ''); + option.textContent = f.name; formatSelect.appendChild(option); }); if (chosenFormat && formats.some(function (f) { return f.id === chosenFormat; })) { @@ -271,6 +271,9 @@ var hint = document.getElementById('mr-format-hint'); if (!select || !hint) return; 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 ? [chosen.audience ? 'For ' + chosen.audience : '', chosen.description || ''].filter(Boolean).join('. ') : 'The layouts are chosen slide by slide with no fixed order of parts.'; diff --git a/src/utils/deckFormats.js b/src/utils/deckFormats.js index 88568def..23a02f4f 100644 --- a/src/utils/deckFormats.js +++ b/src/utils/deckFormats.js @@ -51,7 +51,7 @@ function instructions(id) { if (!format) return ''; var lines = [ '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:' ]; (format.sequence || []).forEach(function (part, i) {