Features
In the admin: Settings › Features
Settings › Features groups these pages of the admin: DataViews, Dashboards, Maps, Files, Workflows, SQL Console.
DataViews
Settings › Features › DataViews
DataViews sets the defaults every DataView starts from and the caps that keep its lists fast. Most of them a DataView can override in its own settings.
Export & print
| Setting | Key | Default | |
|---|---|---|---|
| Export row cap | dataviews.export_max_rows | 10000 | All matching rows to CSV or Excel. Rows past the cap are left out, with a warning |
| Export warning threshold | dataviews.export_warning_threshold | 1000 | Warns that it may take a few seconds. Also for large imports |
| Print row cap | dataviews.print_max_rows | 10000 | A grid's PDF |
| Print warning threshold | dataviews.print_warning_threshold | 1000 |
Layout caps
A board, a map, a calendar, a timeline or a tree shows its rows at once instead of paging, up to:
| Setting | Key | Default | |
|---|---|---|---|
| Map point cap | dataviews.map_max_points | 500 | |
| Kanban card cap | dataviews.kanban_max_cards | 500 | |
| Calendar event cap | dataviews.calendar_max_events | 500 | per visible range |
| Gantt bar cap | dataviews.gantt_max_bars | 500 | |
| Tree node cap | dataviews.tree_max_nodes | 2000 | |
| Record save cap | dataviews.save_max_operations | 500 | Writes in one record save: a Master-detail's header and lines. A save past it is refused whole |
| Bulk edit cap | dataviews.bulk_edit_max_rows | 100 | 1-100. Rows edited together |
Toolbar
| Setting | Key | Default | |
|---|---|---|---|
| Toolbar | dataviews.toolbar_mode | auto | Automatic, Full (every action a button) or Compact (search and a menu in the page header). A phone or tablet is always compact |
Page width
| Setting | Key | Default | |
|---|---|---|---|
| Record page width | dataviews.record_content_width | narrow | Narrow, wide or Full width: a Form, a Master-detail, a record's page |
| CUSTOM page width | dataviews.custom_content_width | full | |
| Content align | dataviews.content_align | center | Left, center or right |
| Table margin | dataviews.table_margin | normal | Normal, Compact or No margin, for Table views |
Dashboards
Settings › Features › Dashboards
Dashboards bounds the read-only SQL queries behind dashboard widgets, and sets up embedding dashboards in other sites. See How a query runs.
Widget queries
| Setting | Key | Default | Range | |
|---|---|---|---|---|
| Widget query timeout | dashboards.query_timeout_ms | 10000 ms | ≥ 100 | PostgreSQL cancels a query past it |
| Widget query row cap | dashboards.query_max_rows | 1000 | ≥ 1 | Rows past it are cut off, not paged |
| Widget queries at once | dashboards.max_concurrent_queries | 4 | 1-20 | |
| Widget result cache | dashboards.cache_seconds | 300 s | 0-86400 | How long a published widget's result is reused. 0: off. Refresh skips it |
Embedding
| Setting | Key | Default | |
|---|---|---|---|
| Embedding secret | dashboards.embed_secret_key | none | The secret that signs embed tokens (HS256). Without it, signed embeds are off. Pick a new secret to rotate it |
| Longest embed token | dashboards.embed_max_ttl_minutes | 60 min | 1-1440. The longest a signed token may last |
| Sites that may embed | dashboards.embed_allowed_origins | none | Each an exact origin, such as https://portal.acme-field.example, with no path. Empty: no site can frame a dashboard |
See Settings › Share.
Maps
Settings › Features › Maps
Maps sets the base map every map in TotalBase draws: Map DataViews, map fields in forms, and dashboard maps.
| Setting | Key | Default | |
|---|---|---|---|
| Map tiles | maps.tiles | OPENSTREETMAP | OpenStreetMap (no key needed) or Mapbox. Mapbox without a token stays on OpenStreetMap |
| Mapbox public token | maps.mapbox_token | empty | A Mapbox public token, pk.…. It reaches every viewer's browser, so restrict it to the instance's URL in your Mapbox account. A secret token, sk.…, is refused |
| Mapbox style | maps.mapbox_style | mapbox/streets-v12 | username/style_id: mapbox/satellite-streets-v12, mapbox/light-v11, or a Mapbox Studio style |
| Default map view | maps.default_view | empty (the world) | Where an empty map field opens, as lat, lng, zoom: Acme uses -24.79, -65.41, 12, Salta |
Files
Settings › Features › Files
Files sets what may be uploaded, where it's stored, and how images are transformed. See Files.
Uploads
| Setting | Key | Default | |
|---|---|---|---|
| Enable Files | files.enabled | on | Off: uploads are refused |
| Maximum file size | files.max_file_size_bytes | 10485760 (10 MB) | |
| Allowed file types | files.allowed_mime_types | text/*, image/*, application/pdf, application/json, application/zip | Wildcards allowed |
| Public by default | files.default_visibility_public | off | The visibility of a file uploaded without one |
Storage
| Setting | Key | Default | |
|---|---|---|---|
| Storage provider | files.storage_provider | local | Local disk, the only provider in this version |
| Local storage path | files.storage_local_path | /var/lib/totalbase/files | Back it up with the database: see Backup and restore |
Image transformations
| Setting | Key | Default | |
|---|---|---|---|
| Enable image transforms | files.transforms.enabled | on | |
| Maximum output width / height | files.transforms.max_width / max_height | 4096 px | |
| Maximum total pixels | files.transforms.max_pixels | 16000000 | width × height |
| Maximum concurrent transforms | files.transforms.max_concurrent | 4 | |
| Transform timeout | files.transforms.timeout_ms | 5000 ms | |
| Transform cache lifetime | files.transforms.cache_ttl_seconds | 2592000 (30 days) | In the browser, and the stored copy until the hourly cleanup |
| Maximum operations per transform | files.transforms.max_operations | 6 | |
| Named presets (JSON) | files.transforms.presets_json | {} | See Image transformations |
Workflows
Settings › Features › Workflows
Workflows bounds what a workflow run may do, and how long its history is kept. See Workflows.
Runs
| Setting | Key | Default | |
|---|---|---|---|
| Maximum synchronous wait | workflows.max_sync_wait_ms | 30000 ms | The longest a synchronous webhook waits for a result |
| Maximum run duration | workflows.max_run_duration_ms | 900000 ms (15 min) | A run past it is failed |
| Maximum operations per run | workflows.max_operations_per_run | 1000 | Each loop iteration counts |
| Maximum iteration items | workflows.max_iteration_items | 500 | Items in one For each item |
| Maximum binding value size | workflows.max_runtime_value_bytes | 1048576 bytes | One value passed between steps |
| Auto-disable after consecutive failures | workflows.auto_disable_after_consecutive_failures | 10 | Failed runs in a row, of any trigger, that turn the workflow off. Most useful for a schedule, which would otherwise keep failing unnoticed |
| Maximum chain depth | workflows.max_chain_depth | 8 | 1-32. Workflows starting workflows; a loop is refused at any depth |
History
| Setting | Key | Default | |
|---|---|---|---|
| Maximum history payload size | workflows.max_history_payload_bytes | 65536 bytes | A Detailed history's values are cut to this |
| Summary history retention | workflows.history_summary_retention_days | 30 days | |
| Detailed history retention | workflows.history_detailed_retention_days | 7 days |
HTTP request
| Setting | Key | Default | |
|---|---|---|---|
| HTTP request allowed hosts | workflows.http_allowed_hosts | none | Private, loopback or link-local destinations the HTTP request step may reach: host names, IPs or CIDR ranges. Public addresses need no entry |
| HTTP request maximum body | workflows.http_max_request_bytes | 1048576 bytes | 1 KB to 50 MB |
| HTTP response maximum body | workflows.http_max_response_bytes | 5242880 bytes | 1 KB to 50 MB |
SQL Console
Settings › Features › SQL Console
SQL Console decides whether administrators can run raw SQL, how much of a result it shows, and how long its history is kept. See SQL Console.
| Setting | Key | Default | |
|---|---|---|---|
| Enable SQL Console | sql_console.enabled | on | Off: nothing can be run or explained; the history stays readable |
| Allow API tokens | sql_console.token_access | off | Lets an administrator's personal token run SQL: an AI agent through the MCP server, a script |
| Result row cap | sql_console.max_rows | 1000 | 1-100000. Rows shown; the query still runs in full |
| History retention | sql_console.history_retention_days | 90 days |