Custom rosters

Publishing

Send a zip to a few friends, or put your repository on the web so everyone gets your updates.

Test it on your own computer first

On a computer, the game can read a repository straight from a folder, which is the quickest way to try your changes:

  1. In Settings ▸ Rosters ▸ Add a repository, type the folder's path as the address and pick Add it. On a Mac or Linux that's like ~/Documents/my-rosters; on Windows, write it as file:///C:/Users/you/Documents/my-rosters.
  2. Open your set and pick a date to install it. Then play it in team select.
  3. After each change, open the repository, pick Check again, and install the date again.

Delete the sha256 lines while you're testing, so you don't have to work them out after every edit. Put them back before you share.

The App Store version on a Mac can only open its own folders. There, test with a zip in the inbox instead (below).

Share a zip

The simplest way, with nothing to set up.

  1. Zip the repository folder. roster-repository.json can be at the top of the zip or in one folder inside it.
  2. Send it however you like: email, a chat app, a USB stick.
  3. They import it with Settings ▸ Rosters ▸ Import a zip: from the inbox folder (the menu opens it), by typing its path, or from an https:// address ending in .zip. The game installs the newest update of every set in it.

For an update, send a new zip. Importing a zip with the same file name again replaces the old one and installs its newest updates.

A zip at a web address works on every device, including phones, tablets and the Apple TV. A GitHub release is a good home for one.

Put it on GitHub

A public GitHub repository is free, and the game reads it directly. People paste your GitHub page's address and the game finds the files.

  1. Make a repository on github.com. Make it public.
  2. Upload your files: on the new repository's page, choose uploading an existing file and drag in everything in your repository folder, so roster-repository.json sits at the top. Then Commit changes.
  3. Share its address, like https://github.com/you/my-rosters. In the game, they use Settings ▸ Rosters ▸ Add a repository and paste it.

The game reads the files from your default branch. A repository in a folder works too: share the folder's page, like https://github.com/you/hockey/tree/main/rosters.

Put it on GitHub Pages or any web server

Any web server that serves plain files works: GitHub Pages, Netlify, Cloudflare Pages, Firebase Hosting, or a folder on your own site.

  • Upload the folder as it is. Keep the names and folders exactly.
  • It must be https://. The game won't read plain http://.
  • Share the folder's address, like https://you.github.io/my-rosters/. The address of roster-repository.json works too, and the game adds https:// if it's left off.

Publish an update

Upload in this order:

  1. The new pack (and its changes.md) in its dated folder.
  2. roster-set.json, with the new update in it.
  3. roster-repository.json, with the set's new latest.

Someone checking halfway through then sees the old list rather than a broken one.

People see the update after Check for updates in Settings ▸ Rosters, or Check again on your repository's page. They install it from the set's page, or with Update on their installed set.

GitHub keeps copies of files for about 5 minutes and GitHub Pages for about 10, so an update can take that long to show. If the game says the download doesn't match its checksum right after you publish, that's usually why. Try again in a few minutes.

Keep it private

A repository can sit behind a password: a WebDAV folder (Nextcloud, ownCloud, a home NAS) or any web server that asks for one.

  1. Add it with Settings ▸ Rosters ▸ Add a repository, filling in the user name and password under the address.
  2. Change them later on the repository's Sign in page.

How the game keeps a password safe:

  • It signs in with HTTP basic auth, the way WebDAV servers expect.
  • It only ever sends the password over https://, and only to that repository's own server. If the server sends it somewhere else, the password stays behind.
  • The password is saved on the device, in the game's data folder. Make a read-only account for it if you can.

Where the game keeps things

Installed sets live in the game's data folder, under Rosters:

Folder What's in it
Rosters/Installed/ Each installed set's pack
Rosters/Imported/ Unzipped repositories
Rosters/Inbox/ Zips waiting to be imported
Rosters/library.json The repositories you've added, their sign-ins, and what's installed

Settings ▸ Rosters manages all of it: removing a set takes its teams out of team select, and removing a repository takes it off the list but leaves its installed sets in place.