Repository navigation
AbstractObserver 0.5.0
On/off settings are switches. Every setting that is either on or off shows as one switch labelled by the
feature, highlighted when on, in place of a Pause/Resume button pair, an On/Off select or a checkbox. Requires
AbstractUIC ui-kit 0.4.0 (AfSwitch, randomId(), insecureContextReason()).
Screens that show a list next to a detail use the space they have on phones and tablets. Everyone who opens
Automations, Observe, the Board or System on a phone or a tablet is affected; desktop windows keep their layout,
except that each list can be collapsed and the Automations detail reads at 14 px.
Added
- Run deep link
#run/<run_id>: opens that run in Observe, in a new tab or while the Observer is open
(hashchange), wherever it is mounted; under the gateway the address is/apps/observer/#run/<run_id>(the gateway
console's account Logs links "Run started" events there). Run ids that are not uuids work. When the gateway answers
404 or 403 (no such run, or another user's run) Observe says "Run <run_id> cannot be opened: it does not exist on
this gateway, or your account cannot see it." in place of "No run selected", instead of an empty run view. On
phones the link lands on the run view.
Changed
- Automations: an "Active" switch on every automation row replaces the Pause / Resume buttons (on = runs on its
schedule, off = paused; it sendsautomation.pause/automation.resume). Legacy scheduled runs get the same
switch instead of Suspend / Resume. An automation that has ended, is archived or does not allow the change shows
the switch unavailable, with the reason on hover and for screen readers; while a command is in flight the switch is
busy. The feedback line states the new state ("“News” is paused: scheduled runs are skipped."). - Automations list: "Show archived (n)" is an "Archived (n)" switch.
- Observe toolbar, legacy scheduled run: the schedule's "Active" switch replaces the "Suspend schedule" /
"Resume schedule" button; switching it off still asks for a reason first. Pausing a running run stays a button
(a one-shot action). - Edit schedule dialog: "Apply immediately" is a switch; the dialog's single primary action saves it with the
interval. - Settings: "Auto-connect on load" is a switch (was an On/Off select); each assistant skill is a switch named by
the skill (was a checkbox). - System → Memory map: "Live" is a switch.
- Launch → Automate, Email: "Email me the result" is a switch (from the kit); while email is not set up it is
unavailable, with the reason. - The ledger's view toggle is always labelled "Condensed" (highlighted when on) instead of swapping to "All"; it and
the Flow graph's Subflows / Path toggles announce their state (aria-pressed); artifact type filter chips name the filter rather than an Add / Remove verb. - Type scale: settings row titles and skill names are no heavier than weight 600; a skill name is regular when its
switch is off and bold when on. - For contributors:
src/ui/state_toggles.test.tsxruns the kit'sfindVerbToggleLabelsoversrc/, checks every
switch in both states and caps the settings label weights;scripts/state_toggles.shots.mjscaptures the switch
surfaces at 1440 / 834 / 390 px in light and dark and measures every label's size and weight. - Collapsible lists. The Automations list, Observe's run list, System → Activity's Queues and Runs, and each
Board column have a header button with a chevron that hides or shows the list. Lists are open by default, and the
Observer remembers your choice in this browser. A hidden list leaves its header in place and gives the detail the
whole width (on a phone, the whole screen). - Full width on phones and single-column tablets. Below 1024 px (Automations, System) and below 768 px (Observe,
Board), panes and list items are flat sections separated by thin lines instead of cards inside cards, and the page
is the only thing that scrolls (lists, the automation detail, the Observe run list and ledger, and the Board columns
do not scroll inside it). Text starts 12-16 px from the screen edge, and the automation transcript uses the full
width. - Observe on phones shows the run list above the selected run instead of one or the other; picking a run scrolls
to it. The Runs back button is gone: collapse the list to read the run alone. - Automation details: labels and values share a line ("When every 24 hours (UTC)"); the workspace path, the
trigger and the task take the full width; paths and JSON are plain monospace text without a box on phones; the
control buttons fill the row. - Text size: the automation panel and its transcripts use 14 px at every width. On phones and touch tablets, list
titles, queue names, hints, ledger buttons and the wait details also use 14 px (chips, ids and times stay smaller). - Tablets: Observe keeps the run list beside the run only when both get about 360 px or more.
- Launch (Run once and Automate) on phones: the form card and the "When" sections are flat, labels, help and
skill descriptions are 14 px, and the page scrolls once (the document never scrolls under it). Help text is at least 13 px on desktops. - Desktop text floor: dense text (run meta, ledger chips, board cards, System rows) is 12 px instead of 11 px, and
secondary text 13 px instead of 12 px. On touch tablets the System → Memory explorer's help text is 14 px. - For contributors:
src/ui/space.css(loaded afterresponsive.css) andsrc/ui/list_disclosure.tsx, guarded by
src/ui/list_disclosure.test.tsx;scripts/space.screens.mjsdrives the list + detail screens through the shared
capture harness (space metrics: text column, scroll containers, padding stack). - For contributors:
src/ui/space_dom.test.tsxlays Automations, Observe, System → Activity, the Board and a
Launch-shaped form out in Chromium at 390 px with the CSS a fresh build ships, and fails on any element that scrolls
inside the page or a document that scrolls under it; CI and the release workflow install the Playwright Chromium
before the tests. - An unavailable switch always says why: the automation row's and the Observe toolbar's "Active" switches show
their reason ("The automation has ended.", "Archived: history is kept, nothing runs.") as text next to the
switch on touch screens; with a mouse it is the tooltip. docs/automations.md describes the Active switch. - Launch → Automate and the Edit form say "Connect a mailbox first — open My email" when no mailbox is usable,
and the email section is titled "Mailbox" (ui-kit 0.4.0 wording).
Fixed
- Plain http from another machine (LAN, Tailscale). Browsers withhold
crypto.randomUUID,crypto.subtle, the clipboard API and the microphone
outside https and localhost. Ids come from the kit'srandomId(), the
session memory run id falls back to a plain SHA-256 (same id), Copy
says "Copied to clipboard" only when the copy worked (else "Copy failed —
select and copy"), and over plain http the chat's voice control says "This
page is loaded over http, so voice and camera is unavailable — open it over
https (for example through tailscale serve; the gateway console's Network
page explains how) or on the gateway's own computer." On https or
localhost in a browser without the microphone API it says "Voice and camera
are not supported in this browser (getUserMedia unavailable)." The manifest link
sends the app's session cookie (crossorigin="use-credentials"), so the
gateway answers it instead of returning 401.