roomsync 0.0.0-stage → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +158 -2
- package/THIRD_PARTY_NOTICES.txt +11008 -0
- package/bin/roomsync.cjs +7 -0
- package/lib/cli.cjs +124 -0
- package/lib/verify.cjs +56 -0
- package/native/manifest.json +10 -0
- package/native/win32-x64/roomsync-desktop.exe +0 -0
- package/package.json +32 -4
package/README.md
CHANGED
|
@@ -1,3 +1,159 @@
|
|
|
1
|
-
#
|
|
1
|
+
# RoomSync npm launcher
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A small, dependency-free launcher for the **Windows x64 RoomSync 0.1.7 host**.
|
|
4
|
+
It bundles the native executable and opens its local setup page. No Rust compiler,
|
|
5
|
+
extra runtime download, install script or paid service is needed. The launcher
|
|
6
|
+
does not install a virtual driver; optional synchronized Windows speakers require
|
|
7
|
+
one to be installed and routed separately by the user.
|
|
8
|
+
Requires Node.js 20+ and Windows 10 version 1703 or newer with x64 Node.js.
|
|
9
|
+
The Android receiver app is installed separately. Download [the latest APK](https://github.com/Nyaughh/roomsync/releases/latest/download/RoomSync.apk)
|
|
10
|
+
or run `npx roomsync@latest apk`. GitHub sign-in with repository access is required
|
|
11
|
+
while the repository is private. Android **0.1.7** uses a new retained signing key;
|
|
12
|
+
uninstall older previews once before installing it. Use Android **0.1.6 or newer** for
|
|
13
|
+
the matching receive-side diagnostics; earlier revision-3 receivers remain
|
|
14
|
+
wire-compatible.
|
|
15
|
+
|
|
16
|
+
**0.1.6 is a diagnostic update, not a verified fix for silence or cutouts.** It
|
|
17
|
+
adds bounded host queue/send timing counters to Connection details. They help
|
|
18
|
+
separate host dispatch delay from downstream delay, but do not measure Wi-Fi
|
|
19
|
+
transit or prove the physical cause. The shared timeline and playback buffering
|
|
20
|
+
are unchanged by this update.
|
|
21
|
+
|
|
22
|
+
**0.1.7 adds the latest APK link on startup, in help, and through `roomsync apk`.**
|
|
23
|
+
Audio behavior is unchanged from 0.1.6. The package is published as `roomsync`
|
|
24
|
+
by `nyaughh` and remains `UNLICENSED`. Third-party notices are included separately.
|
|
25
|
+
|
|
26
|
+
## Run from npm
|
|
27
|
+
|
|
28
|
+
In **Windows PowerShell**:
|
|
29
|
+
|
|
30
|
+
```powershell
|
|
31
|
+
# Run the latest published launcher:
|
|
32
|
+
npx roomsync@latest start
|
|
33
|
+
|
|
34
|
+
# Get the latest Android APK link:
|
|
35
|
+
npx roomsync@latest apk
|
|
36
|
+
|
|
37
|
+
# Or install the local package, then use the short command:
|
|
38
|
+
npm install --global roomsync@latest
|
|
39
|
+
roomsync start
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For a verified local tarball, use
|
|
43
|
+
`npx --package ./roomsync-0.1.7.tgz roomsync start`.
|
|
44
|
+
|
|
45
|
+
## Commands
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
roomsync start Open the local control page
|
|
49
|
+
roomsync start --no-browser Start controls and print their address
|
|
50
|
+
roomsync devices List Windows playback endpoints
|
|
51
|
+
roomsync apk Show the latest Android APK download link
|
|
52
|
+
roomsync doctor Verify platform and packaged-host integrity
|
|
53
|
+
roomsync --version
|
|
54
|
+
roomsync --help
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Keep the terminal open. Ctrl+C reaches the native host's stop handler. The local
|
|
58
|
+
page binds to a random `127.0.0.1` port; opening it does not start sharing audio.
|
|
59
|
+
Create a private setup code, connect the Android receiver and choose **Start
|
|
60
|
+
listening** in the page. No firewall or audio-routing settings change automatically.
|
|
61
|
+
|
|
62
|
+
macOS, Linux, WSL, Windows 32-bit and native ARM64 Node.js are not supported.
|
|
63
|
+
Help, version, APK links and package inspection still work there, but no host is launched.
|
|
64
|
+
Use Windows PowerShell/Command Prompt, not a WSL shell.
|
|
65
|
+
|
|
66
|
+
In default phone-only capture mode, original Windows audio is not muted or delayed.
|
|
67
|
+
Keep it inaudible in the listening room, for example through headphones, to avoid
|
|
68
|
+
echo. For synchronized Windows speakers, use the explicit routing below. This is an
|
|
69
|
+
unsigned preview, not a claim of zero latency or physically measured speaker
|
|
70
|
+
synchronization. The launcher does not validate audio hardware; `doctor` verifies
|
|
71
|
+
only package integrity/platform support.
|
|
72
|
+
|
|
73
|
+
## Optional synchronized Windows speakers
|
|
74
|
+
|
|
75
|
+
This opt-in preview sends the same timestamped PCM and common presentation
|
|
76
|
+
timeline to Windows speakers and Android. It does not retroactively delay audio
|
|
77
|
+
already playing through the captured physical endpoint.
|
|
78
|
+
|
|
79
|
+
1. Separately install a virtual cable from its official provider, such as
|
|
80
|
+
[VB-Audio's VB-CABLE](https://vb-audio.com/Cable/), following its driver,
|
|
81
|
+
administrator/restart and license instructions. No driver is bundled here.
|
|
82
|
+
2. Route the source applications you intend to share to the cable's **playback**
|
|
83
|
+
endpoint, normally **CABLE Input**. RoomSync captures that output by loopback;
|
|
84
|
+
the recording endpoint **CABLE Output** is not the capture selection.
|
|
85
|
+
3. In RoomSync Advanced settings, select that explicit virtual capture source,
|
|
86
|
+
enable local speaker playback, and select a different physical speaker output.
|
|
87
|
+
Review and confirm the route. RoomSync will not change Windows/app routing.
|
|
88
|
+
4. Do not enable Windows **Listen to this device** or another monitor/mixer path
|
|
89
|
+
that duplicates the source or routes speaker output back into the cable.
|
|
90
|
+
5. Pair the Android receivers and start the group. The local output is measured
|
|
91
|
+
while silent and included in the same budget as the phones. Keep the source
|
|
92
|
+
and speaker selection unchanged during playback.
|
|
93
|
+
6. Stop the group before changing devices. Restore your usual app/Windows output
|
|
94
|
+
afterward if you changed it, otherwise audio routed into the cable may be silent.
|
|
95
|
+
|
|
96
|
+
Same-endpoint routes are rejected. Strict queue and clock checks can reject
|
|
97
|
+
unsupported outputs or stop a session instead of silently shifting its timeline;
|
|
98
|
+
guarded local playback requires at least two engine periods of actual shared
|
|
99
|
+
buffer capacity. This remains a cloud-built preview, not physically verified
|
|
100
|
+
speaker synchronization. Bluetooth/DSP can add unmeasured delay. Use built-in or
|
|
101
|
+
wired speakers for initial testing.
|
|
102
|
+
|
|
103
|
+
## Safety and packaging
|
|
104
|
+
|
|
105
|
+
- The complete Windows executable is in the package. No `postinstall`, dynamic
|
|
106
|
+
downloader, PowerShell script, shell command or PATH-selected executable runs.
|
|
107
|
+
- `start` maps only to the native `web` command. `--no-browser` maps to
|
|
108
|
+
`web-headless`; `devices` maps to `list-devices`. Unknown options fail explicitly.
|
|
109
|
+
- SHA256, architecture, package/manifest version consistency and manifest fields
|
|
110
|
+
are checked before execution. The manifest version is release metadata, not a
|
|
111
|
+
runtime query of the executable; CI checks the native source version matches.
|
|
112
|
+
This detects accidental modification/mismatched packages, **not** a compromise
|
|
113
|
+
of both the package binary and manifest. The preview is not code-signed.
|
|
114
|
+
- No telemetry or automatic updater is added. No secret is stored in this package.
|
|
115
|
+
The native app's private pairing and local-controller protections remain intact.
|
|
116
|
+
- npm's tarball integrity covers distribution. Verify the supplied tarball checksum
|
|
117
|
+
and only install a release from the project's confirmed owner.
|
|
118
|
+
|
|
119
|
+
## Build a package from source (maintainers)
|
|
120
|
+
|
|
121
|
+
The release target is **x86_64-pc-windows-gnu**, matching the bundled preview and
|
|
122
|
+
the dependency-notice inventory. The default Windows MSVC target is not a drop-in
|
|
123
|
+
replacement: it may introduce different notice entries and VC runtime dependencies.
|
|
124
|
+
On Linux with the official distribution's MinGW cross-linker installed:
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
rustup target add x86_64-pc-windows-gnu
|
|
128
|
+
export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc
|
|
129
|
+
cargo build --release --locked --target x86_64-pc-windows-gnu --manifest-path apps/desktop/Cargo.toml
|
|
130
|
+
binary=apps/desktop/target/x86_64-pc-windows-gnu/release/roomsync-desktop.exe
|
|
131
|
+
hash=$(sha256sum "$binary" | cut -d' ' -f1)
|
|
132
|
+
node packages/npm/scripts/stage-native.cjs --binary "$binary" --notices docs/THIRD_PARTY_NOTICES.txt --source-commit "$(git rev-parse HEAD)" --expected-sha256 "$hash"
|
|
133
|
+
npm --prefix packages/npm test
|
|
134
|
+
mkdir -p dist
|
|
135
|
+
npm pack ./packages/npm --pack-destination dist
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The stage command accepts a known,
|
|
139
|
+
locally built or independently verified Windows x64 executable; it never fetches
|
|
140
|
+
one. The manifest is written last and `prepack` refuses an incomplete or mismatched
|
|
141
|
+
bundle. Existing release inputs require their published/previously verified binary
|
|
142
|
+
digest, not a guessed digest. Keep npm/native versions in sync. If registry
|
|
143
|
+
dependencies change, regenerate the upstream notice inventory rather than merely
|
|
144
|
+
replacing its lock fingerprint.
|
|
145
|
+
|
|
146
|
+
Cloud packaging can use the existing verified Windows release without changing
|
|
147
|
+
its native audio implementation. Native builds/tests, JavaScript wrapper tests,
|
|
148
|
+
real tarball installation and physical hardware testing are separate checks;
|
|
149
|
+
passing one does not imply the others passed.
|
|
150
|
+
|
|
151
|
+
The repository's npm workflow tests the wrapper on Linux and Windows, builds the
|
|
152
|
+
Windows GNU host, audits DLL imports, stages the bundle and uploads a tarball artifact.
|
|
153
|
+
A separate Windows job installs the artifact and invokes native `--help` without
|
|
154
|
+
starting capture. It contains **no publish step, npm credentials, or auto-release**.
|
|
155
|
+
Maintainers publish the verified artifact separately.
|
|
156
|
+
See [release instructions](../../docs/RELEASING.md).
|
|
157
|
+
|
|
158
|
+
References: [npm bin/files metadata](https://docs.npmjs.com/cli/v11/configuring-npm/package-json/),
|
|
159
|
+
[Node child-process execution](https://nodejs.org/api/child_process.html).
|