Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
c52ee90
Split composite test assertions so a failure names the condition that…
JE-Chen Nov 2, 2026
a811dcc
Name each repeated owner module once in the generated facade bindings
JE-Chen Nov 2, 2026
5e7cb6d
Leave one raising call inside each pytest.raises block
JE-Chen Nov 2, 2026
e5a77a7
Leave one raising call inside each pytest.raises block
JE-Chen Nov 2, 2026
6bfadec
Leave one raising call inside each pytest.raises block
JE-Chen Nov 2, 2026
98b38c7
Leave one raising call inside each pytest.raises block
JE-Chen Nov 2, 2026
74692a8
Name repeated placeholders and batch the Script Builder spec registra…
JE-Chen Nov 2, 2026
a933b89
Clear the static-analysis findings in the agent runtime and sync modules
JE-Chen Nov 2, 2026
362eedc
Split the facade export generator's checks into single-purpose helpers
JE-Chen Nov 2, 2026
3280575
Clear the static-analysis findings in the GUI, agent runtime and sync…
JE-Chen Nov 2, 2026
e150ff2
Keep bandit quiet on a generated owner named like a credential, and r…
JE-Chen Nov 2, 2026
733eeab
Settle the two findings the cleanup itself introduced
JE-Chen Nov 2, 2026
7375a84
Require Python 3.11 and release it as 1.2.0
JE-Chen Nov 2, 2026
4c174a1
Merge pull request #546 from Integration-Automation/fix/sonar-release…
JE-Chen Nov 2, 2026
e98675b
Merge remote-tracking branch 'origin/dev' into chore/drop-python-3.10
JE-Chen Nov 2, 2026
c48defa
Merge pull request #547 from Integration-Automation/chore/drop-python…
JE-Chen Nov 2, 2026
b5070a1
Hold the collector off around the presence reader's timed windows
JE-Chen Nov 2, 2026
d871939
Merge pull request #549 from Integration-Automation/fix/presence-read…
JE-Chen Nov 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ jobs:
fail-fast: false
matrix:
include:
- { os: windows-2022, python-version: "3.10" }
- { os: windows-2022, python-version: "3.11" }
- { os: windows-2022, python-version: "3.14" }
- { os: ubuntu-22.04, python-version: "3.14" }
- { os: macos-15, python-version: "3.10" }
- { os: macos-15, python-version: "3.11" }
steps:
- uses: actions/checkout@v5
with:
Expand Down
7 changes: 1 addition & 6 deletions .github/workflows/platform-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,7 @@ jobs:
#
# When both resolve, drop the markers from pyproject.toml.
os: [windows-2022, ubuntu-22.04, macos-15, ubuntu-22.04-arm, windows-11-arm]
python-version: ["3.10", "3.14"]
exclude:
# CPython's official Windows arm64 builds start at 3.11, so
# setup-python has no 3.10 interpreter to fetch on this runner.
- os: windows-11-arm
python-version: "3.10"
python-version: ["3.14"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,20 +68,19 @@ jobs:
# systems the project also claims to support. Linux and macOS are
# here to measure them; they carry the two ends of the supported
# Python range rather than all five, because what differs between
# 3.10 and 3.14 is Python and what differs here is the OS.
# 3.11 and 3.14 is Python and what differs here is the OS.
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- { os: windows-2022, python-version: "3.10" }
- { os: windows-2022, python-version: "3.11" }
- { os: windows-2022, python-version: "3.12" }
- { os: windows-2022, python-version: "3.13" }
- { os: windows-2022, python-version: "3.14" }
- { os: ubuntu-22.04, python-version: "3.10" }
- { os: ubuntu-22.04, python-version: "3.11" }
- { os: ubuntu-22.04, python-version: "3.14" }
- { os: macos-15, python-version: "3.10" }
- { os: macos-15, python-version: "3.11" }
- { os: macos-15, python-version: "3.14" }
steps:
- uses: actions/checkout@v5
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
python-version: [ "3.11", "3.12", "3.13", "3.14" ]

steps:
- uses: actions/checkout@v5
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# Changelog

## [1.2.0] - 2026-11-02

Python 3.11 is now the minimum. Pillow 13.0.0 and dnspython 2.9.0, the releases that fix the advisories
Dependabot reports, need 3.11. While 3.10 was supported, the package had to pin Pillow 12.3.0 for it, and the
lock kept dnspython 2.8.0. `pip` on Python 3.10 keeps installing 1.1.0.

- `requires-python` is `>=3.11`. The dependency is a single `pillow==13.0.0`, and the dnspython constraint
applies on every interpreter.
- The CI cells that ran 3.10 to cover Windows, Ubuntu and macOS now run 3.11, and mypy checks against 3.11.
- `je_auto_control.api` is unchanged.

## [1.1.0] - 2026-11-02

1.1.0 merges the development line into the release line. The development line re-implemented several
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

AutoControl (`je_auto_control`) is a cross-platform GUI automation framework: mouse and keyboard control, image recognition, OCR, accessibility-tree and VLM element location, action scripting, and report generation behind one API. Backends: Windows (Win32 ctypes), macOS (pyobjc/Quartz), Linux X11 (python-Xlib), Linux Wayland (libei / ydotool), Android (adb), iOS (WebDriverAgent).

- **Package**: `je_auto_control` · **Python** ≥ 3.10 · **License**: MIT · **Author**: JE-Chen
- **Package**: `je_auto_control` · **Python** ≥ 3.11 · **License**: MIT · **Author**: JE-Chen
- **[architecture_explore.md](architecture_explore.md)** is the per-module map — read it before changing structure; it lists all 312 `utils/` subpackages, every GUI tab, and file-level tables for the large subsystems.

## Architecture
Expand Down
1 change: 1 addition & 0 deletions Progress.md
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ U-20261009-18 的每一個裝置面呼叫都只對假的 ADB/uiautomator2/WD
`TODO` — `test/unit_test/headless/test_usb_acl_prompt.py::test_bridge_remember_persists_acl_rule`
在 Python 3.10 的 Linux/macOS `coverage run -m pytest` 中仍有間歇 SIGSEGV(exit 139)紀錄。
需在對應環境開啟 `faulthandler` 重跑並定位原生呼叫;單次重跑通過不足以證明已修復。
2026-11-02 起不再支援 Python 3.10,CI 不再跑 3.10;同一機制(分配時觸發循環回收)在 3.11 也存在,改看 3.11 的方格。

---

Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -786,8 +786,7 @@ management, the accessibility tree, the action executor, the MCP/REST/TCP
servers and the GUI all work — measured, not assumed. Every other platform
is unaffected.

**Requirements:** Python ≥ 3.10 (≥ 3.11 on Windows arm64, which is where
CPython's official builds for it start). On Linux, install build
**Requirements:** Python ≥ 3.11. On Linux, install build
prerequisites first:

```bash
Expand Down
2 changes: 1 addition & 1 deletion README/README_zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ ACME/TLS 与加密录影会抛出指名缺哪个 wheel 的错误,而不是
鼠标、键盘、屏幕尺寸、窗口管理、无障碍树、动作执行器、MCP/REST/TCP 服务器
与 GUI 都正常——这是实测的,不是推论的。其他平台不受影响。

**系统需求:** Python ≥ 3.10(Windows arm64≥ 3.11,CPython 官方构建从那里开始)。
**系统需求:** Python ≥ 3.11。
Linux 请先安装构建依赖:

```bash
Expand Down
2 changes: 1 addition & 1 deletion README/README_zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -633,7 +633,7 @@ ACME/TLS 與加密錄影會拋出指名缺哪個 wheel 的錯誤,而不是
滑鼠、鍵盤、螢幕尺寸、視窗管理、無障礙樹、動作執行器、MCP/REST/TCP 伺服器
與 GUI 都正常——這是實測的,不是推論的。其他平台不受影響。

**系統需求:** Python ≥ 3.10(Windows arm64≥ 3.11,CPython 官方建置從那裡開始)。
**系統需求:** Python ≥ 3.11。
Linux 請先安裝建置前置套件:

```bash
Expand Down
2 changes: 1 addition & 1 deletion Third_Party_License.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Full copies of the upstream license texts are archived under `LICENSEs/`.
| Package | Version | License | Purpose |
|---|---|---|---|
| [je_open_cv](https://pypi.org/project/je-open-cv/) | 0.0.22 | MIT | OpenCV-based image recognition helpers (`locate_all_image`, template match) |
| [Pillow](https://pypi.org/project/Pillow/) | 13.0.0 (12.3.0 on Python 3.10) | MIT-CMU (HPND) | Screenshot encoding, image I/O |
| [Pillow](https://pypi.org/project/Pillow/) | 13.0.0 | MIT-CMU (HPND) | Screenshot encoding, image I/O |
| [mss](https://pypi.org/project/mss/) | 10.1.0 | MIT | Fast multi-monitor screenshot backend |
| [pyobjc-core](https://pypi.org/project/pyobjc-core/) | 12.1 | MIT | macOS backend — Python/Objective-C bridge *(Darwin only)* |
| [pyobjc](https://pypi.org/project/pyobjc/) | 12.1 | MIT | macOS backend — Cocoa / Quartz bindings *(Darwin only)* |
Expand Down
Loading
Loading