Two galleries, one service, one set of rules.
| Preset gallery | .awpreset |
the notification popup: its layout, type, colours, motion and sound |
| Theme gallery | .awtheme |
the rest of the app: window, title bar, library, achievement lists, settings surface and overlay |
Downloading from either is one step: take the file, then Settings -> Presets -> Import or Settings -> Theme -> Import. This page is the other side of it - how to add one, what is checked, and what a card is allowed to say.
The flow is the same for both, and nothing leaves your browser until you press Publish.
Check what the card should say. Four boxes, and all four are filled in from the package as soon as you choose it: a name, a one-line description, tags and a credit. The credit is the author the application recorded when you exported, so it is the name you actually go by rather than one retyped into a web form; it is empty only if you chose not to be credited. Tags are entered one at a time - type a word, press Enter, and it becomes a chip you can click to take off again.
The name is the one box that has to end up filled in. It is the heading of the card and the address the file is published under, and a name chosen for somebody rather than by them is what a moderator ends up rewriting. Publish stays inert until there is one. The other three may be left empty, and an empty box simply means the card carries nothing there.
Everything in those boxes is a suggestion. It wins over what the package says only where it is actually filled in, it is cleaned exactly as a manifest is, and a maintainer sees all four beside the rendered picture before anything is published. None of it decides a file name or an address on its own: the address is built from the name by the service, which strips it to lower-case letters, digits and dashes and refuses anything else.
Reading the boxes back out of the file happens in your browser and nowhere else - the page opens the
package for its manifest.json and nothing more. The file itself still only leaves when you press
Publish.
| Preset | Theme | |
|---|---|---|
| Package | 4 MB at most | 8 MB at most |
| Rate | five submissions an hour from one address, presets and themes together |
You cannot attach a screenshot to either gallery, and there is nothing to resize.
For a preset, the popup is rendered from the package: the same document the app runs in its sandboxed notification window, drawn once in a browser with no network and no scripting of its own, at the size the app shows it.
For a theme, there is nothing to photograph at all - a theme is colours and numbers - so the server draws a fixed sample of the AW Next interface with your theme and photographs that. It is the same sample Settings shows you before an import, at the same size, so the two always agree. One picture carries the title bar, the profile row, the library, the recently-unlocked list and the settings surface, which is how a single card can stand for every screen a theme touches.
The sample sits on a fixed backdrop rather than on a blank page. That is not decoration: a theme may be see-through, and a see-through theme over nothing photographs as a washed-out design nobody would install. The backdrop is the same four gradients every time, so two renders of one file are still the same picture.
Because the sample text is a constant in the app’s own source, a card cannot carry a library, an account, a path or a game of yours, and cannot flatter a submission by showing a version of it you did not send.
An .awpreset holds the preset’s document and stylesheet, its images, its fonts, its sound and
the designer settings behind it. Nothing about your machine.
An .awtheme holds colours, gradients, fits, effect settings and any background image you
picked, and nothing else: no stylesheet, no markup and no script anywhere in it. An image travels as
bytes under a name built from the layer it belongs to, never as a path out of your pictures folder.
The whole list is in the .awtheme format.
A user stylesheet theme cannot be exported. A .css you dropped into
%APPDATA%\Achievement Watcher Next\themes is not an .awtheme; Export refuses it and says so.
Share the .css itself.
Anything inside a package is redistributed to everybody who downloads it, so it has to be yours to redistribute:
A theme made of colours alone is welcome, and is the easiest kind to accept.
The name on a card is whatever the Credit box ends up saying. It starts as the author the application recorded when you exported, so in the normal case it is already right; change it if you go by something else, or empty it and the card simply carries no name. A maintainer can add a link to your profile when approving it.
Everything listed in either gallery is published under CC BY 4.0. Submitting means you are happy with that, that it is your own work, and that everything inside it is yours to give.
Two layers, and a submission has to pass both.
The app’s own reader. app/util/presetPackage.js and app/util/themePackage.js - the modules
that run on Import - validate the package: the manifest, the format version, the minimum app
version, every path inside it, the file types, the sizes, the entry point. The gallery service uses
those files verbatim, so a rule added there applies here on the next build, and nothing can be listed
that the app would refuse.
The gallery’s own limits, which a private import does not need:
| File name | lower case letters, digits and dashes, 2 to 48 characters, built by the service from the name |
| Package | 4 MB for a preset, 8 MB for a theme |
| Picture | rendered by the service, and refused if it comes out outside the size a listing serves |
| Name | unique in its gallery, since two entries of one name collide on import |
Nothing in a package is executed while it is being checked, and the website never renders one either: a card shows a picture the service produced. A preset only runs in the app, in the same sandboxed notification window a bundled preset uses; a theme cannot run anything anywhere.
A refusal keeps the checksum and deletes the bytes, so sending the same file again is recognised rather than queued a second time.
Send the newer file the same way, with the version inside the package raised, and say in the description that it replaces an earlier card so a maintainer can take that one down. To have an entry removed altogether, open an issue and say which card it is.
That means no gallery server is answering, and the page is listing a copy published beside it. Everything already in a gallery is still there to download; only sending something new has to wait, so try again a little later.
The service that makes the panel appear is run by the project and is not part of this repository, so there is nothing to install for it.
They are not listed here, and will not be.
SAN themes are .san files people pass to each other directly. There is no themes folder in the SAN
repository, no wiki list and no feed, so there is nothing a build could point at; and the files
belong to the people who made them, who have not licensed them for redistribution. The SAN
repository itself carries no licence at all. Copying either into this gallery would be republishing
other people’s work without permission.
What AW Next does instead is read yours. Settings -> Presets -> Import SAN theme converts a
.san file, or the usertheme.json of a theme already unpacked, into an ordinary AW Next preset:
editable in the designer, exportable as an .awpreset like any other. What converts and what does
not is in Presets.
Converted one of yours? Export it and submit that. It is then your preset, credited to you.
Next: Presets and the Preset Designer - what a preset is, and how to make one.