XPlay Status

1 service is having trouble

Movies and series. Everything else is running.

checked 18:04 UTC
Server uptime
79days
Free storage
467GB
Disk used
36%
Load average
1.64

In the app

What every XPlay app talks to

App configuration

HTTP 200 3 ms 100%

Servers and branding every app loads on launch

72 hours agonow

Update service

HTTP 200 1 ms 100%

Tells apps when a new version is out

72 hours agonow

Sign in with a code

Validating 8 ms 100%

Turns an 8 digit code into a login

72 hours agonow

Free trial

HTTP 200 1 ms 100%

Creates and reports trial lines

72 hours agonow

Sports schedule

HTTP 200 713 ms 100%

Fixtures and live scores in the app

72 hours agonow

Devices and sessions

HTTP 200 2 ms 100%

Device locking, remote sign out and who is online

72 hours agonow

Apps checking in

Last check-in 1 min ago, 115 devices this week 100%

Whether the apps people have installed are talking to this server

72 hours agonow

Remembered logins

Off - store sealed 100%

A reinstalled app signing itself back in, where a provider switched it on

72 hours agonow

Movies and series

HTTP 0 12012 ms 58.33%

The on demand catalog

72 hours agonow

Website and dashboard

What you and your customers open in a browser

Website

HTTP 200 1 ms 100%

xplay.xproject.live

72 hours agonow

Pro dashboard

HTTP 200 2 ms 100%

Where providers manage their app

72 hours agonow

Behind the scenes

Build machinery and the data we buy in

App build service

Idle and ready 100%

Builds each provider their branded app

72 hours agonow

Backups

12 hours ago, 36 MB, off-site copy verified 100%

A sealed copy of every provider, subscriber, device and remembered login, kept on another server

72 hours agonow

TheSportsDB

Reachable 139 ms 100%

Where the sports fixtures come from

72 hours agonow

Apps and versions

The version each app is publishing right now. Installed apps update themselves from here, and the website is where you download them.

XPlay for Android

Phones, tablets, Android TV and Fire TV

1.0.77
build 78 58 MB 22 Sep 2026

XPlay Player

Bring your own line

1.0.69
build 70 58 MB 22 Sep 2026

XPlay Trial

One tap free trial

1.0.54
build 55 58 MB 22 Sep 2026

XPlay for Windows

Desktop player with the VLC engine built in

1.0.2
build 102 157 MB 2 Sep 2026

Release notes

Every published version and exactly what changed in it, newest first.

XPlay, Player and Trial ship together from one source, so they share a release. · 40 releases listed

App v1.0.77 (managed) / Player v1.0.69 / Trial v1.0.54

New

  • The channel list, over the picture. Press OK while watching a live channel and the list slides over the picture with the number, the logo, the name and what is on now, while the match keeps playing full size behind it. One press moves. Changing channel used to mean leaving what you were watching, finding the row in the list, pressing it and waiting for a black screen: four presses to do the commonest thing there is. The rows are the same list the remote already walks with channel up and down, in the same order, so nothing here contradicts the buttons. What is on now is asked for only when the cursor stops on a row, so holding the button down through forty channels costs a provider's panel nothing. On a phone, a tap beside the list closes it; on a remote, BACK does. Opening it took the button that used to bring up the player's controls, so the list carries a Player options row at the bottom, and the MENU key on a remote opens them directly. Anything that is not a live channel still gets the controls from OK, exactly as before.
  • A picture that stops now repairs itself too. The repair ladder added in 1.0.75 only ran when the engine reported an error. The commonest failure of all reports nothing: the picture simply stops and the spinner turns for ever, because that counts as buffering rather than a fault. A live stream whose picture has not moved for ten seconds is now treated exactly like an error: the same ladder, another address, another copy of the channel, the fallback engine. Ten seconds rather than three, because a stream that is only slow comes back on its own, and moving somebody off a channel that was about to recover would be worse than the wait.

Fixed before anyone met them

  • The cursor could land nowhere at all. The list asked for focus in the same frame as it scrolled, so on a long list the row did not exist yet and the request was quietly dropped: on a television that reads as a dead list where only BACK works. It now waits for the row, and falls back to the top of the list when the channel being watched is not in it.
  • Holding the D-pad down queued one programme lookup per row and fired them all. Now the wait is cancelled by the next move, which is what it was there for.
  • A panel that lists the same channel twice in one category would have crashed the list.
  • The hardware channel keys and the number pad were handled above the guard every other key respects, so a channel key changed the channel behind the open list, and the digits started an invisible number entry over the failure screen.
  • The stall clock was not tied to the stream it was timing. Two channels can both sit at position zero, so a fresh tune could inherit the silence of the one before it and be "repaired" two seconds in.
  • The watchdog could fire while the app was in the background, or while somebody was browsing the channel list, changing the channel underneath them.
  • Pressing OK over the failure screen opened the list behind it and took the cursor into rows nobody could see, so "Try again" stopped answering.
  • A tap beside the list fell through to the picture and toggled the controls with the list still sitting there.
  • Each row carried two focus targets instead of one, which on a remote can mean two presses to cross a single channel.

App v1.0.76 (managed) / Player v1.0.68 / Trial v1.0.53

New

  • "Your line allows 2 at a time, and 2 are in use." The commonest reason a channel will not start is that somebody else in the house is already watching on two boxes, and until now every app in this trade said the same useless thing: stream problem, try again. The viewer assumed the app was broken and rang their provider, who had to explain their own product down the phone. The failure screen now says it plainly, with the real numbers, and tells them to stop watching on one of their other devices. The numbers are the panel's own, from the answer it already gives this app when it signs in. Nothing is asked of anybody until a stream has already failed and the viewer is looking at the failure screen, and a panel that does not send those numbers says nothing rather than guessing.

Fixed

  • The playback failure screen the app was improving is not the one viewers reach. When the built-in engine gives up it hands over to the fallback engine by changing screen, so the failure screen that is finally shown belongs to that one. Both now say why.

Not shipped, and why

App v1.0.75 (managed) / Player v1.0.67 / Trial v1.0.52

New

  • Start from the beginning. Sit down twenty minutes into the film and the player offers to play the programme that is on from its start, with a proper progress bar, and "Back to live" to step back into the picture. When the programme ends it hands back to live by itself. It appears only where the provider's panel keeps an archive for that channel and has sent the programme's times, and only for the programme actually on air. This also makes catch-up visible for the first time: it existed, on a screen almost nobody found.
  • A channel that dies now repairs itself. A stream that keeps failing used to end at "Stream problem, try again", and by the time the viewer found another copy of the same channel in the list the goal was gone. The player now walks a ladder instead: it retries the address, then asks the panel for the same channel over its other address (the HLS one, which the app has been able to build since the first version and never once used), then moves to another copy of the same channel from the viewer's own playlist, and only then hands over to the fallback engine. One quiet line says "Switched to SKY SPORTS F1 FHD", or "Reconnected" when it simply got back up. Everything it has already tried is remembered, so it never walks in a circle. The fallback engine walks the same ladder, which is where it matters most.
  • Other copies of this channel, as a button in the player. Most playlists carry the same channel four or five times over. The app now knows they are the same channel, so the list is one press away rather than a scroll through a category. How the copies are found, because getting this wrong would send somebody to the wrong channel: the country prefix is kept, so "UK: Sport 1" and "DE: Sport 1" are never the same thing; words that describe the copy rather than the channel are dropped (hd, fhd, uhd, 4k, backup, vip and the rest); digits are kept, so Sky Sport 1 can never become Sky Sport 2; a plus is part of the name, so HBO and HBO+ stay apart; a name with no country prefix must also be in the same category; and a family of more than eight is thrown away whole, because that is a rule that has gone wrong rather than a channel with nine copies. Measured against a real 33,000 channel playlist: 4,207 channels gain a sibling, and the only families the rules over-collect are the "No Event Scheduled" placeholders, which the size limit drops.
  • Bosnian, German and Spanish are complete again. Thirty strings had been added over the last months and never translated, so downloads, the sports schedule, the category search, the playback failure screen and the message a provider sends were English in every language. Android falls back silently, so nothing looked broken and nothing said so.

Fixed before anyone met them

  • The list of other copies was read with no account check, and a rebuild that failed left the previous one in place. Two saved accounts, a switch, and a panel that refuses one call, and the repair ladder would have moved a viewer to a stream id belonging to a playlist they had signed out of, announcing it with a name from that other playlist.
  • The programme on now was fetched when the channel was tuned and never again. That was cosmetic while it fed a label, and it has been wrong for months: an evening on one channel had the player still naming what was on when it started. Built on by "Start from the beginning", it would have played a bulletin that finished three hours earlier. The programme is now re-chosen every half minute and the schedule refetched when it runs out, at most once every five minutes so a channel with no EPG cannot turn into a request loop.
  • The whole grouping pass ran on the main thread: thirty thousand names, two regular expressions each, exactly while the decoder was starting. All of it now runs off it.
  • The fallback engine could read the index of copies but nothing ever built it there, so for anybody who had chosen that engine in Settings the best rung of the ladder was dead code.

App v1.0.74 (managed) / Player v1.0.66 / Trial v1.0.51

New

  • The app reports its own crashes and the streams it could not play. Until now a crash was a black screen the viewer could not describe, and a stream that would not play arrived as a screenshot, if it arrived at all. A crash is written down as it happens and posted on the next launch; a stream that fails on both engines is posted as it fails, at most twenty an hour. What is sent: the app version, device, model and Android version, the exception and the top of its stack, the screen the viewer was on, the channel name and the HOST of the stream. Never the stream URL, which carries the viewer's login in its path, and never the account name; anything shaped like a URL or a credential is cut down before it leaves the device, and again on the server.

Dashboard

  • App health, at the top of Reports on both dashboards, last seven days: crashes and on how many devices, the crash-free percentage measured against the devices that actually checked in, streams that would not play by channel with the cause (network or stream), how many needed the fallback engine, and which of the provider's servers the failures cluster on. A provider sees their own apps; the operator sees everything.
  • Is anybody using the app? Every app checks in every minute while it is open, and until now nothing read that back as a plain answer. The Pro dashboard list has an App in use column (open 6s ago / open 2h ago / never opened / no app yet, coloured by age), each provider's dashboard shows App last opened with the devices seen this week, and a provider whose app is built but has not been opened for a week is told so in plain words, with what it usually means (customers on an older download or a different link). The status page has an Apps checking in line that goes red only when apps that were talking to the server have stopped.
  • Backups on the status page, where a backup runs: how long ago, how big, and whether the off-site copy verified.

App v1.0.73 (managed) / Player v1.0.65 / Trial v1.0.50

New

  • A reinstalled app signs itself back in. When a provider switches on Remember devices (Settings on the admin dashboard, or the card on a provider's panel), an app that has been uninstalled and installed again on the same box comes back signed in to the same account, with no code and no typing. The device id already survives a reinstall; now the login can too. Off by default, and each provider decides for their own apps. How it is kept, because this is a password:
  • The app hands the login to the platform once per sign-in, over POST, and only after the platform has seen that device check in as that account. The platform seals it with a key that lives outside the web root and never leaves the server; the table holds nothing that can be read.
  • A reinstall asks once, on the first launch, with a hard four second cap so a slow box goes to the sign-in screen exactly as before. The answer is handed over once: a second ask gets nothing, and an app that lost the reply in transit has two minutes to ask again.
  • Only the app it was saved from can ask. Ten wrong apps in a row and the device is refused for an hour, with the login left intact rather than burned by the guesser.
  • It expires after 30 days without a check-in, is dropped the moment anybody ends the session (the viewer signing out, the provider signing out one device or all of them, Forget, Reset devices), when the provider is deleted, and when the provider's own subscription lapses. A platform kill switch empties the whole store at once.
  • The Devices list shows remembered next to a device that has a login waiting, so a provider can see exactly what would come back.

Fixed before anyone met them

  • An attacker who knew a device id could have forged a check-in as their own account and then saved *their* password on the victim's device, so the victim's reinstall signed in as the attacker. A saved login is now only replaced by a different account when the provider's panel has actually authenticated that account, and a panel that refuses to answer (as some do to datacenter addresses) leaves the existing login alone.
  • A provider could list every device of a username across all providers' apps, ids included. The Devices list is scoped to the provider's own apps now.
  • A sign-out that could not reach the platform (box offline) left the remembered login armed, so the next launch signed the viewer straight back in to an account they had just left. The app now writes down that a sign-out is owed, sends it first on the next launch, and will not restore anything until it has landed.
  • Signing out and back in as the same account in one session never saved the login again; a refused save was retried every minute for as long as the app ran; the four second startup cap was really twenty two, because a coroutine timeout cannot interrupt a blocking call.

Dashboard

  • Remembered logins on the status page: off or on for how many apps, and whether the sealed store can actually be written on this server.
  • The rebuild banner on a self-hosted install now clears when the app is rebuilt, rather than reading a version counter that never moves on a box without a build farm.

App v1.0.72 (managed) / Player v1.0.64 / Trial v1.0.49

  • What is on now says when it finishes. The progress bar under the programme title is joined by the time it ends, in whatever clock the device is set to, so a box on a 12 hour clock does not suddenly read 21:45. Shown only where the panel actually sends the times.

App v1.0.71 (managed) / Player v1.0.63 / Trial v1.0.48

New

  • Search the categories. The rail on the Live screen has a search bar at the top. Some providers ship two hundred categories and the only way to reach one was to scroll past the rest. It is a bar that opens a box to type into rather than a text field, so a remote passing over it on a television never opens the keyboard by itself.
  • Update playlist when the app opens, in Settings, off by default. It reloads the lists when you come back to the app after leaving it in the background, which is the case a schedule cannot cover. Opening the app fresh already loads them.
  • A progress bar under what is on now, in the channel list: how much of the programme has gone and how much is left. Drawn from the times the panel sends, so it is real rather than estimated, and only where the panel actually sends them.

Fixed

  • Channel logos fit their space. A logo was being cropped to a square like a film poster, so anything wider than it is tall lost its ends: "BBC ONE SCOTLAND" came out as a slice of the middle. The whole logo is shown now, in the live list, the TV guide, multiview and favourites.
  • Channel rows in the TV guide have their own background, so a row is something you can see the cursor land on rather than a name floating on the page.

Fixed before anyone met them

  • Refreshing on open bumped a signal that lists replay when they start listening, so every list would have loaded its whole catalogue twice on opening, and the two loads could race and throw a viewer out of the category they had just chosen. Lists now ignore anything that happened before they started listening, which makes that whole class of bug impossible rather than fixing this one instance of it.
  • Pressing Refresh with a category filter up left the rail showing the filtered set with nothing highlighted while the channels beside it belonged to a category the rail could not even show.
  • The startup refresh stamped the "last refreshed" clock before anything had been fetched, which would have silenced the retry for a full interval after a launch with no network.

App v1.0.70 (managed) / Player v1.0.62 / Trial v1.0.47

Fixed for every branded app, with no rebuild needed

  • The update banner that would never go away. Every provider's branded app was being told an update was waiting, was offered its own APK, and asked again the next day. Nothing could clear it: not updating, not rebuilding. A provider's app has its own version numbers, counted separately from ours, so a branded app sits somewhere around 17 while the platform is at 70. The update endpoint was reporting the platform's number to those apps whenever the provider's own number was lower than ours, which it always is, so the two numbers being compared were never about the same thing. It now reports the version of the file it is actually going to hand over. Telling a provider that a newer platform release exists is the dashboard's job, and it already does that. This is a server change, so it takes effect for every app already installed. There is nothing for a provider or a viewer to do.

Fixed in the app

  • Channel rows in the TV guide are visible. The channel column had no background of its own, so a row was a name floating on the page and only the focus ring ever marked one out.

App v1.0.69 (managed) / Player v1.0.61 / Trial v1.0.46

Fixed in the app

  • A changed password no longer reads as "your provider is down". Some panels refuse a bad login with an HTTP error rather than a polite answer: one replies 401 on the bare host, 511 to a request with no credentials and 512 to a wrong password, while serving its viewers perfectly well the whole time. The app treated any of those as "the server did not answer" and told the viewer their provider was unreachable, so somebody whose details had simply been changed kept retyping details that were never going to work. Only two things count as down now: nothing came back at all, or a gateway said the thing behind it is unavailable. Everything else is an answer, and a refused login is reported as a refused login.

Fixed in the dashboards

  • The admin dashboard shows when a device has been signed out. The pro dashboard has always shown the badge; the admin one did not, so a signed-out device looked exactly like a working one.
  • Sign this device in is only offered where it will actually work. It needs an app new enough to accept it, and a provider's app version numbers are their own sequence, so they cannot be compared against the platform's. The device itself now says whether it can, and where it cannot the dashboard explains that the app needs rebuilding instead of promising something that silently does nothing.
  • The number boxes are readable again. Browsers draw their own controls - number spinners, dropdowns, scrollbars - in a light palette unless a page says otherwise, so the day counter beside Extend was a dark glyph on a dark box.
  • The admin page has its own icon. It never set one, so the browser fell back to the icon file in the web root, which on a self-hosted install meant our mark in the tab of somebody else's dashboard. It uses the provider's own logo now, and the file has been removed from their server along with the rest of our branding.

App v1.0.68 (managed) / Player v1.0.60 / Trial v1.0.45

Fixed, and these mattered

  • One dashboard could take a device off another. The check-in endpoint needs no password, and it was allowed to rewrite the column that records whose customer a device is. Naming somebody else's customer and sending your own code moved their television into your Devices tab with every button live against it. A device now keeps the provider it was first seen on.
  • A device identifier alone could collect a login. The armed login was released to anything that presented the right device and provider code, and the provider code is printed inside every app. It now also has to be the account that device was signed in as when the login was armed.
  • Signing a device in after signing it out could never work, which is exactly how the two new buttons are meant to be used together. A signed-out app stops talking to the server altogether, so the login sat there until it expired while nothing happened. A signed-out app now asks, every thirty seconds, whether one is waiting. It asks that and nothing else: it does not count as watching and does not take a device slot.
  • Reset devices refused the very sign-in it exists to rescue. Pressing it while a box was switched off left an instruction with no time on it, so the next person to sign in was refused instead of let in. Every sign-out instruction is stamped now, and one given before a session started is never applied to it.
  • Lowering a device allowance signed out the wrong device. It counted only devices seen in the last month but evicted the oldest row of any age, so it would sign out a device that had not existed for a year, call the job done, and leave two live televisions on a one-device account.
  • A per-device sign-out no longer swallows an account-wide one that was pending, which used to fire again later with the wrong reason attached.
  • A message from your provider is no longer destroyed unread when a login arrives in the same answer.

Fixed, smaller

  • A pushed account is saved in Accounts like any other sign-in. Without that, one tap on the old account undid the push with no way back.
  • The replaced account lets go of its device slot immediately instead of holding it for 36 hours.
  • The synced library is reset on a push, so one customer's favourites cannot be uploaded under the next customer's account.
  • An armed login that is never collected is cleared when its fifteen minutes are up, rather than only when some app happens to ask for one.
  • The admin dashboard has the Sign this device in control too. It had the handlers and no buttons, so the feature was simply missing there, and a login armed by a reseller was invisible and uncancellable from it.

App v1.0.67 (managed) / Player v1.0.59 / Trial v1.0.44

New for providers

  • Sign out one device. Every device now has its own Sign out button. The old button did not do this: it was keyed on the account, so pressing it on the box in the spare room also ended the programme on the television in the living room. That button is still there, and now says what it really does, Sign out everywhere. This works with every app already installed and needs no rebuild.
  • Sign a device in from the dashboard. Type a username and password on any device in the Devices tab and that device signs itself in with them, within about a minute, with nothing for the viewer to do. Useful for moving somebody onto a new line without talking them through a keyboard on a television. The login is held for fifteen minutes and handed over once. It is offered only to an app built for you, only to that one device, and only to an app new enough to act on it, so it cannot be quietly collected by anything else. Cancel it any time before it is picked up. It reaches a device that has signed in at least once. A brand new box has never spoken to the dashboard, so there is nothing to send it to yet: use the pairing QR code for those.

Fixed

  • Being signed out now says which of the three things happened. There is one message for the provider signing you out, one for another device taking the slot, and one for the provider resetting the devices on the account. Before this, a viewer whose slot was taken by the box next door was told their provider had signed them out.

Fixed everywhere, quietly

  • The app no longer puts your username and device in a web address. Every check-in was a GET, so the IPTV username and the device identifier were written into the server's own access log sixty times an hour and kept there for a fortnight. They travel in the body of the request now. Nothing else changes: the server has always accepted either, and older apps carry on exactly as they are.

App v1.0.66 (managed) / Player v1.0.58 / Trial v1.0.43

Fixed on televisions

  • Everything you land on now lights up. Forty-odd things could be reached with a remote and showed nothing at all when you got to them: the continue-watching cards, every back button, the whole of My List, the theme swatches, the VPN screen, the buttons in the banners. They all draw the same focus ring now.
  • The settings switches are rows you can land on. Auto-start on boot, adult content, the master PIN and the external player were labels with a switch on the end, and the switch was the only thing focus could reach - so moving onto a setting changed nothing on screen. The whole row takes focus and toggles, and the remote makes one stop per setting instead of two.
  • The highlight no longer has a dark middle. Compose paints BLACK over anything focused or hovered by default, and nobody had ever replaced that, so the thing you were pointing at was dimmed underneath its own bright ring. Pressing lightens now instead of darkening, and focus is drawn only by the ring.
  • No more grey patch left behind on the last thing you touched. That same built-in overlay is driven by hover events rather than by focus, and a set-top box that sends a hover without ever sending the matching exit leaves it sitting there. The focus ring is also built from a fixed set of drawing steps now, so a row scrolling past in a long list cannot inherit the highlight from the row that used the same slot before it.
  • The three buttons at the top sit against the edge of the bar again. The logo beside them was taking a share of the row and then measuring smaller than that share, and a row does not hand the difference back: it leaves it as a gap. On a phone the logo filled its share and nothing showed. On a television, where the bar is far wider, the buttons were pushed in from the corner. They are bigger on a TV too.
  • A safe margin round the picture on TV. Televisions crop the outside of the frame and how much varies by set, so the top row of buttons was partly in the strip that is never shown.

Fixed everywhere

  • Reinstalling the app keeps the same device. The device id was a random number kept in the app's own storage, and uninstalling deletes that - so putting the app back on the same television counted as a new device, took a second slot, and left a dead row in the dashboard. It is derived from the device itself now and survives a reinstall. Anything already installed keeps the id it has, so nobody is signed out or counted twice by this change.
  • The install ping used to mint its own device id at startup and could win a race against the device guard on a fresh install, deciding the id for both. There is one answer in one place.

App v1.0.65 (managed) / Player v1.0.57 / Trial v1.0.42

Fixed

  • The fallback player hides its controls. The second player, the one used when a stream will not open in the first, never hid its control bar - so on a television the remote was permanently captured by a bar sitting over the picture. It hides on the same timer as the main player now, and any key brings it back and keeps it up while you are still moving about.
  • The playback failure screen is not painted over. The controls were drawn on top of it, and the play button sits exactly where the message goes.
  • The multiview channel filter asks first. It put a text box first in focus order, so arriving on the picker with a remote opened the keyboard before anything else.

App v1.0.64 (managed) / Player v1.0.56 / Trial v1.0.41

Fixed

  • Signing in on a television works again. The phone-pairing block added last release could push the SIGN IN button off the bottom of a TV screen, and nothing scrolled - so the screen meant to make signing in on a TV easier could stop you signing in at all.
  • Reporting a broken channel now says which device it came from, so it reaches the right provider's dashboard rather than one named in the request.

Fixed for providers, on the server

  • Your logo keeps its white. Lifting a logo off a white background was removing white wherever it appeared, so a white wordmark came out hollow - "DarkPlayer" read "Player". Only the background around the artwork is removed now.
  • Handing a device slot over no longer signs out the rest of the account. One device coming back after a quiet spell used to sign out every other device on that account, mid-programme.
  • Lowering a device allowance takes effect. Setting an account to fewer devices used to change nothing, for ever, and the dashboard would read "3 of 1 in use".
  • Reset devices no longer refuses the next sign-in. The button pressed to rescue a locked-out viewer was refusing them once with "You were signed out from the dashboard".
  • Device buttons and channel reports are scoped to your own customers.

App v1.0.63 (managed) / Player v1.0.55 / Trial v1.0.40

Fixed - television and remote control

  • The app now knows when it is running on a TV. It never did, so a Google TV or Fire TV box was being shown the phone screens.
  • The keyboard no longer appears on its own. Moving the remote past the channel search box, or down to the setup code, used to open the keyboard even though nobody wanted to type - and the search box sits directly above the channel list, so it was in the way of everything. On a TV both are now a box you press, and the keyboard appears when you ask for it.
  • Buttons light up when you reach them. Focus used to make a button very slightly darker rather than highlighting it, so it looked as though the remote had skipped past. Every control in the player, on the live page, on the sign-in screen and on the profiles screen now shows a clear ring.
  • The player controls stay up while you are using them. They hid three seconds after appearing no matter what you were doing, so the buttons further along the row were effectively out of reach. Moving the remote now keeps them on screen.
  • BACK goes up a level instead of closing the app. From Movies, Series, My List or Settings it returns to Live TV; from Live TV it asks once before leaving.
  • Setting up on a TV leads with your phone. Scan a code and the TV signs itself in, so there is nothing to type. It was there before, hidden as a small link that disappeared exactly when you needed it.

App v1.0.62 (managed) / Player v1.0.54 / Trial v1.0.39

Fixed

  • The report reasons and a message from your provider now scroll. Both were taller than a phone held sideways, so the last reason and the OK button were cut off the bottom of the screen - and on a TV there was no way to reach them at all.
  • A brand-new device is no longer turned away once. If your provider had ever signed the account out, the first sign-in on a new phone was refused with "You were signed out from the dashboard", and only worked on the second try.

App v1.0.61 (managed) / Player v1.0.53 / Trial v1.0.38

Fixed

  • A sign-out from your provider is no longer lost. It now lands exactly once, whether the app was open, closed or locked at the time. Previously coming back to the app could swallow it, so a provider pressed Sign out, the dashboard said it had worked, and the viewer carried on watching.
  • The screen explaining a stream that will not play now actually appears. It was written into the part of the player that a failing stream never reaches, so what you got instead was a spinner on black that never ended. It shows your provider's own branding, says whether it was your connection or the stream, and offers Try again or a way to tell your provider.
  • Changing channel no longer inherits the last channel's failed attempts. A good channel opened after a broken one was being thrown onto the fallback player after a single hiccup.

App v1.0.59 / v1.0.60 (managed) / Player v1.0.51 / v1.0.52 / Trial v1.0.36 / v1.0.37

New

  • Reporting a channel asks what is wrong. No sound, sound out of sync, freezing, wrong programme, subtitles, picture quality, or something else - so your provider knows what to fix instead of guessing from a channel name.
  • Your provider can send you a note. When they fix something you reported, a short message appears in the app the next time it checks in.

For providers

  • Reports are their own section in the dashboard, with the reason on every row, and Resolve, Reopen, Delete, and "Tell them" - which messages the customer and closes the report in one press.
  • A four-digit download code on your own domain, so a customer types yourdomain/1234 into the Downloader app on a TV instead of reading out a whole link.
  • Reports and messages are scoped to your own customers, and the device limit now means what it says - a slot is only handed over when the old device has genuinely gone quiet, and the device that loses it is signed out.

App v1.0.58 (managed) / Player v1.0.50 / Trial v1.0.35

Fixed

  • Your login was being written into the device log. Every request to your provider carries the username and password in the address, and the app was recording each one in the system log that any diagnostics tool on the box can read. It only does that in test builds now. This is the same care already taken to keep your provider's server address off the screen and out of other apps.
  • Setting a reminder from the TV guide crashed the app on Android 5. The alarm it used arrived in Android 6, and nothing checked. Older boxes now use the ordinary alarm, which behaves the same for this.
  • "Recently added" on the Movies tab showed the wrong films, and ignored your settings. It asked for one fixed row number that only means "new" on one provider's system, and it respected a Kids profile but not the adult switch. It now shows the newest of what you are actually allowed to see.
  • A working line could be told it had expired. The bar at the top of the home screen took a provider's word for it, where the sign in screen already knew better: a line with no end date is not an expired line, whatever the server calls it.

App v1.0.57 (managed) / Player v1.0.49 / Trial v1.0.34

Fixed

  • The app now tells you when your line has expired, been banned or been switched off. Until now it signed you in as usual and left you looking at channels that would not play, or at a message about loading that explained nothing. It says which it is, in your own language, on the sign in screen and at the top of the home screen. A line that runs out while you are still using the app is caught the same way, because some providers keep serving the channel list of a line that has already ended. It only turns somebody away on proof: a date that has genuinely passed, or a line the provider has marked banned or disabled. A line with no end date is never treated as expired, whatever else the server says about it, and where the server tells us its own clock we use that rather than the clock on your box.
  • A wrong password was reported as "cannot reach your provider" on some servers. Servers that answer a bad login with a plain message, and no account block at all, were being read as no answer. Two of the servers our own providers use answer exactly that way.

App v1.0.56 (managed) / Player v1.0.48 / Trial v1.0.33

Fixed

  • "Failed to load channels" now tells you what actually went wrong. A subscription that has run out, an account a provider has turned off, and a provider's server that is simply not answering all produced that one sentence, which is no help at all to somebody setting the app up for the first time. Each now says which it is, and the plain wording is kept for the times when the account really is fine.
  • A server that is down is no longer reported as a wrong password. When the server did not answer at all, signing in said "check your username and password", so people retyped details that were right all along. It now says the server could not be reached. Where a provider runs more than one server, one that actually answered is believed ahead of a spare that happened to be down.
  • The expiry warning went quiet at the moment it mattered. It counted down through the last week and then said nothing at all once the subscription had actually run out. It now says so.
  • Your app opens in your own colours. The opening screen painted a fixed blue glow over everything, centred on a fixed spot that landed off to the left on anything wider than a phone, and it ignored the colour theme completely: a provider who had chosen a theme still watched their app start in ours. It now uses the provider's own background, remembers it from the previous run so it is right on the very first frame, and drops the glow entirely once a theme has been chosen.
  • Movies and Series now keep what is on screen when a reload nobody asked for fails, the way Live already did.

App v1.0.55 (managed) / Player v1.0.47 / Trial v1.0.32

Fixed

  • Your provider stopped seeing you as watching the moment you started watching. The app told the dashboard it was open once a minute, but that reporting lived on the home screen, so opening a channel ended it: after a couple of minutes the dashboard showed you as away while you were sitting in front of a match. It now runs for as long as you are signed in, whatever screen you are on, so "watching now" means what it says.
  • A box left on a channel never picked up new channels. The scheduled update of the lists lived on the same screen and stopped in the same way, so a TV left on a stream overnight came back to the list it had the day before. It now keeps to its schedule while you watch.
  • A device turned away at sign in stayed signed in behind the scenes. When your provider's device limit refused a new phone, the message appeared but the sign in had already been saved, so closing the app and opening it again walked straight in until the next check caught up. Being turned away now really signs you out.

App v1.0.54 (managed) / Player v1.0.46 / Trial v1.0.31

Fixed

  • A minute without a network no longer costs you a whole day of updates. The scheduled update counted itself as done the moment it started, so if your box happened to be offline right then, on the daily setting the lists went another full day without your provider's new channels. It now counts only a load that really worked, and an attempt that fails is tried again in minutes rather than hours. It also stays polite while a connection is down: it asks every ten minutes, not every minute.

App v1.0.53 (managed) / Player v1.0.45 / Trial v1.0.30

Fixed

  • A Kids profile could be offered an adult channel from the Sports screen. The list of channels carrying a match, and the search results before it, read the whole playlist directly and so ignored the rules every other list obeys: a Kids profile, adult content switched off, and the categories you hid in Settings. All three apply there now. Channel names are matched on whole words, so "Essex TV" and "Sussex" are not taken for something they are not.
  • A failed automatic update no longer wipes your screen. If the scheduled reload could not reach your provider, a short drop in wifi overnight for example, the working list was replaced by a full page error that stayed until somebody pressed Retry. A reload nobody asked for now keeps what is on screen and tries again later. When there is nothing on screen to keep, the error and its Retry button still appear, because then they are the only useful thing there.
  • The automatic update no longer interrupts you. The scheduled reload behaved like the Refresh button: the list emptied, a spinner appeared, and you were put back in the first category. If it landed while you were half way down Live TV or Movies, you lost your place for no reason you could see. It is silent now. The list stays on screen, the programme names stay under it, and you stay in the category you were in. Pressing Refresh yourself still shows you that it is working, because you asked for it.

App v1.0.52 (managed) / Player v1.0.44 / Trial v1.0.29

For everyone using the app

  • Tap a match in Sports and it shows you where to watch it. It looks through your own channels for the ones carrying that fixture, dedicated match channels first, and one tap opens it. Until now it only listed the broadcasters by name and left you to go and find them yourself. Country prefixes and HD or FHD endings are ignored while matching, so "SuperSport Football" finds "ZA: SuperSport Football Plus HD".
  • You can see what you are on in the TV guide now. Moving through the guide with a remote left nothing highlighted, so there was no way to tell which channel or programme you were about to open. Channels and programme blocks now show the same focus outline the rest of the app uses.
  • Channels and the guide now update while the app is open. Settings has a new Update channels and guide setting: every 6, 12, 24 or 48 hours, or off if you would rather press Refresh yourself. When your provider adds channels they appear where you are, with nothing to close and open again. People who leave the app running on a TV box for days no longer have to restart it to see new channels.
  • The clock is remembered, so an app left open for a week updates on the hour it is due, not on the hour it happened to start, and pressing Refresh by hand restarts it.

Fixed

  • The programme name under each channel could go stale. It was fetched once per channel and then kept, so on an app that had been open for days it still showed what was on when you started. A reload now fetches it again.

App v1.0.51 (managed) / Player v1.0.43 / Trial v1.0.28

Fixed

  • "Watching now" in your provider's dashboard now means it. The app used to report itself every five minutes and was counted as watching for ten, so a closed app kept the light on long after you had finished. It now reports itself once a minute while it is on screen and says so the moment you leave the app, and leaving does not use up one of your allowed devices.

For providers, in the dashboard

  • Where each device is watching from - the address is shown under every device in Devices, with the town and country when we can tell. One account watching from two towns at once is the thing you were looking for, and now you can see it.
  • Set password also appears in Devices, on the accounts you created here. For accounts that live on your streaming panel the dashboard says so plainly instead of offering a button that could not work: that password is on your panel, not here. Sign out, Lock and Block still work on every account.

App v1.0.50 (managed) / Player v1.0.42 / Trial v1.0.27

For everyone using the app

  • Adult categories are on by default now. They used to be hidden until you found the switch, which mostly meant people asked their provider why whole categories were missing. Turn them off in Settings if you do not want them, and a Kids profile hides them regardless.
  • The VPN entry in Settings is now called VPN Setup, so it reads the same in every provider's app.

For providers, in the dashboard

  • Set password on each of your users in My Users: type a new one and save. The user is signed out everywhere at the same moment, so an old password cannot keep working on a phone that is already signed in. Change it on your streaming panel too, since that is where the account really lives. The same button is in admin, on Subscribers.

App v1.0.49 (managed) / Player v1.0.41 / Trial v1.0.26

For everyone using the app

  • Your provider's colours, everywhere - the app used to take only their accent colour, so the buttons changed and everything else stayed the same dark blue. Now the whole app follows them: background, panels, text. It arrives on its own, with no update to install.

For providers, in the dashboard

  • Branding, Colour theme - seven ready themes (XPlay dark, Midnight, Carbon, Deep ocean, Plum, Forest, Espresso) with a swatch of each, and underneath, the five colours on their own if you want a shade we did not think of. A small preview shows the result next to your accent before you save. Leave a colour empty to keep whatever the theme uses. Your accent stays a separate setting, because most providers change only that. Every theme is dark on purpose: the app is built for watching in the evening.
  • Two pictures instead of one - the logo you upload is no longer forced to be both things. Logo inside the app is the wide lockup on the sign in screen and at the top of the app; Phone launcher icon is the square mark on the home screen, which has to read at the size of a thumbnail. Leave the icon empty and the logo is used for both, exactly as before.
  • Colours and the in-app logo reach your users by themselves, usually within a few hours or the moment they reopen the app. Only the launcher icon needs a new build, because it lives in the installed app.

App v1.0.48 (managed) / Player v1.0.40 / Trial v1.0.25

For everyone using the app

  • Back goes back where you were - opening a film or a series and then pressing Back used to drop you on Live TV. It now returns you to Movies or Series, in the row you came from. The Live TV favourites-only switch is kept the same way.
  • Device limit, explained instead of guessed - if your provider allows a certain number of devices and you are already using all of them, the sign in screen now says so, in words, and tells you that signing out on another device frees one. It no longer looks like a wrong password.

For providers, in the dashboard

  • Devices - a tab of its own, listing every account that has signed in to your app, whether you created it here or it lives on your streaming panel. You see the device, the app version, when it was last used and whether it is watching right now. Until now these controls only appeared next to users created in the dashboard, so providers whose viewers come from their own panel saw nothing at all.
  • Devices allowed per account - set one number for everyone, and override it for a single account. A device holds a slot until it signs out, and Reset devices hands every slot back at once, for the customer who changed phone and cannot sign out on the old one. Zero means no limit, which is what everybody had before.
  • The existing Lock to this device, Sign out and Block controls now work for those accounts too.
  • The download your users get is now named after your app rather than ours, and providers running the whole system on their own server get a Windows card that matches how their app actually works.

App v1.0.47 (managed) / Player v1.0.39 / Trial v1.0.24

For everyone using the app

  • Sports schedule - a new Sports button on the main screen opens a full fixture list: pick a day (from yesterday through the next week), filter by league, and see kick-off times in your own timezone, team badges, and which channel is showing the match. Live matches show a LIVE badge and their score refreshes by itself every minute. Powered by TheSportsDB.
  • Tidy up your categories - Settings > Categories lets you hide the categories you never watch and pin your favourites to the top, separately for Live TV, Movies and Series. Your own list opens first from then on. Everything is kept on your device.
  • Recent channels - a Recent row at the top of Live TV holds the last 20 channels you watched, so getting back to one takes a single tap.
  • Last channel - while watching live TV, one button jumps back to the channel you came from, the way the button on a normal TV remote does.
  • Watched episodes - series now remember which episodes you have finished. Finished episodes are ticked automatically, you can tick or untick any of them by hand, and a Continue button starts the first episode you have not seen yet, across all seasons.
  • Subscription reminder - the app now warns you in your last week, and more loudly in your last three days, before your subscription runs out, with a Renew button that opens your provider directly. No more finding out because the app suddenly stopped working.
  • Update notification - the app checks in the background and posts a normal phone notification when a new version is published, so an update is no longer missed by people who rarely open the app. Tapping it opens XPlay, where the existing one-tap Update installs it.
  • Messages from your provider - your provider can now send you a short message, for example about maintenance, and it arrives as a normal phone notification.

Fixes

  • The top-bar Refresh button now really reloads the Live TV list. It previously did nothing on that tab.
  • Finishing an episode through automatic next-episode play now counts as watched and clears it from Continue Watching.
  • After changing channels, the player no longer shows the previous channel's programme information.
  • A wide provider logo no longer pushes the buttons off the top bar.
  • Your provider's server address is no longer shown under Settings, then Accounts. It was visible there before, which gave away something that belongs to them, not to you. The bring-your-own-line edition still shows it, since you typed it in yourself.

For providers, in the dashboard

  • Panel > Sports - switch the Sports schedule on for your app, pick exactly which leagues your users see, and paste your own TheSportsDB API key. Your key is stored on our server only, and is never included in your APK or sent to your users. A Premium key is strongly recommended, as the free key returns only a handful of fixtures per day.
  • Panel > Branding - a Ticker message field, so the scrolling bar at the top of your app can carry your own text instead of only an RSS feed, and a Push message field that sends a notification to your users' phones.
  • Devices and sessions - My Users now shows every device each of your users has signed in on, which of them are online right now, and when they were last seen. Three controls sit beside them: Lock to this device, so that login stops working anywhere else and account sharing ends; Sign out, which ends their current session but lets them sign in again; and Block, which stops the account on every device until you unblock it. The app obeys within five minutes, and immediately at the next sign in.
  • Both apply the next time an app opens. No rebuild needed.

Pricing

  • XPlay Player is now a one-time EUR 40 for lifetime access (was EUR 10), after the same 5-day free trial.
  • The whole site, checkout and dashboard now show prices in EUR everywhere. The managed plans keep the same numbers, billed in euros: 1 month EUR 10, 3 months EUR 25, 6 months EUR 45, 12 months EUR 80.

App v1.0.46 (managed) / Player v1.0.38 / Trial v1.0.23

Fixed

  • Changing channel with a Fire TV remote. Fire TV remotes have no channel buttons, so channel changing never worked on them. While you are watching live TV and the controls are hidden, up and down on the directional pad now move to the next or previous channel, and the channel name flashes on screen as you go.
  • Volume from the remote. With the controls hidden, left and right set the volume during live TV, and up and down set it during a film or an episode. The app now controls its own volume, so this still works on televisions that hold the volume fixed over HDMI.
  • Skipping through a film with the remote. In a film or an episode, left and right now jump back and forward, and the centre button brings the controls back at any time. All of this works whichever of the two video engines your app is set to use.

App v1.0.45 (managed) / Player v1.0.37 / Trial v1.0.22

New for everyone

  • What is on now, in the channel list. Every channel in Live TV shows the programme playing right now underneath its name, so you can see what is on without opening anything.
  • Longer category names fit. The category rail in Live TV is wider, so full names such as long event and sports category names are no longer cut short.
  • One tap to catch up. Channels that keep the last few days of programmes now show a History button in the row of buttons, which opens the catch-up guide straight away. It replaces the old line of text that only told you catch-up existed.
  • A clearer logo. The logo at the top of the home screen is larger, so logos uploaded by providers are no longer shrunk down to almost nothing.
  • A prompt when an update is ready. The app checks on opening and offers the new version in one tap, rather than leaving you to look for it in Settings.
  • A news ticker. A scrolling bar at the top of the home screen can carry a news feed, when your provider chooses to turn one on.

For providers, in the dashboard

  • Panel, Branding, news ticker. Switch the scrolling bar on or off for your app and give it the address of any news feed. It takes effect the next time an app opens, with no rebuild needed.

App v1.0.43 (managed) / Player v1.0.35 / Trial v1.0.20

New for everyone

  • A countdown on your free trial. The home screen now shows how long is left on a trial, with the price and a Subscribe button beside it, so you can carry on before the trial runs out rather than after.

Fixed

  • Favourites survive a password change. Your favourites and continue watching are now kept against your username rather than your password, so resetting your password no longer looks as though it wiped them.

For providers, in the dashboard

  • A notice when your app needs rebuilding. When we publish a new version of the platform, My App shows that a newer version is available and offers a Rebuild button, and the same is flagged in the admin list, so an app no longer sits quietly on old code.
  • Trial alerts near the end, not only at the start. The owner is now messaged two hours before a free trial ends and again when it expires. Trials that have already been converted are skipped.
  • Limits on trial farming. Each device can take one free trial for life, and no more than six trials can be started from the same address in a day.

App v1.0.42 (managed) / Player v1.0.34 / Trial v1.0.19

Fixed

  • No more false expiry on opening. A brief network problem as the app started could be read as an expired subscription and put a paying or trial customer on the payment screen. The app now does that only when the subscription has genuinely run out.
  • Signing in on a brand new account. A line created moments earlier could be refused once and show a sign-in error. The app now retries for a few seconds, so a fresh or newly activated account works first time, whether you sign in with a password or with a code.
  • Passwords with symbols in them. Special characters in a password no longer break playback.
  • Your sign-in details stay off device backups. Provider details are no longer copied into Android's backup of the phone.

For providers, in the dashboard

  • Sign-in codes are harder to guess. The eight-digit codes are now rate limited per address, so nobody can work through them one after another.
  • Your alerts cannot be redirected. Once an admin chat is set for Telegram alerts, the link that sets it stops working, so a leaked link can no longer point your alerts somewhere else.

App v1.0.40 (managed) / Player v1.0.32 / Trial v1.0.17

New for everyone

  • An All category in Movies and Series. Movies and Series now open on a new All category, the five thousand most recently added titles, newest first. Until now the app opened on Trending, which held around 46 titles, so the library looked far smaller than it really is: there are 106,968 films and 23,282 series in total, and the rest of them sit in the genres and in Search. The categories now run All, Trending, New on XPlay, New Releases, Top Rated and then the genres, and this change reaches every device without an update.
  • Remote focus across the whole app. The white highlight that shows where you are on a TV remote now appears on the movie and series pages, in Settings, in Multiview, in Search and on the player buttons. Before this it only worked on the Home screen, which made the rest of the app awkward to navigate on a TV or a Fire Stick.

Fixed

  • Multiview now plays. All four live tiles were coming up black because the streams were being refused, so watching up to four channels at once did not work at all. The tiles now open and play normally.

App v1.0.39 (managed) / Player v1.0.31 / Trial v1.0.16

  • Subtitles that turn on by themselves. Settings has a new Subtitles row where you choose Off, English or your device language, and from then on subtitles switch on automatically for any film or episode that has them. Subtitles were always being found for you, but they stayed switched off until you went looking for them, which is why they seemed to be missing.

App v1.0.38 (managed)

New for everyone

  • A clearer highlight on a TV remote. The focus ring is now bold white and lifts the item slightly, instead of the faint blue outline that was easy to lose track of. It also works on the category chips, which had none at all, on the sort buttons in Movies and Series, and on the tabs along the bottom of the Home screen.

Fixed

  • Movies and Series scroll properly. The category chips, Continue watching, the sort buttons and the Recently added row now scroll away with the grid instead of staying pinned to the top of the screen, which had left very little room for posters on a Fire TV.

App v1.0.37 (managed)

  • Coming up, in the live player. The bar at the bottom of a live channel now lists roughly the next three hours of programmes, rather than only what is on now and what is on next.

App v1.0.36 (managed) / Player v1.0.28 / Trial v1.0.13

  • Text size and subtitle size. Two new rows in Settings, one that makes the writing throughout the app larger or smaller, and one that does the same for subtitles while you are watching. Useful on a TV across the room and on a small phone alike.
  • Stream information. An Info button in the player top bar shows what you are actually getting, including the picture size, the frame rate and the video and audio formats.
  • Volume boost. Lift the sound to 125 or 150 per cent for channels and films that were recorded too quietly.
  • Listen without the picture. A button in the player top bar turns the video off and keeps the audio running, which suits radio channels, commentary and saving data.
  • Up next. When an episode ends, a small prompt appears in the corner with Play now and Cancel, and the next episode starts on its own after seven seconds if you do nothing.
  • Smoother, steadier playback. The app now matches your screen to the frame rate of what you are watching, so motion looks right rather than slightly stuttery. If a stream keeps failing, the app also switches to its second playback engine by itself and tries again instead of giving up.

App v1.0.34 (managed) / Player v1.0.26 / Trial v1.0.11

  • Episodes play one after another. When an episode of a series finishes, the next one starts by itself, and it carries on through the whole series rather than stopping at the end of a season.
  • Report a broken channel. A flag button in the player on live TV tells us a channel is not working, in one tap, and the reports are collected so faults get seen and fixed.
  • A Trending row. Movies and Series now open with a Trending category of the titles people are watching most this week, refreshed every day.
  • Sign in from your phone on a TV. Typing a username and password with a remote is slow, so the sign-in screen now offers a QR code. Scan it with your phone, enter your details there, and the TV signs itself in.

The desktop app is released on its own schedule. · 8 releases listed

1.0.8

Fixed

  • Closing the app now really does tell your provider you have stopped watching. It was meant to since 1.0.5, but the message was set up in a way that undid itself a moment before it was due to be sent, so the dashboard kept showing the computer as watching until the check-in went stale. It is now sent from the window closing, with a short time limit so a bad connection cannot hold the window open.

1.0.7

Fixed

  • The app now tells you when your line has expired, been banned or been switched off, instead of signing you in to a library where nothing will play. It only turns you away on proof: a date that has actually passed, or a line the provider has marked banned or disabled. A line with no end date is never treated as expired, and where the server sends its own clock we use that rather than the clock on your PC.
  • A wrong password was reported as a server problem on providers whose server answers a bad login with a plain message rather than an account block.
  • A space around the expiry date no longer makes the app read it as no date at all.

1.0.6

Fixed

  • The startup screen uses your provider's colours instead of a fixed dark blue, and it has them before the window opens rather than a moment afterwards.
  • Signing in now says what actually went wrong: a server that did not answer, a subscription that has run out, or a wrong username and password. They used to be one message, so a server being down read as "wrong username or password". Where a provider runs more than one server, one that actually answered is believed ahead of a spare that was down.
  • A list that fails no longer shows raw technical text such as "HTTP 502", and a failure with nothing to say no longer shows an empty box with no explanation and no way back.

1.0.5

New for everyone

  • Your provider's colours now cover the whole desktop app, not only the buttons: background, panels and text follow the theme they picked in their dashboard. It arrives on its own the next time the app checks in, with nothing to install.

Fixed

  • Closing the app now tells your provider straight away, so their dashboard stops showing this computer as watching. It used to keep the light on for several minutes after you had finished.

1.0.3

New for everyone

  • The app now tells you when a newer version is out. A small notice appears in the sidebar, and one click opens the download in your browser. Nothing ever installs itself behind your back.
  • Your computer is now recognised as a device on your account, the same way your phone and your TV box already are, so your provider can help you when a sign in goes wrong.

Fixed

  • Your provider's server address is no longer shown under Settings when you signed in with only a username and a password. It was never yours to pass on, and it is now hidden here exactly as it is on the phone and TV apps.

For providers

  • Windows sign ins now appear under Devices in your dashboard alongside phones and TV boxes, with the computer, the app version and whether it is in use right now. Lock to this device, Sign out and Block all work on Windows exactly as they do on Android.
  • If you run the whole system on your own server, the desktop app can now be built as yours: your name, your icon, your colours, your servers, and an installer that carries your name. It looks to your own server for updates and never mentions anyone else.

1.0.2

New for everyone

  • Sign in with just a username and password. If your provider gave you a code, you enter it once under "I have a provider code" and the app takes their servers from there. From then on you sign in exactly as you do on the phone, with nothing to type but your username and password.
  • Your provider's name and colour now carry across the app. They appear on the sign in screen, in the sidebar and in the window title.
  • Several servers, one login. When a provider lists more than one server the app tries each one in turn, so a single address being down is no longer your problem, and the server that worked is tried first next time.
  • The version is now shown inside the app, under the logo in the sidebar and on the sign in screen, so support always knows which build you are on.
  • Bringing your own line still works exactly as before. Leave the code empty and type your own server, port, username and password.

For providers, in the dashboard

  • Panel, My App now has a "Your app on Windows" card showing your provider code, which is the one thing your users need to type to get your name, colour and servers on the desktop app.

1.0.1

  • The playback engine is now built into the app, so video works the moment you install it and nothing else has to be installed first. If a copy of VLC is already on the PC, the app still finds and uses it by itself.
  • The XPlay logo now runs through the whole app: the full wordmark on the sign in screen, the emblem in the sidebar, and the emblem as the window, taskbar and installer icon.
  • An animated intro plays while the app starts.
  • Three ways to install. There is now an .exe installer, an .msi installer for managed machines, and a portable build that needs no installation at all.

1.0.0

  • The first desktop edition of XPlay, a dedicated IPTV player for Windows rather than a general media player, built on the same playback core VLC uses and wrapped in a proper Xtream interface.
  • Sign in once. Enter your server, username and password, tick Remember me, and the app opens straight to your channels next time.
  • Live TV with a category list, channel search and one click play, with a LIVE badge on what is currently on air.
  • Movies and Series. Browse by category, search, and see poster walls and star ratings for films, or open a series for its plot, poster and full season and episode list with one click play on any episode.
  • Player controls for play and pause, stop, volume, mute, seek on films and episodes, and one click fullscreen. The engine plays the video and audio that IPTV services actually send, so far fewer streams stop with a message saying the format is not supported. At this stage the PC still needed VLC installed, which the app found on its own.
  • An Account screen showing your expiry date, trial status, active and maximum connections, your server and the playback engine, all in a dark theme matched to the phone and TV apps.

Live as soon as it is deployed. Nothing to install, and it reaches every app at once. · 5 releases listed

2026-09-02

New for providers

  • Every branding upload now says when it reaches your users. Changing the launcher icon and seeing nothing happen was the whole problem: the logo and the login background are live and arrive the next time somebody opens the app, but the **launcher icon is part of the app itself** and cannot change until an app is built. Each upload now says which it is, in as many words, instead of leaving you to guess.
  • Rebuild my app, for a provider running the whole system on their own server. They had no way to build one: their app was built and published for them, so a new launcher icon could never actually arrive. The button is now in their My App tab and takes about a minute and a half. Their dashboard asks our build service, our service builds it, and their own server collects it and publishes it to their users. Nothing of theirs is held by us and nothing of ours is opened to them.
  • Uploading the same picture twice now says so. Replacing a logo or icon with a file that is identical to the one already in use looks exactly like a broken upload: nothing changes, however many times the app is rebuilt. The dashboard now compares them and says plainly that it is the same image.
  • VOD and Series activity says what it counts. It only ever counted plays that went through the built-in video service, so on a dashboard whose viewers stream from their own streaming panel it could never show anything but zero. It now says so where it applies, and is not shown at all where it cannot work.
  • Remove, on every branding image. Uploading was one way traffic: a logo or icon could be replaced but never taken away, so an app kept wearing something its owner had finished with. Each image now has a Remove button, and it deletes the file from the server rather than only forgetting the address. A file left behind is still served to anyone who kept the link, which is its own way of looking broken.
  • The launcher icon a provider uploads is now the one their built app gets. Our own build service always used it. A provider whose whole system runs on their own server was a different story: their app is built and published for them, and that path took the icon from OUR records rather than from the one they had just uploaded, so it could never change no matter what they did. It now reads their own dashboard at build time.

New for the admin

  • How the app looks by default, in Settings: the app name, colours, theme, logo and launcher icon the app wears when nobody has said otherwise. Every new dashboard starts out wearing it, and any provider who has not set their own follows it. A provider who HAS set their own is never overwritten. Until now those defaults were written into the code, so changing them meant a deploy.
  • Your servers now tell you whether they are answering. Every server in My DNS shows its state beside it, and the dashboard opens with a card naming any server that has stopped answering altogether. Until now nothing in the dashboard ever looked, so a provider whose panel went down found out from their own customers, hours or days later. It is checked from this dashboard every couple of minutes, and it says what we saw rather than passing judgement on your server. There are three answers: responding, the normal healthy one; answering with a code, which means the address is up but did not reply the way a panel usually does, worth a look but not an emergency; and not responding, which means nothing came back at all or the server returned an error. Only the last one is what your users experience as "nothing loads", and only the last one raises the card on your dashboard.

2026-08-31

Fixed

  • The dashboard is usable on a phone. It was built for a desk: a fixed sidebar sat beside the page whatever the screen, so on a phone the content had about eighty pixels to live in and every table pushed the whole page sideways. The menu is now a row along the top, cards and forms run full width, and a wide table scrolls inside its own card instead of dragging the page with it. Nothing changes on a computer.
  • **A provider running the whole system on their own server no longer sees our name on it.** Their dashboard still called itself XPlay in the browser tab, wore our mark and our wordmark on its sign in screen and in its own sidebar, and offered a "Back to site" link to a site that is not theirs and does not exist there. It now carries their name and their logo throughout.
  • The TV install address the dashboard prints was a dead link on a self-hosted server. Every provider is told to give their users their-domain/tv.php to type into the Downloader app on a Fire TV or Android TV box, and on a self-hosted server that page had never been installed, so it answered "not found". The page now exists there, carries the provider's own name and logo, and offers their app rather than ours.
  • Signing in to a TV with your phone sent a self-hosted provider's users to us. The TV asks its own server for a pairing code and is handed back the web address to put in the QR, and that address was written into the code as ours. On a provider's own server the customer therefore scanned a QR that opened OUR site, where their code did not exist and their login did not belong. The address is now worked out from the request, so it is always the server the TV actually asked, and the page the phone opens carries the provider's name and colour instead of ours.
  • A self-hosted owner's admin dashboard offered two things they do not have. Player codes and Trials sell our own editions, and their pages print our pricing and our streaming panel address. Neither exists on somebody else's server, so neither page does either now. The same dashboard also advertised our own app, complete with the server it is built against. Every page of both dashboards was then rendered and read back: no mention of us survives anywhere on a self-hosted install.

Also

  • Released: XPlay 1.0.55, Player 1.0.47, Trial 1.0.32, DarkPlayer 1.0.55, and the five provider apps, all carrying the watching-now fix above.

2026-08-30

Fixed

  • A minute without a network no longer costs a whole interval of updates. The scheduled update of channels and the guide counted itself as done the moment it started, so a box that happened to be offline right then went another full interval, up to two days on the slowest setting, without its provider's new channels. It now counts only a load that really worked, and a failed attempt is retried in minutes. It also stays polite while a connection is down, asking every ten minutes rather than every minute.
  • Two faults in the code that only runs when something else has already gone wrong. An upload that lost its connection was retried down the same dead connection, so three attempts were really one, and the cleanup afterwards used that same dead connection and so left its half finished file behind. Each attempt now gets a fresh connection, and the cleanup reconnects before it tidies up.

Also

  • Every provider's app was rebuilt again on the current source, so the fixes above reach their users too and nobody is left waiting to notice the rebuild notice.
  • Released: XPlay 1.0.54, Player 1.0.46, Trial 1.0.31, DarkPlayer 1.0.54, and the five provider apps.

2026-08-29

Fixed

  • A release could be published half finished. Each app was uploaded and swapped in one at a time, and the version number was written last. When an upload failed part way, the first app was already live under the previous version number: a new download got the new app labelled as the old one, and every installed app was told it was up to date. A release is now all or nothing. Every app is uploaded first, each is checked to have arrived whole, and only then are they all swapped in and the version written.
  • Every provider's app was rebuilt from the current source after the build farm was brought up to date, so nobody is left on the old one waiting to notice the rebuild notice.
  • A note about the Set password button was printed above the users table even when a provider had no users in the dashboard, so it read as an error rather than a hint about a button that was not there. It now appears only where the button does, and the Devices tab says what a provider CAN do with an account that lives on their streaming panel instead of only what they cannot.
  • Providers' own apps were being built from a two month old copy of XPlay. The build farm keeps its own copy of the app source, and that copy had not moved since 8 August, while our own app went from 1.0.25 to 1.0.51. So a provider who pressed Build my app got an app with no Sports schedule, no ticker message and none of the other work from the last three weeks, no matter what they ticked in their dashboard, and nothing said so. The build farm now follows every release, and the "a newer version is available" notice reads the build farm itself instead of a date that had to be typed in by hand.
  • Our name was still in the VPN setting in Bosnian, German and Spanish, so a rebranded app leaked it to anyone not using English.
  • Reset devices really resets now. Pressing it freed the account's device slots, but an app that was still open took its slot straight back within the minute, so the button looked broken and a customer could not move to a new phone. A slot is now taken when somebody signs in and never by a routine check-in, and Reset devices also ends the session on the old device instead of leaving it watching.
  • Old phones no longer lock people out of their own account. Every device an account had ever used counted against its allowance forever, including phones that were replaced or wiped a year ago, and those never send a sign out. Someone with four old devices and an allowance of two could not get back in after reinstalling. A device that has not been seen for a month now releases its slot on its own.
  • The device allowance was not being enforced at all for a short time today, because of a fault in how the count was compared in the database. Found by testing rather than by reading, fixed, and proved on the live service straight afterwards.
  • Two switches that did nothing and did not say why. Ticking "show the news ticker" with no message and no feed left the app with nothing to scroll, and ticking "show the Sports schedule" without choosing a league left the button hidden, because a schedule of no leagues is not worth a button. Both were silent, so the only symptom was a feature that would not turn on. Each tab now says in one line what your app is doing right now and what is missing.

2026-08-28

New for providers

  • Devices, a tab of its own in the dashboard, listing every account that has signed in to your app, whether you created it in the dashboard or it lives on your streaming panel. Device, app version, when it was last used, and whether it is being watched right now.
  • Devices allowed per account. One number for everyone, overridable per account, with Reset devices to hand every slot back at once. Zero means no limit, which is what everybody had before.
  • Where each device is watching from, shown under every device, with the town and country when it can be worked out. One account watching from two towns at once is now visible at a glance.
  • Set password on the accounts you created here. The user is signed out everywhere at the same moment, so an old password cannot keep working on a phone that is already in. Accounts that live on your streaming panel say so plainly instead of offering a button that could not work.
  • Colour theme, seven ready themes plus the five colours on their own if you want a shade we did not think of. It reaches your users by itself, with nothing rebuilt.
  • A launcher icon separate from the in-app logo, because a square mark that reads at thumbnail size and a wide lockup on a sign in screen are two different pictures.

Fixed

  • The download your users get is named after your app rather than ours.
  • Providers running the whole system on their own server get a Windows card that matches how their app actually works, with no provider code to type.