Profile Builder · Save & publish — getting profiles out
How to save your work — download a .spcf file, keep local drafts, or publish the profile to the hub so others can find it.
The Builder is fully client‑side: creating, editing, opening and downloading
.spcf files needs no account. The only step that touches the server is
publishing to the hub (and loading a hub profile back by ID). This guide
covers all four ways a profile leaves your workspace.
1. The four exit doors
| Door | Button / gesture | Requirement | Result |
|---|---|---|---|
| Download | Header Download | none | A .spcf file saved to your computer. |
| Publish (save) | Header Save / publish profile (or Save changes) | Discord login | The profile is stored on the hub and gets a #ID + URL. |
| Load by ID | Header # ID + Load, or open /editor?id=<ID> |
none for viewing / editing a copy | Fetches a hub profile into the editor. |
| Drag & drop | Drop a .spcf onto the page |
none | Opens that file, ready to edit. |
Publish flow, precisely:
- Click Save. The button label changes with state: Save / publish profile for a brand‑new profile, Save changes once it has a hub ID.
- The Publish this profile window opens with fields:
- Title (required, max 80 chars)
- Game (max 80 chars; a datalist suggests games already on the hub)
- Description (textarea, max 400 chars)
- Publish → uploads the profile; on success you get "Published as profile #<ID>" and can point people at that ID. Cancel (or click the backdrop) closes without saving.
Download is the validation‑safe path: before writing the file, the Builder re‑parses the whole document with the real parser and refuses to download if anything would produce an invalid
.spcf— you can never ship a broken file. The same full‑parse check runs on Save/Publish.
2. Loading profiles back
- By ID: type e.g.
123into the sharp field in the header and hit Load — or open the page directly as/editor?id=123. - By file: Open… or drop a
.spcffile anywhere on the page. The builder derives a suggested title from the filename (.spcf/.spc). - Opening a foreign profile imports its groups, bindings and settings 1:1 — unknown value combos (e.g. old lift‑off heights) are preserved, not silently rewritten.
Unsaved‑work guard — if your current document has changes, the Builder asks before replacing it.
3. Accounts, limits & ownership
- Publishing requires a login (Discord OAuth, the shared Swiftpoint Hub account). Downloading, opening and free‑editing do not.
- Upload size cap: 2 MB per
.spcf— far beyond anything a real profile reaches. - A regular user can have up to 3 published profiles at once by default (admins are exempt; the cap is server‑configurable). If you hit the limit the API answers with a clear "You can upload at most N profiles. Delete one first to make room."
- You can only update (Save changes) profiles you own.
- Text hygiene: titles/games/descriptions are stripped of control characters and markup server‑side before they ever hit the page, so markdown/HTML in descriptions is neutralized — good if you're copy‑pasting from games.
4. Sharing tips for creators
- Publish once, then share the #ID — anyone can load it, tweak it, and republish their own remix (their copy, their ownership).
- Keep the Title unique and the Game matching what's already on the hub so it appears in the game filter.
- Use Description for the "how to use" — what the light/deep presses do,
which tilt axis you zeroed, whether
Game deviceis joystick (people loading a joystick profile into a mouse‑only session wonder why "nothing happens" until they flip the setting). - If you iterate, load your own #ID, tweak, Save changes — the URL and voters' links keep working; no new profile is created.
5. Diagnostics before you publish
Run the Diagnostics tab and fix everything it lists first. The tool checks for: empty groups, bindings without a trigger, bindings without any action, broken nesting links, nesting past 20 levels, and overlapping deep zones. A green "No issues found — the profile looks coherent." is your publish‑ready stamp.
6. Common failure modes
| Symptom | Fix |
|---|---|
| "Publish failed (401)" | You're not logged in with the hub account — log in (Discord) and retry. |
| Button says "Open or create a profile first" | No document is loaded. Click New or Open…. |
| "You can upload at most N profiles…" | Published‑profile cap reached — delete an old one (in your profile management) or ask an admin to raise it. |
| Download never happens | The document fails re‑parse (toast shows the reason) — fix the flagged binding, then retry. |
/editor?id=999 loses data |
The ID doesn't exist (or is private/deleted) — load the correct ID and verify the prime number in the URL. |
| Changes "vanish" after reload | You never clicked Save changes / Publish — it quantifies: re‑open, check the ● modified dot, publish, then reload. |