User manual: notes that the hook (name + source, when registered)
appears in tomo_parameters(), the scilog entry, the PDF report, and
the progress-ring label, and clarifies that unregistering a hook does
not clear at_each_angle_hook -- confirmed expected behavior.
AI_docs test checklist: records that sections 3-6b passed real-session
testing (updating the stale "not yet clicked through" status), adds
section 6c (test steps 37-41) for the fixes found during that testing,
and updates section 1's summary (new item 10).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Two additions to the at_each_angle hook writeup: registering a hook
stores the function object at that moment, not a live link to its
name, so editing the function later requires calling
register_at_each_angle_hook() again -- redefining it alone does
nothing. And tomo_scan_projection()/tomo_acquire_at_angle() are not
interchangeable (Fermat vs single-point); the example hook now calls
tomo_scan_projection() plainly (no more confusing _internal=True in
user-facing code) with a clear note on when to use the other one
instead, matching the new CLI/GUI warnings.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
User manual: explains the new "At-each-angle hook" dropdown and its
"None (default)"/"(not registered in this session)" states, plus that
an active hook shows on the status webpage.
AI_docs: updates section 3.4 (GUI widget added, webpage display
added, extended sim-validation note for the global-var publishing and
webpage payload) and the plan's top status line. GUI test checklist
gets a new section 6b (test steps 28-35: dropdown population/refresh,
Submit vs Add-to-queue behaviour, the "not registered" label, and the
webpage's queue-detail + Current-measurement rendering) and an updated
section 1 item 9 + top status line noting none of this is click-tested
yet.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a "Custom behavior at each projection angle" subsection to the
Tomography section of the flOMNI user manual (docs/user/ptychography/flomni.md):
what a hook function looks like, a polarizer-modulation example, and
how to register/activate/deactivate/list/unregister one, with an
explicit warning about resetting at_each_angle_hook before queuing a
normal follow-up job. Also links it from the quick-start queueing
section. AI_docs/TOMO_QUEUE_COMMAND_JOBS_PLAN.md gets a new section
3.4 recording the design decision (session-only registry, not a
hardcoded one; a new _TOMO_SCAN_PARAM_NAMES entry, not a new job kind;
the GUI param-snapshot leak found and fixed while wiring this up; no
GUI widget yet).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a "Command jobs" reference section covering
tomo_queue_add_command(), the move/optimize_idgap action registry, the
mokev/idgap device allow-list, tomo_queue_show() output format, and
the idempotent-vs-prompt crash-resume behaviour, plus a pointer to it
from the quick-start queueing section.
Type-tags queue jobs with a "kind" field (back-compat: missing kind
defaults to "tomo"), and adds "command" jobs that reconfigure the
beamline (currently: absolute moves on an allow-listed device, plus an
optimize_idgap stub) between tomograms instead of running a scan.
Command jobs are added via tomo_queue_add_command() against a curated
named-action registry (_TOMO_QUEUE_ACTIONS) - not arbitrary code - so
every queued action is auditable and safe to persist across a kernel
restart. Validation is two-layer: schema checks at add time, and each
action re-checks its own arguments against live hardware at execution
time, which is the actual safety boundary. Crash-resume for a command
job re-runs the whole step sequence from the top if every step is
idempotent, or prompts the operator otherwise.
flomni_webpage_generator.py is guarded against command jobs, which
have no "params" key.
See AI_docs/TOMO_QUEUE_COMMAND_JOBS_PLAN.md for the full design.
Passing -1 stows the sample currently in the sample stage into a free
tray slot without mounting a replacement, matching the old control
system's sample_change(-1) behavior. Existing swap-path logic is
unchanged.
umvr_fsamy_tracked/umv_fsamy_tracked require feedback OFF but did not
enforce it. Add an _internal flag; for user/CLI calls, warn that feedback
must be off (active alignment may be lost), prompt (default yes), and
disable feedback on confirm. Internal callers pass _internal=True since
they already manage the feedback lifecycle (ftransfer_flomni_stage_out,
x_ray_eye_align height-centering and mvy jog).
Refresh the Safety at cSAXS checklist PDF (now cross-links back to the
published safety page) and reword the checklist intro to note the local
contact walks users through it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a user-facing safety page featuring the Safety Declaration form and a
downloadable "Safety at cSAXS" checklist PDF, and list the key safety links
from the checklist. Register the page in the top-level toctree after the
introduction.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add tomo_scan_resume() as the primary recommended way to continue an
interrupted scan, in both the user guide and the setup reference
(manual subtomo_start/start_angle/projection_number kept as fallback)
- Add a new "Queueing multiple scans" section (short walkthrough in the
user guide, full command reference + status semantics in the setup
reference, cross-linked via a new anchor)
- Document the live progress report's ETA, automatic gap detection, and
the total-time-lost-to-gaps summary
- Document the zero_deg_reference_at_each_subtomo tomo_parameters() option
- Fix stale SPEC_ptycho_align.m references -> BEC_ptycho_align.m
Add docs/developer/editing_docs.md documenting the MyST/Sphinx conventions
for this site: page anatomy (cross-reference label + single H1), language-
tagged code fences, admonitions, cross-references, the {download} role for
non-image files, the {figure} directive, and how to add a page to a toctree.
Also covers local preview, the merge-then-RTD-build flow, and pitfalls
(broken refs are warnings, public visibility, placeholder consistency).
Turn the empty developer.md stub into a landing page with a toctree and a
card linking to the new guide.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Migrate the SAXS data-analysis content into the RTD/Sphinx docs as
user/saxs/data_analysis.md, and turn the empty saxs.md stub into a
landing page linking to it.
Source: cSAXS documentation wiki, page "SAXS-data-analysis"
https://gitea.psi.ch/cSAXS/documentation/wiki/SAXS-data-analysis
(git@gitea.psi.ch:cSAXS/documentation.wiki.git, as of 408e535)
Converted Gitea-flavored Markdown to MyST: added cross-reference
labels, bash code fences, and {note} admonitions.
Also bundle the SAXS standards plate datasheet (SAXS_standards_plate.pdf),
previously at cSAXS/documentation/attachments/, linked via the MyST
{download} role so Sphinx copies it into the build.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>