# Aura directory sources

Simulator events are maintained in `data/events/`, one JSON file per event.
Set `defaultEnabled` to `true` to enable an event by default. While its `status`
is `active`, that default stays enabled and is excluded from the reset button.
Set `status` to `ended` when the event finishes so players can turn it off;
set `defaultEnabled` to `false` if it should also stop being selected on startup.
Use `upcoming` for events that cannot be selected yet. The same file contains
the event's aura definitions, theme, biome access, and optional aura biome limits.
Run `node tools/build/build-event-data.cjs` after editing event data, followed by
`node tools/build/build-aura-pages.cjs` when aura information changes.
`node --test tools/tests/*.test.cjs` runs the browser regression checks with
Playwright Chromium, including image sharing and the shared aura assets.

The local `/auras/` directory and individual aura pages are generated by
`node tools/build/build-aura-pages.cjs`. Refresh the wiki snapshot first with
`node tools/fetch/fetch-aura-wiki.cjs` when updating game information.
For a focused event refresh, run
`node tools/fetch/fetch-event-auras.cjs halloween26`, then rebuild the aura pages.
This checks both the wiki's aura category and navigation roster, so shop, boss,
quest, and season-pass auras are included even when they are not simulator rolls.
Published articles are recorded in `wiki-reference.json`; unnamed or unpublished
rewards are left pending. The refresh does not add rewards to the rolling pool.
Directory-only wiki title artwork can be refreshed with
`node tools/fetch/fetch-directory-title-art.cjs` (requires `cheerio`, `postcss`, and
`postcss-selector-parser` in `tools/node_modules`, installed with
`npm install --prefix tools cheerio postcss postcss-selector-parser`, or in the
external directory supplied through `WIKI_STYLE_DEPS`). The directory reuses the simulator's
shared stylesheets and default biome background. Page links use clean directory
URLs such as `/auras/` and `/auras/poseidon/`. Hosted pages fetch the HTML fragments directly. File previews
and failed HTML requests use the shared `scripts/auras/aura-layout-fragments.js`
fallback, so styles and controls still load.

Simulator auras missing from the wiki snapshot receive profiles with their
confirmed rarity, biome restrictions, and event details. Descriptions and media
remain pending until references are available. Rebuilding after a snapshot refresh
automatically replaces those temporary profiles with the wiki records.
Halloween 2026 profiles and title templates were refreshed on November 4, 2026.
Cruor and Acropolis are shop purchases from Jack The Pumpkin for 15,000 and
20,000 Hallow Points. Cataclysmic costs 17,250 and Deathkeeper costs 22,500.
All four remain in the directory and are excluded from
`data/events/halloween2026.json`, which contains only rollable auras.
Its `auraDiscoveryTerms` currency markers let the event refresh find shop
articles that mention Eon 1-31 without spelling out the event's name.
Former Gardens uses its corrected name, and Harvester : Necromancy rolls in
Graveyard or Glitched.

The ten published Halloween title designs are stored in
`data/references/wiki-title-overrides.json` and the compiled
`scripts/titles/wiki-title-data.js`. Cruor, Gaze, Harvester : Necromancy,
Cataclysmic, and Deathkeeper still
return plain text from Template:Aura, so they use local themed fallback styles
marked `pending` until the wiki publishes artwork. Replace those overrides and
clear `pending` when importing the actual artwork. Pages, roll results, the
changelog, and image exports share the same title registry, including shop auras.

The twelve Eon 1-30 title templates were refreshed from
[Template:Aura](https://sol-rng.fandom.com/wiki/Template:Aura) on October 19,
2026. The title artwork is stored in `scripts/titles/wiki-title-data.js`, with reviewed
overrides in `data/references/wiki-title-overrides.json`. The title builder preserves the
wiki's fonts, gradients, outlines, and text positioning. Tree
House's green gradient, font, and outline were refreshed on October 20, 2026.
Hasuen currently returns plain text from that template; its title uses that
published fallback until the wiki supplies styled markup. Imported
title artwork shares the wiki attribution and CC BY-SA 3.0 license below.

Aura pages fetch their shared HTML through `scripts/auras/aura-page-layout.js`.
Edit these partials once; the directory and all profiles use the changes on
their next load without rebuilding or editing any aura HTML files:

- `partials/shared/header.html`: top bar, simulator version, and game build (currently
  Eon 1-30). The `data-version-id` also supplies the asset cache version and
  footer version; update it together with the visible simulator version.
- `partials/auras/aura-header-controls.html`: Home and Settings controls.
- `partials/auras/aura-body.html`: body classes, shell classes, and backdrop.
- `partials/auras/aura-head.html`: shared styles, fonts, icons, and scripts, in
  dependency order. `{{assetPrefix}}` resolves to the site root and
  `{{appVersion}}` comes from the header.
- `partials/auras/aura-footer.html`: shared footer and attribution.
- `partials/auras/aura-profile-navigation.html`: All auras and Open simulator buttons.
- `partials/shared/quality-preferences.html`: shared quality settings. Aura pages use
  the UI animation, roll/sigil animation, and aura styling controls.

The home page embeds `header.html`, `home-header-controls.html`, and
`quality-preferences.html` at build time. Run `node tools/build/build-aura-pages.cjs`
to update those home-page copies or regenerate aura content when the roster
or wiki snapshot changes. The build preserves the editable aura partials.
The aura loader revalidates fragments and resolves paths from its own script,
so both nested profile URLs and hosting under a project subdirectory work.
For file previews, run `node tools/build/build-aura-pages.cjs` after editing a partial
to refresh the single fallback bundle. Hosted pages read the HTML changes
directly without rebuilding profiles.
Profiles embed only their own title artwork in a small JSON block. The complete
title registries and filter controls load only on the directory. Structural CSS
and scripts load together; remote font imports do not delay page initialization.
Title animations pause when their cards are outside the nearby viewport.
Malformed wiki declarations are normalized by `scripts/titles/wiki-title-repairs.js`.
Supplemental animations in `styles/titles/wiki-title-repairs.css` are adapted from the
wiki's `MediaWiki:AuraKeyframes.css` and `MediaWiki:Common.css`, under the same
attribution and license as the existing title styles.

Aura page preferences use the simulator's existing local storage key.
The directory has four sort directions and
combined biome, exclusiveness, event, tier, and text filters. Each category
supports multiple selections, matching any selected value within that category.
Search, selections, sort order, page number, and scroll position are encoded in the
directory URL. Profile links carry that return URL, so All auras restores the exact
directory view. Plain directory links from Home and other navigation start fresh.
Settings → Quality Preferences includes a slider for 9–90 auras per page, with
18 as the default, snapping to increments of 3. The page size is saved across visits. Filters and sorting
operate on the entire roster. Only the current page's cards are visible; the title
artwork and fonts on the previous and next pages are prepared in an inert buffer.
Changing a filter or page size returns to the first matching page.
Rarity sorting follows the wiki's tier groups before sorting the odds within each
group, so Challenged effect-pool rarities do not mix with common roll rarities.
Event, unobtainable, and developer tiers retain their own filters and groups.
Every generated document paints a dark background immediately, before any
stylesheets or layout fragments load, and hides the shell until it is styled.
The backdrop follows a single selected biome; multiple selections restore the
default. Profiles use their native or required biome, including Rainy for
Poseidon. Historical versions use their archived biome when recorded. Background
assets come from the simulator's existing biome asset map. Glitch uses its
existing muted video; playback pauses for reduced motion and hidden pages.
Aura pages also expose Audio Settings for biome music, UI volume, UI sounds,
and master mute. Volumes use the simulator's audio storage key without replacing
its cutscene or obtain-sound preferences. Audio loads on interaction and pauses
when the page is hidden. The page-size slider shares the audio slider artwork.
Slider cards reserve label and value space so tracks remain aligned.

`wiki-reference.json` contains descriptions and obtainment information from
[Sol's RNG Wiki](https://sol-rng.fandom.com/wiki/Sol%27s_RNG_Wiki), retrieved
through its public MediaWiki API on October 3, 2026. The roster comes from
[Template:Auras](https://sol-rng.fandom.com/wiki/Template:Auras), supplemented
by simulator title references. Each record identifies its source article
and revision. Authors can be found in each article's revision history.

Wiki text is shared under [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/).
Descriptions have been converted from wiki markup to plain text and shortened
to at most 25 words. The page labels shortened text as an excerpt and links
to the full source. Adapted wiki text remains available under that license.
Missing in-game descriptions are identified rather than invented. All profiles
preserve the complete recorded descriptions, including changes
after the opening words, with Show More controls for long text. Those adapted
descriptions carry the same wiki attribution, source revision, and CC BY-SA
license.

`history.json` records the October 4, 2026 audit of all 485 aura articles, with
152 historical versions on 112 profiles. Every profile has a current preview.
Historical galleries, explicitly old
description tabs, and article revisions before documented reworks supply the
version records. Archived image revisions are resolved when uploads replaced
an existing filename. Missing historical details are identified in the page;
current rarity or descriptions are never substituted for unknown older facts.
Submission concepts, bugged previews, images of other auras, and changes only
to cutscenes or abilities do not create appearance-version tabs.
Sapphire : Peace has only an unreleased submission preview, which is labeled
as a concept. File names preserve case after the first character, as required
by MediaWiki: `CometInGame.gif` and `CometIngame.gif` are different uploads.
Images marked as awaiting an update are excluded when a current preview exists.
General gallery captions are not guessed into version groups. Historical tabs
use explicit infobox labels or images matched to their source revisions; an
unrecorded historical image is identified instead of repeating the current one.
Current profiles consistently show tier, type, and availability, plus event,
soundtrack, and creator information where recorded, alongside rarity and obtainment.
Recorded descriptions preserve supported wiki inline colors, outlines, bold text,
line breaks, and sigils. Rendering allows only text formatting, removes executable
HTML and CSS URLs, and uses the existing biome, aura, and item styles. Biome
mentions in obtainment, native odds, and location text use the same sigils.

Raw MediaWiki responses are cached under ignored `.cache/aura-history/`.
Omit `--refresh` to reuse the cache, or run `node tools/build/build-aura-history.cjs`
to rebuild the reviewed records without fetching. Ambiguous labels and the
documented Viridescent Memory predecessor are resolved in
`data/references/aura-history-overrides.json`, with a reason for each mapping.
Each generated profile contains only its own version panels. The first image
starts downloading from the initial HTML at high priority. Remaining
media gets its `src` when the viewer preloads it after that first preview is ready.
All images, including historical versions, preload and decode
in the background. Smaller previews are used where available, with the original
image retried when a resized preview fails. The shared tab script
loads only on profiles and supports arrow keys, Home, and End. The browser
does not download the full history registry.
The viewer sits on the left on desktop and above the details on smaller screens.
Mutation navigation appears above the historical version tabs on related profiles.
Families come from the wiki's skin galleries and explicit mutation relationships.
Their links use the aura artwork, mark the active profile, and reserve measured
space for layered titles so names do not overlap the mutation labels.
The directory prepares the current page and one page on either side, including
their fonts and measured title frames, in an inert hidden grid. Buffers follow
the active filters, sort order and page size; their animations stay paused.
Existing title frames are reused when cards return to the visible page.
Additional wiki effects and fonts are shared with profiles too, including Faster
One for Layers and the generated text used by Abomination. Font imports load
separately from structural title effects so they do not block profile rendering.
Search, filters, sorting, page size and page number live in the directory URL.
Opening a card carries that URL and scroll position through its profile and
mutation links. Only its All auras button uses that return URL. Plain links from
Home, breadcrumbs and roll results open a fresh directory; no global filter
state is saved to local or session storage. The page-size setting remains a
shared user preference.
It shows one image at a time with image buttons and previous/next arrows. Image
transitions combine depth, fade, and a light sweep, respect reduced-motion
preferences, and handle rapid navigation without displaying a stale selection.

Playable soundtrack uploads are resolved by `tools/fetch/fetch-aura-soundtracks.cjs`
through the public MediaWiki API and saved in `soundtracks.json`. Rebuild history
and pages after refreshing audio. Each version uses its own recorded music files;
unresolved audio stays a wiki reference. Inline players have Play/Pause, seeking,
elapsed/duration labels and volume controls that expand on hover or keyboard
focus. Audio downloads on Play, leaving initial image downloads free of this
traffic. Playing a soundtrack pauses biome music; pausing it resumes biome music.
Master mute covers both, and changing a version stops its hidden soundtrack.

Cutscene and ability videos appear below the image viewer where a wiki section
records them. `tools/fetch/fetch-aura-showcases.cjs` resolves video metadata into
`showcases.json`; rebuild history and pages afterward. Wiki labels identify
individual recordings, including previous openings independently of aura reworks.
Historical panels use the videos from their source revision when available;
replaced uploads are resolved from the file history before that revision.
Leaked and concept recordings are excluded. Each disclosure loads its video only
when expanded, with custom play/pause, seek, expanding volume, playback speed,
fullscreen and picture-in-picture controls, plus links to the upload and article
revision. Collapsing it or changing aura versions pauses inline playback. The
floating player keeps the same media element while Home, the directory and other
profiles load in a same-origin navigation frame beneath it. The address bar and
Back/Forward history follow the displayed page; Return restores the source aura
and playback position. Videos opened in the navigation frame transfer their
playback state to the persistent player. Soundtracks and showcase videos pause
one another and biome music, and share master mute. Download controls and the
video save context menu are omitted; browser-playable public media is still
retrievable and this is not a DRM system.

`catalogue.json`, `scripts/auras/aura-routes.js`, `auras/index.html`, and the individual
`auras/<slug>/index.html` files are generated. Simulator mappings come from
the actual aura and event definitions in `scripts/simulator/main.js`. Numeric roll odds
sort from most common to rarest within their tier by default; crafted and other
special groups follow the regular roll tiers.
Scientific notation is preserved for display and parsed numerically for sorting:
THE RAREST AURA displays `1 in 16e+306`, with a denominator of `1.6e+307`.
Historical event odds fall back to the simulator registry when the wiki marks
the aura as unobtainable instead of publishing its original roll rarity.
