Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
e425fac
Call every adapter, with a stub grown from the callee's own contract
JE-Chen Aug 23, 2026
4ec0c03
Resolve the swept module path against the package, not just "not stdlib"
JE-Chen Aug 23, 2026
79dc259
Measure coverage with the WebRTC extra, so the subsystem is measured …
JE-Chen Aug 23, 2026
e2a7a58
Sweep a third registry, and reach the callees the contract hid behind
JE-Chen Aug 23, 2026
0498a86
Test what the trust store decides while nobody is watching
JE-Chen Aug 23, 2026
b0d6d5f
Test the auth boundary and the link arithmetic, and raise the floor t…
JE-Chen Aug 23, 2026
9cfbebf
Record the WebRTC decision, the new floor, and where the last five po…
JE-Chen Aug 23, 2026
5ba623c
Test the file channel and the media renegotiation the extra just unlo…
JE-Chen Aug 23, 2026
abb29fa
Ratchet the floor to 75 and re-read the matrix after the WebRTC tests
JE-Chen Aug 23, 2026
81ca550
Test the last five WebRTC modules, which never needed the split
JE-Chen Aug 23, 2026
dc3c61d
Test the window backends, which were never Linux-only to test
JE-Chen Aug 23, 2026
090c5c0
Test the accessibility backends, and fix 37 guards that caught nothing
JE-Chen Aug 23, 2026
3fbc0a2
Test the hotkey backends, and stop X11 leaking the key you rebound
JE-Chen Aug 24, 2026
2c947ba
Record where the coverage climb stands: 82.40 locally, floor waits on CI
JE-Chen Aug 24, 2026
fc50ffb
Read the AX value constants from the framework that declares them
JE-Chen Aug 24, 2026
7b98e8a
Raise the fixture's error through a parameter, not a dict subscript
JE-Chen Aug 24, 2026
fdf40d5
Build the real object when an adapter's callee is a class
JE-Chen Aug 24, 2026
5efb03e
Stop what the sweep starts, and refuse to leave a thread behind
JE-Chen Aug 24, 2026
682cec6
Patch the bridge on the module that actually reads it
JE-Chen Aug 24, 2026
0e8e25b
Raise the floor to 81, which meets the target set on 2026-08-23
JE-Chen Aug 24, 2026
7fb3bcd
Move WHATS_NEW and finished Progress history into docs/updates
JE-Chen Sep 22, 2026
48feffc
Record mouse side buttons in the Windows hook
JE-Chen Sep 22, 2026
c37478b
Release held keys when hotkey or type_keyboard fails
JE-Chen Sep 22, 2026
fba0e2a
Measure the map rows the line-count gate was silently skipping
JE-Chen Sep 22, 2026
d203d82
Split the QA adapters out of the MCP handler module
JE-Chen Sep 22, 2026
62200dc
Keep a stopped USB poller from coming back after a restart
JE-Chen Sep 22, 2026
6bc3126
Pin the CLI flags and names other repositories call
JE-Chen Sep 22, 2026
c0089af
Claim update-log IDs under an atomic lock
JE-Chen Sep 22, 2026
f2a7bce
Bring the READMEs and CLAUDE.md back in line with the tree
JE-Chen Sep 22, 2026
178ca10
Give every released version its own CHANGELOG section
JE-Chen Sep 22, 2026
3614763
Stop listening on branches that no longer receive work
JE-Chen Sep 22, 2026
e92f512
Quote today's coverage floor and mypy exemptions in the map
JE-Chen Sep 22, 2026
2f73f10
Guard the map's coverage floor and mypy exemption count
JE-Chen Sep 22, 2026
6f7a58b
Give every background run its own stop event
JE-Chen Sep 22, 2026
e94f6bd
Keep a stopped remote desktop run out of the next one
JE-Chen Sep 22, 2026
369067a
Never let the scheduler start a job that is still running
JE-Chen Sep 22, 2026
6002778
Map Windows 'down' to the arrow key and keep touchpad wheel fractions
JE-Chen Sep 22, 2026
8cf0f93
Raise the pypdf floor and refresh the lock for open security alerts
JE-Chen Sep 22, 2026
5714a59
Keep the log file out of the working directory
JE-Chen Sep 22, 2026
677af9b
Let a stopped USB watcher keep its first inventory
JE-Chen Sep 22, 2026
1d49b91
Say why at every broad except that swallows, and gate it in CI
JE-Chen Sep 22, 2026
329cea3
Read pixels with get_flattened_data before Pillow 14 removes getdata
JE-Chen Sep 22, 2026
d98911a
Enforce the 120-column limit and keep test runs out of the shared log
JE-Chen Sep 22, 2026
dfb0e5e
Tell mypy what get_flattened_data returns for an RGB image
JE-Chen Sep 22, 2026
0d2c1e4
Give a test run its own home, and split six themes out of _handlers
JE-Chen Sep 22, 2026
b8a310a
Stop forcing the host application's root logger to DEBUG
JE-Chen Sep 22, 2026
1b21788
Bring _handlers.py under the line limit, by what the code imports
JE-Chen Sep 22, 2026
4022565
Record the pytest11 entry point's import cost as a decision
JE-Chen Sep 22, 2026
29892be
Answer the review, and make the 750-line limit a gate
JE-Chen Sep 22, 2026
ff30188
Measure the complexity limit in CI, and split the one function over it
JE-Chen Sep 22, 2026
ac93744
Make flow control do what the script says in seven edge cases
JE-Chen Sep 22, 2026
8bf2071
Refuse approval of a WebRTC viewer that never sent the token
JE-Chen Sep 22, 2026
9796a8b
Close three USB passthrough ACL bypasses and release claims on discon…
JE-Chen Sep 22, 2026
e7d0d1b
Refuse cross-site and cross-session requests on the MCP HTTP server
JE-Chen Sep 22, 2026
8bf3705
Make cron follow standard cron and stop triggers losing events
JE-Chen Sep 22, 2026
8dbc27c
Enforce action signatures on every path that runs a file
JE-Chen Sep 22, 2026
2e20d32
Keep vault passphrases out of logs and make the vault rekey atomic
JE-Chen Sep 22, 2026
3264ef7
Satisfy the typing contract and bandit on the audit fixes
JE-Chen Sep 22, 2026
033b332
Record the cryptography floor as a maintainer decision
JE-Chen Sep 22, 2026
952c34f
Move CI actions to their Node 24 majors
JE-Chen Sep 22, 2026
bc55ab8
Keep reports well-formed and stop hiding failed report writes
JE-Chen Sep 22, 2026
a8c12fd
Contain data-command errors and check every redirect against egress
JE-Chen Sep 22, 2026
9ba90a5
Write received files atomically and hold transfers to their size
JE-Chen Sep 22, 2026
1c42e91
Keep credentials off redirected hosts and route integrations through …
JE-Chen Sep 22, 2026
d30f141
Fix the PDF wrapper without pypdf and the CI findings on the audit work
JE-Chen Sep 22, 2026
557af25
Close store connections, reclaim stuck work items, keep the audit chain
JE-Chen Sep 22, 2026
360d2a8
Replace JSON store files atomically and stop losing counts and log lines
JE-Chen Sep 22, 2026
8ecbf98
Fail the run command on failed actions and fix hotkey key codes
JE-Chen Sep 22, 2026
e83d21a
Lock and re-read JSON stores that several processes share
JE-Chen Sep 22, 2026
acf137a
Close codegen injection and scope USB/IP, TLS keys, signaling, relay
JE-Chen Sep 23, 2026
549baca
Keep remote-desktop receive threads alive and handshake off the accep…
JE-Chen Sep 23, 2026
339ff1b
Fix DAG failure handling, FSM guards and timers, and RRULE semantics
JE-Chen Sep 23, 2026
b4b8169
Admit one half-open trial and harden config-sync and ACME error paths
JE-Chen Sep 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/action-json-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"

Expand All @@ -41,8 +41,10 @@ jobs:
python -m pip install --only-binary :all: --upgrade "pip==26.0.1"
# The spec is a documented workflow input — pinned by default so a
# lint run is reproducible, overridable so a caller can track their
# own release or a git ref.
python -m pip install "$AUTOCONTROL_REF"
# own release or a git ref. --only-binary still builds a git ref's
# own project (pip builds VCS requirements regardless) but runs no
# dependency's setup script.
python -m pip install --only-binary :all: "$AUTOCONTROL_REF"

- name: Lint action JSON files
shell: bash
Expand Down
118 changes: 0 additions & 118 deletions .github/workflows/dev.yml

This file was deleted.

52 changes: 26 additions & 26 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ name: AutoControl Docker CI

on:
push:
branches: [ "dev", "main" ]
branches: [ "main" ]
paths:
- "docker/**"
- "je_auto_control/**"
- "pyproject.toml"
- ".github/workflows/docker.yml"
pull_request:
branches: [ "dev", "main" ]
branches: [ "main" ]
paths:
- "docker/**"
- "je_auto_control/**"
Expand All @@ -25,15 +25,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Build image (no push)
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile
Expand All @@ -51,15 +51,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Rebuild image (cached)
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile
Expand Down Expand Up @@ -115,15 +115,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Build the Wayland verification image
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile.wayland
Expand Down Expand Up @@ -161,15 +161,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Build the EIS verification image
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile.eis
Expand Down Expand Up @@ -200,15 +200,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Build the portal verification image
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile.portal
Expand Down Expand Up @@ -247,15 +247,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Build the X11 verification image
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile.x11
Expand Down Expand Up @@ -295,15 +295,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Build the seat verification image
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile.seat
Expand Down Expand Up @@ -352,15 +352,15 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up Docker Buildx
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/setup-buildx-action@v3 # NOSONAR githubactions:S7637
uses: docker/setup-buildx-action@v4 # NOSONAR githubactions:S7637

- name: Build the ydotool verification image
# nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha
uses: docker/build-push-action@v5 # NOSONAR githubactions:S7637
uses: docker/build-push-action@v7 # NOSONAR githubactions:S7637
with:
context: .
file: docker/Dockerfile.ydotool
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/platform-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Platform smoke

on:
push:
branches: ["main", "dev"]
branches: ["main"]
pull_request:
branches: ["main", "dev"]
branches: ["main"]

permissions:
contents: read
Expand Down Expand Up @@ -50,8 +50,8 @@ jobs:
python-version: "3.10"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- run: python -m pip install -e . # NOSONAR githubactions:S8544 # reason: installs the checked-out project itself, there is no upstream version to lock
Expand All @@ -75,7 +75,7 @@ jobs:
FailureBundleOptions, create_failure_bundle;
create_failure_bundle('platform-smoke.zip',
options=FailureBundleOptions(screenshot=False))"
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
if: always()
with:
name: platform-smoke-${{ matrix.os }}-${{ matrix.python-version }}
Expand All @@ -88,7 +88,7 @@ jobs:
timeout-minutes: 30

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

# The X11 backend was gated on sys.platform being linux/linux2, so it
# refused to load on a FreeBSD desktop that runs the same X server, the
Expand Down Expand Up @@ -165,9 +165,9 @@ jobs:
runs-on: macos-14

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"

Expand Down
Loading
Loading