Repository navigation
Release v0.3.1
Added / 新增
- Added
LiveKitSubscriber.publication: exposes the wrappedRemoteTrackPublicationso callers can read the real track kind.- 新增
LiveKitSubscriber.publication:暴露被封装的RemoteTrackPublication,便于调用方读取真实轨道类型。
- 新增
- Added
DeviceProvisioning.readNfcCredential(): reads a credential tag and returns the credentials without provisioning anything, so the "tap a tag to learn the Wi-Fi password" flow no longer has to misuseprovisionViaNfc().- 新增
DeviceProvisioning.readNfcCredential():只读取凭据标签并返回凭据、不做任何配网,使"碰一碰拿到 Wi-Fi 密码"的流程不必再误用provisionViaNfc()。
- 新增
- Added
ProvisionDevice.dppUri: carries the Wi-Fi Easy Connect bootstrap URI (DPP:…) scanned from the device QR code, which is what DPP actually needs.- 新增
ProvisionDevice.dppUri:承载从设备二维码扫到的 Wi-Fi Easy Connect 引导 URI(DPP:…),这才是 DPP 真正需要的内容。
- 新增
Changed / 优化
provisionViaNfc({ProvisionDevice? device})now delivers the tag credentials to that device over BLE / SoftAP / SmartConfig, so NFC can actually provision instead of just reading. The extra parameter is optional, so existing calls keep compiling.provisionViaNfc({ProvisionDevice? device})现在会把标签凭据经 BLE / SoftAP / SmartConfig 下发给该设备,NFC 由此能真正完成配网而不只是读取。该参数为可选,既有调用无需改动。
Fixed / 修复
-
Fixed
provisionViaNfc()reportingsuccessafter merely reading a tag: nothing was ever sent to a device (and the credentials were dropped), so the status now fails with an explicit message unless aProvisionDeviceis supplied.- 修复
provisionViaNfc()仅读到标签就上报success的问题:凭据从未下发给任何设备(且被丢弃),现在未传入ProvisionDevice时会以明确信息失败。
- 修复
-
Fixed DPP being handed
device.id(a BLE address or SoftAP SSID) as the QR content:provisionViaDpp()now requires aDPP:bootstrap URI and rejects anything else asprotocolMismatchwith a readable message, instead of failing opaquely inside the system configurator.- 修复把
device.id(BLE 地址或 SoftAP SSID)当作 DPP 二维码内容的问题:provisionViaDpp()现在要求DPP:引导 URI,其余一律按protocolMismatch并给出可读信息拒绝,而不是在系统配置器里不明原因地失败。
- 修复把
-
Fixed
protocomm's AES-CTR dropping the intra-block remainder, so every message after a non-16-byte payload was garbled; the counter now follows one continuous keystream.- 修复
protocomm的 AES-CTR 丢弃块内余数,导致非 16 字节整数倍载荷之后的所有消息错位;计数器现遵循一条连续 keystream。
- 修复
-
Fixed
protocomm'ssetup1failing open, so a device omittingSessionResp1skipped Proof-of-Possession authentication; it now raises.- 修复
protocomm的 setup1 失败开放,省略SessionResp1的设备会跳过所有权证明鉴权;现在改为抛错。
- 修复
-
Fixed
PbReader/PbWriter: bounds checks, malformed-field tolerance and a negative varint guard.- 修复
PbReader/PbWriter:补充边界检查、畸形字段容错与负数 varint 防护。
- 修复
-
Fixed OTA: verify the server's resume start offset, reuse a single
http.Client, and release the BLE link on failure (try/finally).- 修复 OTA:校验服务端续传起始偏移、复用单个
http.Client,并在失败时(try/finally)释放 BLE 连接。
- 修复 OTA:校验服务端续传起始偏移、复用单个
-
Fixed the log collector: verify the MQTT connection (batches were silently dropped), disconnect stale clients, guard concurrent flushes and tolerate corrupt cache lines.
- 修复日志采集器:校验 MQTT 连接(此前批次被静默丢弃)、释放旧 client、防并发 flush 并容忍损坏的缓存行。
-
Fixed provisioning: poll for a terminal Wi-Fi state instead of reading it once, and release the scan subscription when scanning throws.
- 修复配网:轮询终态 Wi-Fi 状态而非只读一次,并在扫描抛错时释放扫描订阅。
-
Fixed BLE:
BleTeleopChannel.dispose()now stops the transport (a failed connect left the auto-reconnect timer running), and the link clears stale characteristic handles on reconnect, resets its retry budget, guards concurrent connects and closes its controllers.- 修复 BLE:
BleTeleopChannel.dispose()现在停止传输层(连接失败后自动重连定时器仍在运行),链路在重连时清除陈旧特征句柄、重置重试预算、防并发连接并关闭控制器。
- 修复 BLE:
-
Fixed
DualTeleopChannelcrashing whendisconnect()runs beforeconnect(); it can be reconnected afterwards.- 修复
DualTeleopChannel在connect()之前调用disconnect()会崩溃的问题;之后可重新连接。
- 修复
-
Fixed MQTT teleop: guard concurrent connects, release the previous client and subscription, verify the connection state and tolerate non-JSON telemetry.
- 修复 MQTT 遥操作:防并发连接、释放旧 client 与订阅、校验连接状态并容忍非 JSON 遥测。
-
Fixed resilience: dispose the previous session on reconnect (it was only left), serialise attaches, re-check
disposedafter awaits, rate-limit recovery actions, re-enable video after reconnect, only stop the robot on a background pause, require a session inconfirmResume()and clear orphan resume tickets.- 修复韧性层:重连时释放前一个会话(此前仅 leave)、串行化 attach、await 后复检 disposed、恢复动作限流、重连后重新开启视频、仅在后台暂停时停车、
confirmResume()要求会话存在并清除孤儿恢复票据。
- 修复韧性层:重连时释放前一个会话(此前仅 leave)、串行化 attach、await 后复检 disposed、恢复动作限流、重连后重新开启视频、仅在后台暂停时停车、
-
Fixed WHIP/WHEP: drain responses, close the HTTP client, resolve relative
Locationheaders, buffer trickle ICE candidates until the resource exists, guard concurrent peer-connection creation and clean up on failure.- 修复 WHIP/WHEP:排空响应、关闭 HTTP 客户端、解析相对
Location头、缓存 trickle ICE 候选直到资源就绪、防并发建连并在失败时清理。
- 修复 WHIP/WHEP:排空响应、关闭 HTTP 客户端、解析相对
-
Fixed
simulcast: everycasenow breaks — falling through made all layers end up atfull ~/ 4.- 修复 simulcast:每个 case 现在都 break——直通会让所有层最终变成
full ~/ 4。
- 修复 simulcast:每个 case 现在都 break——直通会让所有层最终变成
-
Fixed emits after
dispose()throwing "Cannot add event after closing": they are now ignored.- 修复
dispose()之后的 emit 抛 "Cannot add event after closing" 的问题:现在改为忽略。
- 修复
-
Fixed LAN discovery: stop a discovery cancelled before it started, and surface errors instead of losing them.
- 修复 LAN 发现:停止启动前被取消的 discovery,并上报错误而非将其丢失。
-
Fixed the scanners: drop the previous scan's replayed results and handle stream errors.
- 修复扫描器:丢弃上一次扫描的回放结果并处理流错误。
-
Fixed
stream_relay.stop()catching onlyRtcException: it now catches every error so cleanup always finishes, and releases the Egress HTTP client.- 修复
stream_relay.stop()只捕获RtcException的问题:现在捕获所有异常以保证清理完成,并释放 Egress HTTP 客户端。
- 修复
-
Fixed LiveKit:
dispose()is now idempotent on both the engine and the session, joining a disposed engine is rejected, andunsubscribe()reports the real track kind instead of always claiming video.- 修复 LiveKit:引擎与会话的
dispose()现在幂等、已释放的引擎拒绝入会、unsubscribe()上报真实轨道类型而非一律声称视频。
- 修复 LiveKit:引擎与会话的
-
Fixed
NetworkPath.isSameLinkAs(): a metered flip now counts as a different link, so a hotspot that starts charging triggers a policy re-evaluation.- 修复
NetworkPath.isSameLinkAs():计费状态翻转现在算作另一条链路,开始计费的热点会触发策略重算。
- 修复
-
Fixed
VideoGridControlleraccumulating stale clarity overrides: overrides of removed streams are now pruned, so long-running rooms no longer leak entries.- 修复
VideoGridController累积失效清晰度覆盖的问题:已移除流的覆盖会被清理,长时间运行的房间不再泄漏条目。
- 修复
-
Fixed
switchCamera()leaving a stale "camera active" status when the capture fails: the old device is already released, so the camera is now reported as off.- 修复采集失败时
switchCamera()留下"摄像头已开启"失效状态的问题:旧采集设备已释放,现如实上报为已关闭。
- 修复采集失败时
-
Fixed
switchToVariantStream(): it now registers the replacement before dropping the old subscriber (never hands out a disposed object) and releases the new server resource when the session is disposed mid-switch.- 修复
switchToVariantStream():先登记替代者再丢弃旧订阅器(绝不交出已销毁对象),并在切换期间会话被释放时清理新建的服务端资源。
- 修复
-
Fixed
RoleTransfer.handover()leaving two anchors publishing at once: when revoking the previous anchor fails, the first grant is rolled back.- 修复
RoleTransfer.handover()可能留下两个牵头同时推流的问题:收回原牵头失败时回滚第一次授权。
- 修复
-
Fixed LiveKit leaking a
Roomon every reconnect: the session now callsroom.dispose()afterdisconnect(), so long-running sessions no longer accumulate rooms (a source of connection/handle leaks during 7×24 operation).- 修复 LiveKit 每次重连泄漏
Room的问题:会话在disconnect()之后现在调用room.dispose(),长时间运行的会话不再累积 Room(7×24 运行期间连接 / 句柄泄漏的来源之一)。
- 修复 LiveKit 每次重连泄漏
-
Fixed
LiveKitPublisherleaks and false "active" status:dispose()now releases theValueNotifier(UI listeners no longer leak), andstartCamera/startMic/startScreenShareno longer report the track as active when the room is not connected or permission is denied (they now report it off).- 修复
LiveKitPublisher的泄漏与"已开启"假状态:dispose()现在释放ValueNotifier(UI 监听者不再泄漏);房间未连或权限被拒时,startCamera/startMic/startScreenShare不再谎报轨道已开启(现如实上报为关闭)。
- 修复
-
Fixed
Diagnosticsleaking a socket on a failed TLS handshake and aborting on one bad log line: the probe now destroys the underlying socket infinally, and crash-log parsing guards the type and skips corrupt lines instead of throwing.- 修复
Diagnostics在 TLS 握手失败时泄漏 socket、且一条坏日志就中止整个诊断的问题:探测现在在finally销毁底层 socket,崩溃日志解析增加类型防护并跳过损坏行而非抛异常。
- 修复
-
Fixed
AppLifecycleGatetearing the link down after the app returned to the foreground: lifecycle transitions are now serialised, so a rapid background→foreground toggle ends in the foreground.- 修复
AppLifecycleGate在应用回到前台后错误拆除链路的问题:生命周期切换现已串行化,快速的"后台→前台"切换最终落在前台。
- 修复
-
Fixed
ControlLinkRoutermislabeling a multi-path selection asonlyOption: when several reachable paths tie on RTT it now reportslowestRttinstead of falsely claiming there was only one path.- 修复
ControlLinkRouter把多路径选择误标为onlyOption的问题:多条可达路径 RTT 恰好相等时,现改为上报lowestRtt,而非谎称只有一条路径。
- 修复