v1.0.0
Breaking Changes
Agentic Loop Removed
maxSteps and contextWindow config removed. Only single-pass execution — optimized for 4B–7B local models. ReAct loop, parseAgentStep(), buildAgentStep(), stripJsonComments(), and chat() provider method deleted. AgentResult simplified to { actions: AgentAction[] } — goalAchieved, totalSteps, steps removed.
Provider Layer Rewritten
Six individual provider classes deleted (anthropic, openai, ollama, gemini, openrouter, base). Replaced by unified adapter at providers/send.ts with three explicit schemas: 'anthropic', 'openai', 'ollama'.
Config Changes
providerrenamed toschema. Old field maps with a warning. Values:'anthropic','openai','ollama'.providerUrlandmodelnow required — no defaults.tokenconfig removed. Service targets local endpoints. Usesendoverride for auth.- New:
snapshotType('elements'|'a11y'),inViewportOnly,waitForHealing. - New:
fixingSuggestionsconfig for read-only selector fix collection.
Snapshot
get-elements.ts replaced by get-snapshot.ts — dual-mode: getElements() (flat list, lean, default) and getSnapshot() (a11y tree, rich). LLM uses e1, e2... virtual element IDs.
Peer Dependencies
@wdio/elements >=1.1.0, @wdio/globals >=9.0.0, @wdio/types >=9.0.0 now required.
New: Self-Healing System
Complete LLM-powered selector healing pipeline in healing/:
interceptor.ts— WDIOoverwriteCommandinterceptors for click, setValue, taphealer.ts—healSelector()calls LLM to find replacement selectors at runtimereport.ts—healingReportstore +formatHealingSummary()canonical formatter- Healing decision tree: stale element → re-find, click intercepted → scroll, element not found → LLM heal, invalid state → rethrow
browser.getHealingReport()+formatHealingSummary(report)for test reporting
New: Fixing Suggestions
Read-only counterpart to autoHeal — same interceptor infrastructure, but captures LLM-suggested selector fixes without retrying:
healing/fixing-suggestions.ts— suggestion store +formatFixingSuggestions()installFixingSuggestionsInterceptorinhealing/interceptor.tssuggestFix()inhealing/healer.tsbrowser.getFixingSuggestions()command- When both features enabled on overlapping commands, autoHeal takes priority
Debug Tools
browser.snapshot({ maxElements?, snapshotType?, inViewportOnly? })command dumps element tree@wdio/loggerused throughout for messages that survive filter levels
Mobile
- Tap auto-healing — Appium scroll failures (
"Could not scroll","scroll to the element") trigger healing - New example specs:
agent-mobile.spec.ts,self-healing-mobile.spec.ts isElementNotFoundErrorexpanded with Appium error patterns
Docs & CI
README.mdcomplete rewrite — config table, provider setup, Ollama/LM Studio guidesCLAUDE.mdadded — project map, commands, core APIs, critical gotchas- Dependabot workflow added for automated dependency updates
CHANGELOG.mdreplaced with structured release notes
Test Coverage
tests/services/agent.service.test.ts— 605 lines of service-level teststests/providers/send.test.ts— 416 lines covering all three schemastests/healing/healer.test.ts,report.test.ts,fixing-suggestions.test.ts— healing pipelinetests/commands/parse-llm-response.test.ts— response parser- Removed old provider-specific tests (replaced by unified
send.test.ts)
Full Changelog: v0.2.0...v1.0.0