@ai-ecoverse/slicc-spectrum 2.9.1 → 2.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -431,10 +431,11 @@ Sessions stay alive while hidden; `exit` closes the tab.
431
431
 
432
432
  What the agents' browser control is doing.
433
433
  It opens on the most recently driven tab (`.focused`), or on the tab overview: cards (`li[data-id]`, `data-controlled` while an agent drives the tab, `data-pulse` when another tab starts being driven, without switching to it) with a thumbnail, the agent and a small **Stop <agent>** (`data-action="stop-agent"`), and an address bar to open a URL.
434
- The focused tab has **All tabs** (`data-action="all-tabs"`), a tab picker (a list of tabs at 720 px and wider), the URL with **Copy** (`data-action="copy-url"`) and **Open** (`data-action="open-tab"`, activates the tab), who's using it (`.driving[data-driving=agent|user|none]`; a controlled tab without an agent reads **In use** and has no Stop) with a small **Stop <agent>** (`data-action="stop-agent"`) in the same row, which keeps its height with or without an agent, a view-only preview (`figure[data-view]`: `live` while watching with a frame under 3 s old, `shot` with "Updated N s ago", `none`) and the recent actions (`li[data-action-id][data-kind][data-status]`, failures with their error inline), the tab's own filtered first, then the latest 50, with **Show more** (`data-action="more-actions"`) adding 50 earlier ones each time up to all the port has ("Showing the latest N of M"); the list scrolls and takes focus.
434
+ The focused tab is preview-first: **All tabs** (`data-action="all-tabs"`) with a tab picker (a list of tabs at 720 px and wider) on one row, the URL with **Copy** (`data-action="copy-url"`) and **Open** (`data-action="open-tab"`, activates the tab) on the next, who's using it (`.driving[data-driving=agent|user|none]`; **Watching <agent>** while an agent drives, **In use** when a controlled tab has no agent and no Stop) with a small **Stop <agent>** (`data-action="stop-agent"`) in the same row, which keeps its height with or without an agent, a watching-only preview (`figure[data-view]`: `live` while watching with a frame under 3 s old, `shot` with "Updated N s ago", `none`; the caption says **Watching only**) that keeps a 16:10 frame, and a **Recent actions** feed (`.feed`) that fills the leftover height.
435
+ Recent actions (`li[data-action-id][data-kind][data-status]`, failures with their error inline) are newest first: the tab's own filtered first, then the latest 50, with **Show more** (`data-action="more-actions"`) adding 50 earlier ones each time up to all the port has ("Showing the latest N of M"); the list scrolls and takes focus.
436
+ Consecutive identical done actions fold into one row (`li[data-group]`) with a count (`×n`).
435
437
  Actions with a URL (`open`, `goto`, `request`) expand (`data-action="action-url"`, `aria-expanded`) to show the full URL, or the request line, under the shortened one.
436
- Below 480 px they fold into **Recent actions (n)**, a chevron disclosure counting all of them, with the last one showing.
437
- The tab the user opened (or **All tabs**), expanded URLs and an open **Recent actions** hold for every view of the panel on the same model, so a layout switch keeps them; a closed tab lets go, and the panel opens on the most recently driven tab again.
438
+ The tab the user opened (or **All tabs**) and expanded URLs hold for every view of the panel on the same model, so a layout switch keeps them; a closed tab lets go, and the panel opens on the most recently driven tab again.
438
439
  Labels, URLs and errors are text only.
439
440
  With no tabs and `browser.via` `null` in the network status, it says browser control isn't connected (`data-browser="none"`) with the extension link and the commands to install and run slicc (`curl -fsSL https://get.sliccy.ai/slicc | sh`, then `slicc`, or `npx sliccy@next` with Node).
440
441
  The Browser rail button carries a dot (`data-driven`) while a tab is in use.
@@ -721,10 +721,15 @@ var DummyBrowser = class extends Emitter {
721
721
  this.finish(action.id, "Stopped");
722
722
  if (changed) this.emit("tabs", this.list());
723
723
  }
724
- watch(tabId) {
724
+ #watch = null;
725
+ lastWatch() {
726
+ return this.#watch;
727
+ }
728
+ watch(tabId, size) {
725
729
  const tab = () => this.#tabs.find((candidate) => candidate.id === tabId);
726
730
  if (!tab()?.controlled) return () => {
727
731
  };
732
+ this.#watch = { tabId, size: size ? { ...size } : void 0 };
728
733
  const send = () => {
729
734
  const now2 = tab();
730
735
  if (!now2?.controlled) return;
@@ -732,7 +737,10 @@ var DummyBrowser = class extends Emitter {
732
737
  };
733
738
  const timer = setInterval(send, 500);
734
739
  void this.#clock.sleep(0).then(send);
735
- return () => clearInterval(timer);
740
+ return () => {
741
+ clearInterval(timer);
742
+ if (this.#watch?.tabId === tabId) this.#watch = null;
743
+ };
736
744
  }
737
745
  #changed() {
738
746
  this.emit("tabs", this.list());