BREAKING CHANGE: ExtractAllOptions.useSystemUnzip is removed.
BREAKING CHANGE: Non-UTF-8-flagged file names now default to utf8 instead of cp437, and cp437 decoding is no longer supported (modern archives use UTF-8). Such archives must be recreated or converted; fileNamesEncoding only accepts Node.js BufferEncodings.
* fix(appium): preserve npm arguments on Windows
* test(appium): cover Windows npm argument preservation
* fix(appium): resolve project-local npm shims on Windows
* refactor(appium): extract Windows npm CLI resolution
* fix(appium): clarify npm lookup errors and share pending resolution
* fix(appium): respect the caller's Windows npm search path
* refactor(appium): simplify Windows npm lookup and test fixtures
* refactor(appium): use a plain error for missing npm shim
* fix(appium): preserve Windows npm shim runtime and prefix behavior
* refactor(appium): address Windows npm resolver review feedback
* refactor(appium): share npm resolution promises without AsyncLock
* fix(appium): avoid waiting for later Windows PATH lookups
* refactor(appium): clarify Windows npm resolver names
* refactor(appium): remove Windows npm resolution caching
BREAKING CHANGE: The protected BaseDriver#commandsQueueGuard beyond promise-based acquire(key, fn) - it is now an asyncbox AsyncLock, so callback-style acquire() and the internal queues field are gone (use getQueueLength() / isBusy()).
BREAKING CHANGE: removed the --callback-address (-ca) server argument and the server.callback-address config property
BREAKING CHANGE: removed the --callback-port (-cp) server argument and the server.callback-port config property
BREAKING CHANGE: removed the --debug-log-spacing server argument and the server.debug-log-spacing config property
BREAKING CHANGE: removed the --strict-caps server argument and the server.strict-caps config property
BREAKING CHANGE: removed the --trace-dir server argument and the server.trace-dir config property
* docs: fix broken license links and stale @see paths on appium4
packages/appium/README.md links to ./LICENSE and ./packages/logger/LICENSE, neither of which resolves from the packages/appium directory (no LICENSE file exists there; the root LICENSE and packages/logger/LICENSE are the real files). This matches the fix already applied to master in #23001.
The @see ../../test/unit/command-timeout.spec.ts comments in fake-driver/fake-plugin resolve one level too high (packages/test/...); the specs live at ../test/unit/command-timeout.spec.ts relative to lib/.
* docs: exclude README changes from this PR
The Appium README will be fixed on `appium4` by porting the changes from `master`, per @eglitise.
Signed-off-by: NUAAwqy <146524024+NUAAwqy@users.noreply.github.com>
---------
Signed-off-by: NUAAwqy <146524024+NUAAwqy@users.noreply.github.com>
* docs: update recent changes in the migration guide
* simplify a bit
* docs: reflect recent WebDriver fixes in migration guide
Document strict standard timeout inputs and null readback, capability key casing/null omission/error classification, optional error data, and BiDi idle-timeout tracking.
Refs #22961, #22974, #22975, #22976, #22977, #22947, and #22966.
* docs: shorten recent migration notes
Condense the timeout, capability, error-data, and command-activity notes while retaining migration actions and PR references.
* docs: track capability candidate and initial timeout follow-ups
Link pending #22982 and #22983 without presenting them as merged. Refs #22966.
* docs: correct directory walk error guidance
Describe the merged #22956 behavior: log and skip non-ENOENT walker errors, continue traversal, and retain ENOENT rejection. Clarify that completion does not guarantee every entry was visited.
Addresses review r4267074238. Verified against appium4 implementation and checked the documentation diff.
* docs: refresh migration notes and restore timeout details
BREAKING CHANGE: clients that send an Origin header must enable the CORS feature (--allow-insecure=*:cors).
BREAKING CHANGE: Library callers that depended on the implicit CORS default must now pass allowCors: true
* fix(appium): apply default capabilities to every firstMatch candidate
* docs(appium): explain how default capabilities apply to firstMatch candidates
* Update migration guide for Appium 3 to 4
Refs #22966 (F12).
* Refactor capability imports and standard cap check
Refs #22966 (F12).
* Add test for insertAppiumPrefixes function
Refs #22966 (F12).
* Update isStandardCap to use exact matches
Refs #22966 (F12).
* Enhance capability tests for standard names
Refs #22966 (F12).
* Update error message in capability.spec.ts
Refs #22966 (F12).
* Implement omitNullCapabilities function
Refs #22966 (F13).
* Add tests for null capability values handling
Refs #22966 (F13).
* refactor(base-driver): avoid reassigning capability argument
Use a normalizedCaps local for validation and the return value, preserving null-omission behavior. Refs #22966 (F13).