ui_config is a named bundle of sign-in window settings owned by the project. It holds the
branding and the flow behavior; an application does not describe those settings itself — it names
the code of the bundle it wants.
Who does what
- the project owner creates the bundles and gives them codes in the Console, at any time;
- the application is assigned a default bundle and a list of allowed codes; a code outside that list cannot be passed.
What a bundle controls
- which channels are shown and how — all at once or one (
ChannelDisplayMode); - how several channels share the window — behind tabs or side by side (
channel_layout); - on which devices the channel buttons are shown (
channel_button); - whether the window offers the “Cancel sign-in” button (
cancel); - the design template of the window;
- the post-confirmation behavior: what happens to the window and whether the flow continues automatically;
- the confirmation text;
- the wording of individual page elements — the
textsmember.
texts rewords built-in texts of the sign-in window and of the other pages Veriqa renders, for the
applications that select this bundle. An entry is keyed by the English text of the element; its value
is a replacement key that goes through the locale files, or ready-made texts per language that bypass them:
texts. Which texts are open, and what happens to an entry that does
not fit, is in Rewording a page element for one application.
channel_layout, channel_button and cancel are the bundle’s side of three settings of the
sign-in window:
channel_layout—Tabs(the default) orGrid: every channel on screen at once, each with its own QR code. See Channel layout.channel_button.show_channel_button—Always(the default),MobileOnlyorNever. A value that, together with the QR code visibility, would leave a device with neither the QR code nor the button is not applied: the buttons are then shown on every device. See Channel button visibility.cancel.enabled—trueorfalse. The button is on unless some level switches it off; pressing it returns the user to the application witherror=access_denied. See Cancel button.
Resolution order
The final value of any setting is assembled along a chain, from the most specific level to the most general:The authoritative resolution happens on the server at
/connect/authorize, not in whatever
bootstrap returned. Bootstrap shows what is enabled in the project;
the window’s final appearance is decided at request time.