diff --git a/Cargo.lock b/Cargo.lock index abd221f1..a088dbab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1169,7 +1169,7 @@ checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "eternal-host" -version = "0.3.0" +version = "0.3.1" dependencies = [ "cc", "eframe", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "eternal-wire" -version = "0.3.0" +version = "0.3.1" dependencies = [ "tracing", ] diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 2d276f41..fd7f1250 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,13 +1,34 @@ -## EternalMonitor unreleased +## EternalMonitor v0.3.1 -- Windows and iPad can share diagnostics automatically with support, queue events while offline and retry after reconnecting. Automatic sharing can be disabled in Settings. +Install the Windows and iPad 0.3.1 updates together. This release includes Intel +hardware-encoding fixes and automatic support diagnostics. The affected Windows +10 / Intel Iris Xe device and physical iPad Pro M5 still need customer testing. -- Windows and iPad now retain bounded support logs across launches, including device/build details, encoder/decoder errors and stream summaries. Export iPad reports from Settings → Diagnostics. Windows Copy logs includes native FFmpeg driver errors and removes pairing credentials. +### What changed -- Fix Intel Quick Sync startup by converting capture frames to its supported - NV12 input format for H.264 and HEVC. -- Try the other Windows hardware encoders when the preferred encoder cannot - open, before falling back to CPU encoding. Record each failure in the host log. +- Intel Quick Sync uses its supported NV12 input format for H.264 and HEVC. + Windows tries the remaining hardware encoders before falling back to CPU + encoding and records each startup failure. +- AMD keyframe requests survive delayed encoder output, improving recovery when + the iPad requests a fresh frame. +- The Windows host sends queued audio between video packets, reducing audio + loss during large video bursts. +- Windows and iPad retain bounded logs across launches, including device and + build details, encoder or decoder errors, connection history and stream + statistics. Windows Copy logs includes native FFmpeg errors. On iPad, open + Settings > Support > Diagnostics to copy or export a report. +- Both apps automatically send support diagnostics while running and retry + queued events after reconnecting. Reports include device details, PC names + and network addresses. Screen content, audio and pairing credentials are + excluded. Automatic sharing can be disabled in Settings. + +### What to test + +Update both apps, keep the PC and iPad online, then connect over USB with Apple +Devices open on Windows. Stream for two minutes and check whether the hardware +encoder warning returns. Test H.264 first, then HEVC if you use it. If a problem +continues, send the time and time zone, a screenshot of the warning and the +Diagnostics upload status so support can find the reports. ## EternalMonitor v0.3.0 diff --git a/host/Cargo.toml b/host/Cargo.toml index a7d700b5..48aa8b23 100644 --- a/host/Cargo.toml +++ b/host/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "eternal-host" -version = "0.3.0" +version = "0.3.1" edition = "2021" [dependencies] diff --git a/host/tests/snapshots/pairing-qr.png b/host/tests/snapshots/pairing-qr.png index d9351a88..8ccfe89b 100644 Binary files a/host/tests/snapshots/pairing-qr.png and b/host/tests/snapshots/pairing-qr.png differ diff --git a/host/tests/snapshots/performance.png b/host/tests/snapshots/performance.png index f6c21a0e..71f250f0 100644 Binary files a/host/tests/snapshots/performance.png and b/host/tests/snapshots/performance.png differ diff --git a/host/tests/snapshots/settings.png b/host/tests/snapshots/settings.png index 217fcd84..9a4c2858 100644 Binary files a/host/tests/snapshots/settings.png and b/host/tests/snapshots/settings.png differ diff --git a/host/tests/snapshots/software-and-display-task-failure.png b/host/tests/snapshots/software-and-display-task-failure.png index 0b89a887..55c30f54 100644 Binary files a/host/tests/snapshots/software-and-display-task-failure.png and b/host/tests/snapshots/software-and-display-task-failure.png differ diff --git a/host/tests/snapshots/stream-connected.png b/host/tests/snapshots/stream-connected.png index 5c024baf..448607d1 100644 Binary files a/host/tests/snapshots/stream-connected.png and b/host/tests/snapshots/stream-connected.png differ diff --git a/host/tests/snapshots/update-banner.png b/host/tests/snapshots/update-banner.png index e16e907b..f217b612 100644 Binary files a/host/tests/snapshots/update-banner.png and b/host/tests/snapshots/update-banner.png differ diff --git a/ios/EternalMonitorUITests/ConnectScreenTests.swift b/ios/EternalMonitorUITests/ConnectScreenTests.swift index e0164d28..17370a0e 100644 --- a/ios/EternalMonitorUITests/ConnectScreenTests.swift +++ b/ios/EternalMonitorUITests/ConnectScreenTests.swift @@ -73,7 +73,10 @@ final class ConnectScreenTests: XCTestCase { shot.name = "support-diagnostics"; shot.lifetime = .keepAlways; add(shot) app.buttons["diagnostics.export"].tap() let share = app.navigationBars["UIActivityContentView"] - XCTAssertTrue(share.waitForExistence(timeout: 10), app.debugDescription) + // On a cold simulator, Apple's remote share-sheet container can appear + // before its contents finish loading. Still require the document and + // export actions once the remote interface is ready. + XCTAssertTrue(share.waitForExistence(timeout: 30), app.debugDescription) XCTAssertTrue(share.otherElements["EternalMonitor-iPad-diagnostics"].waitForExistence(timeout: 5)) let documentType = share.otherElements.matching(NSPredicate(format: "label BEGINSWITH %@", "Text Document")).firstMatch XCTAssertTrue(documentType.waitForExistence(timeout: 5)) diff --git a/ios/TESTFLIGHT_NOTES.md b/ios/TESTFLIGHT_NOTES.md index ac3e8b2e..950826b5 100644 --- a/ios/TESTFLIGHT_NOTES.md +++ b/ios/TESTFLIGHT_NOTES.md @@ -1,58 +1,31 @@ -# EternalMonitor 0.3.0: What to Test +# EternalMonitor 0.3.1: What to Test -v0.3.0 is the current stable release. Install the Windows app with iPad -v0.3.0, TestFlight build 143. The Windows installer is unchanged from -v0.3.0-rc.1. It passed the automated tests on the reference PC and a physical -iPad; the hands-on checks below remain. New users can follow SETUP.md. +Install the Windows and iPad 0.3.1 updates together. This release includes Intel +hardware-encoding fixes and automatic support diagnostics. The affected Windows +10 / Intel Iris Xe device and physical iPad Pro M5 still need customer testing. ### What changed -- Lost video fragments can be requested again within a bounded repair window. - The window follows real WiFi timing: it waits for late and reordered packets - instead of discarding their frames. The quality popover reports repaired - fragments, dropped frames and jitter. -- A USB connection uses Apple's device service on Windows and the same negotiated - session as WiFi. The app can take over when a cable connects and reconnect to - WiFi when it disconnects. USB needs Apple's Apple Devices app from the - Microsoft Store, open while you stream. When an iPad is plugged in and Apple - Devices is closed or missing, the host says so and offers to open it or links - to the Store. Accept Trust This Computer on the iPad. -- PC audio uses 48 kHz stereo Opus. The iPad's audio setting mutes playback without - disconnecting video. Quiet packets are compact; Opus packet-loss concealment - covers missing audio. This version does not provide Opus in-band FEC. -- Pair with the six-digit host code or its QR code. Remembered hosts use a token - stored in the iPad Keychain. Regenerating the host token requires pairing again. -- Hardware and on-screen keyboards, sticky modifiers, indirect pointer buttons - and hover extend the existing touch and Pencil controls. -- Apple Pencil draws as a Windows Ink pen with pressure and tilt. Drawing mode - ignores fingers on the canvas, mutes PC audio and asks for the highest USB - frame rate. In Clip Studio Paint, choose the Tablet PC setting. -- The host offers 30/60/90/120 fps; the iPad requests 30/60/120 fps. The lower limit - wins. HEVC remains optional. YUV420 remains the default encoder input because - the AMD encoder does not accept BGRA; BGRA input is opt-in. -- The host shows client, USB and audio status, rotates its session log, and can - check for updates. The Windows installer configures its firewall rules and VDD - task permissions. Continue checking these Windows behaviors on your hardware. +- Intel Quick Sync uses its supported NV12 input format for H.264 and HEVC. + Windows tries the remaining hardware encoders before falling back to CPU + encoding and records each startup failure. +- AMD keyframe requests survive delayed encoder output, improving recovery when + the iPad requests a fresh frame. +- The Windows host sends queued audio between video packets, reducing audio + loss during large video bursts. +- Windows and iPad retain bounded logs across launches, including device and + build details, encoder or decoder errors, connection history and stream + statistics. Windows Copy logs includes native FFmpeg errors. On iPad, open + Settings > Support > Diagnostics to copy or export a report. +- Both apps automatically send support diagnostics while running and retry + queued events after reconnecting. Reports include device details, PC names + and network addresses. Screen content, audio and pairing credentials are + excluded. Automatic sharing can be disabled in Settings. -### Please exercise on a physical iPad +### What to test -Pair on the local network, test H.264 and HEVC, then type and scroll through the -keyboard and trackpad. Connect, unplug and reconnect USB. Play audio and check -sync, mute and a Windows output-device change. Walk toward the WiFi edge and -watch repairs rise without long freezes. On a ProMotion iPad, try 120 fps with -the virtual display at 120 Hz. Draw in Clip Studio Paint with Drawing mode over -USB, including pressure, tilt and a resting palm. Report the GPU, codec, host -log and visible error. - -On the reference PC a physical iPad streamed the 2732×2048 extended desktop over -USB-C for 30 minutes at 58 FPS with no dropped frames, and 3440×1440 over WiFi -for 30 minutes with 19 of 105,600 frames dropped. First-install trust, timed -takeover and WiFi fallback still need the hands-on pass. Pairing controls access but does -not encrypt video, audio or input, so use a trusted local network. - -Known issue: on the reference PC (NVIDIA driver 591.86), Windows once stopped -with an NVIDIA kernel error about two seconds after a USB connection switched a -running mirror session to the extended display. A bounded retest of the same -build and driver repeated that switch five times, and later runs repeated it -again, without a crash. The driver fault is not understood. If it happens, -report the GPU driver version and the time. +Update both apps, keep the PC and iPad online, then connect over USB with Apple +Devices open on Windows. Stream for two minutes and check whether the hardware +encoder warning returns. Test H.264 first, then HEVC if you use it. If a problem +continues, send the time and time zone, a screenshot of the warning and the +Diagnostics upload status so support can find the reports. diff --git a/ios/project.yml b/ios/project.yml index 12ea2af6..4f8df9b4 100644 --- a/ios/project.yml +++ b/ios/project.yml @@ -31,7 +31,7 @@ targets: PRODUCT_BUNDLE_IDENTIFIER: com.eternal.monitor TARGETED_DEVICE_FAMILY: "2" SUPPORTS_XR: "NO" - MARKETING_VERSION: "0.3.0" + MARKETING_VERSION: "0.3.1" CURRENT_PROJECT_VERSION: "6" DEVELOPMENT_TEAM: "9X79V37Q89" CODE_SIGN_STYLE: Automatic diff --git a/proto/Cargo.toml b/proto/Cargo.toml index a51e43a1..d718e50d 100644 --- a/proto/Cargo.toml +++ b/proto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "eternal-wire" -version = "0.3.0" +version = "0.3.1" edition = "2021" [dependencies]