RIDING BYTES
← All insights

August 12, 2026 · 5 min read

Spotlight, rebuilt: a real command palette for SENAITE

Spotlight is now a proper command palette. Search across catalogs, scope with s:water, filter by workflow state with is:received, and open dedicated result pages. Client contacts are safely walled off.

Spotlight, rebuilt: a real command palette for SENAITE

Spotlight is the little search box that pops up when you hit the hotkey. It has always been useful. This release makes it worth learning.

Search that understands what you mean

Typing a sample ID and hitting return still works. What is new:

  • Scope by catalog. s:water narrows to the samples catalog by prefix. Combine with a term: s:water CA20.
  • Filter by workflow state. is:received narrows to received samples. is:verified, is:published, and so on. Combine: s:water is:received.
  • Include or exclude deactivated objects. By default they are hidden; is:inactive reveals them.
  • Ranked relevance across catalogs. Results from samples, clients, worksheets, storage sort into one list by closest match, rather than one lump per catalog.

The prompt still lists everything as you type. Once your team learns three prefixes, spotlight becomes noticeably faster than clicking through folders.

Spotlight overlay searching for SW-0015. Catalog scope chips (All, Samples, Setup, Worksheets, SENAITE, Clients, Contacts, Senaite Storage Catalog) sit above a single Sample result for Riding Bytes with a sample_received tag. A footer hint reads 'active only · is:inactive to include'.
Overlay open on a sample ID. Catalog chips at top, one relevance-ranked result, keyboard footer.

Type / in spotlight and you see every action you have permission to run. /add and /new both narrow to add-object commands: add sample, add client, add worksheet. Add-ons register their own commands the same way, so a new module adds its actions to the palette without editing the control panel.

Spotlight overlay with '/new' typed in the search box. A COMMANDS section lists Add Samples, New Analysis Category, New Analysis Profile, New Analysis Service, New Analysis Specification, New Attachment Type, New Batch Label, New Calculation, New Contact, New Container Type, New Department, New Dynamic Analysis Specification, New Instrument, New Instrument Location, New Instrument Type.
The slash palette. Every action the current user can run, one keystroke away.

When the ten-item overlay is not enough — you are hunting through a year of samples for a specific batch — the overlay now opens a dedicated results page. Catalog tabs, pagination, breadcrumbs, the same is: filters. Reachable from the overlay footer.

Client contacts see only what they should

Before this release, a client contact could spotlight-search for a laboratory object they had no access to, click through, and land on “insufficient privileges”. Not a data leak, but a poor experience.

Every catalog now carries a Show for clients flag in the spotlight control panel. Setup, worksheets, clients, and contacts catalogs ship it off. Everything else ships it on. Lab staff are never restricted — client detection sits on the contact link, and lab users have none.

SENAITE Spotlight Settings, Catalogs tab. Each installed catalog appears as a row with fields for Catalog id, Label, Prefix, Portal types, Search index, Sort on, Sort order, Enabled checkbox and Show for clients checkbox. Rows visible: senaite_catalog_sample (prefix 's'), senaite_catalog_setup, senaite_catalog_worksheet (prefix 'w'), senaite_catalog, senaite_catalog_client (prefix 'c'), senaite_catalog_contact, senaite_catalog_report (prefix 'r'), senaite_catalog_label, senaite_catalog_analysis, senaite_catalog_auditlog, senaite_catalog_autoimport, senaite_attachments_catalog, senaite_catalog_storage (prefix 'x').
Spotlight control panel. Every catalog auto-discovered, each row toggles Enabled and Show for clients independently.

Self-configuring add-ons

Installing senaite.storage used to require an admin to open the spotlight control panel and add its catalogs by hand. That step is gone. Any add-on catalog that follows the SENAITE convention shows up in spotlight automatically. Internal bookkeeping catalogs (analyses, audit log) stay disabled by default so they do not pollute the results, and are one click from enabled if you want them.

Under the hood

For the technically curious: the plugin was rewritten as a React component consuming the shared React the core exposes via vendor-react.js. The control panel replaced a hand-rolled config with a DataGridField. Auto-discovery uses the ISenaiteCatalogObject marker interface, and access rules attach a per-catalog boolean to each row that is checked against api.get_current_client at query time. The relevant PRs: #33 (rewrite), #34 (auto-discovery), #36 (client-contact access rules). An in-flight #37 polishes catalog handling further.

Two people reviewing notes on paper next to a laptop

Bring this to your lab

Whether you are evaluating SENAITE, scaling it across sites, or wiring up instruments and monitoring, the team that wrote the platform is the team you talk to.