v0.1.2c
v0.1.2c -- 2026-06-18
Post-release patches (no functional change; deploy behaviour is identical):
- Unnecessary code comments removed across 10 source files (Go handlers and TypeScript);
deploy.ps1local helper renamed fromFileHashtoGet-LocalFileHashto resolve a PSScriptAnalyzer warning. - Credits page API tab corrected: "four endpoints" fixed to reflect the actual seven rate-limited endpoints; events 30-minute refresh cadence added to the cache note; new Community Data section documenting
/api/awards,/api/awards/of/{username}, and/api/shinies/of/{username};POST /api/refreshadded to the Private API table.
This release gives the Raid Finder its own page, adds shiny collection display
to trainer cards with a matching privacy toggle, and fixes a parser regression
in the game data layer. The only database change is a single ALTER TABLE to
add the shinies_hidden column; everything else is a drop-in deploy.
What's in this release
Raid Finder -- dedicated page at /raidfinder
- The Raid Finder has moved from the Trainers page tab to its own route at
/raidfinder; a nav link appears automatically whenRaidFinderEnabledis
on in the admin Pages tab - Logged-out visitors see the full page content blurred behind a frosted-glass
overlay with Login and Sign Up prompts -- the UI is visible but not interactive - Logged-in users who have not yet set a Trainer Name and Trainer Code see a red
warning banner explaining they cannot join raids until the profile is updated,
with a direct link to Settings - The Trainer Directory page (
/trainers) is now a single-section layout; the
Raid Finder tab has been removed from it entirely - See Raid Finder
on the wiki for full usage documentation
Shiny collection on trainer cards
- Trainer cards in the directory now show a collapsible My Collection section
at the bottom of the profile modal; clicking it expands inline to show the
trainer's full shiny collection with sprites, form badges, and capture methods - The section only appears when the trainer's profile is public and they have not
opted out; see Privacy below - A new Hide shiny collection toggle in Settings > Privacy lets any user
opt out without affecting the rest of their public profile - New public endpoint
GET /api/shinies/of/{username}backs this feature;
it returns an empty array when the profile is private or the toggle is on - Requires migration step 26 (one
ALTER TABLE; see Migrating below) - See Shiny Tracking
and Trainer Directory
Translator workspace
- No new changes to the translator workflow in this release; it shipped in
v0.1.2b and is fully operational - Fresh installs: the application flow, workspace, admin review queue, and
GitHub sync are all available out of the box after runningschema.sql - See Translator Workspace
for the full setup and usage guide, including the two environment variables
required for GitHub sync (GITHUB_TOKEN,GITHUB_REPO)
Internal fix -- max battles endpoint
- The game data layer (
internal/pogodata/pogodata.go) was returning an error
when no Max Battles were active because the upstream API returns a flat JSON
array in that case instead of the expected tier-keyed object; both shapes are
now handled correctly
Fresh install from this release
These steps are self-contained. The wiki covers each topic in greater
depth -- see the Documentation section at the bottom.
Prerequisites
| Requirement | Minimum version |
|---|---|
| Go | 1.25 |
| Node.js + npm | 18 |
| MySQL | 8.0 |
| OpenSSH client | any (deploy only) |
No C toolchain needed (CGO_ENABLED=0).
1. Clone at this tag
git clone --branch v0.1.2c https://github.com/Hailey-Ross/hailsDotGO.git
cd hailsDotGO
npm install2. Configure environment
cp .env.example .envEdit .env and set at minimum:
| Variable | Required | Notes |
|---|---|---|
DB_HOST |
Yes | e.g. localhost:3306 |
DB_USER |
Yes | MySQL username |
DB_PASS |
Yes | MySQL password |
DB_NAME |
Yes | e.g. hailsdotgo |
SUPERADMIN_USER |
Yes | Exact username you will register first |
CSRF_KEY |
Strongly recommended | 64 hex chars: openssl rand -hex 32 |
PORT |
No | Default 8080 |
PAYPAL_* |
Store only | Omit entirely if not using the store |
GITHUB_TOKEN / GITHUB_REPO |
Translation sync only | Omit if not using GitHub locale sync |
3. Create the database
Use schema.sql for all fresh installs. Do not run migrate.sql on a fresh
install -- it is for upgrading existing deployments only.
mysql -u your_db_user -p < schema.sqlschema.sql creates the database (hailsdotgo), all tables (including
shinies_hidden from this release), and seeds site_settings, store_items,
awards, and locales. Registration is seeded closed; all feature pages are
seeded enabled.
4. Build
# TypeScript bundles -> static/js/
npm run build
# Go binary (current platform)
go build -o hailsDotGO .Cross-compile for Linux from Windows or macOS:
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o hailsDotGO-linux .5. Run
Export your .env values, then:
# bash
set -a; source .env; set +a
./hailsDotGOVisit http://localhost:8080. On first start the server fetches game data from
upstream sources; if they are unreachable it falls back to embedded snapshot data.
6. Bootstrap the superadmin account
SUPERADMIN_USER must be set to the exact username you plan to register.
-- Temporarily open registration
UPDATE site_settings SET setting_value = '1' WHERE setting_key = 'registration_open';Register at /register using that username, then close registration again from
the admin panel at /admin (or set the value back to '0' in SQL).
7. Deploy to a server (optional)
Run deploy/setup.sh once on the server as root, then run deploy.ps1 from
Windows (reads .env, cross-compiles, uploads via SSH with SHA256 manifest
diffing). See the Deployment wiki page for the full walkthrough.
Migrating to v0.1.2c from v0.1.2b
Important: Run the database migration BEFORE deploying the new binary.
The new binary expects the schema to be up to date; running an old binary
against a new schema is also unsupported.
From v0.1.2b
One new section since v0.1.2b:
| Section | What it adds |
|---|---|
| 26 | shinies_hidden column on users -- privacy flag for the shiny collection |
Copy and run section 26 from migrate.sql against your live database:
-- 26. Shiny collection privacy flag (2026-06-18)
ALTER TABLE users ADD COLUMN shinies_hidden TINYINT(1) NOT NULL DEFAULT 0 AFTER directory_hidden;Existing users default to 0 (collection visible), which matches the previous
behaviour. Users can opt out at any time via Settings > Privacy.
From v0.1.1a or earlier
Apply all 26 sections in migrate.sql in order. Sections are numbered and
sequential; do not skip any.
After the migration: update and rebuild
git fetch --tags
git checkout v0.1.2c
npm install
npm run build
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o hailsDotGO-linux .
# then deploy as normalSecurity notes
- Set
CSRF_KEY-- all state-changing endpoints enforce the CSRF token;
the key should be 64 random hex characters. If unset the server falls back to
a zero key, which is insecure in production. Generate one with
openssl rand -hex 32. - Privacy flags are enforced server-side --
shinies_hidden,profile_public,
anddirectory_hiddenare all checked in the handler before any data is
returned; the API always returns an empty result rather than an error, so
callers cannot distinguish "hidden" from "does not exist". - The translator workspace requires a scoped token -- if you enable GitHub
sync, use a fine-grained personal access token with Contents and Pull requests
read/write scopes on the one repository only; do not use a classic token with
broad repository access. - See Configuration
and Accounts and Roles
for the full variable reference and role/permission model.
Documentation
As of 2026-06-18, the wiki is fully current with this release.
Every topic below has been reviewed against the v0.1.2c codebase. If you are
reading this in the future, the wiki may have evolved; the steps above are
self-contained and do not depend on the wiki being current.
| Topic | Wiki page |
|---|---|
| Full setup walkthrough | Getting Started |
| All environment variables | Configuration |
| Schema, migrations, and backups | Database Guide |
| Server provisioning and deploy scripts | Deployment |
| TypeScript build pipeline | Building and Development |
| Roles, staff, and superadmin | Accounts and Roles |
| Admin panel guide | Admin Guide |
| Raid Finder | Raid Finder |
| Trust system and awards | Trust and Awards |
| Shiny Dex and personal collection | Shiny Tracking |
| Trainer Directory and trainer cards | Trainer Directory |
| Translator application and workspace | Translator Workspace |
| Day-2 operations | Operations |
| Public JSON API | API Reference |