Manual/Reference

UI Profiles & Data Source Filtering

Meratyn can hide data sources, web services, and plugins to simplify the interface for beginners or to standardize a deployment across a team. Hiding is non-destructive — nothing is removed, and any item can be re-enabled at any time. Profile preferences are stored locally in the browser/app and never travel inside a saved .meratyn.json project.

Public examples are the exception to the presentation rule, not to preference ownership: a project with metadata.publicShowcase: true may carry a showcase.workspace allowlist. The app applies it as disposable session state and intersects it with the local profile. It never writes the allowlist into local settings. Showcase scope also filters command-palette and shortcut discovery so hidden authoring tools do not remain reachable through a second menu path. See Project Format.

For users

Onboarding

By default Meratyn starts on the Advanced interface — everything visible — and does not show a first-launch welcome dialog. Choose a simpler experience level at any time from Settings → Interface (see below):

  • Beginner — only the essential data sources and tools.
  • Intermediate — common data sources, services, and plugins.
  • Advanced — everything Meratyn offers (the default).

An administrator profile can pre-configure the interface for a whole deployment and lock these controls.

Settings → Interface

The interface is controlled by a single four-state selector:

  • Beginner / Intermediate / Advanced are developer-curated presets. Selecting one applies its layout immediately. Advanced reveals everything, so it is the full, unrestricted interface.
  • Custom activates automatically the moment you hand-edit any item below; it is a status, not a button you click.

Open Settings → Interface to:

  • Pick an experience level, which fills the checklists from each item’s complexity and takes effect at once.
  • Check or uncheck individual data sources, plugins, whole menus (Project, Edit, View, Add Data, Processing, Controls, Plugins, Help), and the items within the Project, Edit, View, Processing, Controls, Settings, and Help menus. Editing any item switches the selector to Custom.

The Settings menu itself, and its Language / Layout / Interface entries, are always shown so the profile UI can never be hidden away.

Consumers and authors

Profiles support both people who author maps and people who primarily consume them. A consumer can inspect the map, search, measure, use enabled controls, and open the same project without being pushed through a creation-first onboarding flow. Authors retain the normal Add Data, Layers, Style, processing, and plugin workflows whenever their profile makes those surfaces visible.

For administrators

A deployment can be pre-configured (and optionally locked) with an admin-profile.json file. When present, it is applied on startup, the onboarding wizard is skipped, and — if lock is set — the Interface settings are read-only.

File location

  • Web / embed: serve admin-profile.json from the application root (for the Docker/nginx build, the served document root). A missing file is ignored.
  • Desktop: place admin-profile.json in the app config directory (read_admin_profile reads <app_config_dir>/admin-profile.json). The desktop file takes precedence over a bundled web file.

File format

{
  "enabled": true,
  "level": "intermediate",
  "lock": true,
  "hiddenDataSources": ["postgres", "video"],
  "hiddenPlugins": ["maplibre-gl-geoagent"]
}
FieldTypeMeaning
enabledbooleanWhether filtering is active. Defaults to true for an admin file.
level"beginner" | "intermediate" | "advanced"Seeds the hidden lists from each item’s tier. Optional.
lockbooleanWhen true, users cannot change the profile from Settings. Removing the file (or serving one without lock) releases the lock on the next launch.
hiddenDataSourcesstring[]Explicit data-source ids to hide. Overrides the preset when present.
hiddenPluginsstring[]Explicit plugin ids to hide. Overrides the preset when present.
hiddenMenusstring[]Top-level menu ids to hide (project, edit, view, addData, processing, controls, plugins, help).
hiddenMenuItemsstring[]Menu-item ids to hide (e.g. processing.raster, help.diagnostics, controls.minimap).

Data-source ids are the catalog ids in apps/mappview/src/features/settings/preferences/profile/data-sources.ts (DATA_SOURCE_CATALOG; e.g. vector, xyz, mbtiles, postgres). Plugin ids are the stable ids defined in packages/plugins/src/plugins/* (e.g. maplibre-gl-geoagent). Menu and menu-item ids are the catalog ids in apps/mappview/src/features/settings/preferences/profile/menus.ts (TOP_LEVEL_MENUS, MENU_ITEM_CATALOG, MENU_ITEM_GROUPS).

hiddenMenus hides only its toolbar-menu container. It does not revoke a command that is intentionally available through another surface. Use hiddenMenuItems and hiddenPlugins for action-level discovery gates: for example, controls.measure hides Measure from Controls, its direct toolbar action, and the command palette; maplibre-gl-geo-editor hides GeoEditor/Draw from plugin, layer, toolbar, and command-palette launchers. These settings do not alter project data or the .meratyn.json schema.

When a level preset is active, external/bundled drop-in plugins (which load asynchronously after startup) are folded into the hidden set as they appear, so a beginner profile keeps hiding advanced plugins even when they load late.