Aurore and borealis

Everything borealis does, and what it lacked

Aurore is xfangfang/borealis (its wiliwili branch) renamed and carried on for PlayGuard and PlayShelf. Everything borealis has stays: its views, its platforms, its drivers. Here is what comes on top, and what changed.

Compared: Aurore's main and the tip of borealis' wiliwili, where Aurore starts. No release of Aurore yet.

Where Aurore comes from
  1. natinusala/borealisThe original library
  2. xfangfang/borealis · wiliwiliIts branch for wiliwili, where Aurore starts
  3. 45 commits from other forksPicked with their authors
  4. 21 commits from PlayGuardIts own patches to borealis
  5. JigSawFr/AuroreRenamed and carried on

At a glance

New in Aurore

What borealis does not have

Cadran is on by default, and one call turns it off; the rest is there when an app wants it.

Side by side

What both have, and how it differs

borealis on the left as its wiliwili branch stands, Aurore on the right.

Look and layout

borealis wiliwiliAurore
LookIts own, close to the Switch'sCadran by default; borealis' look one call away
ColoursA light and a dark theme, set in codeEvery colour a theme key, switched while the app runs
LayoutYoga 2.0.0Yoga 3.2.1, standard flexbox, gap, flexWrap with focus across the lines
Corners and gradientsOne radius for every cornerA radius per corner, horizontal gradients, gradients from code
Focus highlightA pulsing borderGlides from view to view, can fade after a while
ImagesLoaded on the interface's threadCan be decoded in the background; oversized pictures refused before decoding

Text and input

borealis wiliwiliAurore
Translations4 languages: English, French, Russian, Simplified Chinese15 languages, for the library, Cadran, the hints and accessibility
Changing languageLoaded once, at startWhile the app runs, with loadTranslations()
LookupsExceptions on lookupNo exceptions, safe from any thread
Fonts off the SwitchSwitch-style fonts bundledInter and PromptFont, free fonts; Chinese, Japanese and Korean from the system
KeyboardEnter, Escape, the arrows and little elseEvery controller button on a key, remappable
FocusA hidden box could take itHidden and destroyed views never hold it

Build and platforms

borealis wiliwiliAurore
LanguageC++17C++20, RTTI and exceptions on
CMake targetborealisAurore::aurore, Aurore::test
OptionsPLATFORM_*, USE_*, BRLS_*AURORE_*, presets, a relocatable install
Build systemsCMake and xmakeCMake only
PlatformsDesktop, Switch, PS Vita, PS4, Android, iOS, tvOSThe same, and the browser (Emscripten, WebGL 2)
Bundled librariesYoga 2.0.0, SDL 2.28.5, tinyxml2 9.0.0, nlohmann/json 3.11, glad 0.1.27Yoga 3.2.1, SDL 2.32.10, tinyxml2 11.0.0, nlohmann/json 3.12.0, glad 2.0.8
Switch soundslibpulsar linked, its sounds offlibpulsar removed
Opening linksAny address, through a shellhttp and https only, without a shell
LicenceApache 2.0borealis' code Apache 2.0; Cadran GPLv3, and so an app built with Aurore

Fixes

Fixed along the way

From other forks of borealis, from PlayGuard's patches, and from Aurore's own work.

  • The input block counter no longer wraps around.
  • A destroyed view is forgotten as the focus; a lost focus reaches the parent frames.
  • Navigation skips hidden frames and sliders.
  • Controllers under SDL: closed on unplug, all read again after a reconnect, presses shorter than a frame kept.
  • Each recycling list checks its own width; views queued while the deletion pool drains are kept.
  • The font parsers read only inside the font's own data.
  • The logger writes every line out at once.
  • A disabled button can no longer be clicked.

Picked from the borealis family

Their commits keep their author and their cherry picked from line; others are rewritten with credit in the commit.

Moving over

What an app changes

Most apps build and run unchanged once renamed. The guide lists every line, and what to look at on screen afterwards.

  • The names: no compatibility layer, every brls name has an Aurore one; a search and replace does it.
  • The build: C++20, the Aurore::aurore target, AURORE_* options.
  • The licence: Cadran is linked into every app, so an app built with Aurore is GPLv3.

Migrating from borealis →

my-app: borealis → Aurore
#include <borealis.hpp>#include <aurore.hpp>brls::Application::init();aurore::Application::init();BRLS_BIND(brls::Button, button, "go");AURORE_BIND(aurore::Button, button, "go");<brls:Box axis="column"><aurore:Box axis="column">textColor="@theme/brls/text"textColor="@theme/aurore/text"target_link_libraries(app borealis)target_link_libraries(app PRIVATE Aurore::aurore)cmake -DPLATFORM_DESKTOP=ON -DUSE_SDL2=ONcmake -DAURORE_PLATFORM=DESKTOP -DAURORE_WINDOW=SDL2BRLS_LANG=fr ./appAURORE_LANG=fr ./app

The project

Documented, tested, released

Moving an app from borealis?

The guide takes it step by step: the submodule, the build, the resources, the look, the names.