Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion .agents/skills/drive-trayscale/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,22 @@ The search entry has no accessible name; address it as `--role entry` without `-

`press` synthesizes AT-SPI key events, which often do nothing on GNOME Wayland but work on X11 (including Xvfb). Prefer actions.

Without a GNOME session (for example Xvfb plus a private `dbus-daemon --session` as the caller's bus), everything above works except `screenshot`, which needs GNOME Shell; use `--allow-fail`. The app needs a libadwaita new enough for `AdwViewSwitcherSidebar` (Debian trixie's 1.7 fails at startup with `Invalid object type 'AdwViewSwitcherSidebar'`).
Without a GNOME session (for example Xvfb plus a private `dbus-daemon --session` as the caller's bus), expect these gaps:

- `screenshot` needs GNOME Shell. Pass `--allow-fail`.
- Under Xvfb with openbox, popovers do not draw, including the main menu and dropdown lists, so their items cannot be captured.
- An `AdwComboRow` (`combo box`) has no AT-SPI action, so `click` cannot open it. Use a pointer click, for example with `xdotool`.
- To return to the this-machine page, use a pointer click on its sidebar row.

The app needs a libadwaita new enough for `AdwViewSwitcherSidebar` (Debian trixie's 1.7 fails at startup with `Invalid object type 'AdwViewSwitcherSidebar'`). To use a newer GTK and libadwaita than the system's, point puregotk at them and point `LD_LIBRARY_PATH` at their directory. GDK and GSK are in `libgtk-4.so.1`. A runtime built in an earlier session may be gone, so check that the files exist first:

```bash
LIB=<runtime>/lib/x86_64-linux-gnu
ls "$LIB/libadwaita-1.so.0" "$LIB/libgtk-4.so.1"
export LD_LIBRARY_PATH=$LIB PUREGOTK_ADW_PATH=$LIB/libadwaita-1.so.0 PUREGOTK_GTK_PATH=$LIB/libgtk-4.so.1 PUREGOTK_GDK_PATH=$LIB/libgtk-4.so.1 PUREGOTK_GSK_PATH=$LIB/libgtk-4.so.1
```

`launch` passes these variables to the app. They work only for libraries built against the host's glibc. A runtime that ships its own libc, such as the Flatpak GNOME SDK, fails with a `GLIBC_PRIVATE` symbol lookup error. Run the command inside that runtime instead, for example with `bwrap` binding it over `/usr`.

## Fake peers (tsharness)

Expand All @@ -151,6 +166,8 @@ Flags: `-extra N` adds `peer-NN` peers (every third offline); `-mullvad N` adds

It serves the LocalAPI on `/run/tailscale/tailscaled.sock`, Trayscale's default socket, so use it only where no system `tailscaled` runs (create `/run/tailscale` writable by you first). Its `go.mod` pins `tailscale.com` separately from the app's; `run.sh` builds `tailscale`/`tailscaled` at the app's version into `$DIR` (default `/tmp/tsharness`). Go skips dot-directories, so CI does not build it.

To find out what `tailscaled` actually does in some state, reproduce the state on tsharness instead of reading its code or faking the LocalAPI. Read the result with `/tmp/tsharness/tailscale status --json` and `/tmp/tsharness/tailscale debug prefs`.

Against tsharness the forbidden actions only touch the fake node, so a calling skill may allow them, including sending files to `receiver`. Confirm with `check-fake-tailnet` first.

## Cleanup
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/verify-trayscale/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: verify-trayscale
description: Prove a Trayscale UI change by driving the GTK 4 / Libadwaita window the way a user does and capturing AT-SPI evidence. Use when proving a Trayscale UI change, checking the main window, About, Preferences, peer search, the this-machine page, or a peer page.
description: Prove a Trayscale UI change by driving the GTK 4 / Libadwaita window the way a user does and capturing AT-SPI evidence. Use when proving a Trayscale UI change, including a refactor of widget trees, `.ui` templates, or GObject subclasses that should look the same, or when checking the main window, About, Preferences, peer search, the this-machine page, or a peer page.
---

# Verify Trayscale
Expand Down
Loading