DLogin
What shipped, and what broke

Changelog

Every release, dated, with what broke. Installers and SHA-256 checksums for the current builds are on the download page; every earlier version, with each file’s SHA-256, is on GitHub releases.

3.5.8

DesktopLatest

Web pages can’t reach the local API, and a broken proxy no longer means your own IP.

Privacy and leaks

  • Web pages can no longer control XDLogin. While the local API or the MCP server was on without an API key, any website open in a browser on this computer could send them commands: create, launch, stop or delete profiles. With DNS rebinding a page could also read the answers, including a running profile’s DevTools address, which gives full control of that logged-in browser. Both servers now answer a request from a website with a 403. Scripts, Puppeteer, Playwright, Selenium and MCP clients are not affected. 3.5.7 and earlier don’t check, so update if you use the API or MCP. Linux and macOS are still on older versions: there, set an API key in Settings → API & Auto.
  • A page’s CSS media queries saw your monitor’s size and pixel density instead of the profile’s screen. They now agree with screen and devicePixelRatio.
  • A tab could fall back to this computer’s timezone when another tab of the same site closed or left the site. Every tab now keeps the profile’s zone and language.
  • Tabs Chrome restored from the last session loaded before the fingerprint was in place. Profiles now always open at their start page.
  • On Windows, dates and numbers formatted by Intl could use a different language from navigator.language (fr for a fr-FR profile). The two now agree.
  • A tab opened with a middle-click or Ctrl+click ran its first page without the fingerprint. It now gets it.
  • The Accept-Language header carried a doubled weight (;q=0.9;q=0.9) that no real browser sends, and the browser brand list in client hints was Chrome 126’s for every version. Both are now what a real Chrome sends.
  • A page could tell the profile’s values had been changed by looking at them from an iframe or popup of the same site. It can’t any more.
  • A profile created without a WebRTC setting gets Disabled in Chrome itself, not only in the page.
  • If Chrome, Edge or Brave can’t be found, a profile doesn’t launch and says why. 3.5.7 switched to the weaker built-in engine without asking. You can still choose that engine in Settings → Network.
  • Still open: the very first request of a tab opened with a middle-click or Ctrl+click carries this computer’s user agent and language headers; the CSS of an iframe from another site sees your monitor’s size; and a service worker’s own script request carries this computer’s user agent.

Proxies

  • A switched-on proxy that can’t be used now stops the launch. A profile whose proxy is on but has no host, or no valid port, used to launch with no proxy at all, browsing from this computer’s own IP without a warning. Now it doesn’t launch and says what to fix, the profile editor won’t save it, and the local API refuses to create it with a 400. If a profile that used to open now refuses, check its proxy.
  • The proxy check finds the protocol the proxy actually speaks and offers to switch the type. It tells a wrong username or password, used-up traffic or balance, and an unreachable port apart, and shows the exit IP’s region, timezone and network.
  • New timezone option, Match proxy: at each launch the profile looks up the timezone of its proxy’s exit IP and uses it. If the lookup fails, the profile doesn’t launch rather than use this computer’s zone. A profile without a proxy uses this computer’s zone. In the new-profile dialog it is the default once you add a proxy.
  • Using cloud sync? Update every device. 3.5.7 and earlier turn Match proxy back into a fixed timezone when they save a profile, and sync carries that change to your other devices. Linux and macOS are still on older versions, so keep Match proxy off for profiles you sync to them.
  • With a SOCKS4 proxy, Chrome looks up site names on this computer, not through the proxy. The proxy form and the check now say so and suggest SOCKS5.

Reliability

  • A browser that hangs while starting no longer holds up its profile: the launch gives up after 60 seconds and says so.
  • A crashed browser is reported as a crash, with the reason when Windows gives one (out of memory, blocked by antivirus), in a notification and in the activity log. It used to look like a normal close.
  • When Chrome restarts itself (chrome://restart, or Relaunch to update), XDLogin attaches to the new browser and reloads its tabs under the profile’s fingerprint. The restarted browser used to run without it.
  • Profiles show Launching… and Stopping… while that is under way, and Launch and Stop are disabled meanwhile. The local API reports these as starting and stopping.
  • Deleting a profile waits for a launch or cookie import already under way, so nothing writes its folder back. A browser left running when XDLogin last closed is closed at the next start. Warm-up no longer reopens a profile you stopped.
  • Settings → Data & Privacy → Storage lists folders left on disk by profiles deleted in older versions or through cloud sync, with their sizes, and deletes them when you ask. Nothing is removed on its own.

AI agents and the local API

  • Six new MCP tools let an agent work inside a running profile’s first tab: browser_snapshot lists what the page shows, with a ref for each control; browser_click, browser_type, browser_press_key and browser_scroll act on it with real mouse and keyboard input (taps and swipes on a phone profile); browser_get_text reads its text. The agents page lists them.
  • The local API and MCP profile_create accept "timezoneMode": "proxy" for Match proxy, and refuse a timezone mode they don’t know. MCP proxy_test reports the protocol it found and why a proxy failed.

Moving from another browser

  • Import from another browser (on the workspace screen, or Ctrl+K) makes profiles from what AdsPower, GoLogin, Dolphin{anty} and Multilogin export: cookie files, one profile per file; AdsPower’s bulk-create .txt; and proxy lists. Fingerprints are never imported, so every profile gets its own device. A row whose proxy can’t come over, such as SSH, is blocked rather than created on your own IP. Imports count against your plan like any other new profile.
  • The cookie editor reads Netscape cookie files and pasted text, and reports how many cookies were kept.

Cloud sync

  • Launching a profile no longer overwrites a change made to it on another device.
  • A change or a new profile saved while a sync was running is uploaded. It could be skipped before.
  • After you reset sync, the first sync no longer replaces your local changes with the server’s older copies. If the passphrase you enter opens nothing on the server, sync stops instead of overwriting it.
  • A delete coming from the server must be encrypted with your passphrase, so someone holding only your sign-in token can’t delete synced profiles.
  • A profile deleted on another device also has its browser data removed on this one, and its browser closed if it was open.

Account and sign-in

  • Switching between Wi-Fi, Ethernet or a VPN no longer brings up “limit reached”. The app used to identify this computer by a hash that included its network adapter, so a new network counted as a new device. It now uses a random ID made once per install, and sends the old one once so the server can stop counting it.
  • Fewer unexpected sign-outs: the app waits up to 45 seconds, not 15, for the account server to renew a session. A renewal that timed out used to sign the app out at the next one.
  • Your plan is kept in the encrypted sign-in file rather than a plain file on disk. Profile ids are checked wherever they are used, so a malformed id from an import or the API can’t reach a folder outside XDLogin’s own, and the app’s window can’t be sent to another page.
  • Windows only for now. Linux stays on 3.5.6 and macOS on 3.5.5 until their 3.5.8 builds are added.

3.5.8 release on GitHub

3.5.7

Desktop

The local API and MCP do what they report.

  • Creating or cloning a profile through the local API answers with the saved profile and its id. 3.5.6 answered before saving, with an empty data; it reported success even when your plan’s profile limit refused the profile, and of two creates sent at once, one could be lost. A refusal is now a 403 that says why, and an unknown profile a 404.
  • An unknown device id, or a timezone that isn’t an IANA name, is refused with a 400 instead of launching as a generic Windows desktop or on this computer’s zone. A proxy sent with a host and port is used unless it says "enabled": false.
  • MCP: profile_create takes the same fields as the local API, so an agent can set the device, the timezone and a proxy that is actually used. browser_screenshot returns a picture of the page instead of a text description.
  • Stop, and quitting the app, close each profile’s Chrome normally, so a login made a moment earlier is kept. 3.5.6 ended Chrome at once, losing cookies from its last half minute or so.
  • The local API and the MCP server start with the app once you have started them in Settings → API & Auto, until you stop them there.
  • Cookie import and export reach a profile’s own Chrome cookie store, so they work for profiles that run in Chrome and not only on the built-in engine. An import reports how many cookies the store holds afterwards, not how many were sent — Chrome accepts some it then drops.
  • Signing in lasts as long as it should. A session record expired with the access token rather than the refresh token, so a signed-in app was logged out about a month after sign-in however much it was used. A 429 or a 5xx from the account server no longer ends a session either.
  • Deleting a profile clears its browser data on every path — the app, the local API and MCP — not just in the window. Cloud sync now runs the same code its tests cover.
  • Windows only for now. Linux stays on 3.5.6 and macOS on 3.5.5 until their 3.5.7 builds are added.

3.5.7 release on GitHub

3.5.6

Desktop

Fixes what 3.5.5 let a site see.

  • Proxy passwords go only to the proxy. 3.5.5 answered every login prompt with them, including a website’s own.
  • The first tab no longer opens undisguised. In 3.5.5 about 1 launch in 10 loaded the first page before the fingerprint was in place; launch now waits (0 of 92 test launches).
  • The marker a page could find is gone, and the tests now fail if the script adds anything a page can list.
  • Web Workers loaded from a URL get the profile’s fingerprint. Blob and service workers still don’t; see the test results.
  • Spoofed properties no longer reveal they were changed; browser-version data agrees between the page and the request headers; Android device profiles send the user agent real Chrome sends; IPv6 proxies work; an expired paid licence falls back to the free limits; leaked browser sessions are reused.
  • The app’s own text matches what it does: plan lists name only real features, and each WebRTC mode explains its trade-off.
  • Known issues: cookie import/export reaches only the built-in engine, not profiles that run in Chrome (fix in 3.5.7). macOS stays on 3.5.5 until its 3.5.6 build is added.
  • Windows and Linux only for now. Not code-signed; verify the SHA-256 on the download page. The Windows installer and the Linux AppImage/deb update themselves; the portable build doesn’t.

3.5.6 release on GitHub

Android 1.3.0-beta.1

AndroidLatest

Up to four profiles open at once.

  • Each open profile runs in its own process with its own proxy, timezone, cookies and storage, and its own window in Recents (Android 9 and newer; Android 8.x keeps one profile at a time). Verified on a real phone with two profiles side by side: the direct profile sent zero requests through the other’s proxy, and each page reported its own profile’s timezone.
  • The first time each profile opens after the update, its cookies and site data are copied into its own storage. This is one-way: don’t reinstall 1.2.x afterwards, or those profiles open signed out.
  • Web Workers loaded from a URL now present the profile’s fingerprint, patched as their script downloads. Workers built from in-page code (blob workers) and service workers still see the real device — disclosed.
  • The fingerprint script no longer adds properties a real browser’s worker doesn’t have, and leaves no marker a page could find.
  • The app lock covers every profile window; unlocking returns you to the profile you came back to.
  • Includes the 1.2.2–1.2.4 fixes: proxy credentials only ever answer the proxy, closing a profile can no longer leave the next one on your real IP, downloads no longer carry cookies across redirects, and the app lock can no longer be skipped. Notes for each are on the releases page.
  • The X-Requested-With header added by the Android System WebView is unchanged and still disclosed on the download page.

Android 1.3.0-beta.1 release on GitHub

3.5.5

Desktop

A visual release. Nothing about how it works changed.

  • The desktop app now carries the same brand system as this site: the knot-X mark at every icon size, Inter Tight for everything you read, and IBM Plex Mono for everything the app reports back — hashes, versions, API paths, fingerprint values, logs.
  • Calmer surfaces: warm near-black grounds instead of the old blue-black, square corners, no drop shadows or gradients. Amber is the warning colour and green means running or connected; red is reserved for the brand and for destructive confirmations.
  • Sign-in shows the mark and the line “One machine. X devices.” New installer art on Windows and a new DMG background on macOS.
  • Every text colour was measured against every surface in the new palette. One that fell short — a tertiary grey at 4.24:1 on the raised surface — was corrected before release. All text now meets WCAG AA.
  • No changes to profiles, the fingerprint engine, cloud sync, the local API, licensing or the team panel.
  • These builds are not code-signed. They never have been; the download page previously implied a certificate existed, and that wording has been corrected. Windows will show “Windows protected your PC” and macOS needs the one-line quarantine command. The published SHA-256 checksums are the real verification step — use them.

Known issues in 3.5.5, fixed in 3.5.6

Found after release, in the engine audit that followed it and in testing on September 27. All of them were in earlier releases too.

  • Proxy passwords could reach websites. For a proxy with a username and password, 3.5.5 answered every password prompt with them, not only the proxy’s, so a website that asked for a login (HTTP 401) could collect your proxy’s username and password. If your proxies use passwords, update and change those passwords.
  • The timezone was only partly applied. The profile’s timezone reached two JavaScript calls, getTimezoneOffset and resolvedOptions. The clock, date strings and Intl formatting on every page still showed this computer’s timezone, and a page could see the two disagree.
  • The first page could miss the fingerprint. The first page a profile opened could load before the fingerprint was installed, and see this computer’s real values. In tests of the same launch code on Chrome 154, that happened in 13 of 132 launches.
  • Pages could tell XDLogin was running. The fingerprint script left a marker, Symbol.for('__xdl_fp'), that any page could list; navigator.languages carried a value no real browser reports (en;q=0.9); and chrome.runtime existed on ordinary pages, a well-known sign of an automation tool.
  • Web Workers saw this computer. Code in a Web Worker read this computer’s CPU cores, memory and platform. 3.5.6 covers workers loaded from a URL; workers built from in-page code and service workers still see this computer, as the test results page lists.

Update to 3.5.6 or later. It also fixes smaller inconsistencies the same audit found. The Windows installer and the Linux AppImage and .deb update themselves; for the portable .exe, download the current build from the download page. macOS has no build past 3.5.5 yet, so these issues still apply there.

3.5.5 release on GitHub

Android 1.2.1-beta.1

Android

A visual release. Nothing about how it works changed.

  • The app now carries the same brand system as this site: the knot-X mark as an adaptive launcher icon, Inter Tight for everything you read, and IBM Plex Mono for everything the app reports back — fingerprint values, proxy strings, versions. The app previously used the system typeface and shipped no fonts of its own.
  • Calmer surfaces: warm near-black grounds instead of the old blue-black, square corners, no drop shadows. Amber is the warning colour and green means running or connected; red is reserved for the brand and for destructive confirmations.
  • Sign-in shows the mark and the line “One machine. X devices.”
  • Every text colour was measured against every surface in the new palette; all of it meets WCAG AA.
  • No changes to profiles, the fingerprint engine, proxy handling, tabs, downloads, history or bookmarks. Same beta signing key, so it installs over 1.2.0 in place.
  • The X-Requested-With header added by the Android System WebView is unchanged and still disclosed on the download page.

Android 1.2.1-beta.1 release on GitHub

Android 1.2.0-beta.1

Android

The browser release: tabs, popups, downloads, uploads

  • Tabs with a switcher, new, close and close all, and a session that reopens the tabs a profile had (switchable in Settings).
  • Popups work: a window a page opens becomes a tab of the same profile with the same fingerprint script and proxy, and its very first request already carries the profile's Accept-Language and timezone. Windows opened without a tap are blocked.
  • Downloads go through the profile's proxy with its user agent, cookies and referer, into a file you pick. Android's DownloadManager is deliberately not used because it would fetch with the device's real IP.
  • File uploads, JavaScript dialogs, fullscreen video, find in page, pull to refresh, a stop button, and a long-press menu on links and images.
  • Per-profile history and bookmarks, address-bar suggestions, text size, clear browsing data, and an identity & proxy panel with a live exit-IP test and a proxy status dot that turns red when the proxy fails closed.
  • Own error pages for network, proxy and certificate failures; certificate errors are never bypassable inside a profile. A page whose renderer dies is reopened instead of crashing the app.
  • Search engine choice in Settings: Google, DuckDuckGo, Bing or Brave.
  • Fingerprint: navigator.languages no longer leaks Accept-Language q-weights. Re-verified on real hardware (Android 16, WebView 151): user agent, client hints, platform, screen, touch, timezone, Accept-Language, WebGL and canvas all present the profile's device.
  • The X-Requested-With header is still added by the Android System WebView itself; re-tested on WebView 151 with the allow-list API and request interception both ineffective. Disclosed on the download page until the platform fixes it.
  • Under the hood: JVM unit tests for the address-bar policy, device model and profile JSON, and a GitHub Actions build for every Android change.

Android 1.2.0-beta.1 release on GitHub

Android 1.1.0-beta.1

Android

Folders, backups, and app lock

  • Organize profiles into folders with tags, and search, sort, and filter the profile list to find what you need fast.
  • Multi-select is here: bulk-delete profiles in one action, duplicate a single profile, or bulk-create several at once (bulk-create requires a paid plan).
  • Cookie export/import and full profile backup export/import, both via the on-device DevTools bridge, moving JSON files through Android's native document picker.
  • Proxy connection testing runs a real network check against your configured proxy — latency, exit IP, and country, before you rely on it.
  • App lock with PIN or biometric unlock, a 3-screen first-run onboarding flow, and a consolidated Settings screen for account, security, and about.
  • Every action above is recorded in a new activity log with timestamps.
  • Found and fixed during on-device testing: a crash opening the "New folder" dialog (a Material TextInputLayout layout-params cast issue), a duplicate-profile name missing its leading space ("Profile 1(Copy)" instead of "Profile 1 (Copy)"), and five activity-log entries (launch, folder create/delete, profile export/import) whose display strings existed but were never wired to a call site, so those actions weren't being logged — now fixed.
  • The X-Requested-With header issue from the first build is still unresolved — see below.

Android 1.1.0-beta.1 release on GitHub

Android 1.0.0-beta.1

Android

First Android build — native app, not a port

  • A native Kotlin app, separate from the desktop Electron build: isolated per-profile WebViews, the same fingerprint engine and coherent device-model logic as desktop, ported line-for-line, and the same account and backend.
  • Correction, September 27, 2026: the Android copy of the engine later drifted from the desktop’s. It was regenerated from the desktop source in September, and our build checks now fail when the two disagree.
  • Real timezone, locale and client-hint header parity via an in-process DevTools bridge — no external tooling, no root required.
  • Disclosed, not fixed: the Android WebView still attaches an X-Requested-With header naming this app's package to every site a profile visits. Two independent removal approaches were tried (the documented WebView allow-list API, and rewriting the header directly on the wire) and neither worked on the WebView build this was tested against. We're not shipping a "hides your identity" claim for Android until this is resolved and verified on real hardware — see the download page for the current state.
  • Sideloaded APK from this site; not on Google Play, which doesn't list this category of app.

Android 1.0.0-beta.1 release on GitHub

3.5.4

DesktopQuality

Honest panels, paid-only team sharing, macOS beta

  • Every panel now shows its real state. The Extension Manager, Cookie Editor, Team, Activity Log and Backup panels no longer display placeholder data; controls that have nothing behind them yet are disabled and say so.
  • Team sharing is a paid-plan feature: Free is single-user, Starter includes 3 seats, Pro 10, Business unlimited. The Team panel shows the upgrade path on Free.
  • Correction, September 27, 2026: in 3.5.4 and 3.5.5 the Team panel is local to your machine and shares nothing. No release shares profiles between teammates yet.
  • Fixed a race in Advanced Fingerprint where two quick edits could silently revert the first; edits now apply immediately and save in one batch.
  • Launch, delete and batch failures surface as notifications instead of being swallowed; commands that need a selected profile ask for one.
  • First macOS build (Beta): unsigned .dmg for Intel and Apple Silicon. Not yet runtime-verified by us — see the download page for the Gatekeeper steps and please report issues.
  • Website: the contact form now delivers to a real inbox instead of opening your mail client.

3.5.4 release on GitHub

3.5.3

DesktopPlatform

Linux fully supported

  • Linux promoted out of Beta after a complete runtime pass on Ubuntu 22.04: .deb install via apt, AppImage boot, sign-up, and a live profile launch with fingerprint injection — all verified.
  • Fixed .deb dependencies: the package now declares libasound2, so minimal Ubuntu/Debian installs no longer fail at startup.
  • Profiles on Linux launch in your installed Google Chrome or Chromium (apt and snap installs both detected).

3.5.3 release on GitHub

3.5.2

DesktopMajor fix

Coherent OS spoofing + worldwide timezones

  • Choosing a non-Windows OS now changes the whole device identity — client-hint headers, navigator.platform, touch, screen size, and GPU all derive from one coherent device model, so detection sites see no mismatch.
  • Correction, September 27, 2026: not every mismatch was gone. The timezone, Web Workers and the language list still gave the real machine or the tool away; see the known issues in 3.5.5.
  • Android profiles present as a real phone (e.g. a Pixel 7 reports Android 13, touch, a Mali-G710 GPU, and a phone viewport). Existing profiles are repaired automatically.
  • The timezone picker now lists the complete IANA database — ~418 zones covering every country, labelled with live UTC offsets.

3.5.2 release on GitHub

3.5.1

DesktopPolish

Brand consistency & hardening

  • New profiles and folders default to brand red; app, taskbar, and window icons are generated from one canonical mark.
  • Removed ~5 KB of dead legacy styles from the renderer.
  • The account server now refuses to start in production without real signing secrets.

3.5.1 release on GitHub

3.5.0

DesktopFeature

End-to-end-encrypted cloud profile sync (Pro)

  • Profiles are sealed with AES-256-GCM on your device before upload — the server only ever stores ciphertext.
  • Sync uploads only what changed, pulls what changed elsewhere, and resolves conflicts deterministically across devices.
  • Deleting a profile on one machine removes it everywhere on the next sync. Requires Pro and the same passphrase on each machine.

3.5.0 release on GitHub

3.4.x

August 24–25, 2026 DesktopSeries

Automation attach point & polish

  • Drive profiles from Puppeteer, Playwright, or Selenium: launch a profile, ask the local API for its connection endpoint, and attach — every page carries the full fingerprint. Available on every plan, free included.
  • Correction, September 27, 2026: not every page. Until 3.5.6 the first page of a launch could miss the fingerprint, and Web Workers never got it; see the known issues in 3.5.5.
  • Series of fixes through 3.4.6: legacy accent-colour traces removed, Settings repaint bug fixed.

3.4.6 release on GitHub

3.3.0

DesktopFeature

Upgrade from inside the app

  • Plans & License sells directly: pick a plan, pay by card or crypto in your browser, and your account upgrades automatically — no license keys to copy around.

3.3.0 release on GitHub

Older releases are archived on the releases page. The Windows installer and the Linux AppImage and .deb update themselves; the portable .exe, macOS and Android builds don’t, so download new versions of those from the download page.