Skip to content

AbstractObserver 0.5.0

Choose a tag to compare

@lpalbou lpalbou released this 01 Oct 10:13
· 165 commits to main since this release

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 sends automation.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.tsx runs the kit's findVerbToggleLabels over src/, checks every
    switch in both states and caps the settings label weights; scripts/state_toggles.shots.mjs captures 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 after responsive.css) and src/ui/list_disclosure.tsx, guarded by
    src/ui/list_disclosure.test.tsx; scripts/space.screens.mjs drives the list + detail screens through the shared
    capture harness (space metrics: text column, scroll containers, padding stack).
  • For contributors: src/ui/space_dom.test.tsx lays 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's randomId(), 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.