The Workbench
The Workbench is where active research lives day to day. One page with three main tabs (Experiments, Notes, Lists), each with its own way of grouping work, plus a Projects control at the right of the tab band. The URL is /workbench, and /experiments still redirects there for backwards compatibility.
Three tabs, three ways to slice the work
The Workbench packs three different views of your in-flight work into one page. The tab strip across the top names them and gives each a color identity. Experiments (blue), Notes (emerald), Lists (violet). The active tab fills with its color, and the others read as gray text buttons. Experiments is the default landing tab, so opening the Workbench drops you on your in-flight experiments. At the right of the same band, a Projects button opens the browsable grid of project cards (see Project Surface) and a New project button starts one.
Each tab uses a different organizing principle. The Experiments tab arranges protocols by stage, Ongoing or Done, in a status-banded list (the default) or a three-column kanban board, toggled with a List/Board control in its left rail. The Lists tab groups list tasks by how close their dates are to right now (overdue, doing, upcoming, recently done, earlier). The Notes tab is a notebook rail beside a search-driven list. So if you want to know "what can I run today," you reach for Experiments. If you want to know "what paperwork is overdue," you reach for Lists. If you want to find the meeting note from three weeks ago, you reach for Notes.
Check-ins, the shared advising surface for a lab-head and member pair, used to be a tab here. It now has its own Check-ins page in the main navigation, and an old link to the Workbench's 1:1 tab forwards there.
Filtering by project
On the Lists tab, a row of colored pills sits below the tab strip, one per project. Click a pill to narrow the view to that project, and click it again to clear. The Experiments tab does not show the pills because it has its own By project section in its left rail, which does the same job with counts. A project you pick with the pills on Lists is remembered when you switch to Experiments, and if that leaves nothing to show, a Clear filters button gets you back.
Standalone tasks with no project
Some tasks never get filed under a project. A one-off experiment you spin up in the "Miscellaneous" standalone slot stays project-less on purpose. To move a task into or out of a project later, open it and use the project dropdown in the popup's Details panel. Alongside your real projects it offers a Standalone (no project) option. Pick it to drop the task off every project, or pick a real project to file an orphan task back under it. On the Gantt timeline the project dropdown also carries a Standalone toggle so you can show or hide those orphan tasks while a specific project is in focus.
The Experiments tab
The Experiments tab arranges every experiment task in your library by stage of the protocol. Two tabs at the top of the pane split the work into Ongoing and Done, each with a live count. Ongoing opens in List view by default, a dense list grouped into collapsible status bands (Running, Ready, and Blocked). A List / Board toggle at the bottom of the left rail switches to Board view, which spreads the same work across a kanban board of three side-by-side columns.
A left rail runs alongside both views. At the top is a Status section. On Ongoing it reads All ongoing, Running, Ready to start, and Blocked. On Done it reads All done, Awaiting write-up, and With results. Below it, a By project section has one entry per project, and an Owner dropdown switches between Everyone, Mine, and Shared with me. Clicking any rail item narrows the pane without leaving the tab, and every item carries a count.
The toolbar above the list carries the rest. A Find an experiment box matches on an experiment's name, its project, and its owner. A Method button opens a small searchable popover that narrows to experiments using one method, with a Clear link to drop the filter. A Select button starts a bulk export (see below). All of these compose with each other and with the rail.
The Ongoing list and the board share the same three stage categories.
Ready to start
Experiments scheduled to begin today or recently, with no incomplete upstream task blocking the start. These are the cards you can pick up and run today, so the column reads first on the left.
Blocked
Experiments that depend on an upstream task that hasn't finished yet. The blocking parent's name renders directly under the card in a small amber strip so you know what you're waiting on. Click the parent name to jump straight to that task and unblock the chain.
Running
Experiments where today falls between the start date and the end date. Each carries a Day N of M freshness label, and (if the experiment is part of a chain) a gray Next: pointer to the experiment that follows it so you can step through a multi-day protocol without leaving the Workbench.
The Done tab
Done holds every completed experiment in one place, newest first. In List view they are single rows, and in Board view they become a grid of cards. The rail splits them into two groups. Awaiting write-up is completed experiments with no results body or attached images on disk yet, your reminder pile, the bench work is done but the writeup is still owed. With results is everything that has a writeup. There is no time cap, so the whole completion history is reachable from one place.
Rows, cards, and chains
In List view each row shows the experiment name, its project (and who shared it, for a shared experiment), and a short status label on the right such as Day 2 of 3, Blocked, or No write-up, with a small result thumbnail when a writeup exists. In Board view each card carries the name, a project pill, the project color along the edge, a hero image (if the writeup has one), a method chip strip, and a freshness label keyed to the column it sits in. When an experiment is part of a dependency chain, the Running card shows a gray Next: pointer to the experiment that follows it, and a blocked card shows the parent it's waiting on. The Gantt page is where you walk a chain step-by-step.
New experiment
The New experiment button at the right of the toolbar opens the New Task modal with the type pre-selected to experiment. It is the same modal you'd get from the Gantt. On a brand-new notebook the pane shows the same choice as a short list of ways to start (a blank experiment, one started from a method, or an imported experiment) before the first one exists.
The Notes tab
The Notes tab holds every note that isn't tied to a specific experiment. Meeting notes from a Tuesday lab meeting, a running log of equipment-room weirdness, half-formed ideas you want to find again next month, they all land here. A notebook rail on the left keeps them organized, and a search box finds them fast. Notes are search-first, not date-first, because a researcher coming back to a note usually remembers what the note was about, not when it was written.
The rail lists All notes, Unfiled, My notebooks, and Shared notebooks. Pick a notebook to see only its notes. On All notes, the list is banded by notebook, each in its own color, with Unfiled last. At the bottom of the rail, two Type chips (Notes and Running logs) narrow by kind, and in a lab folder a Shared with lab chip narrows to notes shared with the lab. Single notes are one-page records of a moment (a meeting, an idea). Running logs are timestamped multi-entry pages you append to over time (an equipment journal, a daily standup log).
Above the list, a search box sits on the left, a sort menu offers Recently updated, Recently created, or Title A-Z, and the New Note button on the right opens a dropdown that asks whether to create a Single Note or a Running Log.
The Lists tab
The Lists tab is the queue view of every list task you own. Lists are the non-experiment task type, things like checklists, paperwork, ordering tasks, errands, anything that isn't a protocol. The Lists tab sorts them into five stages by how their dates relate to today, stacked top-to-bottom in this order.
- Overdue: list tasks whose end date has passed and that aren't complete yet. The first thing in your queue every morning.
- Doing: list tasks where today falls between start and end.
- Upcoming: list tasks scheduled to start within the next 14 days. Tasks starting further out are omitted from the main list, and a small gray footnote below the section reads "+ N scheduled later than 14d out" so you know they exist without cluttering the view.
- Recently done: completed in the last 30 days.
- Earlier: completed more than 30 days ago. Collapsed by default, so click the header to expand.
Each card carries the task name, a project color dot with the project name, and a date signal phrased relative to today ("3d overdue", "Started yesterday", "Starts in 4d"). Clicking a card expands it inline as an accordion panel. Opening one card collapses the previously-open one.
Expanding a list task inline
Clicking a list card expands it in place. A violet border highlights the open card, and a panel slides down below the header row. Inside the panel, you get these controls.
- The name row lets you click the name to rename it inline. Press Enter or click away to save.
- The sub-task checklist lets you tick individual items to check them off. Click an item's text to rename it, and the delete icon appears on hover to remove an item.
- Add item appends a new item to the checklist when you type in the input and press Enter (or click Add).
- The Mark list complete button in the footer marks the whole list done and cascades all un-checked items to complete. Click again to mark it incomplete.
- The Open full view link in the footer opens the legacy full-screen popup for the same task, useful for the Details and date-editing fields not exposed in the inline panel.
Opening an experiment, the three-tab popup
Clicking any experiment row or card opens a centered modal that opens on your content rather than on a form. A running experiment lands on its Lab Notes tab, and a finished one lands on Results, so you start where the writing happens.
The popup carries three tabs across the header.
- Lab Notes is the during-the-run markdown body, with a bottom attachment strip (Images / Files tabs) for photos, PDFs, and other files.
- Method shows one tab per attached method, with the Variation Notes panel and (for PCR methods) an editable gradient and recipe.
- Results is the second markdown editor, for the final writeup (the gel image you'd put in a paper, the plot for a thesis chapter), with its own attachment strip.
An experiment's properties live in a Details panel instead of a tab. Click the Details control in the popup header and a panel slides in from the right (it pins beside the writing when the popup is expanded, and rises as a bottom sheet on a narrow window). It holds the name, dates, duration, project, tags, and the high-level toggles, and if the task carries a (legacy) deviation log string, it renders there in an amber box. The three-dot More actions menu in the header holds the rest, including Save checkpoint, Export, Version history, Comments, Share, and Delete. Drag any file onto the popup and it lands in the last-viewed editor tab's Files/ or Images/ folder, with a confirmation toast at the drop point.
Lab Notes and Results
The two markdown tabs hold different kinds of writing on the same experiment. Lab Notes is the during-the-run record, holding running observations, what reagents you grabbed, what went sideways, the photo you took at the bench five minutes ago. Results is the final-output writeup, holding the gel image, the plot, the short summary of what the experiment actually showed. Both live on the same task and both write to the same per-task folder on disk, so flipping between the two tabs in the popup is instantaneous.
Both tabs use the same editor surface, a single live markdown body with an Edit / Preview toggle at the right end of the tab row, an attachment strip (Images / Files tabs) pinned below the editor, and an Insert (+) menu that holds Add File. Saving is explicit, so each Save checkpoint in the More actions menu records a revertible version you can browse and restore from Version history in the same menu. The full editor reference (shortcuts, the language picker, image-resize popovers, the attachment strip, checkpoints) lives on its own page, The Markdown Editor.
Drag images straight into the body to place them inline, or drop them on the strip to attach without inlining. Switch the strip to its Files tab for non-image attachments (PDFs especially). Click a file link in the prose to open or download it.
Attach a method (or a PCR protocol)
- Open the Method tab and click the + button on the tab strip.
- The Method Picker opens with Recently used in this project and Recently used pinned at the top, the full library below grouped by folder, and a search box that also takes
#tagqueries. PCR protocols show up alongside markdown methods (their tab gets a small PCR badge). - Pick a method. It becomes a new tab on the strip. Attach as many as the experiment needs.
Variation Notes and per-run PCR tweaks
Each attached method has a Variations column down the right side of its tab, with a count badge and a chevron that folds it into a thin strip. Click Add and a small popup editor opens with a fresh ### Variation - <date> <time> heading so each entry is timestamped. Past entries list in the column as cards, and a delete button on each removes just that one. The notes save back to the experiment, not the method, so the shared method file stays clean.
For PCR-typed methods, the gradient editor and recipe table are editable per-experiment. Reset to Method drops your overrides back to the protocol's defaults, and Save Changes writes them to this task only.
When a run drifts from the protocol
Sometimes a run drifts from the protocol in a way worth recording, not just a tweak but a real deviation. Write it as a variation note on the method, so the next person to read the experiment sees exactly what was different. Older experiments may also carry a standalone deviation note from before variation notes existed, and it still renders in an amber box in the experiment's Details panel.
If the change turns out to be a better recipe, keep it. Below the method, Save as new method copies the method's current edits (its per-run overrides and its variation notes) into a brand-new method in your library. It is linked to the original, so the Method Library nests it beneath its base, and neither the original method nor this experiment changes.
Export an experiment
Open the three-dot More actions menu in the popup header and choose Export to open the Export dialog. The dialog heading reads Export <experiment name> and lists three format cards, each with a short description of what you get and who it's for. Click a card and the file downloads straight to your browser's Downloads folder.
- PDF report: a professional, printable PDF with a title page, a clickable table of contents, an outline pane (bookmarks) for jumping between sections, and inline images. Lab Notes, Results, every attached method (rendered, with per-run PCR tweaks), Sub-tasks, the Deviation log, and a Files attached appendix all live in the same document. Text is selectable, so you can copy passages straight out into a thesis chapter, IRB filing, or grant report.
- HTML report: a single self-contained
.htmlpage bundled in a.zipwith its attachments. Images are base64-inlined so the page renders even offline, and PDF methods and other non-image files sit alongside inattachments/Notes/,attachments/Results/, andattachments/Methods/. Open it in any browser, or mail the zip to a collaborator who doesn't run ResearchOS. - Raw ResearchOS format: the full experiment as a sharable
.zipbundle (task.json,project.json, the rawnotes.mdandresults.md, each method as its own JSON file including PCR protocols, plus every attached image and file in the same folder layout the app uses on disk). This is the format another ResearchOS user imports through Settings → Import experiment to land the experiment in their own folder with all the methods, PCR protocols, and attachments wired up.
While the file builds, the dialog shows a Preparing export… spinner and disables every button (Escape and the backdrop are also locked) so you can't kick off a second export by accident. If anything goes wrong, an alert shows the error and the dialog stays open for a retry.