Config Editor
The Config Editor provides a tree-based interface for editing the application's Config.yaml file. Each major section of the configuration has a specialized editor panel with appropriate controls and validation.
Editor layout
The tree panel displays the top-level config nodes. Clicking a node opens its specialized editor in the right panel. Nodes that don't have a specialized editor use the default YAML tree editor with right-click context menus.
Each main section carries the same icon in the tree and on its tab — a shield for AccessControl, a key for Login, an envelope for Email, a globe for Server, and so on — so the section you are on is recognisable in both places.
Database connections
The Databases node shows all configured database connections. Each connection has a specialized panel with fields for the connection driver, server, database name, credentials, and driver-specific options.
Supported database drivers:
- FD (FireDAC) — MSSQL, Firebird, PostgreSQL, MySQL, Oracle, SQLite, and more
- DBX (DBExpress) — MSSQL, Firebird, Oracle
- ADO — MSSQL via OLEDB/ODBC
The Test Connection button validates the connection parameters against the live database.
Authentication
The Auth node configures user authentication:
| Property | Description |
|---|---|
Auth | Authenticator: DB, DBCrypt, DBServer, OSDB, TextFile, LDAP, Null — or the id of an authenticator your application registers. The combo lists the standard ones and accepts anything you type: a value of its own is kept and shown again when you reopen the file. |
IsPassepartoutEnabled | Enable a master password that bypasses normal authentication |
PassepartoutPassword | The master password value. Not editable while the passepartout is off |
IsClearPassword | Store passwords in clear text (not recommended for production) |
DatabaseChoices | Comma-separated Databases entries offered as an environment combo on the login page. See Database environment choice |
Defaults/UserName | Pre-filled user name on the login form |
Defaults/Password | Pre-filled password on the login form |
LoginType | PIN to validate a TOTP code instead of a password, empty for a normal login. See PIN login |
BCryptCostValue | Cost of the bcrypt hash, 4 to 31, default 13. Shown for DBCrypt only |
ValidatePassword/Message | Message shown when a new password fails the rule below |
ValidatePassword/RegEx | Regular expression a new password has to match. See Password strength |
The SQL the authenticator runs is edited on the tabs below the parameters: ReadUserCommandText, SetPasswordCommandText, AfterAuthenticateCommandText, ResetPasswordCommandText and RegisterNewUserCommandText. Each starts from the framework default, which is shown in the editor and written to the file only if you change it — see Default SQL queries.
The whole group is shown for the database authenticators and for an authenticator of your own, which normally descends from TKDBAuthenticator and reads the same keys; it is hidden for TextFile, OSDB, DBServer and LDAP, which have their own panels.
The optional JWT envelope is a checkbox here: ticking it seeds a minimal JWT block, whose remaining keys are edited in the tree.
Email and SMTP
The Email node holds the account the application sends from, and its SMTP sub-node the server:
| Property | Default | Description |
|---|---|---|
HostName | SMTP server host name | |
Port | 25 | Usually 25 without encryption, 587 with explicit TLS, 465 with implicit TLS |
UserName, Password | Credentials, left empty on a server that does not authenticate | |
UseTLS | True | Encrypt the connection. Without it the credentials travel in clear |
TLSMode | Explicit | How TLS is established: Explicit (STARTTLS on the plain port, the usual choice on 587), Implicit (TLS from the first byte, port 465), Required (explicit, and refuse to send if the server does not offer it) |
VerifyCertificate | True | Check the server certificate. False only for an internal server with a self-signed certificate, knowing the connection is then open to interception |
Help Chat
The HelpChat node configures the assistant behind the application's help button: Enabled, the Greeting shown when the panel opens and the provider; the provider group (ApiKey, the model, MaxTokens, GroundingMaxPages and the SystemPrompt that precedes every conversation — leave it empty to keep the provider's own prompt); the documentation index used for grounding (DocIndex, DocBaseUrl); and the limits under Advanced (PoolSize, MessageMaxLength, HistoryMaxMessages). The system prompt is a multi-line field at the bottom of the provider group. See Help Chat for the runtime side.
Server settings
The Server node configures the built-in HTTP server:
| Property | Default | Description |
|---|---|---|
Port | 8080 | TCP port for the HTTP server |
ThreadPoolSize | 20 | Number of threads in the connection pool |
BindAddress | (empty) | Bind to a specific interface (e.g. 127.0.0.1 for Desktop Embedded Mode) |
Layout defaults
The Defaults node contains application-wide defaults, and its tab edits them grouped by sub-node:
| Group | Properties |
|---|---|
| Grid | PageRecordCount, DefaultAction |
| Window | Width, Height |
| General | AlwaysNotifyChange |
| Layout | MemoWidth, MaxFieldWidth, MinFieldWidth, Char_Width_Factor, Char_Height_Factor, LabelSeparator, RequiredLabelTemplate |
| FormPanel | LabelWidth, HideLabels |
| Help | HRef, HRefStyle, ShortText, LongText — an empty HRef means no help button |
LabelSeparator deserves a note: an empty value is meaningful — it removes the separator after the label — so leaving the field blank keeps the node as it is instead of deleting it. See Config File — Defaults for the complete reference.
Desktop settings
The Desktop node configures the Desktop Embedded Mode window properties:
| Property | Default | Description |
|---|---|---|
ClientWidth | 1000 | Window client width in pixels |
ClientHeight | 900 | Window client height in pixels |
Maximized | False | Start the window maximized |
Resizable | True | Allow the user to resize the window |
Position | poScreenCenter | Window position (TPosition value) |
BorderIcons/biSystemMenu | True | Show the system menu icon |
BorderIcons/biMinimize | True | Show the minimize button |
BorderIcons/biMaximize | True | Show the maximize button |
BorderIcons/biHelp | False | Show the help button |
These properties are annotated with RTTI attributes (YamlNode, YamlSubNode) on TKDesktopConfig and TKDesktopBorderIconsConfig in Kitto.Metadata.SubNodes.pas, so the right-click context menu in KIDEx shows all available options with descriptions and default values.
Theme settings
The theme is configured under the Theme node in Config.yaml:
| Property | Description |
|---|---|
Theme/Mode | Theme mode: Light, Dark, or Auto (follows OS preference) |
Theme/UserSelection | Let the end user pick the theme via the theme switcher (honoured only when Mode=Auto) |
Theme/Font-Family | Font family for the entire application (shared across modes) |
Theme/Font-Size | Base font size, e.g. 13px (shared across modes) |
Theme/IconStyle | Material Design Icon style: filled, outlined, round, sharp, two-tone |
Theme/IconSize | Default icon size: Small, Medium, Large |
Theme/Light/Primary-Color | Accent/chrome colour for light mode (CSS name or hex) |
Theme/Dark/Primary-Color | Accent/chrome colour for dark mode (CSS name or hex) |
Since Kittox 4.x the Theme node is a decorated config class (TKThemeConfig), so KIDEx discovers and edits its properties — including the Light/Dark sub-nodes — through the generic RTTI tree editor, like Server or Auth.
See the Themes page for the full reference and real-world examples, or CSS Theming for overriding individual CSS rules in application.css.
UserFormats
The UserFormats node controls date, time, and numeric formatting:
| Property | Example | Description |
|---|---|---|
Date | dd/mm/yyyy | Date display format |
Time | hh:nn | Time display format |
Currency | € | Currency symbol |
Decimal | , | Decimal separator |
Thousand | . | Thousands separator |
See Config File — UserFormats for details.
Right-click context menu
For any node in the config tree, right-clicking shows the available child nodes and properties based on RTTI discovery. This is especially useful for complex nested structures where you might not remember all available options.
A node the RTTI does not know is not listed, but you can still create it with Add custom node, the last entry of the menu: it adds a node you then name yourself. That is the way to write a key the editor does not offer yet — for instance the children of Defaults. See YAML Attributes.
The menu items are organized as:
- Required nodes — shown first, with bold labels
- Optional nodes — shown with default values when applicable
- Sub-nodes — expandable sections for nested configuration blocks
- Containers — nodes that can hold multiple children (e.g. database connections)
