Skip to content

Releases: SubSneaker/DeXterous

DeXterous 0.2.3

Choose a tag to compare

@github-actions github-actions released this 15 Oct 08:56

Changed

  • Without DeXterous running, as on the hosted copy of the app, the Through DeXterous tab is no longer greyed out. It says "Needs DeXterous on your computer", and choosing it shows what DeXterous is, the commands to install and start it with a Copy button, and a link to the install steps. It also points Chrome and Edge users to USB, browser only. Start DeX stays off on that tab, and the checklist's DeXterous is running step points to the same steps.
  • The project site's command box has a third tab, Browser, with a button that opens the browser-only app, and the No Node.js? line under Get started links to it as Open it in your browser. On narrow screens, Copy shrinks to its icon.
  • New app icon: an orange tile with a phone docked to a monitor. It's the browser tab icon, the home screen icon on phones and tablets, and the logo at the top of the app. On the project site, it sits beside the headline, in the footer and on the link preview image, and the top bar shows just the name.

Install or update with npm install -g @subsneaker/dexterous, or run it once with npx @subsneaker/dexterous@latest.

DeXterous 0.2.2

Choose a tag to compare

@github-actions github-actions released this 14 Oct 17:41

Added

  • A System, Light and Dark theme switch and an Animations switch at the top right of the connect screen. Your browser remembers both, and the page shows the right theme from the first frame. Animations starts off when your device is set to reduce motion.
  • Motion on the connect screen, with Animations on: the page rises in, phone cards slide in and fade out as phones come and go, a ready phone's dot pulses a few times, checklist ticks pop in, the picture quality highlight slides, opened sections slide into place, Start DeX lifts on hover, and the loading screen fades in over the connect screen. A faint ring with a light going round it sits in the top band. A DeX session gets no new motion.
  • A Project site link under the name, and a Help section with links into the user guide: your first connection, Wi‑Fi, using it from another device, shortcuts, troubleshooting and updating. The shortcuts panel has a short Help row too.

Fixed

  • Disconnect in browser-only USB mode could leave the page stuck on an empty screen with the shortcuts panel open. The page now goes back to the connect screen right away and closes the connection to the phone in the background.

Changed

  • The USB, browser only tab now says it's for computers without DeXterous when DeXterous is running. If adb on your computer is already using the phone, the message says that plainly and offers Use Through DeXterous, instead of telling you to run adb kill-server. A start that fails right away no longer flashes the loading screen.
  • The session dock is easier to open: rest the mouse near the top middle of the DeX screen, or slide it off the top edge. It no longer needs the pointer on the very edge, and it stays shut while you drag.
  • The top band is a deeper red-orange with cream text, logo and controls, so text on it is easier to read. Start DeX and the Connecting… label use the same colours. The dark theme keeps its brick band.
  • The project site matches: cream text on the deeper red-orange band, and an Animations switch next to the theme switch that also stops the turning devices.
  • The loading spinner stops once DeX is on screen, instead of turning unseen behind it for the whole session.
  • With Animations off, or by default when your device is set to reduce motion, transitions are instant and spinners turn slowly.

Install or update with npm install -g @subsneaker/dexterous, or run it once with npx @subsneaker/dexterous@latest.

DeXterous 0.2.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 10:46

Fixed

  • Update now no longer says a DeX session is open when none is. The relay counted the connect screen's own short adb commands, such as reading a phone's details, as a session. Now only a DeX session that is starting or running blocks an update. If the page still gets that answer, it asks once more after a moment before showing it.
  • A wrong Wi‑Fi pairing code is reported as a wrong code. adb's "Failed: Wrong password" answer was taken for success, so the form went on to connect and said the phone hadn't accepted the connection.
  • Other pairing errors are no longer reported as a wrong code just because adb's message contains the word "code". A bad pairing address gets its own hint, and anything else shows adb's own message.

Changed

  • Phone cards show the name the phone has in Settings › About phone. Many Samsung phones have no marketing name, so their cards showed a model code like SM-S938B. The model code is still shown on the second line.
  • Start DeX is greyed out, with a short note, while an update installs and while DeXterous restarts afterwards.
  • The README and the user guide no longer say what has and hasn't been tested. The guide's Using it from an iPad or another computer section is now Use it from another device.
  • The app has a new look to match the project site: the same colours, light and dark, and the same fonts. The fonts ship with DeXterous, so the app makes no requests to font services.
  • The project site serves its own fonts instead of loading them from Google Fonts, has a System, Light and Dark switch, and links to the npm package next to GitHub and in the footer.

Install or update with npm install -g @subsneaker/dexterous, or run it once with npx @subsneaker/dexterous@latest.

DeXterous 0.2.0

Choose a tag to compare

@SubSneaker SubSneaker released this 14 Oct 10:09

Added

  • DeXterous is on npm as @subsneaker/dexterous. Install it with npm install -g @subsneaker/dexterous, or run it with npx @subsneaker/dexterous@latest.
  • Update checks. DeXterous asks npm's registry for the latest version about once a day, and prints a line in the terminal when there's a new one. The check sends nothing about you; turn it off with --no-update-check or DEXTEROUS_NO_UPDATE_CHECK=1. It's off when $CI is set and when running from a clone.
  • dexterous update installs the latest version, and dexterous update --check only checks. Copies run through npx or from a clone get told what to run instead.
  • The relay's /api/info reports update details, and POST /api/update lets the DeXterous page install an update and restart the relay. It only works from the computer DeXterous runs on, while DeX isn't running. npm runs in the background, so stopping DeXterous mid-update waits for it to finish, and a version that needs a newer Node.js is refused.
  • dexterous restarts the relay in the same terminal after an update.
  • Release workflows: pushing a version tag publishes the package to npm with trusted publishing and provenance, and creates the GitHub release with the notes from this changelog.
  • The connect screen shows an update banner when a new version is out, with a What's new link and either Update now or the command to run, with a Copy button.
  • Phone cards on the connect screen: each phone shows its name, model code, One UI version, battery, a USB or Wi‑Fi badge and whether it's ready. Phones on One UI 7 or older, or that aren't Galaxy phones, get a warning. DeXterous remembers the phone you used last. The arrow keys move between phones and Enter starts DeX.
  • Before you start, a live setup checklist: DeXterous running, adb reachable, phone found, USB debugging allowed, One UI 8 or newer. The first missing step says how to fix it, and the list folds up to All set when everything is ready.
  • Picture quality presets in Display & input: Best (USB), Balanced (Wi‑Fi), Light and Custom. Best is the default on a first visit. On a Wi‑Fi phone, DeXterous suggests Balanced.
  • Add a phone over Wi‑Fi on the connect screen: enter the phone's address, and the first time, its pairing address and 6-digit code. No need for adb pair and adb connect in a terminal (they still work).
  • A footer on the connect screen with the version and links to the guide and the project site.
  • A project site at https://subsneaker.github.io/DeXterous/, published from site/ with GitHub Pages, with a copy of the browser-only app at https://subsneaker.github.io/DeXterous/app/.

Changed

  • The connect screen's phone drop-down is now a list of phone cards, and Sharpness, Video codec, Bitrate and Frame rate moved under Picture quality › Custom.
  • CI also packs the npm package, installs it globally into a temporary folder and smoke-tests that copy.

Removed

  • Installing from the GitHub release tarball and running npx github:SubSneaker/DeXterous are no longer the documented ways to install. Use npm.

Install or update with npm install -g @subsneaker/dexterous, or run it once with npx @subsneaker/dexterous@latest.

DeXterous 0.1.0

Choose a tag to compare

@SubSneaker SubSneaker released this 13 Oct 15:33

Run Samsung DeX from your Galaxy phone (One UI 8 or newer) in any web browser, on a scrcpy virtual display. No root, and no app on the phone.

DeXterous is an independent project, not affiliated with or endorsed by Samsung. "Samsung", "Galaxy" and "DeX" are trademarks of Samsung Electronics.

Install

gh release download v0.1.0 -R SubSneaker/DeXterous -p '*.tgz'
npm install -g ./subsneaker-dexterous-0.1.0.tgz
dexterous

Needs Node.js 22.18+ and Android platform-tools (adb). npm 11 may warn that prepare isn't covered by allowScripts; it's harmless, because the tarball is already built. Other ways to install, and a full walkthrough, are in the README and the user guide.

SHA-256 of subsneaker-dexterous-0.1.0.tgz: 24e379911b6e0848dbf68c708835dfdbf17bb3bd8c16c11cba2c960496c7100a

First release.

Added

  • Samsung DeX in any browser, running on a scrcpy 5.0.1 virtual display that resizes with the window. Works on One UI 8 and newer, without root.
  • An installable dexterous command. It starts the relay and opens your browser (--no-open to skip that), and --version prints the version. Install it from the release tarball, run it from GitHub with npx, or link a clone with npm install -g ..
  • Relay mode (dexterous): a local Node server that tunnels the browser to the computer's adb server. It accepts only same-origin pages on localhost and blocks DNS rebinding. It starts the adb server if none is running.
  • LAN mode (dexterous --lan): HTTPS with a self-signed certificate plus a required access token, for using DeX from other devices. Bring your own certificate with --cert/--key, and put DeXterous behind a reverse proxy with --allow-origin.
  • A per-user state directory for the access token and certificate (~/Library/Application Support/DeXterous, %APPDATA%\DeXterous or ~/.config/dexterous), overridable with DEXTEROUS_HOME. DEXTEROUS_TOKEN sets a fixed token.
  • Browser-only USB mode (WebUSB) for Chrome and Edge. The built app also works from any HTTPS static host, even under a sub-path.
  • Hardware video decoding with WebCodecs (H.264, H.265, AV1), drawn with WebGL.
  • Phone audio played in the browser, with a mute control.
  • Input: mouse with hover and right-click, multi-touch, scrolling, keyboard with IME and non-ASCII text, and ⌘-as-Ctrl on Mac with right ⌘ as DeX's ⊞ key.
  • Shared clipboard in both directions, or two separate clipboards.
  • A lock guard: DeX is covered, input is blocked, audio is muted and clipboard copies are held back while the phone is locked, failing closed when the lock state is unknown. Keep DeX usable while the phone is locked turns this off (opt-in, and only while the phone is unlocked).
  • The phone stays awake while connected, over USB and Wi‑Fi.
  • A shortcuts and commands panel (Ctrl+Alt+/ or ⌃⌥/): lock or wake the phone, turn the phone's screen off, Back/Home/Recents, mute, full screen, stats and disconnect.
  • Settings: sharpness, DeX text size, codec, bitrate, frame rate, and audio, clipboard, keyboard and disconnect options.
  • Documentation: README, user guide (docs/GUIDE.md), contributing guide, security policy, third-party notices, and issue and pull request templates.
  • Continuous integration on GitHub Actions: type-check, build and smoke test on Linux (Node 22 and 24), macOS and Windows (Node 22).

Known limitations

  • scrcpy sends left clicks as touches, so dragging across text may scroll instead of selecting.
  • Shift+click and Ctrl+click arrive without the modifier.
  • Typing non-ASCII text goes through the phone's clipboard.
  • Browser-reserved shortcuts (⌘W, ⌘T, ⌘Q, Alt+Tab) only reach DeX in full screen in Chrome or Edge.