Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 28 additions & 7 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion host/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "eternal-host"
version = "0.3.0"
version = "0.3.1"
edition = "2021"

[dependencies]
Expand Down
Binary file modified host/tests/snapshots/pairing-qr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified host/tests/snapshots/performance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified host/tests/snapshots/settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified host/tests/snapshots/software-and-display-task-failure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified host/tests/snapshots/stream-connected.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified host/tests/snapshots/update-banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 4 additions & 1 deletion ios/EternalMonitorUITests/ConnectScreenTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
77 changes: 25 additions & 52 deletions ios/TESTFLIGHT_NOTES.md
Original file line number Diff line number Diff line change
@@ -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.
2 changes: 1 addition & 1 deletion ios/project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion proto/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "eternal-wire"
version = "0.3.0"
version = "0.3.1"
edition = "2021"

[dependencies]
Expand Down
Loading