Skip to content

Conversation

@novoselt
Copy link
Collaborator

The initial goal was to improve UI by making it more consistent in wording/behaviour/layout and less cluttered. Hopefully it was achieved and now we have:

  • fewer repetitions of the same word in each column
  • some buttons are icon-only, but there are quite obvious info icons in headers that explain the meaning of icons (and there are aria-labels for accessibility)
  • instead of custom whitespace management via divs, most of the spacing and wrapping is now done via AntD Space component
  • "Run all" buttons that used to open extra almost-full-width panels or expand buttons (nbgrader) now open popovers next to the button
  • behaviour of these buttons and of progress indicators is now consistent across all step for all 3 modes (regular/peer/nbgrader)
  • tips/explanations are more uniform and discoverable - I didn't know about some tips for "plain text items" until seeing them in the code
  • skip controls are easy to discover and the status is clearly seen, while when they are not supported (peer grading), they are not available instead of instructing users to "disable me"
  • confirmation branches for overwrites are more uniform and have Back button to return to the previous step in an obvious way (closing popover also resets their state)

Known problems:

  • translations can be improved and it may require adjusting in how messages are constructed - when an English variant is build programmatically from single words, it cannot be carried over to other languages. I do want to work on it in a follow up.
  • keyboard navigation does not quite work for controls inside of popovers which are rendered in a portal outside of DOM, if I recall correctly - this is a known current limitation of AntD, but overall accessibility for all users is likely higher with this PR than without

Some screenshots, old on the left, new on the right, 200% browser zoom on a 27" monitor with 150% desktop zoom:
image
image
image
image
image
image

- Moved the student filter under the “Student” title in the header
- Switched global header actions to icon-only “forward” buttons after titles
- Added skip toggles in the header for Assign/Collect (when peer grading is off) and Grade (when collection exists)
- Skip flags for Assign/Collect are cleared/hidden when peer grading is enabled
- Student list no longer renders its own header
- The header in assignment.tsx now includes per-step actions/progress and filter

Known flaw: Progress counts (especially Return) can feel unintuitive when toggling peer grading or skip states mid-stream.
@williamstein
Copy link
Contributor

@codex review this.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines 331 to +334
function render_nbgrader() {
if (nbgrader_scores) {
return render_nbgrader_scores();
}
if (!assignment.get("nbgrader") || assignment.get("skip_grading")) return;
if (!assignment.get("nbgrader")) return;

return render_run_nbgrader("Run nbgrader");
}

function render_save_button() {
if (!is_editing) return;
return (
<Button key="save" size={size} onClick={() => stop_editing()}>
Save
</Button>
);
return render_nbgrader_scores();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Skip-grading flag no longer hides nbgrader controls

Assignments marked with skip_grading still render the nbgrader scores card and run button, because render_nbgrader now only checks assignment.get("nbgrader") before showing nbgrader UI. Previously the skip flag prevented any nbgrader actions from appearing. With this change, instructors who explicitly choose to skip grading will still see and can trigger nbgrader runs, which contradicts the “skip grading” workflow and can confuse users who expect all grading controls to be suppressed.

Useful? React with 👍 / 👎.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was a very intentional change for all skip toggles: "skip" means that you are allowed to do the next step without completing the previous one, but you are still allowed to do the previous step if you want to. In particular, if there was already work done for the skipped column, it stays visible.

@haraldschilly haraldschilly added the PR-TODO-cocalc2 merge/migrate this PR into CoCalc2 in the future label Dec 23, 2025
@haraldschilly haraldschilly self-assigned this Dec 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants