Repository navigation
One universal py3-none-any Python wheel and one source distribution are attached.
This is a source + uv release, not a standalone executable release.
Use a pinned Git release and the official Linux or Windows
source bootstrap in the installation guide.
Upgrade order matters: migrate paired legacy frozen Executors
to managed source BEFORE upgrading Control to this release.
The old binary download/update endpoints are retired; an
unmigrated frozen Executor will require explicit owner action.
See docs/guides/migrate-frozen.md.
A native Windows ARM64 cryptography wheel and its provenance are included.
Its checksum is recorded in SHA256SUMS.txt.
The universal Python wheel and source distribution are also attached.
Python package version in pyproject.toml: 5.0.0
What's Changed
- fix(remote): support unicode worker names in transfers by @rijuyuezhu in #110
- refactor: harden architecture boundaries by @rijuyuezhu in #111
- architecture: start explicit runtime migration guardrails by @rijuyuezhu in #113
- fix: address PR #113 post-merge review findings by @rijuyuezhu in #114
- fix: keep managed worker async jobs alive by @rijuyuezhu in #116
- chore: remove obsolete product and compatibility surfaces by @rijuyuezhu in #117
- feat!: rename project to Workgate by @rijuyuezhu in #119
- chore: prepare v5.0.0a1 release by @rijuyuezhu in #120
- feat: unify Workgate application paths by @rijuyuezhu in #122
- refactor: define control/executor protocol contracts by @rijuyuezhu in #124
- refactor: establish control and executor composition roots by @rijuyuezhu in #125
- fix: resolve executor workspace before runtime build by @rijuyuezhu in #126
- refactor: add stateful control persistence by @rijuyuezhu in #127
- refactor: add executor transport and reconnect by @rijuyuezhu in #128
- refactor: add executor pairing and administration by @rijuyuezhu in #129
- refactor: route shared sessions through executors by @rijuyuezhu in #130
- refactor: enforce executor physical ownership by @rijuyuezhu in #131
- refactor: add control-owned immutable payloads by @rijuyuezhu in #132
- refactor: make cross-executor session copy durable by @rijuyuezhu in #133
- refactor: rediscover executor jobs and shells by @rijuyuezhu in #138
- feat: add ephemeral terminal stream plane by @rijuyuezhu in #141
- refactor: add simple VPS production control milestone by @rijuyuezhu in #143
- refactor: add standalone two-process mode by @rijuyuezhu in #145
- refactor: add hosted control feasibility adapter by @rijuyuezhu in #146
- feat: add deployable Cloudflare hosted provider by @rijuyuezhu in #147
- refactor: finish control/executor migration cleanup by @rijuyuezhu in #152
- docs: simplify deployment and configuration guidance by @rijuyuezhu in #153
- feat: define managed cloudflared lifecycle by @rijuyuezhu in #154
- test: add deployment topology acceptance coverage by @rijuyuezhu in #155
- refactor: finish control executor cleanup audit by @rijuyuezhu in #157
- feat: add durable session task state by @rijuyuezhu in #139
- feat: add session-owned structured browser automation by @rijuyuezhu in #140
- Add managed executor service lifecycle by @rijuyuezhu in #142
- feat: add Live Workspace for explicit session handoff by @rijuyuezhu in #144
- security: refresh vulnerable locks and harden supply-chain defaults by @rijuyuezhu in #215
- config: validate runtime numeric settings at load time by @rijuyuezhu in #216
- auth: restrict localhost bypass to direct requests by @rijuyuezhu in #217
- server: add explicit practical runtime controls by @rijuyuezhu in #218
- policy: remove command and path denylist heuristics by @rijuyuezhu in #219
- skills: support symlink-composed Skill trees by @rijuyuezhu in #220
- mcp: compact model-facing structured tool responses by @rijuyuezhu in #221
- shell: add configurable subprocess environment filtering by @rijuyuezhu in #222
- architecture: separate task identity from execution sessions by @rijuyuezhu in #223
- executor: replace workspace boundary with default workdir by @rijuyuezhu in #224
- executor: bootstrap fresh machines through device-code pairing by @rijuyuezhu in #228
- executor: add install-aware managed runtime updates by @rijuyuezhu in #229
- executor: add fleet discovery and administration by @rijuyuezhu in #230
- transfer: default public session_copy overwrite to false by @rijuyuezhu in #231
- transfer: make managed background copy the public default by @rijuyuezhu in #232
- transfer: keep same-executor copies executor-local by @rijuyuezhu in #233
- transfer: add raw HTTP payload data plane by @rijuyuezhu in #234
- transfer: add optional object-store route by @rijuyuezhu in #236
- live workspace: add bounded task continuation by @rijuyuezhu in #237
- human ui: make tasks the durable-work entry by @rijuyuezhu in #238
- gui: add session-owned native desktop automation by @rijuyuezhu in #239
- browser: add reusable authentication state by @rijuyuezhu in #241
- browser: support CSS selector action targets by @rijuyuezhu in #242
- browser: add session-scoped bounded Playwright script tool by @rijuyuezhu in #243
- browser: include bounded network timeline in snapshots by @rijuyuezhu in #245
- browser: capture managed screenshots by default by @rijuyuezhu in #246
- agent-mcp: scope stdio calls to sessions and remove persistent workers by @rijuyuezhu in #247
- agent-mcp: replace dynamic aliases with bounded progressive disclosure by @rijuyuezhu in #248
- agent-mcp: manage integrations through owner manifests by @rijuyuezhu in #249
- agent-mcp: drop outbound legacy SSE transport by @rijuyuezhu in #250
- mcp: slim static model guidance after task and discovery refactors by @rijuyuezhu in #251
- chore: retire Cloudflare Workers hosted Control adapter by @rijuyuezhu in #253
- audit: retain owner-visible content without heuristic masking (#244) by @rijuyuezhu in #254
- audit: query the full retained hot log (#189) by @rijuyuezhu in #255
- audit: retain and query bounded cold history (#190) by @rijuyuezhu in #256
- state: generation-fenced recovery for critical control registries (#191) by @rijuyuezhu in #257
- ui: remove OpenTUI and native wheel pipeline (#192) by @rijuyuezhu in #258
- webui: synchronize live executor availability across views (#193) by @rijuyuezhu in #259
- webui: prevent stale file editor overwrites (#194) by @rijuyuezhu in #260
- webui: complete browser-native Files manager workflow (#195) by @rijuyuezhu in #261
- webui: polish persistent xterm.js terminal interaction (#196) by @rijuyuezhu in #262
- webui: replace layout and styling with upstream v5 design (#197) by @rijuyuezhu in #263
- deps: refresh compatible Python lockfile (#265) by @rijuyuezhu in #267
- mcp: SDK v2, truthful metadata, and stable Live Workspace remounts (#207) by @rijuyuezhu in #264
- http: derive debug tool API directly from MCP (#209) by @rijuyuezhu in #268
- docs/install: use pinned GitHub uvx and pipx sources (#198) by @rijuyuezhu in #269
- ci: build and smoke standalone binaries before release (#199) by @rijuyuezhu in #270
- release: gate publication on current-main green CI (#200) by @rijuyuezhu in #271
- platform: remove Windows support completely (#201) by @rijuyuezhu in #272
- cli: scope command flags and hide internal runners (#208) by @rijuyuezhu in #273
- repo: consolidate metadata and toolchain contracts (#213) by @rijuyuezhu in #274
- github: protect main with stable CI gate (#211) by @rijuyuezhu in #275
- tests: group suite by ownership and localize fixtures (#205, #206) by @rijuyuezhu in #276
- docs: generic MCP and stdio client onboarding (#202) by @rijuyuezhu in #277
- docs: simplify operator security guidance and retire audits (#203) by @rijuyuezhu in #278
- chore: record upstream v5.0.0 as Git ancestor (no source changes) by @rijuyuezhu in #279
- fix(agent-bridge): fail closed on unavailable redaction context by @rijuyuezhu in #290
- refactor(control): share HTTP route composition across MCP and REST by @rijuyuezhu in #291
- test: replace retired-design assertions with current contracts by @rijuyuezhu in #292
- refactor(downloads): reject unsupported stores without destructive migration by @rijuyuezhu in #293
- refactor(transfer): single durable abandonment authority in copy checkpoints by @rijuyuezhu in #294
- refactor(tools): remove unused private Transfer registry by @rijuyuezhu in #295
- fix(executor): log unexpected terminal stream failures without secrets by @rijuyuezhu in #296
- docs(deploy): clarify control-only VPS and Cloudflare Tunnel by @rijuyuezhu in #297
- refactor(state): remove unreleased session-to-task migration by @rijuyuezhu in #298
- refactor: replace standalone with minimal colocate launcher by @rijuyuezhu in #300
- feat(colocate): install systemd user service by @rijuyuezhu in #302
- chore: prepare v5.0.0a2 release by @rijuyuezhu in #303
- fix(ci): unblock Docs deployment concurrency by @rijuyuezhu in #305
- fix(executor): isolate PyInstaller loader env for bounded shell runner by @rijuyuezhu in #304
- chore: prepare v5.0.0a3 release by @rijuyuezhu in #306
- fix(macos): handle unrelated zombies during coalition cleanup by @rijuyuezhu in #312
- test(transfer): resolve scratch paths using executor context by @rijuyuezhu in #314
- fix(webui): enlarge Audit details and allow one-pane expansion by @rijuyuezhu in #313
- fix(webui): preserve interactive state during background polling by @rijuyuezhu in #315
- feat(webui): redirect / to the configured WebUI path by @rijuyuezhu in #317
- fix(terminal): support concurrent tmux clients and test remote streams by @rijuyuezhu in #316
- fix(webui): make terminal executor switching and reattach race-safe by @rijuyuezhu in #318
- style(oauth): align authorization page with WebUI by @rijuyuezhu in #320
- docs: correct WebUI entry and executor access guidance by @rijuyuezhu in #321
- fix(gui): make Wayland actions and portal capabilities fail safely by @rijuyuezhu in #322
- fix(gui): correct portal device bits and support Niri window capture by @rijuyuezhu in #323
- refactor(gui): compose Linux desktop operations by capability by @rijuyuezhu in #325
- feat(gui): opt-in Niri native virtual keyboard by @rijuyuezhu in #327
- gui: validate Niri native pointer target geometry before injection by @rijuyuezhu in #328
- fix(gui): support safe Niri element_id-only pointer actions by @rijuyuezhu in #330
- fix(gui): allow semantic element click before native window activation by @rijuyuezhu in #332
- feat(gui): validate Niri transformed pointer input and guarded drag (#326) by @rijuyuezhu in #333
- feat(webui): add session-bound native GUI viewer (#334) by @rijuyuezhu in #335
- feat(webui): add manual GUI input for selected session (#336) by @rijuyuezhu in #337
- webui: send GUI wheel and keyboard input from focused screenshot (#338) by @rijuyuezhu in #339
- feat(transfer): prepare one-shot Tailnet peer receivers (#188) by @rijuyuezhu in #340
- feat(transfer): stream peer-direct payload from source executor (#188 phase 2) by @rijuyuezhu in #341
- feat(transfer): automatically select peer-direct with safe fallback (#188 phase 3) by @rijuyuezhu in #342
- test(transfer): validate transparent peer routing in real-process E2E (#188 phase 4) by @rijuyuezhu in #343
- chore(release): prepare v5.0.0a4 prerelease by @rijuyuezhu in #344
- ui: show Executor avatar and friendly name on Sessions by @rijuyuezhu in #360
- ui: keep timestamps and identifiers readable across WebUI by @rijuyuezhu in #362
- ui: manage Task lifecycle from Task details by @rijuyuezhu in #363
- ui: filter and page Task summaries on demand by @rijuyuezhu in #364
- control: implicitly create and attach a Task on session_start by @rijuyuezhu in #365
- ui: add on-demand Executor Agent, MCP and Skill diagnostics by @rijuyuezhu in #366
- agent: secure Executor-managed Skill CRUD and enablement by @rijuyuezhu in #369
- ui: owner-scoped MCP and Skill management workspace by @rijuyuezhu in #370
- ui: apply MCP location changes in existing editor (#368) by @rijuyuezhu in #375
- agent/ui: Control-wide Skill precedence and management (#354) by @rijuyuezhu in #377
- fix(agent): invalidate public MCP discovery after WebUI changes (#378) by @rijuyuezhu in #379
- ui: show Project Skills in Session detail (#374) by @rijuyuezhu in #380
- ui: manage auxiliary files in Executor Skill bundles (#376) by @rijuyuezhu in #393
- control: on-demand, measured Executor Peer Direct link checks (#352) by @rijuyuezhu in #396
- ui: interactive Executor Peer topology graph (#353) by @rijuyuezhu in #398
- runtime: supervise CLI roles with a stable Parent (#355) by @rijuyuezhu in #399
- ui: inspect effective role settings with explicit config-admin permission (#356) by @rijuyuezhu in #400
- ui: validate and atomically save role-owned configs (#357) by @rijuyuezhu in #403
- ui: apply saved config via Parent-managed Child restart (#358) by @rijuyuezhu in #406
- control: conservatively block confirmed idle Tasks (#359) by @rijuyuezhu in #411
- fix(control): align Task idle detection with Job activity and claim TTL (#346) by @rijuyuezhu in #413
- fix: create_file_link for multi-chunk files (#408) by @rijuyuezhu in #409
- diagnostics(jobs): preserve missing completion receipt evidence (#397) by @rijuyuezhu in #416
- fix(control): decouple session admission and idle retention (#415) by @rijuyuezhu in #419
- test(browser): avoid ambiguous mtime ties in screenshot pruning (#412) by @rijuyuezhu in #422
- fix(agent): avoid probing shadowed Control MCP servers (#373) by @rijuyuezhu in #424
- feat(ui): unify Control and Executor detail workspace (#401) by @rijuyuezhu in #425
- style(ui): declutter WebUI labels and align enabled MCPs (#372) by @rijuyuezhu in #429
- feat(ui): browser OAuth for Control-owned HTTP MCP (#371) by @rijuyuezhu in #430
- WIP: Windows support parity on rebased main (#381 / #392) by @rijuyuezhu in #441
- test(topology): verify sustained Control outage and recovery on native Windows (#392) by @rijuyuezhu in #443
- fix(supervisor): fail early on unsafe Windows config path aliases (#442) by @rijuyuezhu in #448
- test(windows): retire two superseded ConPTY smoke scripts (#444) by @rijuyuezhu in #447
- docs(windows): record completed native bootstrap and real two-host QA (#392) by @rijuyuezhu in #450
- test(control): remove idle-expiry boundary flake (#449) by @rijuyuezhu in #451
- test(windows): atomically publish ConPTY descendant PID (#452) by @rijuyuezhu in #453
- chore(deps): bump certifi from 2026.7.22 to 2026.10.19 by @dependabot[bot] in #445
- chore(deps): bump pillow from 12.3.0 to 13.0.0 by @dependabot[bot] in #446
- chore(release): prepare v5.0.0a5 prerelease by @rijuyuezhu in #454
- perf(audit): incrementally cache query and detail history (#460) by @rijuyuezhu in #464
- fix(windows): suppress console windows from non-interactive executor tools (#463) by @rijuyuezhu in #465
- perf(webui): progressive startup and independent integration sources (#461) by @rijuyuezhu in #466
- feat(control): native user service for uv source installations (#456) by @rijuyuezhu in #467
- feat(install): versioned full-extras uv source preparation (#456) by @rijuyuezhu in #468
- feat(control): private one-time OAuth config initialization (#456) by @rijuyuezhu in #469
- feat(executor): pair then install native service in one setup command (#456) by @rijuyuezhu in #470
- feat(colocate): owner-approved local first-run setup by @rijuyuezhu in #471
- feat(install): compose pinned source preparation and three native role setups (#456) by @rijuyuezhu in #472
- feat(install): SHA-pinned public GitHub Linux/Windows bootstrap (#456) by @rijuyuezhu in #473
- fix(install): refuse implicit native service reinstall before setup (#456) by @rijuyuezhu in #474
- feat(install): native Windows ARM64 static cryptography source fallback (#459) by @rijuyuezhu in #476
- fix(webui): retry failed MCP/Skill sources independently (#461) by @rijuyuezhu in #479
- perf(webui): skip no-op Executor inventory DOM writes (#461) by @rijuyuezhu in #480
- ci(arm64): build and verify pinned static cryptography wheel (#475) by @rijuyuezhu in #477
- feat(install): opt-in SHA-pinned native ARM64 cryptography wheel (#475) by @rijuyuezhu in #481
- feat(arm64): use regular GitHub Release wheel with automatic SHA256 (#475) by @rijuyuezhu in #482
- fix(install): reject installed services before source preparation (#456) by @rijuyuezhu in #483
- perf(webui): pause hidden-tab read polling, preserve terminal keepalive (#461) by @rijuyuezhu in #484
- fix(webui): scrub stale Audit on permission loss (#461) by @rijuyuezhu in #485
- fix(webui): clear Dashboard task shortcuts on auth loss (#461) by @rijuyuezhu in #486
- fix(webui): abort stale Audit GETs when navigating away (#461) by @rijuyuezhu in #489
- fix(install): resolve YAML paths before role checkout setup (#456) by @rijuyuezhu in #491
- feat(install): automatically bootstrap uv after release verification (#456) by @rijuyuezhu in #492
- feat(install): stage source release without switching stable launcher (#456) by @rijuyuezhu in #493
- fix(install): fail closed on loaded Control/Colocate systemd units (#456) by @rijuyuezhu in #494
- fix(executor): verify native Windows task action before runtime-current (#456) by @rijuyuezhu in #495
- fix(executor): verify effective Linux systemd ExecStart before runtime-current (#456) by @rijuyuezhu in #496
- feat(install): explicit staged Linux Control switch and rollback (#456) by @rijuyuezhu in #497
- feat(install): explicit staged Linux Colocate cutover and rollback (#456) by @rijuyuezhu in #498
- feat(install): staged Linux Executor cutover with paired rollback (#456) by @rijuyuezhu in #499
- feat(install): staged Windows Control/Colocate switch with native rollback (#456) by @rijuyuezhu in #500
- fix(executor): unblock Windows reconnect with terminal historical jobs by @rijuyuezhu in #504
- feat(install): staged Windows Executor cutover with pairing-safe rollback (#456) by @rijuyuezhu in #503
- chore(release): prepare v5.0.0a6 source installer acceptance candidate (#456) by @rijuyuezhu in #505
- fix(install): preflight legacy Control targets before cutover (#456) by @rijuyuezhu in #506
- fix(executor): prevent Windows session orientation pipe-timeout hangs (#502) by @rijuyuezhu in #507
- fix(executor): retry transient local reconnect failures (#502) by @rijuyuezhu in #508
- feat(executor): show real connection state alongside native service status (#502) by @rijuyuezhu in #509
- feat(install): safely adopt paired legacy Windows Executor into pinned source release (#456) by @rijuyuezhu in #510
- fix(install): make identical verified source installer reruns no-op (#456) by @rijuyuezhu in #511
- refactor(install): share pinned release identity verification (#501) by @rijuyuezhu in #512
- refactor(webui): centralize duplicate JSON success responses (#515) by @rijuyuezhu in #519
- test(windows): answer PowerShell ConPTY cursor-position query in native smoke (#513) by @rijuyuezhu in #520
- feat(executor): re-hello on Control heartbeat version changes (#458) by @rijuyuezhu in #522
- feat(executor): verify managed source provenance before auto-update (#458) by @rijuyuezhu in #523
- feat(executor): stage exact published uv source release without switching (#458) by @rijuyuezhu in #524
- feat(executor): preflight active resources before source cutover (#458) by @rijuyuezhu in #525
- feat(executor): include ephemeral resources in source cutover safety check (#458) by @rijuyuezhu in #526
- feat(executor): stage managed uv source on Control version mismatch (#458) by @rijuyuezhu in #527
- feat(executor): isolate Linux source cutover in transient user service (#458) by @rijuyuezhu in #528
- feat(executor): Windows cutover handoff via expiring Task Scheduler task (#458) by @rijuyuezhu in #529
- feat(executor): gate native source cutover handoff on prepared idle state (#458) by @rijuyuezhu in #530
- feat(executor): fence protocol commands during source cutover handoff (#458) by @rijuyuezhu in #531
- fix(executor): retry transient managed source staging failures (#458) by @rijuyuezhu in #532
- feat(executor): integrate managed source staging with safe native cutover (#458) by @rijuyuezhu in #533
- fix(executor): verify dispatched release before clearing update state (#458) by @rijuyuezhu in #534
- chore(release): prepare v5.0.0a7 alpha by @rijuyuezhu in #535
- fix(windows/arm64): scope crypto legacy provider; prepare v5.0.0a8 (#536) by @rijuyuezhu in #537
- chore(release): prepare v5.0.0a9 alpha for managed-source upgrade acceptance by @rijuyuezhu in #539
- fix(executor): permit supervisor IPC FD in source handoff (#458) by @rijuyuezhu in #540
- chore(release): prepare v5.0.0a10 source auto-upgrade baseline by @rijuyuezhu in #541
- chore(release): prepare v5.0.0a11 for source auto-upgrade acceptance by @rijuyuezhu in #542
- fix(executor): unblock source cutover for confirmed-absent lost jobs (#458) by @rijuyuezhu in #543
- feat(install): explicitly adopt owned Linux Colocate without restart (#456) by @rijuyuezhu in #544
- test(install): verify private first-run Control CLI and isolated HTTP startup (#456) by @rijuyuezhu in #545
- test(install): verify native Control lifecycle and safe source installer reruns (#456) by @rijuyuezhu in #546
- test(install): verify paired Colocate native lifecycle without touching user services (#456) by @rijuyuezhu in #547
- fix(executor): refuse unowned Linux systemd unit replacement (#456) by @rijuyuezhu in #548
- test(install): complete standalone Executor native lifecycle acceptance (#456) by @rijuyuezhu in #549
- test(install): preserve native services when receipt predates source cutover (#456) by @rijuyuezhu in #550
- docs(install): publish verified a11 one-step role entrypoints (#456) by @rijuyuezhu in #551
- fix(colocate): detect free loopback port by bind on Windows (#552) by @rijuyuezhu in #553
- release: stage v5.0.0a12 candidate for source installer acceptance (#456) by @rijuyuezhu in #554
- test(windows): tolerate slow Task Scheduler CI smoke within bounded timeout (#456) by @rijuyuezhu in #555
- docs(install): use published v5.0.0a12 SHA-pinned bootstrap (#456) by @rijuyuezhu in #556
- feat(release): atomically retire standalone/frozen delivery for source + uv (#457) by @rijuyuezhu in #561
- test(windows): prove managed Executor reconnect without Task Scheduler restart (#502) by @rijuyuezhu in #562
- feat(logging): share Control logging setup with Executor runtime (#521) by @rijuyuezhu in #563
- feat(logging): log deduplicated Executor connection state changes (#521) by @rijuyuezhu in #564
- feat(logging): report Supervisor child exits and rollback outcomes (#521) by @rijuyuezhu in #565
- feat(logging): summarize managed Job failures without payloads (#521) by @rijuyuezhu in #566
- feat(logging): enable safe Workgate INFO by default (#521) by @rijuyuezhu in #567
- fix(logging): retain bounded Windows log history at startup (#568) by @rijuyuezhu in #569
- chore(release): prepare v5.0.0a13 alpha by @rijuyuezhu in #570
- feat(macos): managed Executor source auto-upgrade via launchd (#571) by @rijuyuezhu in #572
- fix(file-link): proxy-safe remote snapshots and HTTP 413 results by @rijuyuezhu in #575
- docs: reader-first guides, canonical installation, and contributor principles by @rijuyuezhu in #576
- refactor: remove unused Audit and Session wrappers (#514) by @rijuyuezhu in #577
- fix(colocate): pin YAML against imported systemd environment (#514) by @rijuyuezhu in #578
- refactor: retire frozen-only child process entrypoints (#514) by @rijuyuezhu in #579
- feat(mcp-app): preview Executor images inline in ChatGPT (#490) by @rijuyuezhu in #580
- chore(deps): consolidate four Dependabot lock updates by @rijuyuezhu in #581
- feat(install): Latest, Stable and Dev installation channels by @rijuyuezhu in #583
- chore(release): bump package to v5.0.0a14 by @rijuyuezhu in #582
- test(windows): use actual SID in paired-service smoke by @rijuyuezhu in #587
- fix(executor): find user uv during managed source staging by @rijuyuezhu in #588
- fix(windows): prevent early ConPTY Job lost via pythonw runner by @rijuyuezhu in #589
- chore(release): bump package to v5.0.0a15 by @rijuyuezhu in #590
- fix(macos): inherit configured system proxy for source staging by @rijuyuezhu in #593
- fix(windows): scope source cutover task to target release by @rijuyuezhu in #594
- fix(control): safely reconcile stale creating sessions after complete Hello by @rijuyuezhu in #595
- refactor(webui): share OAuth scope error handling (#514) by @rijuyuezhu in #597
- fix(colocate): verify Linux service ownership before native actions by @rijuyuezhu in #598
- fix(executor): log safe reconnect request failure context by @rijuyuezhu in #600
- perf(executor): scan job protection once per reconnect inventory by @rijuyuezhu in #602
- perf(executor): skip full shell reconciliation for proven-absent lost jobs by @rijuyuezhu in #604
- test(windows): atomically publish supervisor smoke PID files by @rijuyuezhu in #606
- test(control): preserve Task history on retired Executor force-release by @rijuyuezhu in #607
- chore(release): prepare v5.0.0a16 by @rijuyuezhu in #608
- chore(release): prepare v5.0.0a17 by @rijuyuezhu in #609
- fix(executor): refresh Windows GUI capability after desktop unlock by @rijuyuezhu in #610
- chore(release): prepare v5.0.0a18 by @rijuyuezhu in #611
- fix(windows): preserve limited Executor task access after elevated source switch by @rijuyuezhu in #613
- chore(release): prepare v5.0.0a19 by @rijuyuezhu in #614
- fix(windows): preserve limited Executor Task Scheduler update access by @rijuyuezhu in #615
- chore(release): prepare v5.0.0a20 by @rijuyuezhu in #616
- fix(windows): safely reuse completed same-version cutover task by @rijuyuezhu in #617
- chore(release): prepare v5.0.0a21 by @rijuyuezhu in #618
- fix(secret_scan): report unreadable files in scan results by @rijuyuezhu in #620
- chore(release): prepare v5.0.0 stable by @rijuyuezhu in #621
New Contributors
- @dependabot[bot] made their first contribution in #445
Full Changelog: v4.3.1...v5.0.0