Repository navigation
v0.5.0
Fade no longer makes duplicate versions, and Quiz's Kahoot export says exactly which questions it wrote and why it skipped any. The launcher no longer crashes while the Library is being indexed.
Update: quit Staffroom, run uv tool upgrade staffroom in Terminal, and open it again (Updating covers a copy installed from a release tag). New to Staffroom? Start with Install.
For contributors: the full list (6 changes)
Fixed
- Checked every
QListWidgetItemthe shell reaches for the stale-wrapper hazard behind the launcher crash below: the tool list, the string-list editor and the library result lists are safe as they stand, because PySide invalidates row wrappers onQListWidget.clear()and with the list, anditem(i)wrappers never outlive the call that made them. Each site now says why, andtests/shell/test_lifetime.pypins the wrapper counts for all three. - Fade no longer makes duplicate or blank-free versions when asked for more versions than there are fadeable lines: versions are capped at the fadeable-line count with a log note, so every version has at least one blank and strictly more than the one before. A file that is not valid Python is refused with the same "That is not valid Python: … (line n)" message as the other tools. Range mistakes say what is wrong: lines past the end of the file or below 1, ranges typed without choosing the
rangesorder, and listed lines that are headers, comments or blank (skipped with a log note, or an explanation when nothing is left to fade). staff updateand Settings › Updates compare the checkout with the released branch (origin/main, orrelease_branchin config) whatever branch it is on, and name the newest release tag when one is ahead. A checkout on another branch ("on dev; releases are on main"), with no upstream, or detached gets one plain line instead of git's "ambiguous argument" error; the release is reported but never pulled from there, and the update never switches branch.- Quiz's Kahoot export reports what it actually wrote: the summary and the chosen-questions table describe the rows in the file ("3 of 5 written; 2 short answers skipped: Q5, Q7"), every skipped question has its reason in the log, and an export that would be empty stops with a message instead of writing a file. Short-answer distractors are now borrowed from the whole bank rather than only the chosen questions, nearest first (same topic tag, then the same spec section, then anywhere), and the log names the source question and topic whenever one had to come from outside the topic.
- The launcher no longer crashes or aborts around a running library index. The Resources tree is built through model indexes instead of
QStandardItemobjects, whose Python wrappers outlived the items and made the next Qt object at that address come back as the wrong type (the flaky'QStandardItem' object has no attribute 'selectionChanged'on CI). Closing the window, a--screenshotrun and the test fixtures now stop a running index at its next file and wait for every worker thread (MainWindow.wait_for_workers), so Qt never destroys a runningQThread; an index stopped early keeps what it has done and finishes on the next launch.ActionTableignores a refresh that arrives after its view is gone.
Changed
- Docs screenshots redone after the sidebar reorder and the first-run card: every image the docs reference shows the workflow-ordered sidebar without
hello;just screenshotsnow runsscripts/screenshots.sh, which renders the whole set offscreen from a throwawaySTAFFROOM_HOMEand the invented fixture resources inscripts/screenshots/resources/. Ten unreferenced PNGs are gone; the first-run card and the Marks warnings run are now shown in the guide.