Troubleshooting & FAQ
Troubleshooting & FAQ
A rolling list of sharp edges and common questions. If something you hit isn't here, it's worth checking the more detailed article for the feature involved — this page only collects the questions that come up often enough to answer directly.
I toggled a constraint and nothing seemed to change
Two different things can cause this, and they're not the same problem:
- A weight that's too low for that constraint rounds down to zero. Because the solver requires whole-number costs, a low weight on a low-base-cost constraint (like Student Gap Minimization, S5) can round to 0 and fully disable it well before the percentage you typed would suggest — see the constraint weighting article's rounding section.
- Weight and toggle changes only apply to the next generation. Changing a weight or switch on the Constraints page never retroactively edits a timetable you already generated or saved — you have to regenerate (or use "Lock & Re-solve" on a saved timetable) to see the new setting reflected.
If you're on an older version of this app: a handful of constraint toggles (Room Stability, and
the CONSECUTIVE bunching option) genuinely did nothing for a period of time because the solver
never read the value the UI was saving. These were found and fixed — if a toggle still appears to
have no effect after checking both points above, it's worth confirming with whoever manages your
deployment that you're running a current build rather than assuming the same class of bug again.
Why can't I set a minimum rest period between school days?
This isn't an oversight — it's deliberately not offered, because it wouldn't do anything. Every school in this app runs on one fixed, repeating weekly period template (the same Monday–Friday-or-however-many-days grid every week — see Setting up Periods). Under a fixed weekly template, the overnight gap between the last period of one day and the first period of the next is always many hours — far longer than any realistic "minimum rest" threshold a school would actually want to enforce — so a constraint like this would never bind and would just be a setting that does nothing.
My CSV import row was skipped — why?
Bulk import is insert-only, not an update. If a row's name collides with a record that already exists (Buildings, Rooms, Subjects, Classes, and Departments all require unique names within your school), that row is skipped and the reason is reported per row — it never overwrites the existing record. Re-running the same file after fixing a few rows is safe; anything that already succeeded is just skipped again as a duplicate. See Bulk Import via CSV for the full per-tab breakdown, including the "Unknown teacher(s)/subject/groups" message you'll see when a Lesson row's name doesn't match anything already in your data.
Can I bulk-import a lesson's locked or preferred time slots?
No. A Period is identified by its day and time, not a name you could type into a spreadsheet cell in a way that's guaranteed to still match after periods are edited, so locked and preferred slots have to be set on the Lessons page itself after the lesson is created (by import or otherwise). Everything else about a Lesson — subject, teachers, groups, duration, count, bunching, tags — can be imported.
The colors/backgrounds are missing from my printed timetable or PDF
This app's print stylesheet forces color printing on, so this shouldn't happen — if it does, check that you're printing from the timetable's own print button rather than your browser's general Ctrl/Cmd+P shortcut on an unrelated page, and see Exporting to CSV and PDF for what the print/PDF path actually does.
Why does my CSV export include classes/teachers I had filtered out on screen?
CSV export always exports the entire timetable regardless of the current "View by" filter — only Print/Save-as-PDF respects what's currently on screen. See Viewing by Class / Teacher / Room for why these two export paths behave differently.