Skip to content

v0.5.0

Choose a tag to compare

@ColePoppleton ColePoppleton released this 11 Oct 15:30
· 76 commits to dev since this release

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 QListWidgetItem the 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 on QListWidget.clear() and with the list, and item(i) wrappers never outlive the call that made them. Each site now says why, and tests/shell/test_lifetime.py pins 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 ranges order, and listed lines that are headers, comments or blank (skipped with a log note, or an explanation when nothing is left to fade).
  • staff update and Settings › Updates compare the checkout with the released branch (origin/main, or release_branch in 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 QStandardItem objects, 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 --screenshot run 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 running QThread; an index stopped early keeps what it has done and finishes on the next launch. ActionTable ignores 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 screenshots now runs scripts/screenshots.sh, which renders the whole set offscreen from a throwaway STAFFROOM_HOME and the invented fixture resources in scripts/screenshots/resources/. Ten unreferenced PNGs are gone; the first-run card and the Marks warnings run are now shown in the guide.