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