Changelog — older versions
Term Planner versions 1.21 back to 0.1, newest first. The recent versions (1.35 back to 1.22) are on What changed. Nothing on this page is rewritten: each version reads as it did when it was added.
Version 1.21
Links from the planner into its own help page. The main page explained each field in a line or two, while How the planner works held the longer version of the same ground, and a reader on the main page had no way of knowing which part of the help page answered the question in front of them. Short links now sit beside the hints they belong to: “setting up the term” (dates, teaching days, session count, numbering) after the teaching-day ticks, “More on this” after the last-teaching-date hint, “dates and skip dates” under the skip dates box and its half-term buttons, “Full detail on writing the topics” under the topics box, “Notes, two ways” under the notes box, and “Getting the plan out” under the copy box, which covers the print estimate as well. A line in the header points at the whole page, and the About section's link now also points at the list of known limits.
Nothing else changed: no field, rule, wording of a result, or plan of any kind is affected, and the help page itself was not touched. Every link goes to an anchor that exists on that page.
Known limits: the print layout, the repeating heading row and the sheet estimate have been checked in a browser's print preview only, not on a real printer, and the saved CSV has been checked in a browser only.
Version 1.20
Catch-up on the help page. Two changes to the planner were never written into How the planner works, so the page was telling a slightly older story than the tool. First, it said the stranded notes from a topic line were counted by “the status line and the warning”; since version 1.18 the summary at the top of the plan counts them too, and the page now says all three. Second, the help page never mentioned that fields rebuild the plan when you leave them, so it now has a short paragraph saying that typing in the topics box and clicking or tabbing away rebuilds the plan by itself — as does changing a date, the session count, the skip dates, the notes box or any tick and drop-down — and that “Build schedule” is still there for a deliberate rebuild.
Nothing on the planner changed: no field, no rule, no wording on the main page, no change to the plan, the copied text, the CSV, the saved file or the printed sheet. This is a docs-only version.
Known limits: the print layout, the repeating heading row and the sheet estimate have still been checked in a browser's print preview only, not on a real printer, and the saved CSV has been checked in a browser only.
Version 1.19
Fixed a stale-plan bug: the topics box was the one field the planner did not watch. Every other field — the first teaching date, the session count, the skip dates, the notes box, the options — rebuilds the plan when you leave it, but a topic typed into the topics box sat there unbuilt until “Build schedule” was pressed. Pressing “Copy as text”, “Copy as CSV”, “Save CSV file” or “Print plan” straight after typing therefore handed back the plan from before the edit, with nothing on screen saying so. A small script now watches that box and presses the planner's own “Build schedule” when it is left with something new in it, so the table, the summary, the copied text, the CSV, the saved file and the printed sheet all follow what you typed. Clicking any of those buttons leaves the box first, so the plan is up to date before the button acts.
Nothing else changed: the same plan, the same wording, the same estimate, and “Build schedule” still does the same job — press it if you want the plan to catch up without clicking away from the box.
Known limits: the print layout, the repeating heading row and the sheet estimate have still been checked in a browser's print preview only, not on a real printer.
Version 1.18
A note written on a topic line is now counted in the summary as well as in the warning under the table. Version 1.15 started naming those lines when their topic did not fit in the plan, but the list appeared only below the table; the summary at the top of the plan said “1 topic beyond the end of the plan” and left you to work out that a note had gone with it. It now adds a line of its own — “1 note written on a leftover topic line belongs to a topic that did not fit, so it is missing from the plan and from the copied text too.” — for one note or several.
Nothing else changed: the same table, the same warning box, the same copied text, CSV, saved file and printed sheet. The note count, the leftover topic count and the status line read exactly as before.
Known limits: the print layout, the repeating heading row and the sheet estimate have been checked in a browser's print preview only, not on a real printer.
Version 1.17
The long explanations that had grown under “About” have moved to a page of their own: How the planner works. About now says who built the tool, what it does in two sentences and what it cannot do, so the page a tutor lands on stays short; the detail — every field, the two ways of writing a note, the date and half-term rules, how the plan gets out of the page, and the known limits — is all still there, one click away, with the same wording moved across rather than rewritten.
Nothing about the plan itself changed: the same rows, the same copied text, the same CSV and the same printed sheet. The help page is a static page like the rest of the tool, and it lists the limits in one short list at the end instead of burying them in a paragraph.
Version 1.16
A new “Save CSV file” button sits beside “Copy as CSV” and asks the browser to save the plan as a real file, instead of leaving you to copy a box of text into a spreadsheet. It does not write a second CSV of its own: it presses the planner's own “Copy as CSV” so the box under the table holds the rows exactly as the planner makes them — header row, the optional Week and Mins columns, and the quoting rules — then reads that box and hands the text to the browser as a download called term-plan.csv, or term-plan-chapters-1-4.csv when “What the plan covers” is filled in. The file starts with a byte-order mark, so a spreadsheet opens it in one click without asking about the text encoding.
A page cannot tell whether a download was actually allowed, so the new line under the buttons says only that the browser was asked, and names the file and how many rows it holds. It always points at the box under the table as the fallback: some embedded viewers block downloads, and if no file appears the same CSV is sitting in that box to select and copy by hand. With no plan built yet the button says so rather than saving an empty file.
Known limits: the download has been checked in a browser only — a page cannot detect a blocked download, and a very locked-down viewer may refuse to save the file at all. The print layout, the repeating heading row and the sheet estimate have still only been checked in a browser's print preview, not on a real printer.
Version 1.15
A note written on a topic line is no longer lost in silence when its topic does not fit in the plan. The note belongs to the topic's first session, so a topic that was left over took its note out of the plan with it and nothing said so; now the warning box under the table names those lines — “Writing task 1 — bring your draft” — and says that the notes are missing from the copied text as well. The status line counts them too (“1 note on a topic line that did not fit was left out too”), and the line turns from a plain message into a warning when that happens.
The printed-sheet estimate was adjusted to match: the warning box is no longer assumed to be a fixed 22mm tall but is measured from the text it holds, giving every list item a line of its own, so a box that grew with a stranded-note list moves the estimate instead of being missed. It is still a rough guess against A4 — the print preview remains the true count.
Known limits at the time: the print layout, the repeating heading row and the sheet estimate had still only been checked in a browser's print preview, not on a real printer. The CSV was a copy box rather than a file download until version 1.16 added “Save CSV file”. Those stranded notes were not counted in the summary until version 1.18.
Version 1.14
A rough printed-sheet estimate now sits under the buttons: “Rough estimate: about 2 printed sheets for 34 sessions on A4”, or “one printed sheet” when the term fits on a single page, and “build a plan and this line will estimate…” while there is nothing to print. It is worked out from the number of rows in the plan, how far each row wraps (a long topic or a note takes a second line) and whether the leftover-topics box is showing, against A4 with ordinary margins and 12pt table text.
The line keeps up with the plan on its own: the planner rebuilds the table on every change, and the estimate watches that table, so it is right after a rebuild, a term-length button, a half-term week or a new session count without anything extra to press. When the plan runs past one sheet the line also says that the heading repeats at the top of each sheet.
Known limits at the time: it is a rule of thumb, not a typesetter's count — browsers differ in their default margins and fonts, so the print preview is the true count, and a plan of very long topics or notes can be out by a sheet. The print layout itself has still only been checked in a browser's print preview, not on a real printer; a note written on a topic line was still not counted in the stranded-note warning (fixed in version 1.15); and the CSV remained a copy box rather than a file download (addressed in version 1.16). The summary block above the table, which also prints, was not counted in the estimate until version 1.27.
Version 1.13
One copy of the date rules. The rules for reading a date, skipping days, counting teaching days and wording dates used to sit in three files — the planner, the “Last teaching date” helper and the half-term buttons — so a change to one had to be carried into the other two by hand or the three would quietly disagree. They now live in the planner and are handed to the other two, so there is one copy to keep right. Nothing changes on screen: dates, skip dates, counts and warnings read exactly as before.
One small behaviour change while the half-term buttons were opened up: a half-term button now leaves the skip dates box alone, and says so, when the box already holds something that is not a date, instead of adding its week beside a broken entry and hiding the problem.
Known limits at the time: the print layout had still only been checked in a browser's print preview, not on a real printer; a note written on a topic line was still not counted in the stranded-note warning (fixed in version 1.15); and the CSV remained a copy box rather than a file download (addressed in version 1.16). The missing sheet estimate was added in version 1.14.
Version 1.12
The printed heading now repeats. Instead of sitting above the table as a line of its own — which meant pages two and three of a long plan arrived with no title and no date range — it is written into the table's own header row, which browsers repeat at the top of every printed page. On screen nothing changes: the row is hidden, and the covers line is still reported in the summary. With no plan built yet there is no table to hold it, so the heading stays a plain line as before.
The row spans every column of the plan, so it lines up whichever optional columns (Week, Mins, Notes) are switched on, and it is rewritten at each print, so it never appears twice after the dialog is opened and closed.
Known limits at the time: this had been checked in a browser's print preview only, not on a real printer, and browsers differ in how they repeat table headers across pages — check one sheet before running off a class set. The date rules still lived in three files (app.js, fit.js and halfterm.js), so a change to one had to be carried into the others (fixed in version 1.13); a note written on a topic line was still not counted in the stranded-note warning; and the CSV remained a copy box rather than a file download (addressed in version 1.16).
Version 1.11
Three half-term buttons now sit beside the skip dates box: “Feb half term”, “May half term” and “Oct half term”. Each one adds a Monday-to-Friday stretch to the box — the week of the third Monday of February, the last Monday of May, or the last Monday of October, taken in the first year on or after your first teaching date — and the plan rebuilds straight away, so a term that breaks for half term takes one click instead of typing five dates.
The buttons add to whatever is already in the box rather than replacing it, and a week already in the box is left alone with a message saying so. A missing or invalid first teaching date gets its own message instead of a guess. School holidays differ from school to school and council to council, so the dates are a starting point to check against your own calendar; the box stays editable, and the line under the buttons names the rule that was used.
Known limits at the time: the print layout had still only been checked in a browser's print preview, not on a real printer; the CSV remained a copy box rather than a file download (addressed in version 1.16); a note written on a topic line was still not counted in the stranded-note warning; and the date rules now lived in three files (app.js, fit.js and halfterm.js), so a change to one had to be carried into the others (fixed in version 1.13).
Version 1.10
A topic line can now carry a note of its own. Write the topic, then a dash with a space on each side — an em dash as in “Writing task 1 — bring your draft”, or two hyphens as in “Mock exam (2) -- no calculators” — and the text after the dash becomes the note for that session, in the Notes column of the table, in “Copy as text” and in the CSV. The bracket number for a multi-session topic and the “ / ” second topic both still work, and a topic that takes several sessions keeps its note on the first row only, so the note is not repeated down the table.
The two ways of writing a note work together: a session can take a note from its topic line, a note from the notes box, or both, and when it has both they are joined in the Notes column with “ · ”, the topic-line note first.
Version 1.9
The printed sheet now opens with a heading line of its own: “Covers: Chapters 1-4 · 12 sessions, Wed 3 Apr 2026 to Wed 24 Jun 2026”, read off the built plan — dates and session count included — in your chosen date wording, with a plainer weight than the planner's own title. It appears on paper only; the page on screen is unchanged.
Known limits at the time: checked in a browser's print preview only, not on a real printer, and the heading did not repeat on later pages of a long plan — the second of those was fixed in version 1.12.
Version 1.8
Added an optional “Last teaching date” and a “Work out sessions” button: the teaching days from your first date to that date, minus your skip dates, are counted and written into “Number of sessions”, and the plan rebuilds so its last row is that last teaching day. A count over the 60 sessions the planner builds is capped at 60 with the date the plan then ends on, and an end date before the start, a stretch with no teaching day in it, or invalid skip dates and teaching days each get their own message instead of a guessed plan.
Version 1.7
A topic line can carry a second topic for the same session: write the two around a slash with a space on each side — “Grammar drill / Reading check” — and the text after the slash is shown on its own line under the main topic in the table, while the copied text and the CSV join the two back with “ / ” in one Topic column. A slash with no space around it (as in “and/or”) is left alone, and the summary and status line count the sessions that carry a second topic.
Version 1.6
Added an optional “Show a week number column”, off by default: the table gains a “Week” column between the date and the topic, both copied formats gain a matching column, and the summary counts the teaching weeks. The numbering counts the weeks of the term that hold a session — a half-term week with no session is skipped and does not push the numbering out.
Version 1.5
Added an optional “What the plan covers” label for the term — “Chapters 1-4”, “Units 1-3 and exam technique”. When it is filled in, the summary gains a “Covers …” line, the status line repeats it, and “Copy as text” puts it on the first line; the CSV is deliberately left alone so its header row still starts the columns. The label is squeezed onto one line and cut off at 120 characters.
Version 1.4
Skip dates now take whole stretches as well as single days: “2026-02-16..2026-02-20” skips every day from the first to the second, both ends included, so a half term takes one entry instead of five. Stretches mix with single days in the same list, and the summary says how many stretches were given and how many days they cover. A stretch written back to front or longer than 120 days is refused with a message naming the entry.
Known limits: the “teaching days skipped” count still counts only days that would have been teaching days anyway.
Version 1.3
Fixed the wording of the leftover-notes warning added in version 1.2: it now reads as plain sentences with a full stop, says that stranded notes are also missing from the copied text, and names the first stranded line and the number of sessions. When stranded notes are the only problem it also suggests a way out — raise the session count, or delete the lines from the notes box.
Version 1.2
Fixed a bug from version 0.9: notes written past the last session were ignored in silence. Notes line up with sessions by position, so the extra lines simply vanished; now the status line reports how many were left out and a warning under the table names the first line of the notes box that has no session. Leftover notes no longer count as notes on a session, so a notes box whose lines all sit past the end no longer adds an empty Notes column.
Version 1.1
Fixed a styling gap: sessions with no topic of their own — the “Review and catch-up” rows — are now greyed and italic, so they no longer read like topics you wrote yourself. The tint affects the table on screen only; the copied text and CSV are unchanged, and a print rule keeps filler rows readable on paper instead of a grey block of ink.
Version 1.0
Added an optional “Start numbering at” field: set it to 5 and the plan is numbered 5, 6, 7 … instead of 1, 2, 3 …, which is useful when a term carries on from an earlier one. It changes the # column, the summary line and both copied formats, and nothing else; values from 1 to 500 are accepted, and anything else gets a clear message.
Version 0.9
Added an optional notes column, with a “Notes, one line per session” box: line 1 belongs to session 1, line 2 to session 2, and so on, whatever topic ends up in those rows, and a blank line means no note for that session. The column appears in the table, in “Copy as text” and in the CSV only once at least one note is written.
Version 0.8
Added “Spread catch-up sessions evenly”, off by default: when your topics need fewer sessions than you asked for, the spare “Review and catch-up” sessions are dealt out between topics instead of landing in one block at the end. With the option off nothing changes, and it does nothing when the topics already fill every session.
Version 0.7
Added “Copy as CSV”: the plan is copied as comma-separated rows with a header row — #, Date, Mins (only when minutes are set) and Topic — so a spreadsheet splits it into columns, and a value containing a comma or a quote is quoted properly. “Copy as text” and “Copy as CSV” now share one clipboard routine, with a clear fallback that selects the plan in the box under the table when the clipboard is blocked.
Version 0.6
A topic can take more than one session: put a number in brackets at the end of the line — “Mock exam (2)” — and it fills that many rows, labelled “(1 of 2)”, “(2 of 2)” in the table and the copied text. If the plan runs out of sessions in the middle of a topic, the topic takes what is left and a note above the table says how many sessions it asked for. Without a bracket number every topic still takes one session.
Version 0.5
Added “End with a revision week”: the last session is kept for “Revision and review of the whole term”, your topics fill the sessions before it, that row is tinted, and any topics left over are listed under the table with a hint that the revision week is taking a slot. With the option off, nothing about the plan changes.
Version 0.4
Added a “Date wording” choice — “Wed 3 Apr 2026”, “Wednesday 3 April 2026” or “Wed, April 3, 2026” — used by the table, the summary and the copied text, plus quick term-length buttons (6, 10, 12, 24 sessions) beside the session count.
Version 0.3
Added an optional “Minutes per session” field: when set, the plan table and the copied text gain a minutes column and the summary shows the total contact time for the term. Leaving it blank hides the column again.
Version 0.2
Added a “Print plan” button and a print stylesheet: the setup form, the copy box and the footer are hidden, table headers repeat, and rows avoid breaking across pages.
Version 0.1
First version: enter a first teaching date, the teaching days of the week, the number of sessions, optional skip dates and a list of topics. The page builds a dated, session-by-session plan with a summary, a leftover-topics warning and a plain-text copy box.