Menu
cosmic-mobile
publicLatest change 510a3b926dcaa185e6de4717c0705c927f90181d - Add pointer move action so screenshots exclude the cursor by AkurAI Build
# cosmic-mobile ## Worktree discipline - BúiOS project topic: Telegram Heima 9677. Work inline; use repo-local `pm.py` tasks and tools. - Start with `git status --short`, `./pm.py list`, and the matching task. Create new work before editing. - Keep one active task and one writer per worktree. Main checkout must be clean at task/session boundaries, not during edits. - Inventory inherited changes; preserve ownership. Never reset, clean, auto-stash, or ignore source to manufacture a clean status. Ask before including unrelated work. - Before committing: inspect tracked and untracked diffs, scan for secrets without printing values, run `cargo test`, `python3 -m unittest discover -s tests -p 'test_*.py'`, `python3 test_pm.py`, `./pm.py validate`, and `git diff --check`. Check changed shell scripts with `sh -n`. - Work automatically and inline through implementation, tests, focused commits, publication, builds, emulator deployment and screenshot verification. The user's work request authorizes these normal delivery steps; do not ask again for commit, push or emulator deployment permission. Commit explicit task-related paths, including corresponding task/memory updates. Preserve unrelated changes. Runtime images, captures, caches and logs stay ignored. Ask only for genuinely destructive or irreversible actions, missing credentials, or unresolved product intent. - Finish with `test -z "$(git status --porcelain=v1 --untracked-files=all)"`. Nonzero means unfinished cleanup: commit authorized work or report exact remaining paths; never claim clean. - Interrupted work may be committed as an explicit checkpoint with tests and remaining acceptance recorded. A checkpoint is not a release; feature tasks stay active/blocked until their runtime contract passes. - Runtime changes still require headed midget verification below. Documentation/checkpoint-only commits do not deploy or claim VM health. Disposable VM recovery: stop VM; restore prior launcher files when needed. Experimental Rust mobile shell, not affiliated with System76 COSMIC. Keep source and VM tooling here. Use QEMU/KVM with virgl; never touch physical phones. Build on Titan; run emulator headed on midget's real desktop. Never use headless or Xvfb as delivery target. Default host window: 450×900 on midget, GTK OpenGL with zoom-to-fit; retain 900×1980 guest resolution and scale 2. Use fit-window.sh on every launch. Reject software renderers instead of claiming GPU acceleration. No fabricated device status. Verify cargo tests, live VM interaction, renderer logs and screenshots. Runtime images/logs are ignored. No migrations or managed-service deployment: disposable VM only; stop VM to recover. Guest input: `ssh midget 'cd ~/Emulators/cosmic-mobile && python3 qmp.py tap 350 1475'`. `move X Y` parks the pointer without clicking (use before screenshots). `qmp.py text 'Hello!'` types US-layout text; `key ctrl-a` sends chords. Default coordinate space is guest 900×1980, not host 450×900; `--size WIDTH HEIGHT` accepts a scaled guest screenshot. `batch` reads a JSON action array from stdin over one QMP connection. Validate with `python3 tests/test_input.py`. Unsupported text is rejected before input; no clipboard or Unicode injection yet. Virgl screenshots use `emu.py shot NAME`, not QMP screendump (`no surface`). Wait for the resulting PNG before copying; bridge completion can precede image creation.