Skip to content

Remote desktop coordinates, utils audit fixes, Python 3.15 console decoding - #490

Open
JE-Chen wants to merge 47 commits into
mainfrom
feat/coverage-to-80
Open

JE-Chen wants to merge 47 commits into
mainfrom
feat/coverage-to-80

Conversation

@JE-Chen

@JE-Chen JE-Chen commented Sep 25, 2026

Copy link
Copy Markdown
Member

Follow-up to #489: commits pushed to feat/coverage-to-80 after that PR merged, which have not run CI yet.

Remote desktop coordinates

  • Both hosts map viewer input and the broadcast cursor through the captured frame's origin. Before this, clicks missed on a second monitor, in a capture region, or on a virtual desktop that extends above or left of the primary screen (U-20260925-49).
  • The host stamps annotations with the frame's screen origin, and the overlay draws them on that screen in its logical pixels. The shared conversions live in gui/_screen_geometry.py (U-20260925-50).
  • Screen-coordinate conversions scale by the device pixel ratio everywhere except macOS, where captures and the pointer take points (U-20260925-52).

Audit fixes in utils/

  • Semantic replay keeps the recorded point for unnamed or off-screen anchors, and recording anchors on the clicked control instead of its window. A failed self-healing lookup is now a failed step. OpenCV errors in video motion and preprocessing are contained, 16-bit scans stay visible, the HTML report builds in linear time, and D-Bus addresses are unescaped (U-20260925-55).
  • Perceptual diff contains OpenCV errors and checks its budget on the unrounded ratio. Text regions are returned in screen coordinates, and match_rotated_all returns every match. Actionability reads falsy probes and NumPy tokens correctly. The generated project example validates, and grid fill counts a spanning box once (U-20260926-01).

Python 3.15

  • Windows console output is decoded in its code page, and the SBOM skips distributions without metadata (U-20260925-51).

Each entry in docs/updates/2026-09-d.md lists the tests that fail on the old code. The full headless suite passed locally before each push.

…fault UTF-8 mode, where the locale default says UTF-8, and skip distributions without metadata in the SBOM, which 3.15 raises for
…d frame's origin, so clicks land where the viewer clicked on a second monitor, a region, or a virtual desktop reaching above the primary screen
…n that screen in its logical pixels, through shared conversions in gui/_screen_geometry.py
…ere but macOS, where captures and the pointer take points
…anchors and anchor on controls rather than windows, treat a failed heal as a failed step, contain OpenCV errors in video motion and preprocessing, keep 16-bit scans visible, build the HTML report in linear time, and unescape D-Bus addresses
…ff, answer text regions in screen coordinates, find every rotated match, read falsy enabled probes and NumPy tokens in actionability, validate the generated project example, and count spanning grid boxes once
@codacy-production

codacy-production Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 1167 complexity · -7 duplication

Metric Results
Complexity 1167
Duplication -7

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

…inite consensus points, find columns left of x = 0, leave variable sleeps alone in the recording editors, unwrap action files in the flow debugger, and take one compliance framework as a string
… stay out of records, return colour matches in screen coordinates without matching blank backgrounds, keep mark labels beside their marks, match JSON snapshots to their own payloads, and reject null, containers and unknown types in config schemas
…e variables survive, classify dark-theme widgets, collate ß as ss, take whole floats and any length in checksums, keep the IME wait inside its deadline, keep common terms in TF-IDF and find CJK words inside sentences, trust unique ccorr matches, read OCR text in postconditions, and take every element shape in reading flow
… in its hint, since most said left, top, right, bottom while capturing x, y, width, height
…s, where Pillow's bbox grab saw only the primary one and returned black, answer colour blobs from a region in screen coordinates, and sample AC_wait_actionable's stability where the target was matched
…mixed, huge and bool columns, find short and 16-bit lines, annotate 16-bit screenshots in tone, read only finished runs for test selection, sharding and flakiness, let 0 s steps regress, and refuse empty mining lengths and baggage keys
…on SonarCloud reads as a constant-false typo
… the main display, blocked on Jeffrey_RPA's live capture path
…now interactive roles in every platform's spelling and leave disabled controls out of the Tab order, measure quality and motion on 8-bit frames, give minimized windows no client point, and refuse a NaN focus wait
…ool("false") turned ignore_case and paste on and re-raised in AC_try
…ar macOS fields with Backspace, refuse a missing dataset key and compare cells as rows are compared, keep one-name runs whole and pair only tests that failed together, refuse unknown critic effects and bad TOTP times and windows, and deep-copy merged configs
…val artifacts as JSON, keep quarantine files consistent across processes, refuse non-positive renewal intervals and serialise renewals, accept NumPy bboxes in force mode, report plugins that fail to import, and refuse NaN or negative timeline durations
…ct points there as every other platform expects scaled pixels
…entre sub-pixel matches on the right pixel, save rbac changes before applying them and hand out frozen copies, mask secrets in nested bundle values, refuse malformed rubrics, and release an aborted drag where it stopped
… backend, and stop the recorder replay test moving the real cursor
… app-idle wait inside its deadline, validate retry jitter and caps, refuse asset values their type cannot hold, copy memory-store reads under the lock, keep hand-written skill tags whole and bound self-calling skills, refuse blank locators, and report saga rollback errors over MCP
…oroutines and the Opus track, instead of get_event_loop()
…STs inline on a concurrent server, gate ac_egress_reset and ac_approve_artifact as destructive, log instead of failing on an unwritable audit log, accept root arrays in the JSON tools, and answer malformed JSON-RPC envelopes with -32600
…nners failed on the Backspace key macOS now clears with
…n the Actions-menu slots, report a recording that did not start, crop templates into non-ASCII folders, keep the HUD's own sampling out of its log, and stop the tabs menu leaking on every rebuild
…he hotplug watcher by count so one tab no longer stops another's, move email Poll now and Admin broadcast off the GUI thread, and keep one CallWorker
…catch the next main-window import that forgets to
…tate in the Hotkeys, Scheduler and Triggers tabs, including after Tools > Start
…ts a trailing newline or non-ASCII digits, and decide multipleOf past float range instead of raising OverflowError
…acter, and refuse the strings and indices RFC 9535 forbids instead of matching something else
…rseError from defusedxml, clearing Codacy's last findings on PR #490
…cate Cache-Control directives, and answer is_not_modified for any status
…olicy does not name (RFC 7519 4.1.3), and keep non-JSON claims inside JwtError
…/path into a host, normalise the query before sorting it, and keep an empty ? or #
…lid Max-Age or Expires decide, take Max-Age as ASCII digits only, and ignore a Set-Cookie with a control character
…an unquoted parameter no longer swallows the next link
…its grammar instead of writing them back out, parse tracestate in linear time, and validate a hand-built trace context before formatting it
…ing whitespace, parse an unclosed quote in linear time, skip a BOM, and refuse to dump a key the parser cannot read back
…o a field value cannot inject a part, and read only the boundary parameter
…gettext readers fall back to the msgid instead of showing an empty string
…ep DTSTART's microseconds, let count/until narrow a rule, apply DAILY BYSETPOS, end a series by its gap instead of a fixed 400 years, and refuse rule parts RFC 5545 forbids
…r, and recognise problem+json only as the Content-Type media type
…ck to Babel instead of English, compare =N selectors as numbers, and reject the patterns ICU rejects
@sonarqubecloud

Copy link
Copy Markdown

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant