Summary
Add a way to lock individual student placements by clicking on a seated student, so teachers can keep selected students fixed while updating the rest of the seating plan.
Problem
Teachers often want to keep a few placements they are happy with and only reshuffle or re-solve the remaining students. Right now Random Assign, Bench All, and Solve Plan treat all students the same.
Desired behavior
- Clicking a seated student should toggle a locked state for that placement.
- A locked student stays in that exact seat when using
Random Assign.
- A locked student stays in that exact seat when using
Solve Plan.
Bench All should leave locked students seated and only bench unlocked students.
- Unlocked students should continue to move around the locked students normally.
Suggested implementation
- Add a visible locked/unlocked state to seated student chips.
- Persist locked placements in project/roster state so they survive reloads and exports.
- Treat locked placements as fixed assignments when randomizing or solving.
- Prevent benching/removing a locked student unless they are explicitly unlocked first.
Acceptance criteria
- Teachers can lock and unlock seated students directly from the grid.
- Locked students remain fixed during
Random Assign, Bench All, and Solve Plan.
- Solver statistics and resulting assignments still update correctly for the remaining unlocked students.
- Locked state is preserved across save/load and local persistence.
- The UI clearly communicates which students are locked.
Notes
This should support the workflow of manually fixing a few placements first and then optimizing the rest of the class around them.
Summary
Add a way to lock individual student placements by clicking on a seated student, so teachers can keep selected students fixed while updating the rest of the seating plan.
Problem
Teachers often want to keep a few placements they are happy with and only reshuffle or re-solve the remaining students. Right now
Random Assign,Bench All, andSolve Plantreat all students the same.Desired behavior
Random Assign.Solve Plan.Bench Allshould leave locked students seated and only bench unlocked students.Suggested implementation
Acceptance criteria
Random Assign,Bench All, andSolve Plan.Notes
This should support the workflow of manually fixing a few placements first and then optimizing the rest of the class around them.