From 6eec0fb28690c8a5105b8cafdf857d64f9a28428 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 11 Sep 2026 05:04:21 +0000 Subject: [PATCH 1/2] docs(qa): start desktop-integration suite sweep report Record the in-progress COMMON-style report for the 2026-09-11 QA sweep at 66fb0e6. Origin skill files were not readable from this environment. Co-authored-by: William Feht --- .../qa/desktop-integration.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md diff --git a/working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md b/working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md new file mode 100644 index 00000000..2bebd4e4 --- /dev/null +++ b/working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md @@ -0,0 +1,53 @@ +# QA: desktop-integration + +Status: in progress. Origin `wmfeht/strata-skills` (`COMMON.md`, `strata-qa-desktop-integration/SKILL.md`) was not readable from this Cloud Agent (Origin CLI unauthenticated; GitLab MCP discovery failed). This file uses an inline COMMON-style template inferred from the sweep prompt and in-repo desktop-integration docs. + +## Meta + +| Field | Value | +| --- | --- | +| Product | `wmfeht/strata` | +| Head SHA | `66fb0e6cb346b2dc127438a50bea48834aaf219f` | +| Skill | `strata-qa-desktop-integration` (text unavailable; see Gaps) | +| Agent | `bc-1a382bd7-c3a5-4bce-a8a3-9b0a985d0500` | +| Date | 2026-09-11 | +| Verdict | pending | + +## Environment + +Pending after isolated runs. + +## Isolation + +- Never `DISPLAY=:1` (Cloud Agent XFCE/TigerVNC). +- Private Xvfb + private D-Bus. +- Throwaway `HOME` / `XDG_*`. +- Artifacts under `/opt/cursor/artifacts`. + +## Scope (owned) + +In-repo desktop integration only (not portal FileChooser, trash, theming, or in-app navigation): + +- Desktop entry, icon, application ID, `StartupWMClass` +- `inode/directory` MIME default +- `org.freedesktop.FileManager1` (`ShowFolders`, `ShowItems`, `ShowItemProperties`) +- D-Bus activation (`--gapplication-service`) +- Open With / external launch +- Startup directory/file arguments ("open this location") +- Installer FileManager1 service install/refuse-other-provider + +## Cases + +Pending. + +## Findings + +Pending. + +## Gaps + +- Skill files not loaded; case list is reconstructed from README, `docs/packaging.md`, `src/adapters/file_manager1.rs`, Open With, and installer tests. + +## Artifacts + +Pending. From 3e802c96ab3b0ce7a07f3e1cc9548d137e5b70f9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 11 Sep 2026 05:12:33 +0000 Subject: [PATCH 2/2] docs(qa): record desktop-integration suite sweep results Isolated FileManager1, desktop-entry, Open With, and startup-argument QA at 66fb0e6. Verdict is pass-with-nits (X11 WM_CLASS vs StartupWMClass). Co-authored-by: William Feht --- .../qa/desktop-integration.md | 106 +++++++++++++++--- 1 file changed, 91 insertions(+), 15 deletions(-) diff --git a/working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md b/working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md index 2bebd4e4..de81580a 100644 --- a/working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md +++ b/working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md @@ -1,53 +1,129 @@ # QA: desktop-integration -Status: in progress. Origin `wmfeht/strata-skills` (`COMMON.md`, `strata-qa-desktop-integration/SKILL.md`) was not readable from this Cloud Agent (Origin CLI unauthenticated; GitLab MCP discovery failed). This file uses an inline COMMON-style template inferred from the sweep prompt and in-repo desktop-integration docs. +Origin `wmfeht/strata-skills` (`COMMON.md`, `strata-qa-desktop-integration/SKILL.md`) was not readable from this Cloud Agent (Origin CLI unauthenticated; GitLab MCP discovery failed). This file uses an inline COMMON-style template reconstructed from the sweep prompt and in-repo desktop-integration docs. ## Meta | Field | Value | | --- | --- | | Product | `wmfeht/strata` | -| Head SHA | `66fb0e6cb346b2dc127438a50bea48834aaf219f` | +| Head SHA tested | `66fb0e6cb346b2dc127438a50bea48834aaf219f` (Strata 0.15.0) | | Skill | `strata-qa-desktop-integration` (text unavailable; see Gaps) | | Agent | `bc-1a382bd7-c3a5-4bce-a8a3-9b0a985d0500` | | Date | 2026-09-11 | -| Verdict | pending | +| Verdict | **pass-with-nits** | ## Environment -Pending after isolated runs. +- Ubuntu 24.04.4, Cloud Agent XFCE/TigerVNC on `DISPLAY=:1` (never used for GTK) +- GTK 4.14.5, Rust 1.98.1 +- Isolated live session: private Xvfb `:98` / `:97` / `:99` (`Xvfb -ac`), `dbus-run-session`, throwaway `HOME` + `XDG_*`, `GDK_BACKEND=x11`, `GTK_A11Y=none`, `NO_AT_BRIDGE=1` +- Binary: `/workspace/target/debug/strata` built at the pinned SHA ## Isolation -- Never `DISPLAY=:1` (Cloud Agent XFCE/TigerVNC). -- Private Xvfb + private D-Bus. -- Throwaway `HOME` / `XDG_*`. +- Never `DISPLAY=:1`. +- Private Xvfb + private D-Bus for every GTK/live call. +- Throwaway `HOME` / `XDG_CONFIG_HOME` / `XDG_DATA_HOME` / `XDG_CACHE_HOME` / `XDG_STATE_HOME` / `XDG_RUNTIME_DIR`. - Artifacts under `/opt/cursor/artifacts`. +- First harness attempt failed X11 auth (Xvfb without `-ac`) and activated host Thunar for `FileManager1`. Retried with `-ac`, user FileManager1 service, and `dbus-update-activation-environment`. That is an isolation lesson, not a product defect. ## Scope (owned) -In-repo desktop integration only (not portal FileChooser, trash, theming, or in-app navigation): +In-repo desktop integration only. Not owned: portal FileChooser UI, trash, theming, in-app navigation, updates. -- Desktop entry, icon, application ID, `StartupWMClass` +- Desktop entry, icon name, application ID, `StartupWMClass` - `inode/directory` MIME default - `org.freedesktop.FileManager1` (`ShowFolders`, `ShowItems`, `ShowItemProperties`) - D-Bus activation (`--gapplication-service`) - Open With / external launch -- Startup directory/file arguments ("open this location") -- Installer FileManager1 service install/refuse-other-provider +- Startup directory/file arguments +- Installer FileManager1 service install / refuse-other-provider + +## Automated coverage + +| Suite | Command | Result | +| --- | --- | --- | +| FileManager1 unit | `xvfb-run -a … cargo test --all-targets --all-features file_manager1` | **6 passed** | +| Open With unit | `cargo test … 'ui::open_with::'` and `'context_menu::tests::open_with'` | **5 + 3 passed** | +| Open-argument unit | `cargo test … open_argument` | **16 passed** | +| Installer | `python3 scripts/test_installer.py` | **24 passed** (includes FileManager1 install + refuse-other-provider) | +| E2E (container) | `PATH=/tmp/docker-hostnet:$PATH ./scripts/e2e.sh tests/e2e/scenarios/test_open_with.py tests/e2e/scenarios/test_startup_arguments.py` | **21 passed** in 47.26s | + +A loose `open_with` filter also matched portal FileChooser `filtered_selection_only_accepts_on_enter_or_open_with_exact_nested_path`, which failed. That case is **file-chooser** scope, not this skill. Tight Open With filters are green. + +There is **no** in-repo E2E for `FileManager1`. Live D-Bus cases below cover that gap. ## Cases -Pending. +| ID | Case | Result | Evidence | +| --- | --- | --- | --- | +| DI-01 | Desktop entry has Type, Name, `Exec=strata %U`, Icon, `MimeType=inode/directory`, `StartupWMClass`, FileManager category | PASS | `data/io.github.lgse.Strata.desktop` | +| DI-01b | `desktop-file-validate` | PASS | clean | +| DI-02 | Archive FileManager1 service is `org.freedesktop.FileManager1` + `--gapplication-service` | PASS | `data/io.github.lgse.Strata.FileManager1.service` | +| DI-03 | Throwaway XDG: `xdg-mime default` / `query` for `inode/directory` | PASS | `io.github.lgse.Strata.desktop` | +| DI-04 | Directory handler association is Strata (`xdg-open` not invoked) | PASS | query only | +| DI-05 | Running Strata acquires `org.freedesktop.FileManager1` | PASS | First wait raced (~40s GVFS probe). Later methods succeeded; window mapped as `Strata` | +| DI-06 | `ShowItems` on `example.md` opens parent and selects the file | PASS | `/opt/cursor/artifacts/filemanager1_show_items_selects_example_md.png` | +| DI-07 | `ShowFolders` on `Pictures` | PASS | `di-07-show-folders.png` | +| DI-08 | `ShowItemProperties` on `second.md` | PASS | `/opt/cursor/artifacts/filemanager1_show_item_properties_second_md.png` | +| DI-09 | `ShowItems` with two files in one directory | PASS (see nit F2) | `di-09-show-items-pair.png`; D-Bus accepted; unit test groups both names | +| DI-10 | Invalid `ShowItems` signature rejected | PASS | `busctl` error | +| DI-11 | GTK application id `io.github.lgse.Strata` | PASS | `_GTK_APPLICATION_ID(UTF8_STRING) = "io.github.lgse.Strata"` | +| DI-12 | Unique-app open of a file argument reveals parent + selects file | PASS | `/opt/cursor/artifacts/startup_file_argument_reveals_notes_txt.png` | +| DI-13 | Unique-app open of a directory argument | PASS | `di-13-open-dir-argument.png` | +| DI-14 | D-Bus activation via per-user service (`ShowFolders`) | PASS | dbus activated `strata --gapplication-service`; window presented `launch-dir`; `di-14-dbus-activation.png` | +| DI-15 | X11 `WM_CLASS` vs `StartupWMClass` | FAIL (nit F1) | `WM_CLASS=strata, strata` vs desktop `StartupWMClass=io.github.lgse.Strata` | +| DI-16 | Installer writes user service with installed binary; refuses a second per-user provider | PASS | installer unit tests | +| DI-17 | Open With E2E (files, folders, mixed types, no handlers, launch failure) | PASS | 18 tests | +| DI-18 | Startup-argument E2E (missing path, retry, non-UTF8) | PASS | 3 tests | ## Findings -Pending. +### F1 — minor — X11 `WM_CLASS` does not match `StartupWMClass` + +- **Area:** desktop entry / window matching +- **Expected:** README and `io.github.lgse.Strata.desktop` say windows report application ID `io.github.lgse.Strata` (`StartupWMClass=io.github.lgse.Strata`) so shells match the launcher icon. +- **Actual:** On private X11, `xprop` reports `WM_CLASS(STRING) = "strata", "strata"` and `_GTK_APPLICATION_ID = "io.github.lgse.Strata"`. +- **Steps:** Launch `strata` under private Xvfb; `xprop` the `Strata` window. +- **Impact:** GNOME can still match via `_GTK_APPLICATION_ID`. X11 shells that key only on `WM_CLASS` vs `StartupWMClass` (some XFCE/task-switcher paths) may show a generic icon. Wayland `app_id` was not exercised here. +- **Evidence:** `/opt/cursor/artifacts/x11_wm_class_mismatch.txt` + +### F2 — note — paired `ShowItems` visually highlighted one row + +- **Area:** FileManager1 reveal selection +- **Expected:** Two URIs in one directory become one request with both names (`file_manager1` unit test) and both rows selected. +- **Actual:** D-Bus accepted the pair. Screenshot `di-09-show-items-pair.png` shows `example.md` highlighted and `second.md` not clearly selected. Timing vs `select_after_load` was not re-probed with AT-SPI. +- **Do not treat as a confirmed product break.** + +### Incidental (other scopes) + +- First-launch portal FileChooser opt-in dialog appeared in throwaway HOME (`di-05-initial-window.png`). File-chooser scope. +- GTK theme parser warnings (`Junk at end of value for padding`). Theming scope. +- `unable to read trash contents` (`g-io-error-quark` 15) in the isolated session. Trash scope. +- Host Thunar is the system `FileManager1` provider until Strata owns the name or a per-user service is installed. Matches README. ## Gaps -- Skill files not loaded; case list is reconstructed from README, `docs/packaging.md`, `src/adapters/file_manager1.rs`, Open With, and installer tests. +- Skill files from Origin `wmfeht/strata-skills` were never loaded; case IDs are reconstructed. +- No Wayland `app_id` check (forced `GDK_BACKEND=x11`). +- `xdg-open` / a foreign app “Open file location” was not invoked (would leave the isolated bus). +- GVfs FUSE Open With (`sftp`/`smb`) not live-tested; covered by unit tests only. +- Omarchy default-file-manager installer path not exercised (this image is Ubuntu/XFCE). +- No in-repo E2E for FileManager1. +- F2 not confirmed with AT-SPI. ## Artifacts -Pending. +- `/opt/cursor/artifacts/filemanager1_show_items_selects_example_md.png` +- `/opt/cursor/artifacts/filemanager1_show_item_properties_second_md.png` +- `/opt/cursor/artifacts/startup_file_argument_reveals_notes_txt.png` +- `/opt/cursor/artifacts/x11_wm_class_mismatch.txt` +- `/opt/cursor/artifacts/desktop-integration-cases.tsv` +- `/opt/cursor/artifacts/e2e-desktop-integration.log` +- `/opt/cursor/artifacts/rust-open-with.log` +- `/opt/cursor/artifacts/installer-all.log` + +## Notes + +Shared sweep path requested: `working-docs/qa-suite-sweep-20260911/qa/desktop-integration.md` on `docs/qa-suite-sweep-20260911`. This agent used branch `cursor/qa-desktop-integration-0500` so parallel scope agents do not collide. No product fixes, issues, or product PR comments.