Repository navigation
0.141.0: A run says when it is writing findings, and email links no longer open a dialog
humanish 0.141.0 says when a run is writing its findings: the CLI prints progress with the
elapsed time, humanish runs and the TUI show analyzing, and the Observer's Findings tab shows a
pending state from the moment analysis starts. A run cut off before it publishes is recorded as
interrupted, reclaim marks a dead run, a killed analysis no longer blocks the next one, and
run prints the run id as soon as it exists. On hosted and local desktops, a mailto:, tel:
or sms: link no longer opens an app chooser or a browser prompt that participants reported as an
app fault: humanish records the link and tells the participant that nothing was sent.
Changed
- A run says it is analyzing while its automatic analysis runs.
status.jsongains
analysis: { startedAt, endedAt?, state? }and its heartbeat keeps running through the
analysis.humanish runslists the run aspassed, analyzing(or its other result), and
runs --jsoncarriesanalysis. The TUI addsanalyzingto the run. The served Observer's
status band reads Writing findings and the Findings tab shows a pending state with how long
ago analysis started, from the moment it starts. In a terminal,runprintsParticipants finished. Writing findings; this usually takes 1 to 4 minutes.and then the elapsed time every
20 seconds;--jsonprints only the first line, on stderr. runandwatchprintRun <id> started. Follow it with humanish observe --run <id>to stderr
as soon as the run exists,--jsonincluded. Library callers get arun-startedevent with the
run id throughonEvent; a TypeScriptswitchoverStudyEvent["type"]that must be
exhaustive needs a case for it.- The humanish skill has a section on long studies:
runblocks until the participants and the
analysis finish, how to start one in tmux, and how to find and follow it withruns --jsonand
review.
Fixes
- A run whose process leaves it without publishing a bundle, as a route that throws does, is
recordedinterruptedwithreason: no-publish. Before, it was recordedfinishedwith no
outcome, and counted in the study's duration medians. humanish reclaim --run <id>marks a run whose status heartbeat went stale asinterrupted
(reason: reclaimed) and says so. Before, a killed run read as running in its status record
forever.humanish analyzeanalyzes an interrupted run whose participant streams all ended. When it
refuses a run, it says why and names the next command:humanish runsfor a run still running,
humanish run <study>for one cut off mid-participant, andhumanish reclaim --run <id>for one
whose heartbeat stopped while its pid is still in use. Before, every case said "Wait for the
study to finish."humanish reviewsays participants are still running, or that the analysis is running and when
it started, before findings exist. Before, it said "No analysis has run for this run." An
analysis whose process stopped before it finished gets its own message
(AUTOMATIC_ANALYSIS_STOPPED) and theanalyzecommand that runs it again, instead of "records
could not be read or checked". A run that ended while a participant was still running says so and names
humanish run <study>.- A run's
.analysis-lockrecords the process that took it (host, pid namespace, pid and start
time, asreclaim --preflightreads a probe's owner). When that process is gone, as after a
killed analysis, the nextanalyzetakes the lock over and says so in a warning, instead of
refusing withANALYSIS_BUSYuntil someone deletes the directory. A lock whose owner is still
running, runs on another host, or was written by an earlier version still refuses. - Email and desktop cleanup messages no longer call the step "finalization".
- A participant on a hosted desktop (E2B or Modal) who clicks a
mailto:link no longer gets
XFCE's "Choose Preferred Application" dialog, and atel:orsms:link on the study's own
site no longer opens Chrome's "Open xdg-open?" prompt. Participants had reported both as faults
of the app under test. On the local browser route amailto:link did nothing and atel:
link opened the same prompt; a runtime image built from this release records both instead. The desktop has no email, phone or messaging app, so it now writes the
link down. The trace records alink opened another appnotice with the scheme and, for an
email link, only the recipient addresses. The participant's next turn says the link worked,
that the app is not shown and that nothing was sent, and automatic analysis is told the missing
app window belongs to the study desktop. - A local browser participant's
mailto:,tel:andsms:links are recorded the same way. This
release pinsruntime-2026.10.21.3(amd64) andruntime-2026.10.21.4(arm64), which carry the
stand-ins;humanish runtime setupinstalls them. An older local runtime keeps the old
behavior: Chrome's prompt fortel:, and nothing formailto:.