{
	"title": "JSON schema for Joplin setting files",
	"$id": "https://joplinapp.org/schema/settings.json",
	"$schema": "https://json-schema.org/draft-07/schema#",
	"type": "object",
	"properties": {
		"clientId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"altInstanceId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"editor.codeView": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"sync.wizard.autoShowOnStartup": {
			"type": "boolean",
			"default": false,
			"description": "Show the sync wizard on startup if no sync target is selected",
			"$comment": "private"
		},
		"sync.target": {
			"type": "integer",
			"default": 0,
			"description": "Synchronisation target",
			"enum": [
				0,
				2,
				3,
				5,
				6,
				7,
				8,
				9,
				10,
				11
			]
		},
		"sync.upgradeState": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"sync.startupOperation": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"sync.2.path": {
			"type": "string",
			"default": "",
			"description": "Directory to synchronise with (absolute path). Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: https://joplinapp.org/help/faq"
		},
		"sync.5.path": {
			"type": "string",
			"default": "",
			"description": "Nextcloud WebDAV URL. Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: https://joplinapp.org/help/faq"
		},
		"sync.5.username": {
			"type": "string",
			"default": "",
			"description": "Nextcloud username"
		},
		"sync.5.password": {
			"type": "string",
			"default": "",
			"description": "Nextcloud password",
			"$comment": "private"
		},
		"sync.6.path": {
			"type": "string",
			"default": "",
			"description": "WebDAV URL. Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: https://joplinapp.org/help/faq"
		},
		"sync.6.username": {
			"type": "string",
			"default": "",
			"description": "WebDAV username"
		},
		"sync.6.password": {
			"type": "string",
			"default": "",
			"description": "WebDAV password",
			"$comment": "private"
		},
		"sync.8.path": {
			"type": "string",
			"default": "",
			"description": "S3 bucket. Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: https://joplinapp.org/help/faq"
		},
		"sync.8.url": {
			"type": "string",
			"default": "https://s3.amazonaws.com/",
			"description": "S3 URL"
		},
		"sync.8.region": {
			"type": "string",
			"default": "",
			"description": "S3 region"
		},
		"sync.8.username": {
			"type": "string",
			"default": "",
			"description": "S3 access key"
		},
		"sync.8.password": {
			"type": "string",
			"default": "",
			"description": "S3 secret key",
			"$comment": "private"
		},
		"sync.8.forcePathStyle": {
			"type": "boolean",
			"default": false,
			"description": "Force path style"
		},
		"sync.9.path": {
			"type": "string",
			"default": "",
			"description": "Joplin Server URL. Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: https://joplinapp.org/help/faq"
		},
		"sync.9.userContentPath": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.9.username": {
			"type": "string",
			"default": "",
			"description": "Joplin Server email"
		},
		"sync.9.password": {
			"type": "string",
			"default": "",
			"description": "Joplin Server password",
			"$comment": "private"
		},
		"sync.11.path": {
			"type": "string",
			"default": "",
			"description": "Joplin Server URL. Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: https://joplinapp.org/help/faq"
		},
		"sync.11.userContentPath": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.11.id": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.11.userId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.path": {
			"type": "string",
			"default": "https://api.joplincloud.com",
			"$comment": "private"
		},
		"sync.10.userContentPath": {
			"type": "string",
			"default": "https://joplinusercontent.com",
			"$comment": "private"
		},
		"sync.10.website": {
			"type": "string",
			"default": "https://joplincloud.com",
			"$comment": "private"
		},
		"sync.10.username": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.password": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.pendingAuthId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.inboxEmail": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.inboxId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.canUseSharePermissions": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"sync.10.accountType": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"sync.10.userEmail": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.5.syncTargets": {
			"type": "object",
			"default": {},
			"$comment": "private"
		},
		"sync.resourceDownloadMode": {
			"type": "string",
			"default": "always",
			"description": "Attachment download behaviour. In \"Manual\" mode, attachments are downloaded only when you click on them. In \"Auto\", they are downloaded when you open the note. In \"Always\", all the attachments are downloaded whether you open the note or not.",
			"enum": [
				"always",
				"manual",
				"auto"
			]
		},
		"sync.3.auth": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.4.auth": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.7.auth": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.9.auth": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.auth": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.1.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.2.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.3.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.4.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.5.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.6.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.7.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.8.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.9.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.10.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.11.context": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"sync.maxConcurrentConnections": {
			"type": "integer",
			"default": 5,
			"description": "Max concurrent connections",
			"minimum": 1,
			"maximum": 20
		},
		"activeFolderId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"notesParent": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"richTextBannerDismissed": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"editor.pluginCompatibilityBannerDismissedFor": {
			"type": "array",
			"default": [],
			"$comment": "private"
		},
		"firstStart": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"locale": {
			"type": "string",
			"default": "en_GB",
			"description": "Language",
			"enum": [
				"ar",
				"eu",
				"nb_NO",
				"bs_BA",
				"bg_BG",
				"ca",
				"hr_HR",
				"cs_CZ",
				"da_DK",
				"de_DE",
				"et_EE",
				"en_GB",
				"en_US",
				"es_ES",
				"eo",
				"fi_FI",
				"fr_FR",
				"gl_ES",
				"id_ID",
				"it_IT",
				"hu_HU",
				"nl_BE",
				"nl_NL",
				"fa",
				"pl_PL",
				"pt_BR",
				"pt_PT",
				"ro_MD",
				"ro_RO",
				"sl_SI",
				"sk_SK",
				"sv",
				"th_TH",
				"vi",
				"tr_TR",
				"uk_UA",
				"el_GR",
				"ru_RU",
				"sr_RS",
				"zh_CN",
				"zh_TW",
				"ja_JP",
				"ko"
			]
		},
		"dateFormat": {
			"type": "string",
			"default": "DD/MM/YYYY",
			"description": "Date format",
			"enum": [
				"DD/MM/YYYY",
				"DD/MM/YY",
				"MM/DD/YYYY",
				"MM/DD/YY",
				"YYYY-MM-DD",
				"DD.MM.YYYY",
				"YYYY.MM.DD",
				"YYMMDD",
				"YYYY/MM/DD"
			]
		},
		"timeFormat": {
			"type": "string",
			"default": "HH:mm",
			"description": "Time format",
			"enum": [
				"HH:mm",
				"h:mm A",
				"HH.mm"
			]
		},
		"ocr.enabled": {
			"type": "boolean",
			"default": true,
			"description": "OCR: Enable optical character recognition. When enabled, the application will scan your attachments and extract the text from it. This will allow you to search for text in these attachments."
		},
		"ocr.pdfMode": {
			"type": "string",
			"default": "normal",
			"description": "OCR: PDF processing mode. Accessible mode saves additional information, enabling creation of accessible PDFs. It increases database size by approximately 10-20 KB per page.",
			"enum": [
				"normal",
				"accessible"
			]
		},
		"ocr.handwrittenTextDriverEnabled": {
			"type": "boolean",
			"default": false,
			"description": "Enable handwritten transcription. Allows selecting specific attachments for higher-quality on-server OCR. When enabled, the right-click menu for an attachment includes an option to send an attachment to Joplin Cloud/Server for off-device processing.\n\nExperimental! It may not work at all. Requires Joplin Server or Cloud."
		},
		"ocr.languageDataPath": {
			"type": "string",
			"default": "",
			"description": "OCR: Language data URL or path"
		},
		"ocr.clearLanguageDataCache": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"ocr.searchInExtractedContent": {
			"type": "boolean",
			"default": true,
			"description": "OCR: Search in extracted content",
			"$comment": "private"
		},
		"ai.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Enable AI features (Beta). When enabled, plugins and built-in features can use AI models to generate or analyse text."
		},
		"mcp.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Enable MCP server (Beta). Exposes Joplin notes to external AI applications (Claude Desktop, Cursor, etc.) via the Model Context Protocol. Requires the Web Clipper service to be running. Connected AI tools can read your note content; any text they retrieve may be sent to the external LLM provider those tools use."
		},
		"ai.allowRemote": {
			"type": "boolean",
			"default": false,
			"description": "Allow remote AI providers. Required to use cloud-hosted AI models, including Joplin Cloud AI. When disabled, only providers on your own device or private network can be used."
		},
		"ai.chat.providerType": {
			"type": "string",
			"default": "openai-compatible",
			"description": "Chat provider",
			"enum": [
				"joplin-cloud",
				"openai-compatible",
				"anthropic"
			]
		},
		"ai.chat.providerType.configured": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"ai.chat.baseUrl": {
			"type": "string",
			"default": "",
			"description": "Base URL. The OpenAI-compatible API endpoint. For example, https://api.openai.com/v1 or http://localhost:11434/v1 for Ollama."
		},
		"ai.chat.apiKey": {
			"type": "string",
			"default": "",
			"description": "API key",
			"$comment": "private"
		},
		"ai.chat.model": {
			"type": "string",
			"default": "",
			"description": "Model. The model identifier to use, for example gpt-4o-mini or claude-3-5-sonnet-latest."
		},
		"ai.usage.inputTokens": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"ai.usage.outputTokens": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"ai.status": {
			"type": "object",
			"default": {
				"degraded": false,
				"tokensUsed": 0,
				"tokensBudget": 0,
				"lastToastShownAt": null
			},
			"$comment": "private"
		},
		"ai.chat.disclosureAcknowledged": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"ai.embedding.enabled": {
			"type": "boolean",
			"default": true,
			"description": "Index notes for AI search"
		},
		"ai.embedding.lastProcessedChangeId": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"ai.embedding.lastIndexedModelId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"ai.embedding.initialScanDone": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"ai.tool.edit_current.enabled": {
			"type": "boolean",
			"default": true,
			"description": "Allow editing the current note (chat panel only). Enables the default edit operations for notes with an open AI chat panel. When disabled, the chat panel can still read the open note. Does not apply to MCP."
		},
		"ai.tool.search_notes.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow searching notes"
		},
		"ai.tool.read_note.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow reading notes"
		},
		"ai.tool.read_image.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow reading images"
		},
		"ai.tool.list_notebooks.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow listing notebooks"
		},
		"ai.tool.list_tags.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow listing tags"
		},
		"ai.tool.create_note.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow creating notes"
		},
		"ai.tool.update_note.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow updating notes"
		},
		"ai.tool.delete_note.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow trashing notes"
		},
		"ai.tool.manage_tags.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow editing tags on notes"
		},
		"ai.tool.create_notebook.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow creating notebooks"
		},
		"ai.tool.semantic_search_notes.enabled": {
			"type": "boolean",
			"default": false,
			"description": "Allow semantic search of notes"
		},
		"theme": {
			"type": "integer",
			"default": 1,
			"description": "Theme",
			"enum": [
				1,
				2,
				3,
				4,
				5,
				6,
				7,
				22
			]
		},
		"themeAutoDetect": {
			"type": "boolean",
			"default": true,
			"description": "Automatically switch theme to match system theme"
		},
		"preferredLightTheme": {
			"type": "integer",
			"default": 1,
			"description": "Preferred light theme",
			"enum": [
				1,
				2,
				3,
				4,
				5,
				6,
				7,
				22
			]
		},
		"preferredDarkTheme": {
			"type": "integer",
			"default": 2,
			"description": "Preferred dark theme",
			"enum": [
				1,
				2,
				3,
				4,
				5,
				6,
				7,
				22
			]
		},
		"notificationPermission": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"showNoteCounts": {
			"type": "boolean",
			"default": true,
			"description": "Show note counts",
			"$comment": "private"
		},
		"layoutButtonSequence": {
			"type": "integer",
			"default": 0,
			"enum": [
				0,
				1,
				2,
				3
			],
			"$comment": "private"
		},
		"uncompletedTodosOnTop": {
			"type": "boolean",
			"default": true,
			"description": "Uncompleted to-dos on top"
		},
		"showCompletedTodos": {
			"type": "boolean",
			"default": true,
			"description": "Show completed to-dos"
		},
		"notes.sortOrder.field": {
			"type": "string",
			"default": "user_updated_time",
			"description": "Sort notes by",
			"enum": [
				"user_updated_time",
				"user_created_time",
				"title",
				"order",
				"todo_due",
				"todo_completed"
			]
		},
		"editor.autoMatchingBraces": {
			"type": "boolean",
			"default": true,
			"description": "Auto-pair braces, parentheses, quotations, etc."
		},
		"editor.autocompleteMarkup": {
			"type": "boolean",
			"default": true,
			"description": "Autocomplete Markdown and HTML. Enables Markdown list continuation, auto-closing HTML tags, and other markup autocompletions."
		},
		"editor.enableHtmlToMarkdownBanner": {
			"type": "boolean",
			"default": true,
			"description": "Enable HTML-to-Markdown conversion banner. If enabled, opening an HTML note displays a prompt to convert the note to Markdown."
		},
		"editor.pastePreserveColors": {
			"type": "boolean",
			"default": false,
			"description": "Preserve colours when pasting text in Rich Text Editor"
		},
		"editor.enableTextPatterns": {
			"type": "boolean",
			"default": true,
			"description": "Auto-format Markdown in the Rich Text Editor. Enables Markdown pattern replacement in the Rich Text Editor. For example, when enabled, typing **bold** creates bold text."
		},
		"editor.toolbarButtons": {
			"type": "array",
			"default": [],
			"description": "buttons included in the editor toolbar",
			"$comment": "private"
		},
		"editor.tabMovesFocus": {
			"type": "boolean",
			"default": false,
			"description": "Tab moves focus",
			"$comment": "private"
		},
		"notes.columns": {
			"type": "array",
			"default": [
				{
					"name": "note.is_todo",
					"width": 30
				},
				{
					"name": "note.user_updated_time",
					"width": 100
				},
				{
					"name": "note.title",
					"width": 0
				}
			],
			"$comment": "private"
		},
		"notes.sortOrder.reverse": {
			"type": "boolean",
			"default": true,
			"description": "Reverse sort order"
		},
		"notes.sortOrder.buttonsVisible": {
			"type": "boolean",
			"default": true,
			"description": "Show sort order buttons"
		},
		"notes.perFieldReversalEnabled": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"notes.perFieldReverse": {
			"type": "object",
			"default": {
				"user_updated_time": true,
				"user_created_time": true,
				"title": false,
				"order": false
			},
			"$comment": "private"
		},
		"notes.perFolderSortOrderEnabled": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"notes.perFolderSortOrders": {
			"type": "object",
			"default": {},
			"$comment": "private"
		},
		"notes.sharedSortOrder": {
			"type": "object",
			"default": {},
			"$comment": "private"
		},
		"folders.sortOrder.field": {
			"type": "string",
			"default": "title",
			"description": "Sort notebooks by",
			"enum": [
				"title",
				"last_note_user_updated_time"
			]
		},
		"folders.sortOrder.reverse": {
			"type": "boolean",
			"default": false,
			"description": "Reverse sort order"
		},
		"trackLocation": {
			"type": "boolean",
			"default": true,
			"description": "Save geo-location with notes"
		},
		"editor.usePlainText": {
			"type": "boolean",
			"default": false,
			"description": "Use the plain text editor. The plain text editor has various issues and is no longer supported. If you are having issues with the new editor however you can revert to the old one using this setting."
		},
		"editor.mobile.spellcheckEnabled": {
			"type": "boolean",
			"default": true,
			"description": "Enable spellcheck in the text editor"
		},
		"editor.mobile.toolbarEnabled": {
			"type": "boolean",
			"default": true,
			"description": "Enable the Markdown toolbar"
		},
		"newTodoFocus": {
			"type": "string",
			"default": "title",
			"description": "When creating a new to-do:",
			"enum": [
				"title",
				"body"
			]
		},
		"newNoteFocus": {
			"type": "string",
			"default": "body",
			"description": "When creating a new note:",
			"enum": [
				"title",
				"body"
			]
		},
		"imageResizing": {
			"type": "string",
			"default": "alwaysAsk",
			"description": "Resize large images:. Shrink large images before adding them to notes.",
			"enum": [
				"alwaysAsk",
				"alwaysResize",
				"neverResize"
			]
		},
		"notes.listRendererId": {
			"type": "string",
			"default": "compact",
			"$comment": "private"
		},
		"notes.showCheckboxCompletionChart": {
			"type": "boolean",
			"default": true,
			"description": "Show checkbox completion chart in note list"
		},
		"plugins.states": {
			"type": "object",
			"default": {},
			"$comment": "private"
		},
		"plugins.enableWebviewDebugging": {
			"type": "boolean",
			"default": false,
			"description": "Plugin WebView debugging. Allows debugging mobile plugins. See https://joplinapp.org/help/api/references/mobile_plugin_debugging/ for details.",
			"$comment": "private"
		},
		"plugins.pluginSupportEnabled": {
			"type": "boolean",
			"default": false,
			"description": "Enable plugin support",
			"$comment": "private"
		},
		"plugins.devPluginPaths": {
			"type": "string",
			"default": "",
			"description": "Development plugins. You may add multiple plugin paths, each separated by a comma. You will need to restart the application for the changes to take effect."
		},
		"plugins.shownEditorViewIds": {
			"type": "array",
			"default": [],
			"$comment": "private"
		},
		"markdown.softbreaks": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"markdown.typographer": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"markdown.plugin.softbreaks": {
			"type": "boolean",
			"default": false,
			"description": "Enable soft breaks"
		},
		"markdown.plugin.typographer": {
			"type": "boolean",
			"default": false,
			"description": "Enable typographer support"
		},
		"markdown.plugin.linkify": {
			"type": "boolean",
			"default": true,
			"description": "Enable Linkify"
		},
		"markdown.plugin.katex": {
			"type": "boolean",
			"default": true,
			"description": "Enable math expressions"
		},
		"markdown.plugin.fountain": {
			"type": "boolean",
			"default": false,
			"description": "Enable Fountain syntax support"
		},
		"markdown.plugin.mermaid": {
			"type": "boolean",
			"default": true,
			"description": "Enable Mermaid diagrams support"
		},
		"markdown.plugin.abc": {
			"type": "boolean",
			"default": true,
			"description": "Enable ABC musical notation support"
		},
		"markdown.plugin.audioPlayer": {
			"type": "boolean",
			"default": true,
			"description": "Enable audio player"
		},
		"markdown.plugin.videoPlayer": {
			"type": "boolean",
			"default": true,
			"description": "Enable video player"
		},
		"markdown.plugin.pdfViewer": {
			"type": "boolean",
			"default": true,
			"description": "Enable PDF viewer"
		},
		"markdown.plugin.mark": {
			"type": "boolean",
			"default": true,
			"description": "Enable ==mark== syntax"
		},
		"markdown.plugin.footnote": {
			"type": "boolean",
			"default": true,
			"description": "Enable footnotes"
		},
		"markdown.plugin.toc": {
			"type": "boolean",
			"default": true,
			"description": "Enable table of contents extension"
		},
		"markdown.plugin.sub": {
			"type": "boolean",
			"default": false,
			"description": "Enable ~sub~ syntax"
		},
		"markdown.plugin.sup": {
			"type": "boolean",
			"default": false,
			"description": "Enable ^sup^ syntax"
		},
		"markdown.plugin.deflist": {
			"type": "boolean",
			"default": false,
			"description": "Enable deflist syntax"
		},
		"markdown.plugin.abbr": {
			"type": "boolean",
			"default": false,
			"description": "Enable abbreviation syntax"
		},
		"markdown.plugin.emoji": {
			"type": "boolean",
			"default": false,
			"description": "Enable markdown emoji"
		},
		"markdown.plugin.insert": {
			"type": "boolean",
			"default": false,
			"description": "Enable ++insert++ syntax"
		},
		"markdown.plugin.multitable": {
			"type": "boolean",
			"default": false,
			"description": "Enable multimarkdown table extension"
		},
		"markdown.plugin.externalEmbed": {
			"type": "boolean",
			"default": true,
			"description": "Enable external embeds (e.g. YouTube Videos)"
		},
		"renderer.fileUrls": {
			"type": "boolean",
			"default": false,
			"description": "Enable file:// URLs for images and videos"
		},
		"markdown.plugin.abc.options": {
			"type": "string",
			"default": "",
			"description": "ABC musical notation: Options. Options that should be used whenever rendering ABC code. It must be a JSON5 object. The full list of options is available at: https://paulrosen.github.io/abcjs/visual/render-abc-options.html"
		},
		"showTrayIcon": {
			"type": "boolean",
			"default": false,
			"description": "Show tray icon. Note: Does not work in all desktop environments."
		},
		"showMenuBar": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"startMinimized": {
			"type": "boolean",
			"default": false,
			"description": "Start application minimised in the tray icon"
		},
		"globalHotkey": {
			"type": "string",
			"default": "",
			"description": "Global shortcut to show/hide Joplin. A system-wide keyboard shortcut that toggles the Joplin window. Works even when Joplin is not focused. Example: CommandOrControl+Shift+J. Leave empty to disable."
		},
		"collapsedFolderIds": {
			"type": "array",
			"default": [],
			"$comment": "private"
		},
		"keychain.supported": {
			"type": "integer",
			"default": -1,
			"$comment": "private"
		},
		"keychain.lastAvailableDrivers": {
			"type": "array",
			"default": [],
			"$comment": "private"
		},
		"db.ftsEnabled": {
			"type": "integer",
			"default": -1,
			"$comment": "private"
		},
		"db.fuzzySearchEnabled": {
			"type": "integer",
			"default": -1,
			"$comment": "private"
		},
		"encryption.enabled": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"encryption.activeMasterKeyId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"encryption.passwordCache": {
			"type": "object",
			"default": {},
			"$comment": "private"
		},
		"encryption.masterPassword": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"encryption.shouldReencrypt": {
			"type": "integer",
			"default": -1,
			"$comment": "private"
		},
		"encryption.cachedPpk": {
			"type": "object",
			"default": {},
			"$comment": "private"
		},
		"sync.userId": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"style.zoom": {
			"type": "integer",
			"default": 100,
			"minimum": 50,
			"maximum": 500,
			"$comment": "private"
		},
		"style.viewer.fontSize": {
			"type": "integer",
			"default": 16,
			"description": "Viewer font size",
			"minimum": 4,
			"maximum": 50
		},
		"style.editor.fontSize": {
			"type": "integer",
			"default": 15,
			"description": "Editor font size",
			"minimum": 4,
			"maximum": 50
		},
		"style.editor.fontFamily": {
			"type": "string",
			"default": "",
			"description": "Editor font family. Used for most text in the markdown editor. If not found, a generic proportional (variable width) font is used."
		},
		"editor.mobile.defaultEditState": {
			"type": "string",
			"default": "view",
			"description": "Default view / edit state",
			"enum": [
				"view",
				"edit",
				"last"
			]
		},
		"style.editor.monospaceFontFamily": {
			"type": "string",
			"default": "",
			"description": "Editor monospace font family. Used where a fixed width font is needed to lay out text legibly (e.g. tables, checkboxes, code). If not found, a generic monospace (fixed width) font is used."
		},
		"style.viewer.fontFamily": {
			"type": "string",
			"default": "",
			"description": "Viewer and Rich Text Editor font family"
		},
		"style.editor.contentMaxWidth": {
			"type": "integer",
			"default": 0,
			"description": "Editor maximum width. Set it to 0 to make it take the complete available space. Recommended width is 600."
		},
		"style.scrollbarSize": {
			"type": "string",
			"default": 7,
			"description": "Scrollbar size. Configures the size of scrollbars used in the app.",
			"enum": [
				"7",
				"12",
				"24"
			]
		},
		"ui.layout": {
			"type": "object",
			"default": {},
			"$comment": "private"
		},
		"ui.lastSelectedPluginPanel": {
			"type": "string",
			"default": "",
			"description": "The last selected plugin panel ID in pop-up mode (mobile).",
			"$comment": "private"
		},
		"autoUpdateEnabled": {
			"type": "boolean",
			"default": true,
			"description": "Automatically check for updates",
			"$comment": "private"
		},
		"autoUpdate.includePreReleases": {
			"type": "boolean",
			"default": false,
			"description": "Get pre-releases when checking for updates. See the pre-release page for more details: https://joplinapp.org/help/about/prereleases"
		},
		"autoUploadCrashDumps": {
			"type": "boolean",
			"default": false,
			"description": "Automatically upload crash reports. If you experience a crash, please enable this option to automatically send crash reports. You will need to restart the application for this change to take effect."
		},
		"clipperServer.autoStart": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"sync.interval": {
			"type": "integer",
			"default": 300,
			"description": "Synchronisation interval",
			"enum": [
				0,
				300,
				600,
				1800,
				3600,
				43200,
				86400
			]
		},
		"sync.mobileWifiOnly": {
			"type": "boolean",
			"default": false,
			"description": "Synchronise only over WiFi connection"
		},
		"noteVisiblePanes": {
			"type": "array",
			"default": [
				"editor"
			],
			"$comment": "private"
		},
		"tagHeaderIsExpanded": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"folderHeaderIsExpanded": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"syncReportIsVisible": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"editor": {
			"type": "string",
			"default": "",
			"description": "Text editor command. The editor command (may include arguments) that will be used to open a note. If none is provided it will try to auto-detect the default editor."
		},
		"export.pdfPageSize": {
			"type": "string",
			"default": "A4",
			"description": "Page size for PDF export",
			"enum": [
				"A4",
				"Letter",
				"A3",
				"A5",
				"Tabloid",
				"Legal"
			]
		},
		"export.pdfPageOrientation": {
			"type": "string",
			"default": "portrait",
			"description": "Page orientation for PDF export",
			"enum": [
				"portrait",
				"landscape"
			]
		},
		"useCustomPdfViewer": {
			"type": "boolean",
			"default": false,
			"description": "Use custom PDF viewer (Beta). The custom PDF viewer remembers the last page that was viewed, however it has some technical issues.",
			"$comment": "private"
		},
		"editor.keyboardMode": {
			"type": "string",
			"default": "",
			"description": "Keyboard Mode",
			"enum": [
				"",
				"emacs",
				"vim"
			]
		},
		"editor.spellcheckBeta": {
			"type": "boolean",
			"default": false,
			"description": "Enable spell checking in Markdown editor"
		},
		"editor.inlineRendering": {
			"type": "boolean",
			"default": true,
			"description": "Markdown editor: Render markup in editor. Renders markup on all lines that don't include the cursor."
		},
		"editor.tableEditing": {
			"type": "boolean",
			"default": true,
			"description": "Markdown editor: Interactive table editing. When enabled, tables are rendered as an interactive widget in the editor. Disable this if you prefer to edit tables as raw Markdown."
		},
		"editor.imageRendering": {
			"type": "boolean",
			"default": true,
			"description": "Markdown editor: Render images. If an image attachment is on its own line and followed by a blank line, it will be rendered just below its Markdown source."
		},
		"editor.highlightActiveLine": {
			"type": "boolean",
			"default": false,
			"description": "Markdown editor: Highlight active line"
		},
		"imageeditor.jsdrawToolbar": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"imageeditor.imageTemplate": {
			"type": "string",
			"default": "{ }",
			"description": "Template for the image editor",
			"$comment": "private"
		},
		"editor.beta": {
			"type": "boolean",
			"default": false,
			"description": "Opt-in to the editor beta. Currently unused",
			"$comment": "private"
		},
		"editor.legacyMarkdown": {
			"type": "boolean",
			"default": false,
			"description": "Use the legacy Markdown editor. Enable the the legacy Markdown editor. Some plugins require this editor to function. However, it has accessibility issues and other plugins will not work."
		},
		"editor.migration": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"linking.extraAllowedExtensions": {
			"type": "array",
			"default": [],
			"description": "Additional file types that can be opened without confirmation.",
			"$comment": "private"
		},
		"net.customCertificates": {
			"type": "string",
			"default": "",
			"description": "Custom TLS certificates. Comma-separated list of paths to directories to load the certificates from, or path to individual cert files. For example: /my/cert_dir, /other/custom.pem. Note that if you make changes to the TLS settings, you must save your changes before clicking on \"Check synchronisation configuration\"."
		},
		"net.ignoreTlsErrors": {
			"type": "boolean",
			"default": false,
			"description": "Ignore TLS certificate errors"
		},
		"net.proxyEnabled": {
			"type": "boolean",
			"default": false,
			"description": "Proxy enabled"
		},
		"net.proxyUrl": {
			"type": "string",
			"default": "",
			"description": "Proxy URL. For example \"http://my.proxy.com:80\""
		},
		"net.proxyTimeout": {
			"type": "integer",
			"default": 1,
			"description": "Proxy timeout (seconds)",
			"maximum": 60
		},
		"sync.wipeOutFailSafe": {
			"type": "boolean",
			"default": true,
			"description": "Fail-safe. Fail-safe: Do not wipe out local data when sync target is empty (often the result of a misconfiguration or bug)"
		},
		"api.token": {
			"type": "string",
			"default": null,
			"$comment": "private"
		},
		"api.port": {
			"type": "integer",
			"default": null,
			"description": "Specify the port that should be used by the API server. If not set, a default will be used."
		},
		"resourceService.lastProcessedChangeId": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"searchEngine.lastProcessedChangeId": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"revisionService.lastProcessedChangeId": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"searchEngine.initialIndexingDone": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"searchEngine.lastProcessedResource": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"revisionService.enabled": {
			"type": "boolean",
			"default": true,
			"description": "Enable note history"
		},
		"revisionService.ttlDays": {
			"type": "integer",
			"default": 90,
			"description": "Keep note history for",
			"minimum": 1,
			"maximum": 99999
		},
		"revisionService.intervalBetweenRevisions": {
			"type": "integer",
			"default": 600000,
			"$comment": "private"
		},
		"revisionService.oldNoteInterval": {
			"type": "integer",
			"default": 604800000,
			"$comment": "private"
		},
		"welcome.wasBuilt": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"welcome.enabled": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"camera.type": {
			"type": "integer",
			"default": 0,
			"$comment": "private"
		},
		"camera.ratio": {
			"type": "string",
			"default": "4:3",
			"$comment": "private"
		},
		"spellChecker.enabled": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"spellChecker.language": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"spellChecker.languages": {
			"type": "array",
			"default": [],
			"$comment": "private"
		},
		"windowContentZoomFactor": {
			"type": "integer",
			"default": 100,
			"minimum": 30,
			"maximum": 300,
			"$comment": "private"
		},
		"layout.folderList.factor": {
			"type": "integer",
			"default": 1,
			"description": "Notebook list growth factor. The factor property sets how the item will grow or shrink to fit the available space in its container with respect to the other items. Thus an item with a factor of 2 will take twice as much space as an item with a factor of 1.Restart app to see changes."
		},
		"layout.noteList.factor": {
			"type": "integer",
			"default": 1,
			"description": "Note list growth factor. The factor property sets how the item will grow or shrink to fit the available space in its container with respect to the other items. Thus an item with a factor of 2 will take twice as much space as an item with a factor of 1.Restart app to see changes."
		},
		"layout.note.factor": {
			"type": "integer",
			"default": 2,
			"description": "Note area growth factor. The factor property sets how the item will grow or shrink to fit the available space in its container with respect to the other items. Thus an item with a factor of 2 will take twice as much space as an item with a factor of 1.Restart app to see changes."
		},
		"syncInfoCache": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"isSafeMode": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"lastSettingDefaultMigration": {
			"type": "integer",
			"default": -1,
			"$comment": "private"
		},
		"lastSettingGlobalMigration": {
			"type": "integer",
			"default": -1,
			"$comment": "private"
		},
		"wasClosedSuccessfully": {
			"type": "boolean",
			"default": true,
			"$comment": "private"
		},
		"installedDefaultPlugins": {
			"type": "array",
			"default": [],
			"$comment": "private"
		},
		"security.biometricsEnabled": {
			"type": "boolean",
			"default": false,
			"description": "Use biometrics to secure access to the app (Beta). Important: This is a beta feature and it is not compatible with certain devices. If the app no longer starts after enabling this or is very slow to start, please uninstall and reinstall the app.",
			"$comment": "private"
		},
		"security.biometricsSupportedSensors": {
			"type": "string",
			"default": "",
			"$comment": "private"
		},
		"security.biometricsInitialPromptDone": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"featureFlag.noteLock": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"sync.autoMergeConflicts": {
			"type": "boolean",
			"default": true,
			"description": "Automatically merge non-conflicting note changes. When the same note is edited on two devices, changes made to different lines are usually merged automatically. In rare cases, automatic merging may result in duplicated content or formatting changes"
		},
		"noteLock.lockOnNoteSwitch": {
			"type": "boolean",
			"default": false,
			"description": "Auto relock when switching notes"
		},
		"featureFlag.autoUpdaterServiceEnabled": {
			"type": "boolean",
			"default": false,
			"description": "Enable auto-updates. Enable this feature to receive notifications about updates and install them instead of manually downloading them. Restart app to start receiving auto-updates."
		},
		"featureFlag.linuxKeychain": {
			"type": "boolean",
			"default": false,
			"description": "Enable keychain support. This is an experimental setting to enable keychain support on Linux"
		},
		"featureFlag.conflictResolution": {
			"type": "boolean",
			"default": false,
			"$comment": "private"
		},
		"featureFlag.richText.useStrictContentSecurityPolicy": {
			"type": "boolean",
			"default": true,
			"description": "Security: Stronger security controls in the Rich Text Editor. Improves Rich Text Editor security by applying a strict content security policy to the Rich Text Editor's content."
		},
		"featureFlag.plugins.isolatePluginWebViews": {
			"type": "boolean",
			"default": false,
			"description": "Security: Improve plugin panel, editor, and dialog security. Improves the security of plugin WebViews. This may break some plugins."
		},
		"featureFlag.enableSemanticSearch": {
			"type": "boolean",
			"default": true,
			"description": "Include semantic search results in the search panel. Allows using semantic search from the search panel"
		},
		"buildFlag.voiceTypingEnabled": {
			"type": "boolean",
			"default": true,
			"description": "Voice typing: Enable the voice typing feature",
			"$comment": "private"
		},
		"buildFlag.ui.disableSmallScreenIncompatibleFeatures": {
			"type": "boolean",
			"default": false,
			"description": "UI: Disable features known to be incompatible with small screens",
			"$comment": "private"
		},
		"survey.webClientEval2025.progress": {
			"type": "integer",
			"default": 2,
			"description": "Show web client evaluation survey",
			"enum": [
				0,
				1,
				2
			],
			"$comment": "private"
		},
		"sync.allowUnsupportedProviders": {
			"type": "integer",
			"default": -1,
			"$comment": "private"
		},
		"sync.shareCache": {
			"type": "string",
			"default": null,
			"$comment": "private"
		},
		"voiceTypingBaseUrl": {
			"type": "string",
			"default": "",
			"description": "Voice typing language files (URL). Leave it blank to download the language files from the default website",
			"$comment": "private"
		},
		"voiceTyping.preferredProvider": {
			"type": "string",
			"default": "whisper-tiny",
			"description": "Preferred voice typing provider",
			"enum": [
				"vosk",
				"whisper-tiny"
			],
			"$comment": "private"
		},
		"voiceTyping.glossary": {
			"type": "string",
			"default": "",
			"description": "Voice typing: Glossary. A comma-separated list of words. May be used for uncommon words, to help voice typing spell them correctly.",
			"$comment": "private"
		},
		"scanner.titleTemplate": {
			"type": "string",
			"default": "Scan: {date} ({count})",
			"description": "Document scanner: Title template. Default title to use for documents created by the scanner.",
			"$comment": "private"
		},
		"scanner.requestTranscription": {
			"type": "boolean",
			"default": false,
			"description": "Default value for the \"queue for transcription\" checkbox",
			"$comment": "private"
		},
		"trash.autoDeletionEnabled": {
			"type": "boolean",
			"default": true,
			"description": "Automatically delete notes in the trash after a number of days"
		},
		"trash.ttlDays": {
			"type": "integer",
			"default": 90,
			"description": "Keep notes in the trash for",
			"minimum": 1,
			"maximum": 300
		},
		"notes.showNoteLinkIcon": {
			"type": "boolean",
			"default": true,
			"description": "Show Joplin icon for note links"
		}
	}
}