Releases: yume-chan/ya-webadb
v1.0.0
v0.0.24
What's Changed
@yume-chan/adb
- Allow streams to accept both
Uint8Array
andConsumable<Uint8Array>
as inputs (doc) - Rename
AdbDaemonTransport
'sdebugSlowRead
option toreadTimeLimit
. Allow users to specify a custom timeout for read operations. It's still disabled by default. - Include unauthorized devices in
AdbServerClient#getDevices()
andAdbServerClient#trackDevices()
. You need to filter them out if you don't need them (doc) - Add more methods to
AdbServerClient
- Group
AdbServerClient
-relating types into namespace. In future, more types will be moved to namespaces. - Fix
Adb#reverse#list()
returning an extra empty object. - Fix reverse tunnel handler not invoked.
- Fix too many event listener warning in Node.js.
@yume-chan/adb-scrcpy
- Rename
AdbScrcpyClient#controlMessageWriter
tocontroller
- Remove
AdbScrcpyClient#deviceMessageStream
. UseScrcpyOptions#clipboard
to watch clipboard changes (doc) - Allow
AdbScrcpyClient#pushServer
to acceptReadableStream<Uint8Array>
as input - Add AV1 video size parsing support
- Loosen type parameter constraints on
AdbScrcpyOptionsX_XX
classes, allow them to accept more option types
@yume-chan/android-bin
- Allow streams to accept both
Uint8Array
andConsumable<Uint8Array>
as inputs (doc) - Add all supported fields to
DumpSys.Battery.Info
@yume-chan/pcm-player
- Expose
outputLatency
fromAudioContext
@yume-chan/scrcpy
- Add AV1 metadata parser
Av1
- Move clipboard stream to
ScrcpyOptions#clipboard
(doc) - Make
ScrcpyControlMessageWriter#setClipboard
wait for the clipboard to be updated on device (whensequence
is not 0) - Add options class for version 2.3
@yume-chan/scrcpy-decoder-tinyh264
- Fix worker constructor parameters
- Rename
frameRendered
andframeSkipped
toframesRendered
andframesSkipped
@yume-chan/scrcpy-decoder-webcodecs
- Support decoding AV1
- Add
enableCapture
option toWebCodecsVideoDecoder
which allowsrenderer.readPixels
andrenderer.toDataURL
to work. The performance will be slightly affected when enabled.
@yume-chan/stream-extra
- Add
MaybeConsumable
type. It's also a namespace containing related types. - Re-export global
TextDecoderStream
to replaceDecodeUtf8Stream
which doesn't work correctly in stream mode - Move
Consumable
related types to theConsumable
namespace. In future, more types will be moved to namespaces.
@yume-chan/struct
- Rename some internal types to make them more distinguishable
@yume-chan/dataview-bigint-polyfill
This package has been removed, as all modern browsers now supports bigint in DataView natively.
Its code is moved to https://github.com/yume-chan/dataview-bigint-polyfill.
To reduce allocating DataView
s for small ArrayBuffer
s, a new package @yume-chan/no-data-view
was added.
Full Changelog: v0.0.23...v0.0.24
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.23
What's Changed
@yume-chan/adb
- Add
AdbServerClient.trackDevices
, which runs a callback function whenever device list changes - Add support for delayed ack on Android 14
@yume-chan/adb-daemon-webusb
- Fix
AdbDaemonWebUsbDeviceManager.getDevices
doesn't match auto-generated serial number againstfilters.serialNumber
(if the device doesn't have a serial number)
@yume-chan/android-bin
- Add support for pm install session
@yume-chan/aoa
- Replace
HidKeyboard.serializeInputReport
withupdateReport
, allowing to reuse the buffer
@yume-chan/fetch-scrcpy-server
- Fix the generated
VERSION
constant incorrectly having av
character prefixed
@yume-chan/scrcpy-decoder-tinyh264
- Add
sizeChanged
event
@yume-chan/scrcpy-decoder-webcodecs
- Add
sizeChanged
event - Add WebGL and Bitmap based video renderers, which are 1.5 to 3 times faster on Android devices
@yume-chan/stream-extra
- Fix
ConsumableWritableStream.write
callschunk.consume
twice. (doesn't cause any issue) - Fix
WrapWritableStream
might close the inner stream twice. (and throw an error) - Remove web-streams-polyfill dependency. The runtime must have global stream implementations (or you can add a polyfill yourself).
@yume-chan/dataview-bigint-polyfill
New Contributors
Full Changelog: v0.0.22...v0.0.23
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.22
What's Changed
@yume-chan/adb
- Add
getListenAddresses
method toAdbTcpIpCommand
class for retrieving current ADB over WiFi state - Add
debugSlowRead
option toAdbDaemonTransport
that throws an error when an ADB socket is stalled for 5 seconds - Fix
AdbSync#read
stuck when there is an error - Fix TypeScript build when using
AdbSubprocessNoneProtocol
without installingweb-streams-polyfill
package - Calling
AdbSocket.readable.cancel()
orAdbSocket.writable.end()
no longer closes the socket. OnlyAdbSocket.close()
does. CallingAdbSocket.readable.cancel()
will ignore all the future incoming data, callingAdbSocket.writable.end()
won't do anything.
@yume-chan/adb-daemon-webusb
- Check incoming packet size to prevent Chrome from crashing
- Add
exclusionFilters
option toAdbDaemonWebUsbDeviceManager#requestDevice
method AdbDaemonWebUsbDevice
will generate a fake serial number from vid and pid if the device serial number is empty
@yume-chan/scrcpy
- Fix parsing
sps_max_dec_pic_buffering_minus1
in H.265 SPS - Support parsing
vui_hrd_parameters
in H.265 SPS - Add support for Scrcpy 2.2
Full Changelog: v0.0.21...v0.0.22
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.21
What's Changed
@yume-chan/adb
- Change
AdbSync
to throwsAdbSyncError
for errors returned by ADB Daemon - Allow daemon credential manager to provide a name for each key
- Add typed errors for
framebuffer
command when current app disables screen capture - Change
AdbDaemonTransport
class to automatically close the connection by default, unless the newpreserveConnection
option istrue
- Add
recursive
andforce
options torm
method, allow deleting folders
@yume-chan/adb-credential-web
- Add name for keys
- Change to save private keys in IndexedDB, allow usage from Web Workers
@yume-chan/scrcpy
- Add support for Scrcpy server version 2.1 and 2.1.1
- Move the fetching server binary script to
@yume-chan/scrcpy-fetch-server
package
@yume-chan/adb-scrcpy
- Add support for Scrcpy server version 2.1 and 2.1.1
@yume-chan/android-bin
- Add wrapper for
bu
- Remove the last
\n
fromSettings#get
- Add wrappers for
dumpsys diskstats
anddumpsys battery
- Add wrapper for
pm list packages
- Rewrite
Settings
to useCmd
if available - Add support to stop
bugreport
generation usingAbortSiganl
- Merge
bugreport
andbugreportz
wrappers, providing anautomatic
method to choose the best available bugreport method
@yume-chan/stream-extra
- Replace
GatherStringStream
withConcatStringStream
which can be treated as a Promise
Full Changelog: v0.0.20...v0.0.21
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.20
What's Changed
All
- Use ECMAScript private class fields syntax (supported by Chrome 74, Firefox 90, Safari 14.1 and Node.js 12.0.0).
@yume-chan/adb
- Refactor
AdbSubprocessShellProtocol
class, this should improve some performance. - Split
mode
parameter inAdbSync#write()
intotype
andpermission
for ease of use. - Add
AdbReverseCommand#addExternal()
. This only register the reverse tunnel to the device, the handler should already exists (for example you are adding a reverse tunnel for an external program that's already listening on the port). In ADB direct connection, this should do nothing, because the reverse tunnel is handled by this library and there is no mean of "external" handler. - Change
AdbTcpIpCommand#setPort
andAdbTcpIpCommand#disable
to return or throw the response text. This can be displayed to the user to know what's wrong. - Add support for connecting to ADB servers. Because a USB device can only be used by one process at a time, the ADB server is the process that manages all connected devices. The server proxies and multiplexes connections from ADB clients so multiple adb commands can be executed on one device at the same time. The
Adb
class is no longer responsible for connecting and authenticating with ADB daemons. TheAdbTransport
interface and its two implementationsAdbDaemonTransport
andAdbServerTransport
was added to connect to either ADB daemons or servers in compatible environments. Read the PR for details, migration paths, and examples. (#549) - Add
serial
field toAdb
class. - Group
product
,model
,device
andfeatures
fields onAdb
class to thebanner
field with type ofAdbBanner
.
@yume-chan/adb-credential-web
- Change
AdbWebCredentialStore
to save private keys in IndexedDB, so it can be used in Web Workers. Previously saved keys inlocalStorage
will be ignored and a new key will be generated.
adb-daemon-webusb
- Rename package to
@yume-chan/adb-daemon-webusb
following the renaming ofAdbDaemonTransport
. - Rename
AdbWebUsbBackend
toAdbDaemonWebUsbDevice
following the renaming ofAdbDaemonTransport
. - Add Support for detecting device disconnects. It no longer throws an
NetworkError
when the device is disconnected. - Add
filters
parameter toAdbDaemonWebUsbDeviceManager#getDevices
. The filtration is manually implemented because WebUSB'sgetDevice
API doesn't support filters.
@yume-chan/scrcpy
- Add support for Scrcpy 2.0. New features including audio forwarding (supports PCM, AAC and OPUS encoding) and other video codecs (supports H.264 and H.265, AV1 not supported). Read the PR for new options and breaking changes. (#495)
- Move ADB related code to
@yume-chan/adb-scrcpy
package. This package now only implements the Scrcpy protocol.
@yume-chan/scrcpy-decoder-webcodecs
- Add support for decoding H.265 on supported browsers (Chrome works, Microsoft Edge with HEVC Video Extension from Microsoft Store doesn't decode H.265 correctly).
@yume-chan/stream-extra
- Fix a bug where
BufferedReadableStream#release
might output duplicate data.
@yume-chan/struct
- Rename
StructDeserializeStream
andStructAsyncDeserializeStream
toExactReadable
andAsyncExactReadable
. Rename itsread
method toreadExactly
. Add aposition
field so the caller can check how many bytes have been read. - Improve performance for decoding integers.
- Rename
Struct#fields
toStruct#concat
. NowStruct#fields
returns an array of[name: PropertyKey, definition: StructFieldDefinition<any, any, any>]
tuples.
Full Changelog: v0.0.19...v0.0.20
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.19
What's Changed
@yume-chan/adb
- Remove
Adb#install
in favor ofPackageManager#install
from@yume-chan/android-bin
package - Change
AdbSync#write
to take aReadableStream<Uint8Array>
instead of returning aWritableStream<Uint8Array>
- Add buffering in sync module to improve transfer speed
- Add
AdbReverseError
andAdbReverseNotSupportedError
for better error handling in reverse tunnel command.
@yume-chan/adb-backend-webusb
- Add the
AdbWebUsbBackendManager
class to simplify the usage with custom WebUSB implementations (for example theusb
NPM package).
@yume-chan/android-bin
- Add wrapper for
cmd
, with support for Android Binder Bridge (abb) - Add wrapper for
pm install
/cmd package install
, with support for streaming installation. - Add
OverlayDisplay
wrapper for managing overlay displays
@yume-chan/scrcpy
- Change
AdbScrcpyClient#pushServer
to take aReadableStream<Uint8Array>
instead of returning aWritableStream<Uint8Array>
- Add
AdbReverseNotSupportedError
handling and automatically switch to forward tunnel inAdbScrcpyClient
. - Update
AndroidKeyCode
enum to align with WebKeyboardEvent.code
@yume-chan/stream-extra
- Add an option to combine small chunks into target size in
ChunkStream
, and rename it toDistributionStream
Full Changelog: v0.0.18...v0.0.19
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.18
What's Changed
@yume-chan/adb-backend-webusb
- Add an option to specify USB filters
@yume-chan/scrcpy
- Move
@yume-chan/adb
topeerDependencies
. You need to install it manually if you want to useAdb*
types. - Add support for Scrcpy server version 1.25
- Add support for
SetClipboard
control message andAckClipboard
device message
@yume-chan/scrcpy-decoder-webcodecs
- Change to not use vertical sync to minimize latency
@yume-chan/stream-extra
- Change to load native Web Streams API implementation from
globalThis
if available. No longer need to importReadableStream
,WritableStream
andTransformStream
from@yume-chan/stream-extra
if you are sure the runtime supports them natively.
@yume-chan/struct
- Refactor number types for easier extending (see
ScrcpyFloatToInt16FieldDefinition
for an example)
Full Changelog: v0.0.17...v0.0.18
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.17
What's Changed
This release doesn't have many new features, but mainly focus on API clean up.
- The stream related utilities are now moved to its own package
@yume-chan/stream-extras
@yume-chan/scrcpy
has heavy API changes to make it easier to be integrated into other backend or frontend, see its README for details- Scrcpy video decoders are now separated to their own packages
@yume-chan/scrcpy-decoder-webcodecs
and@yume-chan/scrcpy-decoder-tinyh264
Full Changelog: v0.0.16...v0.0.17
Note: Rush, the monorepo management tool used by this repository, only works in Git clones. Instead of downloading the attached source code tarball in this release, you must clone this repository and checkout the corresponding tag.
v0.0.16
What's Changed
- Upgrade TypeScript to 4.7.2 to enable Node.js ESM
- Upgrade web-streams-polyfill to 4.0.0-beta.3, fix an issue where Adb#close() doesn't release the connection.
- Fix an issue where AdbSocket#readable#cancel() stalls the connection.
- Massive performance and memory usage improvements.
- Added Enter Key + non-alphanumeric char compatibility to scrcpy by @LordGiacomoS in #415
New Contributors
- @LordGiacomoS made their first contribution in #415
Full Changelog: v0.0.15...v0.0.16