SHAFT 10.3.20260722
Auto-generated release notes are included below. Users upgrading from
SHAFT_ENGINE should read the
modular SHAFT upgrade guide.
SHAFT Pilot adds deterministic Capture, TestNG generation, Doctor diagnosis,
reviewed repair proposals, and MCP interoperability. AI is optional, disabled
by default, and direct OpenAI, Anthropic, Gemini, or Ollama access requires
explicit enablement and consent. Microsoft/GitHub Copilot integrates through
MCP rather than a generic provider API-key adapter.
See the SHAFT Pilot guide
for installation, configuration, privacy, troubleshooting, and usage examples.
What's Changed
- Closes #3782: shared LookAndFeelIsolationExtension for shaft-intellij Swing tests by @MohabMohie in #3787
- Closes #3786: fix ShaftTestsPanelTest full-suite + screenshotDir breakage (missed L&F isolation, not a platform latch) by @MohabMohie in #3789
- memory: record Windows MAX_PATH supersede-shorthand gotcha (Closes #3790) by @MohabMohie in #3791
- Fix chromium double-HasCdp augmentation, green-masked example CI, and stale sample test data (#3788) by @MohabMohie in #3793
- Fix failure-screenshot exception masking the real action failure by @MohabMohie in #3796
- Fix #3794: restore UnsupportedCommandException fallback for remote CDP screenshots by @MohabMohie in #3797
- Closes #3798: freshen generated project workflow templates + guard against future drift by @MohabMohie in #3799
- Add GitHub-star CTA to console execution summary on clean runs by @MohabMohie in #3801
- Add persistent User Guide + Star SHAFT header buttons to Allure 3 reports by @MohabMohie in #3813
- Resolve loopback-sink sentinel to the tab's real BiDi browsing context by @MohabMohie in #3815
- Add pr-gate.yml: consolidated path-conditioned PR gate (Phase 1 of #3814) by @MohabMohie in #3818
- Sync stale API unit tests with the explicit-status and HEAD/OPTIONS refactors by @MohabMohie in #3819
- Skip supplementary validation evidence when rich evidence is already attached by @MohabMohie in #3823
- Quit leaked remote sessions on post-creation failure; decouple attempt timeout by @MohabMohie in #3825
- Pre-stage the classpath OpenCV native into SikuliX's libs folder by @MohabMohie in #3827
- Tee the Allure failure list into the job log, not only the step summary by @MohabMohie in #3829
- Restore automaticallyAssertResponseStatusCode after Test_LTMobAPKRelativePath by @MohabMohie in #3831
- Enable grid preflight fail-fast in nightly E2E; harden readiness and teardown by @MohabMohie in #3828
- Skip execution-summary rows for retry-suppressed attempts by @MohabMohie in #3832
- Capture the Appium server's own log in the Windows desktop nightly job by @MohabMohie in #3830
- Record six durable gotchas from the nightly-campaign and CI-overhaul session by @MohabMohie in #3834
- Match the binary attachment route on whole tokens, not raw substrings by @MohabMohie in #3835
- CI overhaul Phase 3: fold per-area PR workflows into pr-gate, narrow security.yml by @MohabMohie in #3836
- Annotate retry-suppressed console lines as Failed (retried), not Skipped by @MohabMohie in #3837
- Read the two legacy remote-server timeouts live instead of caching at class-load by @MohabMohie in #3838
- Decompose reportValidationState into focused evidence/outcome helpers (NPath 56,880 → per-method ≤4 decisions) by @MohabMohie in #3839
- Add browser-level regressions for the async-login loopback race by @MohabMohie in #3841
- Fix guidance gate: trim act-as-fable SKILL.md and shorten overlong gotcha ids by @MohabMohie in #3844
- Trim the dead rich-evidence flag from ValidationsHelper's driver paths by @MohabMohie in #3843
- Fix #3821: isolate CheckpointCounter state to stop AllureManagerCoverageUnitTest batch flake by @MohabMohie in #3847
- Escape raw control bytes reaching the console/job log sink by @MohabMohie in #3848
- Harness optimization: adopt harvested bmad-method patterns + codebase examples pass by @MohabMohie in #3850
- Fix Chromium alert auto-dismiss and invalid-select test on modern Chrome/Edge by @MohabMohie in #3851
- pr-gate: add path-conditioned unit-test leg(s) for core Java modules by @MohabMohie in #3852
- Add CheckpointCounter.resetForTesting() and route test resetters through it (#3846) by @MohabMohie in #3853
- Phase 4 of #3814: notify-nightly-failure composite for the 3 nightly workflows by @MohabMohie in #3855
- Gitignore runtime-regenerated properties/ in shaft-ai/shaft-doctor/shaft-pilot-core (#3856) by @MohabMohie in #3857
- Fix Windows_Appium_Desktop_Local: keep the Appium server alive across the test (#3806) by @MohabMohie in #3858
- CI overhaul Phase 3 sweep: remove dead validate_refresh_workflow guard (#3814) by @MohabMohie in #3859
- Agent harness revamp: Chaos Engine orchestrator + coder/reviewer/tester L1 agents by @MohabMohie in #3862
- CI overhaul Phase 5: composite dedup, sharded-report retirement, guidance-rot sweep (#3814 remainder) by @MohabMohie in #3865
- Report BrowserActionsHelper failures under the correct class by @Mochxd in #3875
- Tool architecture sweep: trim shaft-mcp to 89 tools, canonical tool-index, shaft-cli one-shots, skills router, GitHub-tracking process by @MohabMohie in #3881
- Tool sweep T4/#3870: index-fed IntelliJ deterministic tool selector by @MohabMohie in #3882
- Coverage pass: sweep new/changed classes to 80-90% (JaCoCo-measured) by @MohabMohie in #3886
- Memory: tool-sweep session gotchas by @MohabMohie in #3888
- Tool sweep T6/#3872: live E2E — every MCP/CLI service from the IntelliJ chat view by @MohabMohie in #3887
- Close-out batch 2026-07-21: coverage wiring, tool-schema, hygiene, and IntelliJ selector follow-ups (#3889) by @MohabMohie in #3891
- Follow-ups from the 2026-07-21 batch: gitignore dedupe, omitted-targetBrowser e2e, catalog-diff note, NPath flatten (#3890) by @MohabMohie in #3898
- (#3897): dedupe module-local .gitignore stubs against the root scheme by @MohabMohie in #3903
- #3902: explicit MIT license metadata across published modules by @MohabMohie in #3904
- fix #3899: driver_initialize mobile args + stale union-status test assertions by @MohabMohie in #3906
- #3900: fix pr-gate shaft-cli reactor resolution and shaded-jar false positives by @MohabMohie in #3901
- fix #3905: generate the missing Role import for ROLE-strategy locators by @MohabMohie in #3907
- shaft-mcp: fix McpMobileInitOptions schema wrongly requiring every nested field by @MohabMohie in #3911
- shaft-intellij: fix GuidedWorkflowPanel stale capture_start mode/includeSensitiveValues args by @MohabMohie in #3913
- shaft-intellij: drive element_type/element_click in live E2E after #3881 A1 tool unification by @MohabMohie in #3915
- shaft-intellij: send sessionPath/backend to unified capture_code_blocks from the guided workflow panel by @MohabMohie in #3924
- Fix grid-CI test-isolation and portability bugs (S2) by @MohabMohie in #3936
- Fix Maven Central release: extend publish poll timeout + add failure alerting by @MohabMohie in #3937
- shaft-intellij: add live E2E for the record-api-to-codegen chain by @MohabMohie in #3938
- Fix macOS nightly Local E2E heap OOM: cap surefireArgLine -Xmx1024m by @MohabMohie in #3942
- Wire the six live E2E test classes into CI (#3932) by @MohabMohie in #3941
- docs: fix retired mobile_recording_code_blocks shape in feature catalog by @MohabMohie in #3944
- Fix stale javadoc @link references in shaft-mcp by @MohabMohie in #3945
- Fix Firefox-grid WWW-Authenticate/ClosedChannelException cluster: isolate LambdaTestHelperUnitTest (#3929) by @MohabMohie in #3947
- Commit accumulated session memory gotchas (2026-07-21) by @MohabMohie in #3950
- shaft-intellij: add Record API entry point to GuidedWorkflowPanel by @MohabMohie in #3948
- ci: roll out notify-nightly-failure to E2E Tests and Local E2E Tests by @MohabMohie in #3951
- shaft-intellij: remove emoji/glyph custom thinking messages from Assistant transcript by @MohabMohie in #3953
- shaft-intellij: unwrap capture_status/capture_api_status union before reading fields by @MohabMohie in #3954
- Fix host-OS-specific mobile_app absolute path detection in Appium capabilities by @MohabMohie in #3957
- shaft-intellij: gate three more raw-output paths behind Verbose (#3918) by @MohabMohie in #3958
- ci: extract environment-dependent unit tests out of browser E2E matrix jobs by @MohabMohie in #3952
- shaft-intellij: close silent content drops in Assistant transcript pipeline (#3920) by @MohabMohie in #3961
- shaft-intellij: additive raw-CLI terminal tab for Claude Code and Codex (#3959) by @MohabMohie in #3960
- Process rule: track every deferred/out-of-scope PR-body mention as a GitHub issue by @MohabMohie in #3966
- shaft-intellij: message-kind model + central style registry (#3921) by @MohabMohie in #3967
- shaft-intellij: fix incorrect off-EDT javadoc on terminal pre-type callback by @MohabMohie in #3969
- shaft-intellij: add GitHub Copilot CLI terminal action by @MohabMohie in #3970
- Trim copilot host-context guidance to restore token-budget margin by @MohabMohie in #3972
- shaft-intellij: align StructuredStreamParser with real Codex/Claude stream schemas by @MohabMohie in #3973
- shaft-intellij: unwrap capture_status union in ShaftAssistantPanel diagnostic (#3955) by @MohabMohie in #3975
- shaft-intellij: thread Verbose gating through agentOutput/failureOutput by @MohabMohie in #3977
- Record ShaftAssistantPanel dual-Message-graph gotcha from #3968 by @MohabMohie in #3979
- shaft-intellij: thread explicit message kinds through ShaftAssistantPanel (#3968) by @MohabMohie in #3978
- Record squash-merge auto-close gotcha from issue #3965 by @MohabMohie in #3980
- Add on-demand Maven Central release reconciliation by @MohabMohie in #3983
- shaft-intellij: wire panel Verbose checkbox into local-agent stderr gating by @MohabMohie in #3982
- shaft-intellij: keep Verbose raw stream buffer reachable on normal completion by @MohabMohie in #3984
- shaft-intellij: split StructuredStreamParser into per-protocol mapper classes by @MohabMohie in #3990
- Agent charters: state mempalace/memory discovery-first explicitly for coder/reviewer/tester by @MohabMohie in #3992
Full Changelog: 10.3.20260719...10.3.20260722