ownremote 0.0.0-stage β†’ 1.0.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Adytm404
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,212 @@
1
- # Temporary Holding Version
1
+ <div align="center">
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ # OwnRemote
4
+
5
+ **Control your Windows PC from your phone**: trackpad, live keyboard and an opt-in screen preview,
6
+ over your Wi-Fi or from anywhere through Cloudflare Tunnel. No app to install on the phone, no account, no native modules.
7
+
8
+ [![npm](https://img.shields.io/npm/v/ownremote?color=c6f45b&labelColor=0d0f14)](https://www.npmjs.com/package/ownremote) ![platform](https://img.shields.io/badge/platform-Windows-0d0f14?labelColor=0d0f14) [![license](https://img.shields.io/badge/license-MIT-0d0f14?labelColor=0d0f14)](https://github.com/Adytm404/ownremote/blob/main/LICENSE)
9
+
10
+ <a href="https://github.com/Adytm404/ownremote/blob/main/docs/ownremote-trailer.mp4"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/trailer-preview.gif" alt="OwnRemote trailer" width="820"></a>
11
+
12
+ [β–Ά Watch the full trailer (48 s, MP4)](https://github.com/Adytm404/ownremote/blob/main/docs/ownremote-trailer.mp4)
13
+
14
+ </div>
15
+
16
+ ---
17
+
18
+ ## Features
19
+
20
+ | | |
21
+ |---|---|
22
+ | πŸ–±οΈ **Trackpad** | Move, tap to click, two-finger tap for right click, two-finger scroll, hold-and-drag, physical-style Left / Middle / Right buttons. |
23
+ | ⌨️ **Live keyboard** | Everything you type appears on the PC letter by letter, including emoji, accents, autocorrect and swipe typing. Sticky Ctrl / Alt / Shift / Win, arrows, Esc, Tab, F-keys, shortcuts (Ctrl+C/V/X/Z/A/S, Alt+Tab, Win+D) and media keys. |
24
+ | πŸ–₯️ **Screen preview** | Off by default. Turn it on to see your PC screen with a **virtual cursor** that sits exactly where the real one is (measured error β‰ˆ 0.05 px), zoom 1Γ— / 2Γ— / 3Γ— that follows the cursor, 1–15 fps, adjustable resolution and quality, and identical frames skipped so a still screen costs β‰ˆ 0 KB/s. |
25
+ | πŸ§‘β€πŸ’» **CLI dashboard** | Numbered menus to run in the terminal or in the background, manage paired devices, change settings and set up the tunnel. |
26
+ | πŸͺŸ **Windows integration** | Background mode with a tray icon, start with Windows (with an optional delay), Windows Firewall helper. |
27
+ | 🌍 **Cloudflare Tunnel** | Quick tunnel (random `*.trycloudflare.com` URL, no account) or a named tunnel on your own domain. |
28
+ | πŸ” **Pairing & sessions** | 6-digit pairing code, per-device tokens, revoke any device, lock pairing, per-IP and global brute-force limits. |
29
+
30
+ ## Screenshots
31
+
32
+ <table>
33
+ <tr>
34
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/phone-pair.png" width="190"><br><sub>Pair with a code</sub></td>
35
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/phone-trackpad.png" width="190"><br><sub>Trackpad</sub></td>
36
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/phone-keyboard.png" width="190"><br><sub>Live keyboard</sub></td>
37
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/phone-screen.png" width="190"><br><sub>Screen preview</sub></td>
38
+ </tr>
39
+ </table>
40
+
41
+ <p align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/cli-main.png" width="640" alt="CLI dashboard"></p>
42
+
43
+ <table>
44
+ <tr>
45
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/cli-sessions.png" width="420"><br><sub>Session / device management</sub></td>
46
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/cli-tunnel.png" width="420"><br><sub>Cloudflare Tunnel</sub></td>
47
+ </tr>
48
+ <tr>
49
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/cli-advanced.png" width="420"><br><sub>Advanced settings</sub></td>
50
+ <td align="center"><img src="https://raw.githubusercontent.com/Adytm404/ownremote/main/docs/screenshots/cli-settings.png" width="420"><br><sub>Settings</sub></td>
51
+ </tr>
52
+ </table>
53
+
54
+ <sub>Screenshots use demo data.</sub>
55
+
56
+ ## Requirements
57
+
58
+ - Windows 10 or 11 (uses the built-in Windows PowerShell 5.1 and .NET Framework, nothing to compile)
59
+ - [Node.js](https://nodejs.org) 18 or newer
60
+ - A phone with a modern browser (Chrome, Safari, Samsung Internet, Firefox) on the same Wi-Fi, or anywhere with Cloudflare Tunnel
61
+ - Optional: [`cloudflared`](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) for internet access (`winget install --id Cloudflare.cloudflared`)
62
+
63
+ ## Quick start
64
+
65
+ ```bat
66
+ npm install -g ownremote
67
+ ownremote
68
+ ```
69
+
70
+ That's it: `ownremote` opens the dashboard from any Command Prompt, PowerShell or Windows Terminal window.
71
+ Update later with `npm install -g ownremote@latest`.
72
+
73
+ <details>
74
+ <summary>Run from source instead</summary>
75
+
76
+ ```bat
77
+ git clone https://github.com/Adytm404/ownremote.git
78
+ cd ownremote
79
+ npm install
80
+ npm start
81
+ ```
82
+
83
+ Or double-click **`start.bat`** (it installs dependencies on the first run).
84
+
85
+ </details>
86
+
87
+ 1. Choose **[1] Run in this terminal** or **[2] Run in the background**.
88
+ 2. On your phone, open the address shown under **Open on phone** (or scan the QR code in *Session management*; it fills the code in for you).
89
+ 3. Enter the 6-digit code. The phone is remembered, so next time it connects straight away.
90
+
91
+ If the phone cannot open the page, use **Settings β†’ Allow port in Windows Firewall**.
92
+
93
+ ## Using it
94
+
95
+ ### Trackpad
96
+
97
+ | Gesture | Action |
98
+ |---|---|
99
+ | Slide one finger | Move the cursor |
100
+ | Tap | Left click |
101
+ | Two-finger tap | Right click |
102
+ | Three-finger tap | Middle click |
103
+ | Slide two fingers / the strip on the right | Scroll (vertical and horizontal) |
104
+ | Hold ~0.5 s, then slide | Drag |
105
+ | Left / Right buttons | Click; hold a button while sliding on the pad to drag |
106
+
107
+ Speed, acceleration, scroll speed, natural scrolling and haptics are in the βš™ panel.
108
+
109
+ ### Keyboard
110
+
111
+ Tap ⌨. Type in the box and the text appears on the PC live. Tap **Ctrl / Alt / Shift / Win** once, then a key or letter, for a shortcut (Ctrl, then `c` = Ctrl+C). Hold arrows, Backspace or Del to repeat.
112
+
113
+ ### Screen preview
114
+
115
+ Tap πŸ–₯. The preview only streams while it is on and pauses automatically when the phone screen turns off.
116
+
117
+ | Preset | Frames | Width | Typical data while the screen changes |
118
+ |---|---|---|---|
119
+ | Saver | 2 fps | 640 px | β‰ˆ 30–60 KB/s |
120
+ | **Normal** (default) | 5 fps | 960 px | β‰ˆ 100–200 KB/s |
121
+ | Sharp | 8 fps | 1280 px | β‰ˆ 300–500 KB/s |
122
+
123
+ Fine-tune frames per second (1–15), resolution and image quality in βš™ β†’ *PC screen preview*. The cursor position is sent separately about 60 times a second and predicted locally while your finger moves, so the virtual cursor stays smooth even at low frame rates. When the page is opened over the internet, it starts on the saver preset.
124
+
125
+ ## CLI
126
+
127
+ ```text
128
+ ownremote interactive menu
129
+ ownremote run run the server in this terminal
130
+ ownremote start run the server in the background
131
+ ownremote stop stop the server
132
+ ownremote status show status, address and pairing code
133
+ ownremote --help all commands and the data folder
134
+ ```
135
+
136
+ Main menu: run in terminal / background, session & device management, stop, and **Settings** (port, pairing code, firewall rule, server log, data folder, **Advanced settings** and **Cloudflare Tunnel**).
137
+
138
+ ### Advanced settings
139
+
140
+ | Setting | What it does |
141
+ |---|---|
142
+ | Start with Windows | Runs the server in the background at every sign-in (a hidden launcher in the Startup folder) |
143
+ | Startup delay | Waits 0–600 s after sign-in, e.g. for Wi-Fi to connect |
144
+ | Show tray icon | Tray icon in background mode: address and code (click to copy), open the menu, new code, lock pairing, stop |
145
+ | Notify when a device connects | Windows notification when a phone connects or starts viewing the screen |
146
+ | Auto-lock pairing after a new device | Rejects further devices as soon as one has paired |
147
+ | Allow screen preview on phone | Turns the screen preview feature off completely |
148
+ | Reset all devices & pairing code | Every phone has to pair again |
149
+
150
+ ## Cloudflare Tunnel
151
+
152
+ Use OwnRemote from mobile data or any other network, over HTTPS, without port forwarding.
153
+
154
+ - **Quick tunnel**: *Settings β†’ Cloudflare Tunnel β†’ Quick tunnel*. A random `https://*.trycloudflare.com` URL appears in the dashboard, the tray menu and as a QR code. A new URL can take up to a minute before it opens, and it changes every time the server starts.
155
+ - **Named tunnel** (your own domain): in the Cloudflare dashboard, *Zero Trust β†’ Networks β†’ Tunnels β†’ Create a tunnel*, choose *Cloudflared*, copy the token, and add a public hostname pointing to `http://localhost:8787`. Then set the token and public URL in the CLI and pick *Named tunnel*.
156
+
157
+ OwnRemote starts and supervises `cloudflared` itself (restarting it with back-off if it exits).
158
+
159
+ ## Security
160
+
161
+ - New devices need the 6-digit pairing code. After 5 wrong codes an IP is blocked for 60 s; after 20 wrong codes from any addresses within 10 minutes, pairing is blocked for 10 minutes (a new code lifts it).
162
+ - Each phone gets its own random token; only a SHA-256 hash is stored. Revoke devices any time from *Session management*.
163
+ - The admin API used by the CLI only answers on `127.0.0.1`, requires a secret token, and **rejects anything that arrives through Cloudflare or another proxy**.
164
+ - Behind the tunnel, the real client IP comes from `CF-Connecting-IP` (trusted only for connections from localhost).
165
+ - On your LAN the connection is plain HTTP, so use it on networks you trust, or use the tunnel (HTTPS). When the PC is reachable from the internet, enable **Auto-lock pairing**.
166
+ - The screen preview is off until the phone turns it on, the tray shows a notification when it starts, the CLI marks the device with `β—‰ screen`, and you can disable the feature entirely.
167
+
168
+ ## How it works
169
+
170
+ ```text
171
+ phone browser ──HTTP + WebSocket──► Express server (Node.js)
172
+ β”œβ”€ input-helper.ps1 SetCursorPos / mouse_event / SendInput (C# via Add-Type)
173
+ β”œβ”€ screen-helper.ps1 CopyFromScreen β†’ JPEG, cursor position at ~60 Hz
174
+ β”œβ”€ tray-helper.ps1 WinForms NotifyIcon (background mode)
175
+ └─ cloudflared optional tunnel
176
+ CLI (cli.js) ──localhost admin API──► status, sessions, settings
177
+ ```
178
+
179
+ The helpers are long-running PowerShell processes that compile small C# classes at start-up, so there are no native Node modules and no Visual Studio Build Tools. They are DPI-aware per monitor, so coordinates are physical pixels even with display scaling.
180
+
181
+ ## Configuration
182
+
183
+ Settings, paired devices and the log live in `%APPDATA%\OwnRemote` (`config.json`, `devices.json`, `server.log`), so updating the package keeps your phones paired. A source checkout that already has a `data/` folder keeps using it. Set `OWNREMOTE_DATA_DIR` to use another folder (for a second instance, for example). `ownremote --help` prints the folder in use.
184
+
185
+ ## Troubleshooting
186
+
187
+ - **The phone cannot open the page**: allow the port in the firewall (Settings β†’ 3). If you once pressed *Cancel* on the Node.js firewall prompt, Windows created a *Block* rule for `node.exe`; remove it in *Windows Defender Firewall β†’ Advanced settings β†’ Inbound Rules*. Guest Wi-Fi networks often isolate clients.
188
+ - **Input does not reach a window**: windows running as Administrator (and UAC prompts) ignore input from normal processes; run OwnRemote as Administrator to control them.
189
+ - **The screen preview says the screen cannot be captured**: Windows does not allow capturing the lock screen or a UAC prompt; it resumes when you unlock. DRM-protected video shows black.
190
+ - **The address changed**: the current address is always on the main menu and in the tray menu.
191
+
192
+ ## Project structure
193
+
194
+ ```text
195
+ cli.js CLI menus
196
+ start.bat double-click launcher
197
+ public/ phone web app (trackpad, keyboard, screen preview)
198
+ src/server.js Express + WebSocket server, admin API
199
+ src/input.js mouse & keyboard controller (input-helper.ps1)
200
+ src/screen.js screen streaming (screen-helper.ps1)
201
+ src/tray.js tray icon (tray-helper.ps1)
202
+ src/tunnel.js Cloudflare Tunnel manager
203
+ src/startup.js Start with Windows / hidden background launcher
204
+ src/daemon.js background entry point
205
+ src/logo.js ASCII logo
206
+ docs/ screenshots and trailer
207
+ ```
208
+
209
+
210
+ ## License
211
+
212
+ [MIT](https://github.com/Adytm404/ownremote/blob/main/LICENSE)