A channel with more than max_bins (default 100000) events in the requested
range comes binned on the server (round bin width, average plus min/max/count
columns) instead of raw, the way databoard does it: 24 h of one 100 Hz BS
channel was 23 s and 3 GB raw, now about 5 s. Channels with fewer events stay
raw. A warning names the binned channels; bins= chooses the binning
explicitly, max_bins=None always fetches raw events.
- docs/did_you_know/: one short tip per feature added since May 2026
(<date>-<slug>.md, YAML front matter: added/tags/details), listed
newest first; index.md describes the format for adding more.
- New pages for features that had none: launching, command_history,
tab_completion, live_gui, tweak, scanning, status_server,
channel_access, shared_files, schematic_panels. Wired into index.rst
together with the existing queues page.
- Fix archiver_stripchart/listening_monitor: the method is
archiver.strip_plot (strip_chart does not exist on DataHub); document
the per-device .strip_plot().
- NAMESPACE_MONITOR_FORMAT.md: scan monitoring is wired into Daq's scan
callbacks since 2026-09-09.
- scripts/eco-docs (+ -install-user-service): build the docs from an own
clone and serve them over HTTP as user systemd units, rebuilt by a
timer; a failed build never replaces the served site.
eco shipped its own subpackage literally named eco/epics/, colliding with
the third-party `epics` (pyepics) package. Whenever eco's own package
directory landed on sys.path, `import epics.pv` resolved to eco's shadow
instead of pyepics. The previous commit patched one trigger (eco_cli.py's
shell UI), but --ui lab/voila hit the identical collision via a different
route: voila_app.ipynb lives inside eco/, and Jupyter/Voila kernels start
with the notebook's own directory as sys.path[0]. Confirmed via eco-dev:
both lab and voila's dashboard execution failed with the exact same
ModuleNotFoundError: No module named 'epics.pv'.
Renaming the subpackage (eco.epics -> eco.epics_utils, ~90 mechanical
import-line updates) removes the collision at the root, regardless of
trigger. Verified via eco-dev across all four --ui modes (shell, lab,
voila, desktop) with no more epics.pv errors anywhere.
Also reworked eco_cli.py's --help: shows [default] on -l/--lazy, adds a
full description of all four --ui front-ends including desktop, documents
.ecorc configuration, and adds --set-rcfile [PATH] to persist the current
invocation's scope/profile/lazy/ui into an .ecorc instead of launching.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>