Preferences
Preferences control how Lumio renders language, time zones, date/time values, and motion for your own user profile. They are personal settings: they follow you across devices, browsers, and every channel account you can access. They do not belong to the selected account, so changing them in one account changes the same values everywhere you sign in.
Where to find them
Open Dashboard → Settings (/dashboard/settings) and use the Region & Language section.
The section is available in the dashboard account context and in your personal profile context. No account role or RBAC permission is required because the values are stored on your user, alongside personal settings such as Streamer Mode and notification preferences.
A second entry point in the Multichat, Events and Music settings
The same four controls also appear as a Region & language block in the settings panel of the Multichat, Events and Music views (open the settings gear, on the General tab). It is the same global preference, not a second value: changing it there writes your user profile exactly like the settings page, so both entry points always agree. The block carries a hint that it applies everywhere you sign in, because every other setting in those panels is stored per channel account.
In an OBS popout that authenticates with a popout token the block is read-only — it shows your current language, time zone and date/time examples and points you to the dashboard settings page — because a token-authenticated popout has no signed-in user to write the profile to. A popout you open while signed in with your normal session shows the editable controls.
Language
The Language control offers:
| Value | Meaning |
|---|---|
| Automatic | Use the request-time fallback for the app language. |
| English | Render the web app in English. |
| Deutsch | Render the web app in German. |
Choosing English or German saves the value to your user profile and mirrors it into the locale preference cookie so the next server render uses the same language. Choosing Automatic clears that cookie mirror, so Lumio falls back to the default language when no other valid language cookie is present.
The language switcher in the sidebar writes the same user setting. It is just the quick-access control for the same preference, so switching language there also follows you to other devices after you sign in.
Timezone
The Timezone control lets you choose Automatic or any specific IANA timezone such as Europe/Berlin. Every IANA zone your browser knows is selectable — plus UTC — so there is no short list to fall off the end of.
The control is a searchable dropdown: open it and type to filter. The search box stays pinned at the top of the open list while you scroll, and filtering hides whole groups — a country header only appears while at least one of its zones still matches, so you never have to scroll past empty headings to reach a result. Zones are grouped by country — each group header is the country name in your interface language — and every entry shows its current UTC offset (for example UTC+02:00). The offset is the value in effect right now, so a zone that observes daylight saving time reads UTC+02:00 in summer and UTC+01:00 in winter. The search matches the city name (New York), the raw IANA id (America/New_York), the country name and code (Germany / DE), the offset (+02 / UTC+02 / GMT+2), and the zone's abbreviations and full names — in both your interface language and their international forms, for both daylight-saving phases. Typing MEZ or MESZ, CET or CEST finds Europe/Berlin; EST or EDT finds America/New_York; GMT+2 finds every zone currently two hours ahead of UTC. Because both phases are indexed, a summer abbreviation still finds its zone in winter and vice versa. If you already have a timezone saved that your current browser does not list — the same zone can carry different alias names across browsers — it still appears under Other so the dropdown reflects what is stored. Search terms that are not spelled out in an entry's label — the raw id, the country code, the unpadded offset, the abbreviations from other languages — are matched but never displayed: once a zone is selected the closed control reads it back as its country, city and, when the zone has a named abbreviation in your interface language, that abbreviation before the current offset (United States, New York — EST · UTC-05:00; Germany, Berlin — UTC+02:00 when the language has no distinct abbreviation for it).
Below the country groups there is a Fixed offset group: UTC and the whole UTC−12:00 … UTC+14:00 range. These entries are pure offsets that never shift for daylight saving time, which is why the country groups come first — pick a country zone if you want your local time to follow its seasonal changes.
| Value | Meaning |
|---|---|
| Automatic | Detect the browser's timezone on the client — shown with its country, city and current offset — and mirror it into lumio-tz for server-rendered pages. |
| IANA timezone | Use the selected timezone everywhere Lumio formats your times. |
The Automatic entry always describes the zone your browser reports right now, not the zone you currently have saved — so you can see what picking it would give you before you pick it. With America/New_York saved on a machine in Germany, the entry still reads Automatic — Germany, Berlin — UTC+02:00.
The live preview in the setting shows the effective zone — the one Lumio is formatting your times in today, which is your saved zone while a specific one is selected. Automatic detection and the per-entry offsets are computed after the page mounts, so the browser's timezone is never read during server render; until the page has mounted the entry reads plainly as Automatic, without a detected zone.
Date Format
The Date format control changes numeric dates. The setting affects field order and separators only; month names and other text always follow the language setting.
| Value | Example |
|---|---|
| Automatic | Uses the language locale's normal numeric date format. |
dmy_dot | 31.12.2026 |
dmy_slash | 31/12/2026 |
mdy_slash | 12/31/2026 |
ymd_dash | 2026-12-31 |
Time Format
The Time format control changes numeric times.
| Value | Example |
|---|---|
| Automatic | Uses the selected numeric format locale's default hour cycle. |
h24 | 23:30 |
h12 | 11:30 PM |
How the Values Are Applied
The four values are saved on your user profile through PATCH /api/users/me, then the dashboard refreshes so server-rendered pages and client components resolve the same settings.
Only language and timezone need cookies for server-rendered pages:
| Cookie | Purpose |
|---|---|
locale | Mirrors an explicit language choice. |
lumio-tz | Mirrors the resolved timezone. |
Date and time format presets are read from your user profile by the dashboard shell and provided to client components. Numeric date/time output uses the format preset, while textual output such as month names, weekday names, and relative time remains in the language locale.
Animations in Lumio
Under Dashboard → Settings → Appearance, Animations in Lumio controls motion across the signed-in dashboard, Chat, Events, Music and their popouts (including OBS). It is saved on your user profile and follows you across devices and accounts.
| Choice | Result |
|---|---|
| System (default) | Normal animation, or Reduced when your operating system requests reduced motion. |
| Reduced | No movement, scaling or repeating decoration. Short fades remain. |
| Off | App animations and transitions happen instantly. Loading still has a visible signal. |
Your operating system's reduced-motion request always applies; neither the global choice nor a per-view choice can turn it back on. Animated emotes and GIFs in Chat keep playing because they are viewer content.
Chat, Events and Music each have their own Animations row in the settings gear: As global, Reduced, or Off. This choice applies only to that view, is stored per browser and per user/account pair, and works on its dashboard page and popout. It can only be stricter than the effective global value; when global motion is Off, Reduced is unavailable. An OBS dock can set it in the view or use ?motion=reduced or ?motion=off on its popout URL. The URL choice affects that popout only and is not saved. A popout can read your global preference but cannot change it; use dashboard Settings for that.
The seasonal Animations: Automatic / Off row below is separate: it controls seasonal decoration only. The stricter of your system, Animations in Lumio, and the seasonal row wins for that decoration. At global Reduced or Off, seasonal decoration stands still; at global Off, the seasonal row is disabled with an explanation. The seasonal row cannot make other app animations move.
Seasonal Look
During certain weeks of the year the dashboard can wear a seasonal look. The only season with a look today is Halloween, 1 October 00:00 to 31 October 23:59:59. Season windows are counted in your effective timezone (the Timezone preference, or your browser's zone on Automatic), so a season starts and ends at your local midnight. Outside a season nothing changes.
Configure it under Dashboard → Settings → Appearance (/dashboard/settings#seasonal-look):
| Control | Default | Options |
|---|---|---|
| Seasonal look | On | On / Off. One switch for every season — switched off, you get no seasonal look at any time of the year. |
| Strength | Full | Subtle — seasonal colours, the seasonal logo and the seasonal icon on the Chat emote button (see Halloween emote button below). Full — Subtle plus a dismissible banner, a crescent moon, a corner spider web and bats in the page header (see Halloween scenery below), a small graveyard on top of the page footer and along the Events search bar, the Chat input bar and the search bar of the Music popout (see Halloween footer and Halloween search and input bars below), a seasonal loading indicator, bats on the "saved" message and seasonal empty states in Events and Chat (an empty feed shows the season's illustration and copy instead of the plain "no events" / "No messages found" line). |
| Animations | Automatic | Automatic — the decorations move unless your operating system or browser asks for reduced motion. Off — the decorations stay but never move (the seasonal loading indicator fades in and out instead, so you can still tell something is loading). There is no "always on": Lumio never overrides a reduced-motion setting. Only available at Full (Subtle has no animations). |
| Creatures in the decoration | Per animal (see below) | One switch per animal the current season's decoration shows. Only available at Full. |
The seasonal look sits on top of your light or dark theme and works with both. Chart and platform colours never change. The decorations move slowly; the only thing that blinks is the logo (below), and never faster than 2.5 times a second.
Halloween scenery. At Full, the top of every dashboard page shows a scenery behind the content: a crescent moon with a soft, warm halo in the top-right corner, a spider web in the corner and three bats beside the page title. In the dark theme the moon is pale yellow with a faint glow and the bats are pale; in the light theme the moon is golden with a golden glow and the bats are dark violet, so they stand out against the light background. The bats appear on screens from tablet width upwards. The Chat and Events pages fill the whole window, so they show the smaller popout scenery behind their tab bar instead: the corner spider web (with its spider if Spiders is on), two bats and, about every one to two minutes, a small bat flying across the tab bar — without the moon.
| Situation | Scenery |
|---|---|
| Idle | The bats glide slowly on the spot. Now and then — every 4–10 seconds, each bat on its own timer, so they never move together — a bat beats its wings two or three times, then glides again. |
| About every one to two minutes | One bat flies across the top of the page: it comes in from one side, flies a gentle arc and leaves on the other side within a few seconds, flapping as it goes. Never more than one at a time. It stays behind the page content and dialogs and never blocks a click. |
| Animations: Off, or reduced motion requested by your system | The moon, web and bats stay where they are and nothing moves: no gliding, no wing beats, no fly-by. |
| Browser tab in the background | Wing beats and fly-bys pause; nothing is caught up when you come back. |
Halloween loading indicator. At Full, wherever the dashboard shows a loading indicator for a page, a section, a panel, a list or a dialog — for example the Events list — three small ghosts take the place of the spinning circle. They bob up one after another, like typing dots. With Animations: Off, or reduced motion requested by your system, they stay in place and fade in and out one after another instead, so the dashboard still shows that it is loading. Small spinners inside buttons and fields (such as "Saving…") stay the regular spinner. Screen readers announce "Loading…".
Creatures in the decoration. Some people are afraid of certain animals, so every animal in the seasonal decoration has its own switch. The row lists only the animals of the season that is running right now (outside a season it is not shown at all), and each switch says what its default is. Like the rest of Appearance, the choice is saved on your profile.
| Animal (Halloween) | Default | What it covers |
|---|---|---|
| Bats | On | Every bat in the look: the gliding bats with their wing beats, the bat flying across the page and the bats on the "saved" message. Off — no bat anywhere. |
| Spiders | Off | A small spider in the corner web. Off — the web stays empty. |
When Spiders is on, the spider sits on a strand of the corner web most of the time. Every 20–40 seconds it either crawls a short way along the strand and stops there, or — less often — lets itself down a little on a thread, hangs for a moment and climbs back up. It moves its legs as it walks, stays behind the page content and dialogs, and never blocks a click. With Animations: Off, with reduced motion requested by your system, or while the browser tab is in the background, it sits still in the web.
Halloween logo. At Subtle, the Lumio logo becomes a still carved pumpkin. At Full, the logo is a lit pumpkin in the expanded and the collapsed desktop sidebar, in the mobile header and in the page footer: the L and the triangle are cut out of it, a warm candle light shines in both cut-outs, and a soft glow ring surrounds it. What it does:
| Situation | Logo |
|---|---|
| Idle | Every 6–15 seconds the candle flickers in a short burst of 3–6 blinks. Each blink puts out the light behind the L or the triangle, picked at random, for about a fifth of a second, so you look through the hole at the page behind it. About every third blink also tips that cut-out slightly before it settles back. |
| Mouse over the logo | Blinking stops at once, both cut-outs light up brighter and the pumpkin wobbles once. In the expanded sidebar, the dot of the "i" in "Lumio" also turns into a witch on a broom and flies off to the right in a flat arc over the top of the page, fading out before it reaches the edge of the window; it never blocks a click. The collapsed sidebar, the mobile header and the footer have no witch. When you move the mouse away, the dot comes back and the idle blinking resumes. |
| Touch screens | A tap is not a hover: no wobble and no witch. The idle blinking still runs. |
| Animations: Off, or reduced motion requested by your system | The pumpkin glows and both cut-outs stay lit, but nothing blinks, tips, wobbles or flies. Hovering only makes the light brighter. |
| Browser tab in the background | Blinking pauses, and no blinks are caught up when you come back. |
Screen readers always read the logo as "Lumio".
Halloween footer. At Full, a small graveyard stands on the top edge of the footer at the bottom of every dashboard page: tombstones, a cross, a crooked stone, a little fence, a bare tree and small pumpkins. It is a faint silhouette — pale in the dark theme, violet-grey in the light theme — with the pumpkins in orange. It sits above the footer card, never covers the links or the version line, and never blocks a click. The footer logo is the lit pumpkin described above (no witch). The footer links — Privacy, Terms, Imprint, Cookies — never move or change.
| Situation | Footer |
|---|---|
| Footer visible on screen | About once a minute (every 45–75 seconds) a small ghost rises from behind one of the visible tombstones, the cross, the fence or the tree, looks around for about a second and sinks back — about two and a half seconds in all. Each time it picks a spot at random, never the same one twice in a row. |
| Footer scrolled out of view, or browser tab in the background | No ghost, and nothing is caught up when the footer comes back into view. A ghost that is peeking when the footer leaves the screen disappears. |
| Animations: Off, or reduced motion requested by your system | The graveyard stays, the ghost never appears and the logo stands still. |
| Subtle | Only the seasonal colours: no graveyard, no ghost. |
Halloween search and input bars. At Full, the same graveyard also stands on the top edge of the search bar at the bottom of Events and of the message input bar in Chat, on the dashboard pages and in the chat and events popouts, and of the search bar of the Music popout, including popouts inside OBS. Here it is a narrow band, about 16 pixels high, that belongs to the bar itself: the tombstones stand on the bar's dividing line, just like on the footer, and the graveyard runs the full width of the bar, from edge to edge. The bar grows by that much, so the band never covers the last message or event row above it. While you reply to a message in Chat, the graveyard and its line sit on top of the Replying to box, which is part of the input bar, so nothing comes between the reply box and the message field. Without the graveyard (Subtle, season off) the line is the top edge of the bar, as usual. An open reply box does not keep the ghost away. It also never covers the search or message field, its placeholder, the platform toggles, the emote button, the send button, the clear-search button or the popout settings. The mention list and the emote library open on top of it, and it never blocks a click.
| Situation | Search bar / input bar |
|---|---|
| Bar visible and idle: the field is empty, nothing was typed for 4 seconds, and the emote library and the popout settings are closed (the field may still have focus, for example right after sending a message) | Every 15–30 seconds a ghost rises out of the ground at one of the tombstones, the cross, the fence or the tree until it is fully visible inside the band, looks left, looks right and sinks back — about three and a half seconds in all. In about one peek in three it glides instead to another stone 40–80 pixels along the bar before it sinks. |
| Field contains text, you typed in the last 4 seconds, the mention list or the emote library is open, or the popout settings are open | No ghost. A ghost that is peeking when you start typing sinks back right away. |
| Bar scrolled out of view, or browser tab in the background | No ghost. |
| Animations: Off, or reduced motion requested by your system | The graveyard stays and the ghost never appears. |
| Subtle, or the seasonal look switched off | No band at all, and the bar has its regular height. |
Never more than one ghost is on screen at a time on a page, however many places show a graveyard. The footer, the Events search bar and the Chat input bar share one ghost. It picks a random spot among all graveyards that may show it right now, never the same spot twice in a row — every 15–30 seconds while a search or input bar may show it, otherwise (only the footer) every 45–75 seconds. On the Chat page, for example, it sometimes peeks at the footer and sometimes at the input bar, but never at both at once. The URL parameters for popouts apply to the band as well: seasonStrength=subtle removes it and seasonMotion=off keeps the ghost away.
Halloween emote button. In the Chat message input bar — on the dashboard Chat page and in the chat popout, including inside OBS — the emote button shows a small ghost instead of the smiley face, at the same size and in the same colour as the button's other icons. The button works exactly as before: one click opens or closes the emote library. Screen readers announce it as "Emote picker".
| Situation | What the emote-button ghost does |
|---|---|
| Full, Animations: Automatic, browser tab in front | When you point at the button or move keyboard focus to it, the ghost looks left, looks right and turns back — about two seconds. Now and then it also does this on its own while the input bar is idle (the same rule as the graveyard ghost: empty field, nothing typed for 4 seconds, emote library and popout settings closed). |
| A graveyard ghost is peeking somewhere on the page | The emote-button ghost stays still, also when you point at the button. It counts as the page's one moving ghost, so the graveyard ghost waits while it glances. |
| The emote library is open (Full, Animations: Automatic, browser tab in front) | The ghost sways calmly left and right, over and over, until you close the library. Then it eases back to its resting position. While it sways it is the page's one moving ghost: a graveyard ghost that is peeking sinks away, and no other ghost appears until the library is closed. |
| The popout settings are open | The ghost stays still. |
| Subtle, Animations: Off, or reduced motion requested by your system | The ghost is shown but never moves. |
| Outside the season, or the seasonal look switched off | The regular smiley face. |
Follows your account. Like the other settings on this page, Appearance is saved on your user profile, so it applies on every device and in every browser you sign in with. A change takes effect immediately in the tab you made it in and in your other open tabs of the same browser; another device picks it up the next time it loads the dashboard or comes back to the foreground (at most every five minutes). To paint the right look before the page has loaded, the browser keeps a copy in the lumio-season preference cookie (see Cookie Preferences); clearing it is harmless — the next dashboard load restores it from your profile. Settings you chose in a browser before they moved to the profile are carried over once, the first time that browser opens the dashboard, provided you have not chosen anything on your profile yet.
Banner. At Full, a short banner sits at the top of every dashboard page while a season runs. The Chat and Events pages show it as a full-width strip directly under their tab bar, above any connection notices; it shortens the message or event list, and the chat input and the events search stay in view. The fullscreen overlay and widget editors never show it. It has two buttons:
| Button | What it does |
|---|---|
| × | Hides the banner for the rest of that season — on the dashboard, in every popout and on all your devices. The seasonal look itself stays. The next season (or the same season next year) shows its banner again. |
| Switch off | Switches the seasonal look off right away — the same Seasonal look switch as above, so it is off for every season, not just the current one — and hides the banner. It takes effect at once in this tab and in your other open tabs and popouts of this browser; another device picks it up the next time it syncs. A message confirms it and links to Settings, where you can switch it back on; it also offers Undo for a few seconds. If saving fails, the look comes back and an error message says so. |
Preview for admins. Lumio staff who can sign in to the admin app and hold the devtools:read permission see a small wrench icon directly left of Logout at the bottom of the sidebar (expanded and collapsed sidebar, and the mobile menu), and can also open it with Ctrl + Alt + Shift + D (Mac: ⌘ + ⌥ + ⇧ + D; ignored while typing in a text field). It opens the Dev & Admin menu, whose Season preview has three modes, one at a time:
| Mode | What you see |
|---|---|
| Automatic (default) | The calendar decides, exactly as every other user sees it. |
| Force season | Pick Halloween, Christmas, St. Nicholas, New Year's Eve, Easter or None. Seasons marked No look yet have no approved look, so nothing seasonal is shown for them. |
| Simulate date | Pick a day; the calendar decides which season would run then (including overlaps such as St. Nicholas inside Christmas, and the movable Advent and Easter dates). The menu names the season for that day. |
The preview shows the look even if you switched Seasonal look off above. It applies only to you, only in this browser: it is kept in the browser's local storage, never saved to your profile, and nobody else sees it. While it is active, a small Preview: … · only you badge stays at the bottom of the screen; End returns to the calendar. Users without the permission see no icon, and the shortcut does nothing for them.
The preview also applies to the chat, events and music popouts you open in the same browser — whether you are signed in there directly or the popout uses a popout token, as long as you are signed in to Lumio in that browser with the permission. A small Preview: … · only you strip under the popout header shows it, with End to end the preview for the whole browser, dashboard included. Starting, changing or ending the preview updates open popouts and dashboard tabs right away, without a reload. A popout URL with ?season=off shows no seasonal look even during a preview. An OBS dock or browser source has its own browser and never shows your preview.
Popouts and OBS
The seasonal look also appears in the four popouts — /popout/chat, /popout/events, /popout/music and /popout/obs — wherever you open them: in a browser window, as an OBS custom browser dock, or as an OBS browser source. A popout follows the Appearance settings of the user it shows: your own when you are signed in, or those of the member a popout token is assigned to (the token owner's when it is unassigned). Without a session it uses the defaults (on, Full, Animations Automatic, spiders off). A popout only reads these settings; the only things it can change are the two banner buttons below, and it can only switch the look off, never on.
Because a popout is narrow, it shows a reduced set: the seasonal colours, the seasonal loading indicator, the seasonal empty states in Events and Chat, the accent on the "saved" message, at Full the graveyard band on the chat input bar, the events search bar and the music search bar (see Halloween search and input bars above), the ghost on the chat emote button (see Halloween emote button above), and at Full a small decoration behind the popout header — the corner spider web (with its spider if Spiders is on), two bats and, about every one to two minutes, a small bat flying across behind the header. There is no crescent moon. The decoration stays behind the header and the content and never covers messages or controls. Animations: Off and your system's reduced-motion setting work exactly as on the dashboard.
Banner in popouts. At Full, the chat, events and music popouts show a compact version of the banner — one thin strip directly under the popout header (at the top of the music popout) with the same information in short form, for example "Happy Halloween! Halloween look until 31 Oct. Overlays unchanged." It sits above the messages, events or player and moves them down; it never covers them. In a narrow popout it wraps onto two or three lines rather than cutting text off. It has the same two buttons as on the dashboard:
- × hides the banner for this season everywhere — in every popout, on the dashboard and on all your devices.
- Switch off switches the seasonal look off for every season, just like the setting. A message names Settings as the place to switch it back on; a popout has no Undo, because a popout can only switch the look off.
This also applies inside OBS: a chat, events or music popout added as an OBS browser source shows the banner on stream until someone closes it. Close it once (in any popout or on the dashboard) or add season=off to that URL (see below). The OBS control popout (/popout/obs) has no banner. Subtle and season=off hide it, exactly as on the dashboard.
To change the look of one popout without touching your settings — for example a dock inside OBS, where you cannot open the settings page — add a URL parameter. It applies to that URL only and is never saved:
| Parameter | Effect |
|---|---|
season=off | No seasonal look on this popout. |
season=on | Seasonal look on this popout even when Seasonal look is off in your settings. |
seasonStrength=subtle | Colours only (no decoration, regular loading indicator). |
seasonStrength=full | Full, even when your setting is Subtle. |
seasonMotion=off | The decoration stays still (the seasonal loading indicator fades instead of moving). |
seasonMotion=auto | Use the seasonal Automatic setting; global motion and the OS can still keep decoration still. |
motion=reduced | Reduce app animation in this popout only, if its global value is less strict. |
motion=off | Turn app animation off in this popout only. |
Append with ? when the URL has no parameters yet, otherwise with & — for example https://lumio.vision/popout/chat?token=lm_pop_…&seasonStrength=subtle. Unknown values are ignored. The last screen of the popout-token wizard lists these parameters next to the token.
Overlays stay unchanged
Overlays, widgets, extensions, the fullscreen overlay/widget editors, the landing and legal pages, the login pages, the admin app and the public stats site always look the same — what you show on stream through an overlay or widget does not change.
Related
- Dashboard - sidebar, account switching, and dashboard navigation.
- Cookie Preferences - consent categories and preference-cookie management.
- REST API -
GET/PATCH /v1/users/mepreference fields. - GraphQL -
meandupdateMepreference fields.