Repository navigation
Releases: slicknsliding/slicksync
Release list
1.99.0 - Phone tabs you can swipe, and safer Nuvio addon writes
Tabs on a phone you can swipe
Every page's tabs on a phone - Addons, Vault, Activity, Metrics, Users, Invitations and Discover - now show their full names instead of a drop-down.
- The tabs sit on a line of their own under the search box and buttons.
- When they don't all fit, the row slides sideways. Swipe it, or tap the small arrow at the edge.
- On a computer nothing changes: each page keeps its own layout, and a row that doesn't fit can be dragged with the mouse.
Safer Nuvio addon writes
SlickSync now writes a Nuvio addon list in one step, the way Nuvio's own apps do it.
- A list is never left empty part-way through a sync, a pause or a restore.
- If Nuvio fails, the old list stays exactly as it was.
- An older self-hosted Nuvio backend that can't take the one-step write is written the previous way.
Limits work as before: a daily limit or a bedtime pauses a Nuvio person's streaming, and lifting it puts their addons back.
AIOMetadata: a main user with a PIN
AIOMetadata's next release lets the main user have a PIN and sign in as password/PIN. Adding them that way keeps the configuration password, so the household card can still add users and set PINs.
1.98.0 - Full tab names, shared-settings warnings, and safer group changes
Tabs show their whole name
Filter tabs on Addons, Vault and every other page with them no longer cut names down to a few letters.
- Every tab shows its full name and count.
- When they don't all fit, the row slides sideways. Drag it with the mouse, swipe it, or click the small arrow at the faded edge.
- On Addons the tabs sit between the search box and Browse, filling the space with the same gap on each side. On a wide screen the tabs share the extra room; other pages keep their compact tabs.
- Phones keep the drop-down. Dropping an addon onto Protected, or an entry onto a Vault category, works as before.
Shared settings
Two install links can look different and still open the very same AIOStreams or AIOMetadata configuration, so saving its settings changes every addon using it - a Stremio addon and a Nuvio addon, for example.
- Those addons now carry a "Shared settings" pill on the Addons page. Clicking it names the others and links to them.
- The addon's own page says the same above its Manifest URL.
- To keep them apart, save the configuration as a new one in AIOStreams or AIOMetadata and paste its link under Manifest URL.
Reload All and Sync never change AIOStreams or AIOMetadata settings - only the addon lists on Stremio and Nuvio.
Error messages in plain words
When something goes wrong, SlickSync now says what happened instead of passing on the server's own error, which could include internal details or an addon's address. Messages meant for you still come through, and the full error goes to the server log.
Group changes that don't undo each other
- Changes to a group's members made at the same moment no longer erase each other. Editing or deleting someone, merges and their undo, Jellyfin and Nuvio profiles, Trash restores, imports and automations all take their turn.
- Someone restored from the Trash, or brought back by undoing a merge, goes back into their group only, never into two.
- Expired people are taken out of their group on single-household installs too.
- Adding a Nuvio person to a group only accepts a group of your own household.
Also
- The guide's AIOMetadata pause timing: a pause can take up to about three minutes to reach a title opened just before; lifting it is immediate.
1.97.0 - Now Playing you can trust, security fixes, and AIOStreams 2.36
Security
This release closes several holes. Shared instances should update.
- Addresses are checked before SlickSync fetches them. Addons, Nuvio backends, webhooks, pictures, imports, AI Services and server addresses all go through one check, and so does anywhere they redirect. A shared instance never connects to its own network. Your own install still reaches the servers on your network and on the same machine.
- A person's own pages check the key belongs to that person. A valid key for one person no longer opens another person's page.
- One household can't take over another's Jellyfin sign-in. On a shared instance a Jellyfin person is matched by the address they were added with, and a person's server identity can't be set from a request or an uploaded file - only by signing in.
- Signing out ends the session on the server, not just in the browser.
- Too many wrong passwords are cut off on the shared-password login, as on the other sign-ins.
- Sessions are never signed with a built-in key. An install without
JWT_SECRETuses a key of its own. Such an install asks everyone to sign in once after updating; installs that setJWT_SECRETnotice nothing. - Also:
- sign-in errors no longer show database details;
- single sign-on links an existing account only by a verified email on a shared instance;
- new invite codes are longer, and existing invite links keep working;
- the key for a person's own page is no longer sent in the address.
If a login gate (Authelia, a forward-auth proxy) sits in front of your instance, let /stream/ and /api/users/public-stats/ through, as with /trax/.
Now Playing you can trust
- A title no longer sits in Now Playing after it stopped. If AIOStreams signs SlickSync out, SlickSync signs in again by itself. If AIOStreams can't be reached, what can no longer be confirmed comes off the screen, and comes back on its own when it can.
- It updates right away instead of every few minutes.
- The dashboard card shows what Activity shows: how long someone has been watching, where they last were, and the resume links. Several people watching sit side by side.
- A sequel no longer takes the original's name and poster, and episodes match their show under more release names.
- The Health page says when polling AIOStreams is failing, and since when.
Watch time that adds up
- A film watched in several sittings on one day shows the whole time, not just the last sitting.
- A new title's first sitting counts.
- Short stretches are no longer dropped.
AIOStreams 2.36: keep a household user separate
On the household card, an AIOStreams household user can be kept separate: they get a sign-in address of their own, see nobody else, and stay off the sign-in picker. Copy the address to share it, or replace it - the old one stops working. Off unless you switch it on.
They still need the setup's password at that address, unless your AIOStreams allows PIN sign-in and their PIN has six or more digits.
SlickSync also recognises a personal sign-in address when someone signs in with one, and tells you when a household user was made separate or given a new address.
Gravatar only when switched on
A profile picture from Gravatar is looked up only for someone who turned Gravatar on. Everyone else shows their own picture or their initials.
Bug fixes
- Sessions renew by themselves instead of asking you to sign in again after a month.
- A shared stats link and an invite link stay open for someone who isn't signed in.
- Deploying a snapshot never leaves someone with an empty addon list, and says which addons it left out.
- Two invites accepted at the same moment both end up in the group.
- Nuvio addon lists are written one at a time per person, and held back while Nuvio is failing.
- Checking a Stremio person's status never changes their account.
- The Activity page no longer slows the server down on a long history.
- Updated Next.js, Express and other dependencies.
1.96.0 - Security fixes, LumiereDB, and new Smart Catalog rules
Security
This release closes several holes. Shared instances should update.
- People's own pages check who's asking. Adding or removing an addon on someone's Stremio or Nuvio account, deleting from their library, protecting or skipping addons, revoking their API key, syncing and reading their status all now need that person's own sign-in. Before, knowing their id was enough.
- Private libraries stay private. Who's asking is proven by their sign-in, never by an id in the address.
- Signing in can't break a household. A sign-in only unlinks an account when it really belongs to someone else now - not when Stremio or Nuvio is briefly down. The new sign-in is saved to the person who signed in, not the household's first person.
- One household can't remove another's people. Adding someone with the same email in a second household no longer deletes them from the first.
- The Health page needs a login. Only the version check the login page uses stays open.
- Also:
- finishing an invite always puts the person in the group the admin chose;
- a session isn't accepted when the account can't be checked;
- on shared instances, addon and migration addresses can't point at the server's own network;
- the addon proxy stays within each addon's own address;
- logs no longer contain email addresses.
LumiereDB (self-hosted instances)
Point SlickSync at a LumiereDB - your own copy of IMDb's data - under Settings → Integrations → LumiereDB address. If AIOMetadata already runs one, use the same one.
- Discover search reads what you meant: typos (intersteller), words run together (spiderman), a sequel number or year on the end (gladiator 2, dune 2021), nicknames (lotr) and titles in other languages (la casa de papel).
- Trending and IMDb's Popular in Discover, by genre.
- People search works without a TMDb key.
- Smart Catalogs use IMDb's ratings and vote counts, can be ordered by what's trending, and leave out what the household has seen before counting - so they always fill up.
- History imports match more title-only rows (Letterboxd, TV Time, Netflix and others), with no OMDb key or daily limit.
- A badge in Settings and a card on the Health page say whether it's ready.
LumiereDB is for self-hosted instances only: IMDb's data is for personal use, so shared instances don't offer it.
Smart Catalogs - new rules for everyone
- Actors (all of them in it, or any) and directors, by name - "Pacino and De Niro together", "Christopher Nolan films". Describe a catalog understands them too, and "comedy but not romance".
- Under More rules: genres to leave out, a floor on votes that keeps little-known titles out, a runtime range, still airing or ended (and when it last aired), and the order - best rated, most popular, trending, most voted, newest or oldest.
- Catalogs that leave out what's been watched still come back full.
- A name nobody has stops the refresh and the catalog keeps what it had, instead of quietly filling up with something else.
Settings → About
Credits for the projects SlickSync is built on, where its data comes from, and what's kept where. On a shared instance it also says plainly what whoever runs it can see, and how to cut off access.
Rows that scroll sideways
Settings tabs, the top navigation and every chip and poster row scroll by dragging with the mouse or swiping, with no scroll bar - the edge fades where there's more. Every other scroll bar is slim, without arrow buttons.
Bug fixes
- Large imports (configuration backups) no longer fail with "too large".
- The dashboard's Finish setting up list is one closed line now, on both layouts - open it when you want it.
- A private instance with no login says so when it starts, and the quick start sets one.
v1.95.0 — Limits for everyone, profiles included, and age limits
Limits
One Limits button for each person
Daily limit, bedtime and age limit now live together under one Limits button, each with its own switch:
- on each person's card on the Users page, just before Synced;
- under each Nuvio profile and household user on the Users page;
- on each person's own page.
The popup works the same everywhere, and every time can be picked from the presets or set to any time you like.
Limits for profiles and household users
A Nuvio profile, or an AIOStreams or AIOMetadata household user, that's merged into someone can have limits of its own:
- only its own watching counts toward its daily limit, and the person it's merged into stops counting those minutes;
- only it is paused - and the person's own pause leaves it to its own limits;
- the popup says whose profile it is.
A Nuvio profile set (in Nuvio) to use the main profile's addons has no addons of its own to pause, so a limit there can only alert - the popup says so. Give it its own addons in Nuvio and it pauses like anyone else. As for any Nuvio account, its app needs reopening once, the first time a limit is set.
Age limits on Stremio, Nuvio and AIOMetadata
Pick the highest rating someone may play - G, TV-Y and TV-G; TV-Y7; PG and TV-PG; PG-13; TV-14; or R. A title rated above it has nothing to play; their catalogs and Continue Watching stay. Tick Also block films and shows with no rating to keep unrated titles out too.
- Ratings are the US film and TV ratings from OMDb, so it needs an OMDb key (Settings → Integrations). Without one, every title counts as unrated.
- It works the same way as an instant pause: through SlickSync's own address for that person, so it takes hold the next time they open a title.
What each limit does where
| Account | Daily limit and bedtime | Age limit |
|---|---|---|
| Stremio, Nuvio | Paused through SlickSync - takes hold the next time they open a title | Held by SlickSync |
| Nuvio profile (merged) | Its own, paused alone - needs addons of its own | Held by SlickSync - needs addons of its own |
| Jellyfin | The server's own parental schedule | The server's own age limit |
| AIOStreams | The streams come out of their addons | Not possible - the popup says so |
| AIOStreams household user (merged) | Its own, paused alone | Not possible |
| AIOMetadata | Pointed at a stream source with nothing to play | Held by SlickSync |
| AIOMetadata household user (merged) | Its own, paused alone | Held by SlickSync |
Paused, said on their own page
A person's own home page says when a daily limit or bedtime has paused them, and when streaming is back - so an empty stream list in their app has its reason.
SlickSync knows its own address
The address you open SlickSync from is the one phones and TVs reach it at, so SlickSync now uses it by itself - for SlickTrax, the AIOStreams watch-state link, Vault proxies, pictures on a server, instant pauses and age limits, migration codes and the iOS Shortcuts recipes. Settings no longer has a Public address to fill in.
- A named address (
slicksync.example.com) is preferred to a bare network number, and the one you last opened it from wins - moving to a new domain is picked up the first time you open it there, while opening it at home by its network address doesn't replace the name. - An address only the server itself can reach - a container's own name,
localhost- is never used. A pause or age limit is only routed through SlickSync once its address answers from where your devices are. - For a setup that's only ever opened through some other address (a tunnel, say), the
PUBLIC_APP_URLenvironment variable sets it. An address typed into Settings before is used until SlickSync has seen one itself. - When it can't be used, the Limits popup says why: the address isn't known yet, it only works inside the server, or a sign-in page answers at
/trax/(that path has to be reachable without a login, as SlickTrax already needs).
Bug fixes
- Vault - at tablet width the tab names ran into each other. With many tabs it now keeps its drop-down until there's room, and a name that doesn't fit is shortened instead.
- Catalogs - on a phone the Import, Describe a catalog and New catalog buttons ran off the edge of the screen; they wrap now.
- Users page - right-clicking anywhere while a popup on a person's card was open opened that card's own menu behind it. It now just closes the popup.
- Limits popup - its text is larger and easier to read.
v1.94.0 — Instant pauses, bedtime held by the server, and notifications on everyone's phone
Daily limits and bedtime
Pauses on Stremio and Nuvio take hold straight away
Stremio and Nuvio apps only read their addon list when they start. A pause used to take the stream addons off the account, so it only took hold - and only ended - once the app was restarted.
Now anyone with a daily limit that pauses, or a bedtime, has their stream addons reached through SlickSync. While they're paused, SlickSync answers that there's nothing to play; the rest of the time it passes every request straight on to the addon. Their addon list never changes, so:
- a pause starts the next time they open a title, and ends the same way - no restarting the app at either end;
- catalogs and Continue Watching keep working while they're paused;
- video never goes through SlickSync - only the addons' answers to "what can I play?".
Their app needs reopening once, when their first limit or bedtime is set. Changing the times afterwards needs nothing.
Good to know:
- This uses your instance's public address (Settings → Integrations → Public address of this instance), the same one SlickTrax uses. Without one, a pause takes the stream addons off as before.
- While someone has a limit that pauses or a bedtime, their stream addons need SlickSync to be running. People without one are untouched - their addons still go straight to the addon.
Every kind of account can be paused - none needs an app restart
A daily limit's pause or a bedtime now works on all of them, and on every one it starts and ends without anyone restarting an app:
| Account | What a pause does | Takes hold |
|---|---|---|
| Stremio and Nuvio | The stream addons have nothing to play (above) | The next title they open |
| Jellyfin | The server's own parental schedule refuses them, and bedtime is held by the server itself (below) | The next thing they play - or at once, with Stop what's playing |
| AIOStreams | The streams come out of every addon in their configuration; catalogs stay | The next title they open |
| AIOMetadata | New: they're pointed at a stream source with nothing to play; catalogs stay | Within a minute |
When the pause ends, everything comes back the same way.
AIOMetadata can be paused
During a pause the person is pointed at a stream source with nothing to play, so their apps still browse and nothing new starts. It takes hold within a minute and goes back exactly as it was when the pause ends. It needs the configuration password (reconnect with it if the popup asks), and anyone else in that household keeps playing.
Bedtime held by the Jellyfin server itself
A bedtime on a Jellyfin server is also written into the person's own parental schedule, on the server's clock - so the server refuses at bedtime even while SlickSync is restarting or down. Resume now opens tonight there too, switching bedtime off takes it away, and a schedule an administrator set on the server is left as it is.
After a pause ends
An app left open through a Stremio or Nuvio pause could save its paused addon list back afterwards, leaving the person without streams until someone pressed Sync. With the instant pause that can't happen. On an instance without a public address, SlickSync watches for it for 15 minutes after a pause and puts the full list back, with a bell notice: "'s addons put back".
People's own pages
Notifications on their own phone
In Settings on their own page, anyone can turn on Notifications on this device. They're told:
- when they need to sign in to SlickSync again, with a link straight to it;
- ten minutes before a daily limit or bedtime pauses them;
- when the pause starts.
It works for every kind of account, and their devices are kept apart from yours.
The same top bar as yours
People's own pages now have the top bar the admin pages use: every section in one place, pinned while scrolling, folding into a menu on a phone.
Now Playing first
On a person's home page, Now Playing now sits above today's numbers.
Under the hood
A smaller image
The web app now runs as a standalone build, so the image is much smaller and quicker to pull and start. For self-hosters: development mode (NEXT_DEV=true or NODE_ENV=development) now needs a source checkout - the published image always runs the production build.
1.93.0 — Bedtime, profile pictures both ways, and adding people in one step
Bedtime alongside the daily limit, pauses that now reach AIOStreams and can stop what's playing on Jellyfin, profile pictures that stay in step with people's servers, and adding someone in one step.
Bedtime
Bedtime sits next to the Daily limit on every person's page, with its own switch: no streaming between two times on the nights you choose - every night, school nights, weekends, or your own. Use either one, or both.
It pauses the same way a daily limit does, on every kind of account:
- Stremio and Nuvio - the addons that play streams come off their account until bedtime ends. Catalogs and Continue Watching stay, so the app still opens.
- Jellyfin - the server's own parental schedule applies, and nobody is signed out.
- AIOStreams - new in this release, see below.
- AIOMetadata can't switch one person off, so there bedtime only alerts.
If a daily limit's pause is already running, bedtime carries straight on with no gap in between. Resume now gives back that night only; the next night it pauses again.
Pauses that go further
Both a daily limit's pause and bedtime now reach further:
- AIOStreams can now be paused. For a daily limit or bedtime, the streams come out of every addon for that person's users in their AIOStreams configuration while catalogs stay, so their apps still open. It all goes back when the pause ends. Putting back an older version of the configuration from its history keeps the pause as it is. It needs the configuration password, and the popup says so when it's missing.
- Stop what's playing, for someone on a Jellyfin server: ten minutes before their limit or bedtime a message appears on their screen, and when it arrives playback stops. Without it, whatever is already playing carries on and only the next thing is blocked.
Profile pictures, both ways
- Changing someone's picture in SlickSync can set it on their Jellyfin, AIOStreams or AIOMetadata server too - Also use it on their server, in the picture picker, is ticked by default for those people. Picking a colour instead removes theirs.
- A picture changed on the server shows up in SlickSync within a couple of minutes (AIOStreams can take up to five), and household users' pictures come in too.
- A picture you chose with the box unticked stays yours and is never replaced.
Adding people
- Add User with a Stremio or Nuvio sign-in adds the person straight away, named after their account - a number goes on the end if someone already has that name. The name boxes for email and password or an auth key are optional too. Rename anyone on their page whenever you like.
- A person signing in on their own page fixes a sign-in that stopped working, for every kind of account, and you get the connected again notice. Reconnect offers the link to send them.
- People signed in through a Jellyfin, AIOStreams or AIOMetadata server show their server instead of a made-up email.
Jellyfin, AIOStreams and AIOMetadata
- Keep Jellyfin in step can also carry the household watchlist (as favourites) and ratings to their Jellyfin server - per person, off by default. Only what SlickSync added there is ever taken away.
- Now Playing names the device for AIOStreams people, and new-device notifications cover them too.
- Health → Servers shows each server's version, and whether a newer stable release is out.
- Caught up to… shows which anime episodes are filler or recap, from AIOStreams, and marks a whole run in one step on servers that support it.
- AIOMetadata household users can be added from the household card, with PINs on AIOMetadata releases newer than 3.4.1.
Invitations
- An invitation opens with one click, like a person or group card; the checkbox in its corner selects it.
- An invitation's own page keeps the top navigation, with Back beside its heading, and Edit opens the same edit dialog as the list.
- Renaming a group carries over to its invitations. An invitation whose group was deleted says so, with a button to pick another, and you're told when someone joins without a group.
Around the app
- The bell and command palette move up into the top bar on the PC too once you scroll, as they already did on phones.
- A person's own pages fit a phone: the header keeps their picture and name together, with Sync underneath.
Bug fixes
- Adding someone with a Stremio email and password no longer writes the password to the server log.
- Adding someone with a Stremio email and password whose name matched another person - a Nuvio or Jellyfin one, say - no longer took over that person; they're added as someone new.
- A colour picked for a group or person shows straight away on their own page, also in browsers with a page-recolouring extension - a group set to red no longer stayed purple there.
- An AIOMetadata server named after its owner is still recognised as AIOMetadata, in Add User and once someone is added, instead of being taken for AIOStreams.
1.92.0 — Daily limits that can pause streaming, Caught up to, and AIOStreams history
Daily limits that can pause someone's streaming, a quick way to mark a show watched up to an episode, and AIOStreams configurations you can look back through and restore - plus last seen, server status, and a round of phone fixes.
Daily limits that can pause streaming
Daily limit, on every person's page, sets so many minutes a day on the days you choose - every day, school days, weekends, or your own. Minutes are counted the same way as Watch Time, across every app.
When someone reaches it you get a bell and push notification. Per person, you can also choose Pause streaming: nothing new plays for them until midnight, or a Back on at time you pick (6, 7 or 8 AM, or any time).
- Stremio and Nuvio - the addons that play streams come off their account while it lasts. Catalogs and Continue Watching stay, so the app still opens. Every sync keeps them off until the pause ends, so putting one back by hand doesn't get round it.
- Jellyfin - the server's own parental schedule is set to no hours, and the schedule they had is put back afterwards. Nobody is signed out, so their devices keep working once it's over. It needs someone in SlickSync who signs in to that server as an administrator.
- AIOStreams can't switch one person off, so there a limit alerts only.
While someone is paused, their page says so, with Resume now to give them the rest of the day. Switching the limit back to just telling you, raising it past what they've watched, or turning it off ends a pause straight away. If pausing isn't available for someone - not in a group, or no administrator sign-in - the option says why and takes you to the fix.
Whatever is already playing carries on; the next thing they try won't. Stremio and Nuvio report watching when it's paused or stopped, so a limit can be reached a little late - never early.
Caught up to…
Caught up to…, on every person's page, marks a show watched up to an episode - handy when someone binged elsewhere, or is starting a show partway through.
- Pick from poster tiles of the shows they watch, or search for any show.
- Tap the last episode they've seen. Everything that will be marked is shaded, and episodes already watched are ticked.
- It's marked in their History (never counted as watch time) and on their Jellyfin or AIOStreams server.
- Undo takes a run back - here and on their server - and tapping a ticked episode can un-tick just that one.
AIOStreams
Configuration history
Every version of an AIOStreams configuration SlickSync watches is now kept, with what changed from the one before - addons, debrid services, household users, catalog order. The changed outside SlickSync alert opens it. Put back restores an earlier version, keeping today's debrid services, household users and API keys unless you untick them.
Health on a person's page
AIOStreams health shows what AIOStreams itself reports for someone's configuration: each addon's errors and empty answers over the last day or week, the ones it calls slow, and the apps using it. Test a title runs one real search and shows what each addon found. It only reads - nothing in the configuration is changed. Per-user statistics need AIOStreams' own USER_ANALYTICS_ENABLED; without it, the card says so.
Household users
From the household card you can add an AIOStreams household user - with their own history or one shared with the main user - and set or remove a PIN for each.
Watch history that looks after itself
- Turning on AIOStreams watch history for someone added with their configuration password now adds SlickTrax to the configuration itself.
- You're told once - bell and push - if it stops working: SlickTrax removed or switched off, left out of a household user's trackers, pushed past AIOStreams' library limit, or nothing arriving for a week.
- Keep SlickSync's collections first, per person and off by default, keeps SlickSync's catalog at the top of their AIOStreams catalog order. Nothing else in their order changes.
People and servers
- Last seen on every person card and in the table, from what they actually watched - including the app's own last-watched time.
- A Dormant filter on Users finds people who stopped watching. A new automation, Someone has been inactive for a while, can switch them off after a quiet stretch - the same reversible switch as their card, never a delete.
- Health lists every Jellyfin, AIOStreams and AIOMetadata server people use as up, down or partly failing.
- A whole server going down sends one alert naming who's affected, and one when it's back - not one per person.
- Posters for anime and other titles without an IMDb id, on Jellyfin, AIOStreams and AIOMetadata, come from the server's own artwork - filled in for titles watched before, too.
Colours
One colour list for people, groups and catalog covers: your theme's colour and accent, plus twelve fixed colours - red, orange, amber, green, emerald, teal, cyan, blue, indigo, violet, magenta and pink. What you pick is what shows, everywhere. Colours chosen before look exactly as they did.
On phones
- Popups open where they fit, instead of below the screen.
- Once you scroll, the bell and command palette sit in the top bar instead of floating over the page.
- Swipe a notification left to dismiss it.
- The buttons on a person's page look like buttons and show their state - a daily limit that's on, paused or reached is coloured to match.
Bug fixes
- A setting saved while a scheduled sync was running - a daily limit, for one - could be put back when the sync finished. Settings now stay as saved.
- Reconnect offers Nuvio's own sign-in for a Nuvio person, instead of Stremio's. It accepts only the same Nuvio account they had.
- Group colours: the colour picked when creating or editing a group is the one that shows - red no longer comes out teal - and editing a group from its own page now saves its colour.
- Library buttons - add, remove, back up, view - work for Jellyfin, AIOStreams and AIOMetadata people.
- Anime and TMDb-only titles are found on a Jellyfin server, so watched marks and library changes for them take effect.
- Streams an app opens in the background while a title's page is showing no longer appear in Now Playing; a stream counts as playing once it keeps playing for about 45 seconds.
- An AIOStreams server that answers with an error is no longer reported as down.
- When someone's sign-in has expired, Import and their addon list say so and point to Reconnect.
- Import no longer copies SlickTrax into a group.
1.91.0 — Jellyfin households, invites that make accounts, and collections you can share
Jellyfin households get played marks, resume points, device names, sign-out, age limits and invites that make the account; AIOStreams collections can be copied and shared, and Vault key changes can reach AIOStreams setups.
⚠️ If you run SlickSync from the published compose files, read this first
The compose files in this repository kept your database inside the container rather than in a volume. Replacing the container — which is exactly what docker compose pull && up -d does — took the database with it, along with the encryption key your stored Stremio and Nuvio credentials depend on.
They now declare a volume at /app/data. But switching an existing instance to the new file without moving its data first will start it empty, because the new volume is mounted over what was there. Move it across like this:
# 1. while the old setup is still running, copy its data out
docker compose -f docker-compose.private.yml cp slicksync:/app/data ./slicksync-data
# 2. take the new compose file, and set JWT_SECRET in .env (see below)
docker compose -f docker-compose.private.yml down
git pull
docker compose -f docker-compose.private.yml up -d
# 3. put the data into the new volume and restart
docker compose -f docker-compose.private.yml cp ./slicksync-data/. slicksync:/app/data
docker compose -f docker-compose.private.yml exec -u root slicksync chown -R 1001:1001 /app/data
docker compose -f docker-compose.private.yml restartKeep ./slicksync-data until you have confirmed everything is there. From then on, updates keep your data.
The same files also ignored your .env. The secret the setup guide tells you to generate never reached the container; the placeholder written in the file did, and it was identical in every published copy. Both files now read .env, and an instance refuses to start with a clear message if JWT_SECRET is missing — in public mode ENCRYPTION_KEY and POSTGRES_PASSWORD too — rather than falling back to something anyone could guess.
If you run from your own compose file with its own volume, none of this applies to you.
Jellyfin households
For people on a Jellyfin server of your own.
Keep Jellyfin in step
What someone finishes in Stremio, Nuvio or AIOStreams is marked played on their Jellyfin server, and anything they stop part-way picks up at the same spot there - so Next Up and Continue Watching in their Jellyfin apps are right wherever they watched.
- Every 10 minutes, on by default, with a switch per person under Watch-Tracking Integrations.
- It works for someone whose Jellyfin login was merged into their Stremio or Nuvio person too.
- Only what the server doesn't already have is touched. A later spot reached on the server itself is never pulled back, and older imported history is never pushed.
Which device, and what's signed in
- Now Playing names the device and app - "Living room · Infuse".
- New device notifications now cover a Jellyfin device someone hasn't used before. The first one each person is seen on is just remembered.
- Devices, on a Jellyfin person's page: everything signed in as them on the server, when each was last used, and Sign out next to each - for an old device or one at a friend's. SlickSync's own sign-in is listed but can't be signed out.
Age limit
Age limit, on a Jellyfin person's page, sets the highest age rating their account can play, chosen from the server's own rating list, and every Jellyfin app keeps to it. Titles with no rating can be hidden too, so they don't slip past the limit.
Invites that make the account
An invitation can now create the Jellyfin account itself. Pick your server under Make them a Jellyfin account when making the invitation; whoever joins chooses a password on the invite page and gets an account named after their username.
- The account stays off until you accept them. Rejecting leaves it off; deleting the request deletes it.
- Afterwards it follows the person: switched off when they expire, are deactivated or are removed, and back on if you reactivate them. Accounts that already existed are never touched.
- At most 10 people can be waiting on one invitation, so a link that gets around can't fill the server with accounts.
Devices, Age limit and invite-made accounts need someone in SlickSync who signs in to that server as an administrator - Jellyfin keeps those to administrators. Without one, each says so rather than failing.
AIOStreams
Copy, export and share collections
Transfer, on the AIOStreams Collections page:
- Copy to another profile - give another account or profile exactly these collections. A profile that doesn't have its own yet is set up in AIOStreams the same way a hand edit would.
- Export to a file or Create a code - the collections and the catalogs in them, titles included.
- Import a file or Paste a code - its collections are added after yours. Catalogs you already have are reused and the rest are made, so a code from someone else's SlickSync works too.
Debrid keys from the Vault - opt-in
When a debrid key changes in the Vault - rotated by hand, a backup key taking over, or the original swapped back - SlickSync can now swap it inside someone's AIOStreams setup too. Switch on Update debrid keys in AIOStreams on that person's page; it's off by default. Only that one key is changed, nothing else in their setup is touched, and the change is never reported as an outside change. It needs the person to have been added with their AIOStreams configuration password.
Open tabs pick up updates
A SlickSync tab left open across an update - including the installed app on a phone - kept running the old version until it was refreshed by hand, so a fix could look missing on an instance that already had it. A tab now notices a new version when it comes back into view and loads it on its next page change. Nothing you're typing is lost.
Bug fixes
- The notification bell's count no longer jumps around - 18, then 1, then 18 - each time you change page.
- Add New User: only the provider you pick stays highlighted, including in browsers with a page-recolouring extension.
- A Nuvio person whose sign-in has expired is told to reconnect on their profiles card, instead of "could not read just now".
- The database password no longer appears in the startup log. Anyone who could read the container's logs could read it; it now shows as
***.
1.90.0 — Jellyfin, AIOStreams and AIOMetadata as a third provider
Jellyfin, AIOStreams and AIOMetadata join Stremio and Nuvio, collections come to AIOStreams and to your own Jellyfin server, and you hear about it when someone's sign-in breaks - plus imports that keep watch history.
⚠️ If you run SlickSync from the published compose files, read this first
The compose files in this repository kept your database inside the container rather than in a volume. Replacing the container — which is exactly what docker compose pull && up -d does — took the database with it, along with the encryption key your stored Stremio and Nuvio credentials depend on.
They now declare a volume at /app/data. But switching an existing instance to the new file without moving its data first will start it empty, because the new volume is mounted over what was there. Move it across like this:
# 1. while the old setup is still running, copy its data out
docker compose -f docker-compose.private.yml cp slicksync:/app/data ./slicksync-data
# 2. take the new compose file, and set JWT_SECRET in .env (see below)
docker compose -f docker-compose.private.yml down
git pull
docker compose -f docker-compose.private.yml up -d
# 3. put the data into the new volume and restart
docker compose -f docker-compose.private.yml cp ./slicksync-data/. slicksync:/app/data
docker compose -f docker-compose.private.yml exec -u root slicksync chown -R 1001:1001 /app/data
docker compose -f docker-compose.private.yml restartKeep ./slicksync-data until you have confirmed everything is there. From then on, updates keep your data.
The same files also ignored your .env. The secret the setup guide tells you to generate never reached the container; the placeholder written in the file did, and it was identical in every published copy. Both files now read .env, and an instance refuses to start with a clear message if JWT_SECRET is missing — in public mode ENCRYPTION_KEY and POSTGRES_PASSWORD too — rather than falling back to something anyone could guess.
If you run from your own compose file with its own volume, none of this applies to you.
Jellyfin, AIOStreams and AIOMetadata
A third kind of account, next to Stremio and Nuvio. Add someone by signing in to their server - with a password, a PIN, or a Quick Connect code - from Add User, the login page, or an invite. SlickSync works out on its own whether it is a Jellyfin, AIOStreams or AIOMetadata server.
- Their watch history comes in, and what they are playing shows in Now Playing with watch time, the same as Stremio and Nuvio.
- Watched marks, favourites and resume points are written back to the server.
- Activity filters name Jellyfin and AIOStreams as sources, and each gets its own badge.
Households
AIOStreams and AIOMetadata household users become profiles of the person who signed in, all on one AIOStreams & AIOMetadata profiles card on the Users page. For each one:
- Separate it into its own person, history and all.
- Merge it back whenever you like.
- Stop tracking it.
Household users with a PIN sign in with it. AIOMetadata household users sign in on their own.
Sign in a new device with its code
On a Jellyfin or AIOStreams person's page, pick who the device is for - the person or one of their household profiles - and type the Quick Connect code the device shows. The server signs it in as them. A wrong or expired code says so plainly.
Configuration changes made elsewhere
If an AIOStreams configuration is changed outside SlickSync, you get a bell and push notification. The only thing SlickSync ever writes to an AIOStreams configuration is a household profile's own collections setup (below), and that never sets off the warning.
Collections: AIOStreams and Jellyfin, on one page
Catalogs > Jellyfin | AIOStreams - pick an AIOStreams account or a Jellyfin server.
AIOStreams Collections
- Each collection opens as its own page with its titles. Search to add, add straight from Discover, drag to reorder, remove from the card menu - everything saves as you go.
- Per profile, like Nuvio Collections: pick a household profile to give it collections of its own. SlickSync sets that profile up in AIOStreams so its apps load its own collections; Use the account's puts it back. Rotating a SlickTrax link no longer leaves a profile without its collections.
- Only people who sign in with AIOStreams are listed. Stremio and Nuvio people stay in Nuvio Collections.
Catalogs as collections on your own Jellyfin server
Pick the server and switch catalogs on. Each becomes a real Jellyfin collection holding the catalog's titles that the server has, and every tile shows how many that is.
- Kept in step every 30 minutes and whenever a catalog is switched; Sync now is on the page.
- Switching a catalog off takes its collection off the server. Only collections SlickSync made are ever touched.
- A collection follows its catalog's name, and its cover when an administrator's sign-in is available.
- Big catalogs work too.
Connection problem notifications
The bell and push tell you when someone's Stremio, Nuvio or Jellyfin sign-in stops working - so their watching doesn't go untracked without anyone noticing.
- Straight away when it needs reconnecting, an expired sign-in included.
- After 15 minutes when their server is just unreachable, so a short blip stays quiet.
- Again when it's back.
One notification per outage, not one every few minutes. It's on from the start; switch it under Settings > Notifications.
Export, import and Disaster Recovery Kits
- Importing a configuration back into the same SlickSync keeps everyone's watch history. Before, an import gave every person a new identity, so Activity went empty and everyone showed 0m. Older export files keep history too, matched by name.
- Exports carry AIOStreams and AIOMetadata households with their sign-ins, and the collections arranged for each person and profile follow them.
- Simkl sign-ins survive a move to a server with a new encryption key.
Bug fixes
- Opening a title no longer counts as watching it. Some apps warm up a title's top sources while you read its page, so the one you press starts sooner. Through the AIOStreams proxy, each of those counted as someone starting to watch - a "started watching" notification, the title in Now Playing, and a sync-mismatch warning, all for one page opened. A stream now counts as playing from its second request, which every real viewing makes within seconds. The Proxy tab still lists every connection.
- A Stremio account with the wrong addons could read as Synced. Most addons were told apart only by the end of their address -
manifest.jsonfor nearly all of them - so two different sets of addons could look identical. Each addon is now identified by its whole address, so sync spots the difference and corrects it. Account Guard adjusts its records once, so the change itself raises no alerts. - A finished episode no longer lingers in Now Playing, shown as paused at 100% for 18 minutes after it ended. Reaching the end now ends the session; its watch time and history are recorded as before.
- Activity opens with every filter clear, instead of on whatever was picked last visit - which could hide all your shows with nothing on screen saying why. Copy link, bookmarks and Back still open the exact view.
- The Watched by popup on Activity is no longer cut off, and closes when you tap outside it.
- Sync Debug Info opens right under the Debug button again.
- The header buttons each get their own round pill when they float over the page.