aboutsummaryrefslogtreecommitdiffstats
path: root/AGENTS.md
diff options
context:
space:
mode:
Diffstat (limited to 'AGENTS.md')
-rw-r--r--AGENTS.md25
1 files changed, 20 insertions, 5 deletions
diff --git a/AGENTS.md b/AGENTS.md
index faf6b18..27af75d 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -143,14 +143,24 @@ changing that component. The ones that generalise:
dominfo <vm>` grepped for `Managed save: yes`, polled per VM the way the
agent rows are. It measured 6ms.
- **Tray menus need `//@ pragma UseQApplication`** at the top of the root QML
- file. Without it `SystemTrayItem.display()` only logs a qCritical ("not
- started in QApplication mode") and nothing opens. Pragmas are read at launch,
+ file. Without it `SystemTrayItem.display()` and `QsMenuAnchor.open()` only
+ log a qCritical ("not started in QApplication mode") and nothing opens. Pragmas are read at launch,
before the first import, so adding or changing one needs a restart, not a hot
reload. `desktop/shell.qml` carries it.
- **A tray menu is a separate popup, and hovering it un-hovers the island.**
- The pills lose the pointer, so the hide timer would close the island under
- the open menu. `display()` reports no close, so the island holds itself shown
- after it until the pointer returns (a ponytail ceiling in `Island.qml`).
+ The pills lose the pointer and the hide timer would close the island under
+ the open menu, so the island holds itself shown while one is open.
+ `display()` reports no close, and holding until the pointer returned left
+ the island stuck open after a menu's Quit, with the pointer on the menu.
+ Menus open through a `QsMenuAnchor` instead, whose `closed` signal fires on
+ any dismissal and ends the hold.
+- **`SplitParser` can hand a line over with the previous blank line still
+ attached.** Streaming `top -b`, every frame header after the first arrived
+ as `"\ntop - ..."`, so `startsWith("top - ")` matched once and the
+ process table never filled, with nothing in the log. Match with
+ `/^\s*.../`. A shell pipe shows no such thing, so test the parse inside
+ `qs`, and capture with a live reader rather than a killed `top > file`,
+ which flushes on exit and hides buffering too.
- **A mouse button nothing accepts does not reliably fall through to a
catcher underneath.** The drawer's back button (`BTN_SIDE`, `Qt.BackButton`)
never reached a full-surface `MouseArea` below the panel while a page was
@@ -546,6 +556,11 @@ back.
`qs -p <dir>` runs one directly. `qs -p <dir> ipc call <target> <fn>` reaches a
running one, which is how `SUPER+v` opens the VM drawer.
+An `IpcHandler` function named after a `qs ipc` subcommand (`show`, `call`,
+`wait`, `listen`, `prop`) cannot be called from the CLI: `ipc call companion
+show` runs `ipc show` instead, prints the target list and exits 0. Three
+handlers had a `show()` nobody could reach; they are `open()` now.
+
## Conventions
- GPLv2 only, with the header notice in every source file.