The Grader UI

A fast, keyboard-driven UI for reviewing and grading subs. It's the same UI everywhere: the desktop app ships it built in (no server or browser needed), and psf-guard server serves the identical interface to any browser for NAS and remote setups. Grades are written straight to the Target Scheduler database, so acquired-image counts stay accurate and rejected frames get re-shot.

Overview dashboard

Overview dashboard showing projects, targets, and grading progress
Projects, targets, image counts, and color-coded grading progress — merged across every configured database.

The overview aggregates all your configured scheduler databases: project and target statistics, completion percentages, real-time file discovery status, and filter usage. Click through any project or target to land in its grid.

Image grid

Image grid with filtering and batch operations
Filter by project, target, status, and date; select in bulk; grade instantly.

Comparison mode

Side-by-side comparison with synchronized zoom
Synchronized zoom and pan; grade either or both frames without leaving the view.

Put two frames side by side with synchronized (or independent) zoom and pan — ideal for judging a borderline frame against a known-good neighbor. Accept, reject, or unmark both images at once.

Sequence view

Sequence analysis with per-frame quality scores
Per-frame quality scores with cloud/occlusion classification and one-click scanning.

The Sequence view plots per-frame quality over a night: HFR, star counts, and — once you press Scan Occlusion — the spatial and photometric screening signals. Flagged runs are classified (occlusion, clouds, sky brightening) and can be bulk-selected for rejection. See Quality Screening for how the signals work.

Keyboard shortcuts

KeyActionKeyAction
K / →Next imageAAccept
J / ←Previous imageXReject
CCompareUUnmark
SStars overlay+ / −Zoom
Ctrl+ZUndoCtrl+YRedo

Where grades go

Every action updates gradingStatus in the Target Scheduler database (with undo/redo tracked in the UI). Because the scheduler counts accepted images against each exposure plan, rejecting bad frames means the scheduler queues replacements on the next imaging run — closing the loop between grading and acquisition.