The "no web authentication yet" hint always said
flomni.set_web_password(), which doesn't exist in a LamNI session. Each
generator now declares CLIENT_NAME and the hint uses it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ALDnH16dC6iyHjhe5Ey4w9
lamni.xrayeye_refit([angles]) redoes the sinusoidal X-ray eye fit from the
last alignment's points, leaving out the given angles (misclicks, sample
barely visible). Prints each point's deviation from the new fit, shows the
kept points on the GUI Fit tab and asks before replacing tomo_fit_xray_eye.
The raw offsets are kept in the lamni_xeye_fit_data global var (cleared with
the fit); archived alignments can be refitted via file=.
Also clear omny_xray_gui.fit_params_x/y before submitting new alignment
points, so a previous run's fit is not taken as the new one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ALDnH16dC6iyHjhe5Ey4w9
Ellipse tool is hidden by default and only enabled by the LamNI client in the
extended/smear rotation-centre modes after the FZP click. Adds angle lock
toggle/field, rotation-aware geometry, and roi_angle_{step} submit signal.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>