Skip to content

[pet-overlay][KDE Wayland] Pet invisible with official Linux 26.901.51231; overlay exceeds screen height #1444

Description

@VirgilMing

Summary

With only pet-overlay enabled, the pet is completely invisible on KDE Plasma native Wayland with official Linux package 26.901.51231. A window named Codex Pet Overlay remains in Alt-Tab. Its taskbar entry briefly appears and disappears.

KWin reports a visible, non-minimized 772 × 2369 overlay at (574, 0) on a 1920 × 1200 logical desktop. This appears to be a runtime layout compatibility problem despite successful patch application and passing feature tests.

Environment

  • Repository commit: 03d9a514259b7d8caf6406e392dd50070e9db747
  • Official input: chatgpt_26.901.51231_amd64.deb
  • Input SHA-256: 62580188d87c3d3a9369dab7c73b42a8a32518d4df8a2d5bae6466ddeac5c05e
  • Local deb verified against the signed stable InRelease/Packages metadata
  • Output: community AppImage, built through install.sh and make appimage
  • Gentoo Linux, kernel 7.2.3-gentoo-dist
  • Plasma 6.6.6, native Wayland (--ozone-platform=wayland)
  • One enabled display: physical 3840 × 2400, scale 200%, logical 1920 × 1200
  • Bundled Codex CLI: 0.153.4

Feature configuration:

{"enabled":["pet-overlay"]}

All feature options use defaults, including lockPosition: false, mode: "interactive", and kwin: true. qdbus6 and KWin's scripting interface are available.

Reproduction

  1. Build the above official Linux package with only pet-overlay enabled.
  2. Launch the AppImage under Plasma native Wayland.
  3. Wake the pet.
  4. Observe that the pet body is invisible, although Codex Pet Overlay appears in Alt-Tab.

Expected: the mascot is visible within the desktop and can be interacted with.

Actual: the body is entirely invisible. The taskbar entry briefly appears and disappears; the Alt-Tab entry remains.

Runtime observations

A temporary inspection-only KWin script read these properties from the matching overlay window:

{
  "caption": "Codex Pet Overlay",
  "frame": {"x":574,"y":0,"width":772,"height":2369},
  "buffer": {"x":574,"y":0,"width":772,"height":2369},
  "client": {"x":574,"y":0,"width":772,"height":2369},
  "opacity": 1,
  "minimized": false,
  "hidden": false,
  "skipTaskbar": true,
  "skipSwitcher": false,
  "keepAbove": true,
  "onAllDesktops": true
}

The inspection script was unloaded and removed afterward. Application logs also report rendererWindowAppearance=avatarOverlay and rendererWindowVisible=true after waking it.

The taskbar/Alt-Tab difference is consistent with the reported skip flags, but does not explain the invisible mascot by itself.

Suspected cause — not yet confirmed by runtime A/B testing

The current upstream native layout deliberately allocates a tall transparent draw window. The community codexPetOverlayTrayAboveLeft() helper places the mascot at the bottom of windowBounds and compensates by changing the window origin.

For a synthetic input using the observed 772 × 2369 dimensions and a 112 × 121 mascot, evaluating that helper from the built ASAR returns mascot-local top=2248 and a compensating negative window Y. The mascot dimensions in this calculation are test inputs, not a measurement of the live renderer DOM.

If the compensating origin is not applied, the mascot falls below the visible desktop. The actual KWin window origin remains y=0. In the default unlocked mode, the regular KWin hint path gates geometry changes on lockPosition, which may leave the renderer layout and compositor geometry inconsistent.

This is a hypothesis supported by the window geometry and helper calculation; we have not captured the live DOM mascot rectangle or performed an enabled/disabled comparison using the same official package.

Validation already performed

  • node --test linux-features/pet-overlay/test.js: 72 passed, 0 failed
  • Official-bundle build: feature:pet-overlay:pet-overlay-main reports applied
  • Running AppImage ASAR matches the built ASAR
  • KWin drag hooks and the feature launcher hook are present
  • Main application window and local app-server initialize successfully

These checks pass while the visible pet behavior fails.

Related history

Related: #984, #1056, #1420.

The affected build includes #1420, but the first bad commit has not been identified. Its pet patch changes adapt the settings handler to await this.setSettingValue(...); they do not change the geometry helper. The current helper's last modification predates it (#1056). Please treat this as a current runtime compatibility report, not a proven regression introduced by #1420.

I do not have time to prepare a PR at the moment, so I am reporting the reproduction and diagnostic evidence here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions