{
  "nav.home": "Home",
  "nav.search": "Search",
  "nav.sources": "Sources",
  "nav.context_gateway": "Gateway",
  "nav.index": "Index",
  "nav.tags": "Tags",
  "nav.timeline": "Timeline",
  "nav.more": "Settings",
  "nav.skip_to_main": "Skip to main content",

  "header.stat_chunks": "— chunks",
  "header.stat_sources": "— sources",
  "header.stat_chunks_count_one": "{count} chunk",
  "header.stat_chunks_count_other": "{count} chunks",
  "header.stat_sources_count_one": "{count} source",
  "header.stat_sources_count_other": "{count} sources",
  "header.stat_files_chunks": "{files} files · {chunks} chunks",
  "header.sys_info_jump_title": "Open Embedding & Storage settings",
  "header.settings_title": "Settings",
  "header.theme_title": "Toggle theme",
  "header.lang_toggle_aria": "Switch language",
  "header.help_title": "Toggle help hints (h)",

  "banner.dev_mode": "Maintainer mode — all pages are visible. Run `mm web` without `--dev` for the polished surface.",
  "banner.emb_reset": "Reset with current settings (deletes vectors)",
  "banner.dismiss_title": "Dismiss for this session",
  "banner.model_loading": "Loading model…",
  "banner.model_downloading_one": "Downloading {model} (~{size} MB)…",
  "banner.model_downloading_one_no_size": "Downloading {model}…",
  "banner.model_downloading_both": "Downloading {emb} (~{emb_size} MB) and {rer} (~{rer_size} MB)…",
  "banner.model_error": "Model failed to load — check Settings.",
  "banner.model_fallback_embedder": "embedder",
  "banner.model_fallback_reranker": "reranker",
  "banner.emb_mismatch": "Embedding mismatch — {details}. Search may not work until resolved.",
  "banner.emb_mismatch_dimension": "dimension: DB {db} ≠ config {config}",
  "banner.emb_mismatch_model": "model: DB {db} ≠ config {config}",

  "home.quick_search_placeholder": "Quick search memories...",
  "home.search_btn": "Search",
  "home.stat.total_chunks": "Total Chunks",
  "home.stat.source_files": "Source Files",
  "home.stat.namespaces": "Namespaces",
  "home.stat.total_size": "Total Size",
  "home.stat.sessions": "Sessions",
  "home.stat.working_memory": "Working Memory",
  "home.section.namespaces": "Namespaces",
  "home.section.file_types": "File Types",
  "home.section.activity": "Activity (1 year)",
  "home.activity.summary_last7": "Last 7 days: {count}",
  "home.activity.summary_active_days": "Active days: {count}",
  "home.activity.summary_most_active": "Most active: {date} ({count})",
  "home.activity.summary_aria": "{total} chunks across {active} active days. {last7} chunks in the last 7 days. Most active day: {date}, {count} chunks.",
  "home.activity.summary_sample": "Recent sample: {count}",
  "home.activity.summary_sample_active_days": "Sample active days: {count}",
  "home.activity.summary_sample_most_active": "Sample most active: {date} ({count})",
  "home.activity.summary_sample_aria": "Activity map is based on the {limit} most recent chunks returned by the timeline query. Sample covers {active} active days. Most active sampled day: {date}, {count} chunks.",
  "home.activity.none": "None",
  "home.activity.legend_less": "Less",
  "home.activity.legend_more": "More",
  "home.activity.intensity_none": "No activity",
  "home.activity.intensity_low": "Low activity",
  "home.activity.intensity_medium": "Medium activity",
  "home.activity.intensity_high": "High activity",
  "home.activity.intensity_peak": "Peak activity",
  "home.activity.cell_title": "{date}: {count} chunks, {intensity}",
  "home.activity.cell_aria_one": "{date}, {count} chunk, {intensity}. Click to view in Timeline.",
  "home.activity.cell_aria_other": "{date}, {count} chunks, {intensity}. Click to view in Timeline.",
  "home.section.chunk_sizes": "Chunk Sizes",
  "home.section.chunk_sizes_unit": "(tokens)",
  "home.section.recent_sources": "Recent Sources",
  "home.section.quick_actions": "Quick Actions",
  "home.section.pinned_chunks": "Pinned Chunks",
  "home.section.storage_health": "Storage Health",
  "home.action.search": "Open Search",
  "home.action.search_title": "Open the Search tab",
  "home.action.index": "Open Index",
  "home.action.index_title": "Open the Index tab",
  "home.action.reindex": "Prepare Full Re-index",
  "home.action.reindex_title": "Open Index and enable Force re-index. Indexing does not start until you run it.",
  "home.action.export": "Open Export",
  "home.action.export_title": "Open Settings to the Export / Import section",
  "home.action.dedup": "Open Dedup Scan",
  "home.action.dedup_title": "Open Settings to the Deduplicate section. The scan does not start automatically.",
  "home.action.tags": "Open Tags",
  "home.action.tags_title": "Open the Tags tab",
  "home.state.loading": "Loading…",
  "home.state.load_failed": "Failed to load dashboard",
  "home.state.no_files_indexed": "No files indexed",
  "home.state.no_data": "No data",
  "home.state.no_namespaces": "No namespaces",
  "home.state.no_sources_title": "No sources indexed yet",
  "home.state.no_sources_hint": "Add files from the Index tab",
  "home.state.no_pinned": "No pinned chunks yet — click ☆ Pin in the detail panel",
  "home.source_chunks_one": "{count} chunk",
  "home.source_chunks_other": "{count} chunks",
  "home.health.embedding": "Embedding",
  "home.health.dimension": "Dimension",
  "home.health.storage": "Storage",
  "home.health.last_indexed": "Last Indexed",
  "home.health.never": "Never",
  "home.health.unknown": "Unknown",
  "home.pin.unpin_title": "Unpin",
  "home.pin.open_title": "Open pinned chunk from {source}",
  "home.pin.missing_title": "Pinned chunk is missing. Press Remove to clear it.",
  "home.pin.missing_badge": "Missing chunk",
  "home.pin.remove_label": "Remove",
  "home.pin.remove_title": "Remove stale pin",

  "search.help": "Semantic search across indexed memories. Filters: tag, namespace, type, score. Pipeline: BM25 (keyword) + Dense (semantic) → RRF fusion.",
  "search.filter_toggle_title": "Show/hide tag, type, sort and other filters",
  "search.filter_toggle": "▾ Filters",
  "search.filter_count_aria_one": "{count} filter applied",
  "search.filter_count_aria_other": "{count} filters applied",
  "search.placeholder": "Search memories…",
  "search.search_btn": "Search",
  "search.search_btn_title": "Run semantic search (Enter)",
  "search.save_title": "Save current search",
  "search.unsave_title": "Remove from saved searches",
  "search.delete_query_aria": "Delete saved search",
  "search.group_title": "Group results by source file",
  "search.view_title": "Switch between card and compact list view",
  "search.view_card_title": "Switch to card view",
  "search.view_list_title": "Switch to list view",
  "search.tag_filter_placeholder": "Filter by tag…",
  "search.tag_filter_title": "Comma-separated tags to include in results",
  "search.min_relevance_aria": "Minimum relevance score",
  "search.relevance_label": "Relevance",
  "search.advanced_details": "Advanced details",
  "search.ns_all": "All Namespaces",
  "search.ns_filter_title": "Limit search to a specific namespace",
  "search.type_all": "All Types",
  "search.type_markdown": "Markdown",
  "search.type_py_func": "Py Function",
  "search.type_py_class": "Py Class",
  "search.type_js_func": "JS Function",
  "search.type_code": "Code",
  "search.type_paragraph": "Paragraph",
  "search.type_filter_title": "Filter by chunk type (markdown, code, etc.)",
  "search.sort_score": "↓ Score",
  "search.sort_newest": "↓ Newest",
  "search.sort_oldest": "↑ Oldest",
  "search.sort_source": "A→Z Source",
  "search.sort_title": "Sort order for search results",
  "search.topk_help": "Maximum results returned. Increase for broader coverage.",
  "search.topk_title": "Maximum number of results to return",
  "search.context_label": "Context",
  "search.context_title": "Include N neighboring chunks around each result for more context",
  "search.context_off": "Off",
  "search.date_all": "All Time",
  "search.date_today": "Today",
  "search.date_7d": "Last 7 days",
  "search.date_30d": "Last 30 days",
  "search.date_90d": "Last 90 days",
  "search.date_custom": "Custom…",
  "search.date_title": "Filter results by date range",
  "search.adv_advanced": "⚙ Advanced",
  "search.adv_title": "Source multi-select, score threshold, saved searches, export",
  "search.adv_sources": "Sources",
  "search.adv_loading": "Loading…",
  "search.adv_min_score": "Min Score:",
  "search.adv_score_help": "Minimum similarity score (0–1). Higher = more relevant but fewer results.",
  "search.adv_saved": "Saved Searches",
  "search.adv_saved_load": "— Load saved —",
  "search.adv_save_btn": "Save",
  "search.adv_export_label": "Export Results",
  "search.adv_export_all": "All Results",
  "search.bulk_count": "{count} selected",
  "search.bulk_delete": "Delete Selected",
  "search.bulk_export": "Export",
  "search.empty_icon": "🔍",
  "search.empty_text": "Enter a query to search",
  "search.empty_hint": "/ focus · j/k navigate · p pin · c copy",
  "search.load_more": "Load More",
  "search.mobile_back": "← Back",
  "search.detail_empty": "Select a result to view details",
  "search.detail_content": "Content",
  "search.detail_copy": "Copy",
  "search.detail_expand": "Expand",
  "search.detail_view": "View",
  "search.detail_preview": "Preview",
  "search.detail_diff": "Diff",
  "search.detail_history": "History",
  "search.detail_tags": "Tags",
  "search.detail_validity_label": "Valid",
  "search.detail_validity_expired": "Expired",
  "search.detail_tag_placeholder": "Add tag…",
  "search.detail_tag_add": "Add",
  "search.detail_tag_save": "Save Tags",
  "search.detail_save": "Save Edit",
  "search.detail_save_title": "Save content and tag changes to this chunk",
  "search.detail_delete": "Delete",
  "search.detail_delete_title": "Permanently delete this chunk",
  "search.detail_reset": "Reset",
  "search.detail_reset_title": "Discard unsaved edits and restore original",
  "search.detail_similar": "Find Similar",
  "search.detail_similar_title": "Find semantically similar chunks",
  "search.detail_source_btn": "⊞ Source",
  "search.detail_source_title": "Show all chunks from the same source file",
  "search.detail_pin": "☆ Pin",
  "search.detail_pin_title": "Pin this chunk to prevent decay removal",
  "search.detail_editor_aria": "Memory content editor",
  "search.detail_tag_input_aria": "Add tag",
  "search.similar_header": "Similar Chunks",
  "search.similar_close_aria": "Close similar memories panel",
  "search.source_chunks_header": "Chunks in Same Source",
  "search.source_chunks_close_aria": "Close source chunks panel",
  "search.history_header": "Edit History",
  "search.history_close_aria": "Close edit history panel",
  "search.history_remove_title": "Remove",
  "search.history_clear": "Clear history",
  "search.recent_label": "Recent:",
  "search.related_header": "Related Chunks",
  "search.drop_msg": "📥 Drop files to index",
  "search.prev_title": "Previous chunk in source",
  "search.next_title": "Next chunk in source",

  "chunks.load_all": "Load All",

  "sources.help": "Indexed source files. Click a file to browse chunks. Drag the divider to resize. Sort by name, chunks, size, or recency.",
  "sources.title": "Sources",
  "sources.filter_placeholder": "Type to filter by path or body… e.g. .md, src/, utils",
  "sources.filter_title": "Filters source list by partial path or indexed body match",
  "sources.sort_name": "Name",
  "sources.sort_chunks": "Chunks",
  "sources.sort_size": "Size",
  "sources.sort_recent": "Recent",
  "sources.empty_icon": "📄",
  "sources.empty_text": "Select a source to browse its chunks",
  "sources.language_drift_banner": "⚠️ {count} summaries don't match your language setting ({current})",
  "sources.regenerate_all_btn": "Regenerate all",
  "sources.regenerate_later_btn": "Later",
  "sources.regenerate_in_progress": "Regenerating {done}/{total}…",
  "sources.regenerate_done": "Regenerated {processed} summaries.",
  "sources.regenerate_failed": "Failed to start regeneration: {error}",
  "sources.discovered_label": "Discovered",
  "sources.orphan_label": "Other (unregistered)",
  "sources.empty_vendor_placeholder": "{vendor} memory not found",
  "sources.add_manually_btn": "+ Add manually",
  "sources.default_pill": "default",

  "index.help": "Three ways to add memories to memtomem.",
  "index.mode_aria": "Index mode",
  "index.mode.folder": "Folder index",
  "index.mode.upload": "Upload files",
  "index.mode.compose": "New memory",
  "index.mode.folder_desc": "Scan an existing directory in place.",
  "index.mode.upload_desc": "Copy files into memtomem uploads, then index them.",
  "index.mode.compose_desc": "Write a new note directly into your memtomem memories.",
  "index.folder_oneshot_hint": "One-shot scan. For automatic re-indexing, use ",
  "index.folder_oneshot_link": "Sources → Add path",
  "index.folder_oneshot_suffix": ".",
  "index.path_label": "Path",
  "index.path_placeholder": "e.g. ~/memories or /path/to/notes",
  "index.ns_label": "Namespace",
  "index.ns_placeholder": "default (from config)",
  "index.recursive": "Recursive",
  "index.force": "Force re-index",
  "index.register_source": "Register as source",
  "index.register_source_title": "Add this path to memory_dirs so future changes are auto-indexed",
  "index.index_btn": "Index",
  "index.browse_btn": "📁 Browse",
  "index.browse_aria": "Open folder picker",
  "index.progress_label": "0 / 0 files",
  "index.progress_files": "{done} / {total} files",
  "index.progress_done": "Done — {count} files",
  "index.indicator": "⏳ Indexing…",
  "index.result.files": "Files scanned",
  "index.result.chunks": "Total chunks",
  "index.result.indexed": "Indexed",
  "index.result.skipped": "Skipped",
  "index.result.deleted": "Deleted",
  "index.result.duration": "Duration",
  "index.result.errors": "Errors",
  "index.result.namespace": "Namespace",
  "index.ns_suffix.auto": "auto-determined from path",
  "index.ns_suffix.config": "from config",
  "index.ns_render.untagged_preview": "(untagged) (preview)",
  "index.ns_render.single_preview": "{ns} (preview)",
  "index.ns_render.multi_preview": "{list} (preview, {n} namespaces)",
  "index.ns_render.untagged_applied": "(untagged)",
  "index.ns_render.single_applied": "{ns}",
  "index.ns_render.multi_applied": "{list} ({n} namespaces)",
  "index.ns_render.truncated_suffix": ", scanned {scanned}+",
  "index.upload_hint": "Drop files here or",
  "index.upload_browse": "browse",
  "index.upload_ext": ".md .txt .json .yaml .yml .toml",
  "index.upload_btn": "Upload & Index",
  "index.upload_usage_label": "Saved in",
  "index.upload_usage_count_one": "{count} file",
  "index.upload_usage_count_other": "{count} files",
  "index.upload_usage_oldest": "oldest {rel}",
  "index.add_heading_label": "Title",
  "index.add_heading_placeholder": "Optional heading",
  "index.add_tags_label": "Tags",
  "index.add_tags_placeholder": "tag1, tag2, …",
  "index.add_file_label": "Target file (save location)",
  "index.add_file_placeholder_prefix": "~/.memtomem/memories/",
  "index.add_file_placeholder_suffix": ".md (leave blank for auto)",
  "index.add_ns_label": "Namespace",
  "index.add_ns_placeholder": "default (from config)",
  "index.add_content_label": "Content",
  "index.add_content_placeholder": "Write your memory here…",
  "index.add_privacy_hint": "Privacy guard scans for tokens, API keys, and private keys — not email or phone numbers.",
  "index.add_btn": "Add",

  "compose.privacy_warning_title": "Possible secret detected",
  "compose.privacy_warning_message": "What looks like an API key was found. This content will be stored as-is in the local database and exposed to search — proceed anyway?",
  "compose.privacy_warning_proceed": "Proceed",

  "confirm.redaction_blocked_title": "Redaction guard blocked write",
  "confirm.redaction_blocked_message": "The server detected {hits} secret-like pattern(s) on {surface}. Bypass and write anyway? This will be audited.",
  "confirm.redaction_blocked_proceed": "Bypass and write",
  "toast.redaction_bypassed": "Bypassed redaction guard ({hits} hits) — entry written.",
  "toast.redaction_bypass_partial": "Bypass partial — {succeeded} of {total} blocked file(s) written. Check per-file results below.",
  "toast.upload_redaction_cancelled": "Upload cancelled — redaction guard left {count} file(s) blocked.",
  "surface.web_api_add": "Add memory",
  "surface.web_api_chunk_edit": "Chunk edit",
  "surface.web_api_scratch_promote": "Scratch promote",
  "surface.web_api_upload": "File upload",

  "settings.nav.general": "General",
  "settings.nav.integrations": "Context Gateway",
  "settings.nav.gateway_sections_aria": "Context Gateway sections",
  "settings.nav.settings_sections_aria": "Settings sections",
  "settings.nav.runtime": "Runtime",
  "settings.nav.data": "Data",
  "settings.nav.danger_zone": "Danger Zone",
  "settings.nav.config": "Config",
  "settings.nav.config_sub": "Embedding & DB",
  "settings.nav.namespaces": "Namespaces",
  "settings.nav.namespaces_sub": "Organize memory",
  "settings.nav.hooks_sync": "Hooks",
  "settings.nav.hooks_sync_sub": "Lifecycle hooks",
  "settings.nav.ctx_overview": "Overview",
  "settings.nav.ctx_overview_sub": "Sync overview",
  "settings.nav.ctx_projects": "Projects",
  "settings.nav.ctx_projects_sub": "Multi-project portal",
  "settings.nav.ctx_skills": "Skills",
  "settings.nav.ctx_skills_sub": "Reusable workflows",
  "settings.nav.ctx_commands": "Custom Commands",
  "settings.nav.ctx_commands_sub": "Slash commands",
  "settings.nav.ctx_agents": "Subagents",
  "settings.nav.ctx_agents_sub": "Specialized agents",
  "settings.nav.ctx_mcp_servers": "MCP Servers",
  "settings.nav.ctx_mcp_servers_sub": "Project tool servers",
  "settings.nav.dedup": "Deduplicate",
  "settings.nav.dedup_sub": "Remove near-duplicates",
  "settings.nav.decay": "Age-out",
  "settings.nav.decay_sub": "Expire old memories",
  "settings.nav.export_import": "Export / Import",
  "settings.nav.export_import_sub": "JSON bundle I/O",
  "settings.nav.sessions": "Sessions",
  "settings.nav.sessions_sub": "Episodic history",
  "settings.nav.working_memory": "Working Memory",
  "settings.nav.working_memory_sub": "Scratch KV",
  "settings.nav.procedures": "Procedures",
  "settings.nav.procedures_sub": "Saved recipes",
  "settings.nav.health": "Health Report",
  "settings.nav.health_sub": "Status + watchdog",
  "settings.nav.reset": "Reset Database",
  "settings.nav.reset_sub": "Delete all data",

  "settings.ctx.overview_title": "Context Gateway",
  "settings.ctx.project_root_label": "Project",
  "settings.ctx.active_project": "Active project",
  "settings.ctx.server_cwd": "Server CWD",
  "settings.ctx.projects_fetch_failed": "Project list failed to load — falling back to Server CWD only ({error})",
  "settings.ctx.user_canonical_label": "User store",
  "settings.ctx.user_canonical_path": "~/.memtomem/",
  "settings.ctx.runtimes_label": "Runtimes",
  "settings.ctx.last_synced_label": "Store updated",
  "settings.ctx.last_synced_tooltip": "Reflects the most recent stored-file mtime, not a recorded sync event. Editing a stored file without Sync All also bumps this.",
  "settings.ctx.runtime_undetected_tooltip": "Not detected in this project",
  "settings.ctx.refresh": "Refresh",
  "settings.ctx.sync_all": "Sync All",
  "settings.ctx.sync": "Sync",
  "settings.ctx.active": "Selected",
  "settings.ctx.select": "Select",
  "settings.ctx.sync_started": "Syncing project...",
  "settings.ctx.matrix_sync_disabled_title": "No push to runtimes for project_local or missing projects",
  "settings.ctx.matrix_sync_not_enrolled_title": "Not enrolled — enroll this project on the Projects board to sync it",
  "settings.ctx.matrix_sync_paused_title": "Sync paused — resume it on the Projects board",
  "settings.ctx.error_sync_paused": "Project sync is paused — resume it on the Projects board.",
  "settings.ctx.error_sync_not_enrolled": "Project is not enrolled for sync — enroll it on the Projects board.",
  "settings.ctx.cascade_unavailable_hint": "Sync is paused or not enrolled for this project, so only the stored copy is deleted — runtime files are left in place.",
  "settings.ctx.import": "Import",
  "settings.ctx.create": "Create",
  "settings.ctx.edit": "Edit",
  "settings.ctx.save": "Save",
  "settings.ctx.cancel": "Cancel",
  "settings.ctx.delete": "Delete",
  "settings.ctx.skills_title": "Skills",
  "settings.ctx.commands_title": "Custom Commands",
  "settings.ctx.agents_title": "Subagents",
  "settings.ctx.mcp_servers_title": "MCP Servers",
  "settings.ctx.type_names.skills": "skills",
  "settings.ctx.type_names.commands": "custom commands",
  "settings.ctx.type_names.agents": "subagents",
  "settings.ctx.type_names.mcp-servers": "MCP servers",
  "settings.ctx.type_names_singular.skills": "skill",
  "settings.ctx.type_names_singular.commands": "command",
  "settings.ctx.type_names_singular.agents": "subagent",
  "settings.ctx.type_names_singular.mcp-servers": "MCP server",
  "settings.ctx.back_to_list": "Back",
  "settings.ctx.cascade_delete": "Also remove generated runtime files",
  "settings.ctx.confirm_delete": "Delete \"{name}\"?",
  "settings.ctx.confirm_delete_msg": "This will remove the stored artifact from .memtomem/.",
  "settings.ctx.confirm_cascade_codex": "This will also delete files in ~/.codex/ (user-scope). Continue?",
  "settings.ctx.confirm_sync": "Push {count} {type} to the runtimes configured for this tier?",
  "settings.ctx.confirm_sync_all": "Push all stored artifacts in {dest} to the runtimes configured for this tier?",
  "settings.ctx.confirm_sync_impact": "This will create {create} missing and overwrite {overwrite} out-of-sync runtime files in: {runtimes}.",
  "settings.ctx.confirm_sync_settings_impact": "Plus create {create} and overwrite {overwrite} settings files.",
  "settings.ctx.confirm_sync_counts": "This will create {create} missing and overwrite {overwrite} out-of-sync runtime files.",
  "settings.ctx.confirm_sync_no_changes": "Everything is already in sync.",
  "settings.ctx.confirm_sync_overwrite_warning": "{overwrite} runtime file(s) that drifted out of sync will be overwritten.",
  "settings.ctx.confirm_import": "Import {type} from runtimes into {dest}?",
  "settings.ctx.confirm_import_preview": "{imported} to import, {skipped} already exist.",
  "settings.ctx.confirm_import_overwrite_hint": "Enable Overwrite to replace the existing ones.",
  "settings.ctx.confirm_import_overwrite_label": "Overwrite existing stored files",
  "settings.ctx.sync_success": "Sync completed",
  "settings.ctx.sync_lock_timeout": "Sync didn't run — another process is holding a destination lock. Try again in a moment.",
  "settings.ctx.sync_target_conflict": "Sync skipped a conflicting destination — {reason}",
  "settings.ctx.sync_skipped_attention": "Sync finished, but {count} item(s) were skipped: {items}",
  "settings.ctx.sync_dropped": "{count} field(s) dropped during sync",
  "settings.ctx.import_priority": "When the same name exists in more than one runtime, the first copy found is imported, scanning runtimes in a fixed order (Claude first, then Antigravity; skills also import from Codex and Kimi). Other runtimes are export-only and never read back.",
  "settings.ctx.import_result": "{imported} imported, {skipped} skipped",
  "settings.ctx.import_success": "Import completed",
  "settings.ctx.delete_success": "\"{name}\" deleted",
  "settings.ctx.delete_partial": "Delete incomplete — {count} path(s) not removed. {path}: {reason}",
  "settings.ctx.save_success": "\"{name}\" saved",
  "settings.ctx.create_success": "\"{name}\" created",
  "settings.ctx.mtime_conflict": "File was modified externally. Reloading...",
  "settings.ctx.conflict_title": "File changed on disk",
  "settings.ctx.conflict_msg": "Someone else modified this file while you were editing. Choose how to resolve.",
  "settings.ctx.conflict_your_edits": "Your edits",
  "settings.ctx.conflict_on_disk": "Current on disk",
  "settings.ctx.conflict_reload": "Reload (discard my edits)",
  "settings.ctx.conflict_force": "Force save (overwrite)",
  "settings.ctx.conflict_diff": "Open diff editor",
  "settings.ctx.conflict_force_done": "Force-saved over external changes",
  "settings.ctx.conflict_draft_restored": "Restored unsaved edits from previous session",
  "settings.ctx.status_in_sync": "In sync",
  "settings.ctx.status_out_of_sync": "Out of sync",
  "settings.ctx.status_missing_target": "Not in runtime",
  "settings.ctx.status_missing_canonical": "Not yet imported",
  "settings.ctx.status_parse_error": "Parse error",
  "settings.ctx.status_invalid_name": "Invalid name",
  "settings.ctx.parse_error_hint": "Fix the file at {path}, then click Refresh.",
  "settings.ctx.badge_synced": "synced",
  "settings.ctx.badge_missing_target": "not in runtime",
  "settings.ctx.badge_missing_canonical": "not imported",
  "settings.ctx.badge_out_of_sync": "out of sync",
  "settings.ctx.badge_parse_error": "parse error",
  "settings.ctx.badge_invalid_name": "invalid name",
  "settings.ctx.badge_empty": "Empty",
  "settings.ctx.badge_error": "error",
  "settings.ctx.badge_local_draft": "draft",
  "settings.ctx.pointer_missing_target": "Run Sync All to push {count} entries that are not in a runtime yet.",
  "settings.ctx.pointer_out_of_sync": "Open {leaf} to resolve {count} differences.",
  "settings.ctx.pointer_missing_canonical": "{count} runtime entries are not in the store yet — open {leaf} to import.",
  "settings.ctx.pointer_empty": "Nothing here yet — open {leaf} to create or import.",
  "settings.ctx.pointer_empty_hooks": "No hooks stored yet — open {leaf} to adopt hooks from your runtimes.",
  "settings.ctx.pointer_empty_mcp": "No MCP server definitions yet — open {leaf} to create one.",
  "settings.ctx.error_kind_parse": "Could not parse a file",
  "settings.ctx.error_kind_permission": "Permission denied",
  "settings.ctx.error_kind_missing": "A path is missing",
  "settings.ctx.error_kind_internal": "Internal error",
  "settings.ctx.tier_filter": "Stored in",
  "settings.ctx.no_artifacts": "No {type} found",
  "settings.ctx.no_artifacts_hint": "Create one or import from existing runtimes.",
  "settings.ctx.load_overview_failed": "Failed to load overview",
  "settings.ctx.load_failed": "Failed to load {type}",
  "settings.ctx.load_detail_failed": "Failed to load detail",
  "settings.ctx.scopes_load_failed": "Couldn't load project scopes — retry, and check the server logs if it persists.",
  "settings.ctx.retry": "Retry",
  "settings.ctx.show_all_projects": "Show all projects ({n})",
  "settings.ctx.not_found": "\"{name}\" not found",
  "settings.ctx.diff_tab_hint": "Click the Diff tab to load...",
  "settings.ctx.diff_failed": "Diff failed",
  "settings.ctx.diff_failed_detail": "Diff failed: {error}",
  "settings.ctx.draft_stash_failed": "Draft could not be saved locally — keep this tab open until you save.",
  "settings.ctx.no_runtime_targets": "No runtime targets found.",
  "settings.ctx.tier_option_user": "User",
  "settings.ctx.tier_option_project_shared": "Project (shared)",
  "settings.ctx.tier_option_project_local": "Project (local)",
  "settings.ctx.tier_tooltip_user": "~/.memtomem/ — applies to every project on this machine",
  "settings.ctx.tier_tooltip_project_shared": "This project's .memtomem/ — committed to git, shared with the team",
  "settings.ctx.tier_tooltip_project_local": "Gitignored local drafts — never pushed to runtimes",
  "settings.ctx.create_destination": "Destination: {project} · {tier}",
  "settings.ctx.create_dest_active_project": "active project",
  "settings.ctx.create_name_label": "Name",
  "settings.ctx.create_content_label": "Content",
  "settings.ctx.create_content_placeholder": "# Content...",
  "settings.ctx.create_name_placeholder": "my-{type}",
  "settings.ctx.import_skipped": "Skipped",
  "settings.ctx.empty_hint": "Place {type} under {canonical}/<name>/ then click Sync, or click Import to pull existing {type} from {scan_dirs} within this project.",
  "settings.ctx.empty_hint_user": "Place {type} under {canonical}/<name>/ and run `mm context sync --scope user`. User-tier {type} are shared across all projects.",
  "settings.ctx.empty_hint_mcp": "Place {type} under {canonical}/<name>/ then click Sync. MCP servers sync to this project's .mcp.json — there is no Import step.",
  "settings.ctx.empty_hint_mcp_project_only": "MCP server definitions exist only at the Project (shared) tier — switch the Stored-in filter to Project (shared) to manage them.",
  "settings.ctx.import_no_runtimes": "No runtime {type} found in {root}. Scanned: {scan_dirs}.",
  "settings.ctx.sync_empty_canonical": "No stored {type} under {canonical}. Create one first.",
  "settings.ctx.runtime_only_banner": "{count} {type} found in {scan_dirs}; none imported yet. Click Import to bring them into memtomem.",
  "settings.ctx.deep_link_filter": "Filtered: {filter} ({count} match)",
  "settings.ctx.deep_link_artifact": "Showing 1 entry: {name}",
  "settings.ctx.deep_link_artifact_missing": "Linked entry not found: {name}",
  "settings.ctx.deep_link_reset": "Show all",
  "settings.ctx.sync_disabled_tooltip": "Nothing to push yet — create or import {type} first.",
  "settings.ctx.sync_all_disabled_tooltip": "Nothing to push yet — create or import artifacts in each section first.",
  "settings.ctx.sync_all_nothing_synced": "Nothing to sync yet — every section is empty. Create or import artifacts first.",
  "settings.ctx.sync_all_not_enrolled_tooltip": "The selected project is not enrolled for sync — enroll it on the Projects board.",
  "settings.ctx.sync_all_paused_tooltip": "The selected project's sync is paused — resume it on the Projects board.",
  "settings.ctx.missing_canonical_project_shared_title": "Not yet imported into the project store (.memtomem/)",
  "settings.ctx.missing_canonical_project_shared_body": "{count} {type} exist in {scan_dirs} but are not in memtomem's store yet. Click Import above, or run:",
  "settings.ctx.missing_canonical_user_title": "Not yet imported into your user store (~/.memtomem/)",
  "settings.ctx.missing_canonical_user_body": "{count} {type} exist in your runtimes but are not in memtomem's user store yet. The web UI is read-only for the user tier — run these commands instead:",
  "settings.ctx.missing_canonical_mcp_body": "{count} {type} exist in {scan_dirs} but are not in memtomem's store yet. There is no Import for MCP servers — open an entry to view its definition, then add it with Create.",
  "settings.ctx.missing_canonical_project_local_title": "Not yet imported into local drafts",
  "settings.ctx.missing_canonical_project_local_body": "{count} {type} exist in your runtimes but are not in your local drafts yet. Local drafts are gitignored and never pushed to runtimes — initialize them with the commands below:",
  "settings.ctx.project_local_no_fanout_tooltip": "project_local is a draft tier — drafts are never pushed to runtimes.",
  "settings.ctx.tier_no_fanout_annotation": "(no runtime fan-out)",
  "settings.ctx.write_blocked_user_tooltip": "Web UI is read-only for user-tier artifacts — manage these via the `mm context` CLI.",
  "settings.ctx.write_blocked_project_local_tooltip": "project_local is a draft tier — switch to project_shared to publish to runtimes.",
  "settings.ctx.write_blocked_user_banner": "Read-only tier — user-tier artifacts are managed via the CLI.",
  "settings.ctx.write_blocked_project_local_banner": "Draft tier — local drafts stay in .memtomem/ and are never pushed to runtimes.",
  "settings.ctx.runtime_only_detail_hint": "Runtime preview — not yet in .memtomem/.",
  "settings.ctx.runtime_only_label": "(runtime only)",
  "settings.ctx.import_this": "Import this {type}",
  "settings.ctx.runtime_output": "Runtime Output",
  "settings.ctx.canonical_source": "Stored source",
  "settings.ctx.diff_view": "Diff",
  "settings.ctx.field_map": "Field Map",
  "settings.ctx.auxiliary_files": "Auxiliary files",
  "settings.ctx.detail.meta_description": "Description:",
  "settings.ctx.detail.meta_scope": "Scope:",
  "settings.ctx.detail.meta_layout": "Layout:",
  "settings.ctx.detail.meta_modified": "Modified:",
  "settings.ctx.detail.meta_layout_flat": "Flat file",
  "settings.ctx.detail.meta_layout_dir": "Directory",
  "settings.ctx.detail.meta_file_count": "{count} aux file(s)",
  "settings.ctx.detail.agent_role": "Role",
  "settings.ctx.detail.agent_isolation": "Isolation",
  "settings.ctx.detail.agent_kind": "Kind",
  "settings.ctx.detail.agent_temperature": "Temperature",
  "settings.ctx.detail.command_argument_hint": "Argument hint",
  "settings.ctx.detail.command_allowed_tools": "Allowed tools",
  "settings.ctx.detail.command_model": "Model",
  "settings.ctx.detail.mcp_command": "Command",
  "settings.ctx.detail.mcp_args_count": "Args",
  "settings.ctx.detail.mcp_env_count": "Env vars",
  "settings.ctx.versions.title": "Versions",
  "settings.ctx.versions.freeze": "Freeze current",
  "settings.ctx.versions.freeze_tooltip": "Freeze the current stored content as an immutable version",
  "settings.ctx.versions.promote": "Promote",
  "settings.ctx.versions.promote_tooltip": "Point the selected label at this version (rollback = pick an older version)",
  "settings.ctx.versions.remove_label_tooltip": "Remove this label",
  "settings.ctx.versions.empty": "No versions yet — freeze the current stored content to create v1.",
  "settings.ctx.versions.migrate_required": "This artifact uses flat layout, which has no version store. Enable versioning to convert it to directory layout.",
  "settings.ctx.versions.enable": "Enable versioning",
  "settings.ctx.versions.enable_tooltip": "Convert this flat artifact to directory layout so it can be versioned",
  "settings.ctx.versions.enable_success": "Versioning enabled for {name} — freeze the current stored content to create v1.",
  "settings.ctx.versions.freeze_success": "Froze as {tag}: {name}",
  "settings.ctx.versions.promote_success": "Promoted {label} → {tag}",
  "settings.ctx.versions.remove_label_success": "Removed label: {label}",
  "settings.ctx.versions.list_chip_tooltip": "Label {label} → version {tag}. Manage versions in the detail panel.",
  "settings.ctx.versions.list_chip_aria": "label {label} at version {tag}",
  "settings.hooks.detail.event": "Event",
  "settings.hooks.detail.matcher": "Matcher",
  "settings.hooks.detail.command": "Command",
  "settings.hooks.detail.type": "Type",
  "settings.hooks.detail.timeout": "Timeout",
  "settings.hooks.detail.rule_json": "Rule JSON",
  "settings.hooks.detail.click_hint": "Click a rule to view details.",
  "settings.ctx.overview_desc": "Sync memtomem agent runtime artifacts to Claude Code, Codex, and other detected runtimes.",
  "settings.ctx.refresh_tooltip": "Refresh detected Claude Code / Codex / Kimi runtime status",
  "settings.ctx.refresh_aria": "Refresh detected runtime status",
  "settings.ctx.sync_all_tooltip": "Push memtomem's stored artifacts to the runtimes configured for this tier",
  "settings.ctx.sync_all_aria": "Sync all artifacts to the configured runtimes",
  "settings.ctx.skills_desc": "Reusable workflows shared across Claude Code, Codex, and other detected runtimes.",
  "settings.ctx.commands_desc": "Project slash commands stored in .memtomem/commands/ and synced out to each runtime's command folder (.claude/commands/ etc.).",
  "settings.ctx.agents_desc": "Specialized subagents shared across Claude Code, Codex, and other detected runtimes.",
  "settings.ctx.mcp_servers_desc": "Project-scoped MCP server definitions synced to .mcp.json.",
  "settings.ctx.add_project": "Add Project",
  "settings.ctx.add_project_prompt": "Absolute path to a project root (e.g. /Users/me/Edu/inflearn):",
  "settings.ctx.add_project_success": "Project added",
  "settings.ctx.add_project_warning_no_runtime_marker": "No .claude/.gemini/.agents/.kimi/.memtomem directory found under this root.",
  "settings.ctx.portal_title": "Projects",
  "settings.ctx.portal_desc": "Browse, switch, rename, and unregister the projects memtomem tracks. Health shows which roots are missing or not yet initialized.",
  "settings.ctx.portal_search_placeholder": "Filter projects…",
  "settings.ctx.portal_sort_label": "Sort",
  "settings.ctx.portal_sort_name": "Name",
  "settings.ctx.portal_sort_items": "Most items",
  "settings.ctx.portal_hide_uninit": "Initialized only",
  "settings.ctx.portal_hidden_uninit": "{count} uninitialized project(s) hidden — uncheck \"Initialized only\" to show them.",
  "settings.ctx.portal_counts_empty": "Empty",
  "settings.ctx.portal_no_match": "No projects match \"{query}\".",
  "settings.ctx.portal_active": "Active",
  "settings.ctx.portal_use": "Use",
  "settings.ctx.portal_use_aria": "Switch the active project to {label}",
  "settings.ctx.portal_sync_aria": "Sync {label}",
  "settings.ctx.portal_rename": "Rename",
  "settings.ctx.portal_rename_aria": "Rename project {label}",
  "settings.ctx.portal_rename_success": "Project renamed",
  "settings.ctx.portal_enroll": "Enroll",
  "settings.ctx.portal_enroll_aria": "Enroll {label} for sync",
  "settings.ctx.portal_enroll_tip": "Register this project so it joins sync",
  "settings.ctx.portal_enroll_success": "Project enrolled for sync",
  "settings.ctx.portal_pause_sync": "Pause sync",
  "settings.ctx.portal_pause_sync_aria": "Pause sync for {label}",
  "settings.ctx.portal_pause_success": "Sync paused",
  "settings.ctx.portal_resume_sync": "Resume sync",
  "settings.ctx.portal_resume_sync_aria": "Resume sync for {label}",
  "settings.ctx.portal_resume_success": "Sync resumed",
  "settings.ctx.portal_sync_paused_badge": "sync paused",
  "settings.ctx.portal_sync_paused_tip": "Excluded from sync until resumed",
  "settings.ctx.portal_save": "Save",
  "settings.ctx.portal_cancel": "Cancel",
  "settings.ctx.portal_label_placeholder": "Project label",
  "settings.ctx.portal_stale": "uninitialized",
  "settings.ctx.portal_stale_tip": "This folder has no .memtomem store yet — run mm context init inside it to start tracking.",
  "settings.ctx.portal_root_unknown": "(no path)",
  "settings.ctx.portal_load_failed": "Could not load projects",
  "settings.ctx.portal_add_project_tooltip": "Register a project folder so memtomem can track it",
  "settings.ctx.portal_add_project_aria": "Add a project to the portal",
  "settings.ctx.runtime_uninstalled_tooltip": "Not installed (Click to view install guide)",
  "settings.ctx.runtime_installed_tooltip": "Installed, but not registered",
  "settings.ctx.runtime_registered_tooltip": "Registered (Config: {path})",
  "settings.ctx.install_guide_title": "Install Guide: {runtime}",
  "settings.ctx.copied": "Copied!",
  "settings.ctx.guide_claude_desc": "Claude Code supports user, local, or project-local configuration scopes.",
  "settings.ctx.guide_claude_note": "Or run with \"-s user\" to register globally for all projects.",
  "settings.ctx.guide_antigravity_desc": "Register memtomem in Antigravity CLI (agy) or Antigravity IDE (VS Code).",
  "settings.ctx.guide_antigravity_cli": "Antigravity CLI (agy)",
  "settings.ctx.guide_antigravity_cli_desc": "Add the configuration to ~/.gemini/antigravity-cli/mcp_config.json:",
  "settings.ctx.guide_codex_desc": "Codex CLI reads MCP servers from ~/.codex/config.toml (TOML format).",
  "settings.ctx.guide_kimi_desc": "You can automatically register memtomem for Kimi CLI using the CLI wizard.",
  "settings.ctx.copy": "Copy",
  "settings.ctx.filter_label": "Filter",
  "settings.ctx.filter_all": "All",
  "settings.ctx.portal_legend_label": "Legend",
  "settings.ctx.portal_legend_uninstalled": "Not installed",
  "settings.ctx.portal_legend_installed": "Installed",
  "settings.ctx.portal_legend_registered": "Registered",
  "settings.ctx.runtime_not_installed": "Not installed",
  "settings.ctx.runtime_error_tooltip": "Could not read this client's config",
  "settings.ctx.install_guide_ok": "OK",
  "settings.ctx.install_guide_close_aria": "Close install guide",
  "settings.ctx.remove_project": "Remove project",
  "settings.ctx.remove_project_aria": "Remove project {label} ({root})",
  "settings.ctx.confirm_remove_project": "Stop tracking \"{label}\" ({root})? Files on disk are unaffected.",
  "settings.ctx.remove": "Remove",
  "settings.ctx.scope_experimental": "experimental",
  "settings.ctx.scope_experimental_tip": "Discovered via the opt-in ~/.claude/projects scan; the path may be misdecoded.",
  "settings.ctx.scope_missing": "(missing)",
  "settings.ctx.skills_add_project_tooltip": "Register a project folder so memtomem can detect its skills",
  "settings.ctx.skills_add_project_aria": "Add project for skill detection",
  "settings.ctx.skills_create_tooltip": "Create a new memtomem-managed skill",
  "settings.ctx.skills_create_aria": "Create skill",
  "settings.ctx.skills_import_tooltip": "Pull existing skill definitions from a detected runtime into memtomem",
  "settings.ctx.skills_import_aria": "Import skills from detected runtimes",
  "settings.ctx.skills_sync_tooltip": "Push memtomem's stored skills to the runtimes configured for this tier",
  "settings.ctx.skills_sync_aria": "Sync skills to the configured runtimes",
  "settings.ctx.commands_add_project_tooltip": "Register a project folder so memtomem can detect its custom commands",
  "settings.ctx.commands_add_project_aria": "Add project for custom command detection",
  "settings.ctx.commands_create_tooltip": "Create a new memtomem-managed custom command",
  "settings.ctx.commands_create_aria": "Create custom command",
  "settings.ctx.commands_import_tooltip": "Pull existing custom commands from a detected runtime into memtomem",
  "settings.ctx.commands_import_aria": "Import custom commands from detected runtimes",
  "settings.ctx.commands_sync_tooltip": "Push memtomem's stored custom commands to the runtimes configured for this tier",
  "settings.ctx.commands_sync_aria": "Sync custom commands to the configured runtimes",
  "settings.ctx.agents_add_project_tooltip": "Register a project folder so memtomem can detect its subagents",
  "settings.ctx.agents_add_project_aria": "Add project for subagent detection",
  "settings.ctx.agents_create_tooltip": "Create a new memtomem-managed subagent",
  "settings.ctx.agents_create_aria": "Create subagent",
  "settings.ctx.agents_import_tooltip": "Pull existing subagent definitions from a detected runtime into memtomem",
  "settings.ctx.agents_import_aria": "Import subagents from detected runtimes",
  "settings.ctx.agents_sync_tooltip": "Push memtomem's stored subagents to the runtimes configured for this tier",
  "settings.ctx.agents_sync_aria": "Sync subagents to the configured runtimes",
  "settings.ctx.mcp_servers_add_project_tooltip": "Register a project folder so memtomem can manage its .mcp.json",
  "settings.ctx.mcp_servers_add_project_aria": "Add project for MCP server definitions",
  "settings.ctx.mcp_servers_create_tooltip": "Create a new project MCP server definition",
  "settings.ctx.mcp_servers_create_aria": "Create MCP server definition",
  "settings.ctx.mcp_servers_sync_tooltip": "Push stored MCP server definitions to project .mcp.json",
  "settings.ctx.mcp_servers_sync_aria": "Sync MCP server definitions to project .mcp.json",

  "settings.hooks.desc": "Lifecycle hooks defined in .memtomem/settings.json, applied to the active runtime.",
  "settings.hooks.title": "Hooks",
  "settings.hooks.sync_now": "Sync Now",
  "settings.hooks.sync_now_tooltip": "Apply .memtomem/settings.json hook config to the active runtime",
  "settings.hooks.sync_now_disabled_no_source": "No .memtomem/settings.json to sync — create it first via `mm init`.",
  "settings.hooks.sync_now_disabled_no_hooks": ".memtomem/settings.json has no hook rules to sync.",
  "settings.hooks.sync_now_aria": "Sync hooks to active runtime",
  "settings.hooks.in_sync": "All hooks are in sync",
  "settings.hooks.no_hooks": "No hooks defined",
  "settings.hooks.conflicts": "conflicts found",
  "settings.hooks.pending": "hooks will be added on sync",
  "settings.hooks.use_proposed": "Use memtomem's",
  "settings.hooks.synced": "In sync",
  "settings.hooks.configured": "Configured in target",
  "settings.hooks.target_only": "target-only",
  "settings.hooks.delete_btn": "Delete",
  "settings.hooks.promote_btn": "Save to memtomem",
  "settings.hooks.promote_all_btn": "Save all to memtomem",
  "settings.hooks.delete_confirm": "Delete \"{label}\" from the selected target settings file?",
  "settings.hooks.promote_confirm": "Save \"{label}\" to memtomem-managed settings?",
  "settings.hooks.promote_confirm_private": "Save \"{label}\" to .memtomem/settings.json? This can be committed and shared with teammates.",
  "settings.hooks.promote_all_confirm": "Save {count} target-only hook rule(s) to memtomem-managed settings?",
  "settings.hooks.promote_all_confirm_private": "Save {count} target-only hook rule(s) to .memtomem/settings.json? These can be committed and shared with teammates.",
  "settings.hooks.promote_delete_original_option": "Remove original from the selected target after saving",
  "settings.hooks.promote_delete_success": "Saved to memtomem and removed the original target rule",
  "settings.hooks.promote_delete_partial": "Saved to memtomem, but the original target rule was not removed.",
  "settings.hooks.promote_all_result": "{saved} saved, {deleted} original(s) removed, {conflicts} conflict(s), {aborted} stale, {failed} failed",
  "settings.hooks.original_already_removed": "Original target rule is already gone",
  "settings.hooks.promote_conflict": "memtomem already has a different hook rule for this event and matcher.",
  "settings.hooks.edit_unavailable_v1_hint": "Direct editing is not available here yet. Edit {path} manually.",
  "settings.hooks.rule_action_success": "Hook rule updated",
  "settings.hooks.rule_action_stale": "Hook rule changed. Refresh and retry.",
  "settings.hooks.sync_success": "Sync completed",
  "settings.hooks.no_source": "No .memtomem/settings.json found",
  "settings.hooks.no_source_hint": "Create .memtomem/settings.json or run mm init to set up hooks.",
  "settings.hooks.error_hint": "Fix the JSON file and reload.",
  "settings.hooks.no_hooks_defined": "No hooks defined in .memtomem/settings.json.",
  "settings.hooks.no_hooks_hint": "Add hook rules to .memtomem/settings.json to make them appear as pending or synced.",
  "settings.hooks.load_failed": "Failed to load sync status",
  "settings.hooks.target_label": "Target:",
  "settings.hooks.target_label_user": "User-scope target:",
  "settings.hooks.target_label_project_shared": "Project (shared) target:",
  "settings.hooks.target_label_project_local": "Project (local) target:",
  "settings.hooks.needs_confirmation_title": "Host write requires confirmation",
  "settings.hooks.needs_confirmation_body": "Server refused the write for the following target(s):\n{targets}\nReview via `mm settings sync` for details.",
  "settings.hooks.duplicate_banner_one": "1 memtomem-managed hook entry already exists in the {tier} tier ({path}) — run {cmd} to move it. Active scope: {active}.",
  "settings.hooks.duplicate_banner_many": "{count} memtomem-managed hook entries already exist in the {tier} tier ({path}) — run {cmd} to move them. Active scope: {active}.",
  "settings.hooks.badge_in_sync": "in sync",
  "settings.hooks.badge_out_of_sync": "out of sync",
  "settings.hooks.badge_error": "error",

  "settings.config.desc": "Server settings: embedding provider, storage backend, search and indexing parameters.",
  "settings.config.guide_title": "Configuration Guide",
  "settings.config.guide_text": "Select a config section to see its documentation.",
  "settings.config.hint_extensions": "Extensions: {exts}",
  "settings.config.hint_max_chunk": "Max chunk: {tokens} tokens",

  "settings.ns.desc": "Organize memories by namespace and review chunk counts per group.",
  "settings.ns.title": "Namespaces",
  "settings.ns.refresh": "Refresh",
  "settings.ns.group_chunks": "{count} chunks",
  "settings.ns.empty.title": "No namespaces yet",
  "settings.ns.empty.body": "Index files with a namespace, or define one in your config rules to bucket memories.",
  "settings.ns.empty.cta": "Learn how namespaces work",

  "settings.dedup.desc": "Find near-duplicate chunks by similarity threshold and merge or skip them.",
  "settings.dedup.preflight": "Scan previews candidates only. Merge buttons appear on reviewed pairs and delete only the duplicate chunk you choose.",
  "settings.dedup.threshold_label": "Threshold",
  "settings.dedup.threshold_help": "Similarity above which chunks are considered duplicates. Default 0.92 catches near-identical content.",
  "settings.dedup.limit_label": "Limit",
  "settings.dedup.max_scan_label": "Max Scan",
  "settings.dedup.scan_btn": "Scan",
  "settings.dedup.empty_icon": "📋",
  "settings.dedup.empty_text": "Run Scan to see duplicate candidates",
  "settings.dedup.scan_timeout": "Scan timed out (120 s). Try a smaller Max Scan.",
  "settings.dedup.scan_error": "Scan error: {error}",
  "settings.dedup.scan_failed": "Scan failed",
  "settings.dedup.no_results": "No duplicates found (threshold={threshold})",
  "settings.dedup.summary_one": "Found {count} candidate pair. Review each and choose which chunk to keep.",
  "settings.dedup.summary_other": "Found {count} candidate pairs. Review each and choose which chunk to keep.",
  "settings.dedup.badge_exact": "Exact",
  "settings.dedup.keep_a": "Keep A",
  "settings.dedup.keep_a_title": "Keep A, delete B",
  "settings.dedup.keep_b": "Keep B",
  "settings.dedup.keep_b_title": "Keep B, delete A",
  "settings.dedup.skip": "Skip",
  "settings.dedup.chunk_a_label": "A — keep candidate",
  "settings.dedup.chunk_b_label": "B — duplicate candidate",
  "settings.dedup.lines": "lines {start}–{end}",

  "settings.decay.desc": "Expire chunks older than a cutoff date, optionally filtered by source path.",
  "settings.decay.preflight": "Run Scan first. Expire stays disabled until the current filters have a reviewed candidate count.",
  "settings.decay.max_age_label": "Max Age (days)",
  "settings.decay.source_filter_label": "Source Filter",
  "settings.decay.source_placeholder": "optional substring…",
  "settings.decay.scan_btn": "Scan",
  "settings.decay.expire_btn": "Expire",
  "settings.decay.result.total": "Total chunks",
  "settings.decay.result.expired": "Expired candidates",
  "settings.decay.result.deleted": "Deleted chunks",
  "settings.decay.no_expire": "No chunks to expire.",
  "settings.decay.scan_failed": "Scan failed: {error}",
  "settings.decay.preview_required": "Run Scan again before expiring. The filters changed since the last preview.",

  "settings.reset.desc": "Permanently delete all memory data and reinitialize the database. Embedding config is kept.",
  "settings.reset.warning_title": "Danger Zone",
  "settings.reset.warning_text": "This will permanently delete ALL data (chunks, sessions, history, relations, entities, etc.) and reinitialize the database. Embedding configuration is preserved.",
  "settings.reset.backup_hint": "Export a JSON bundle first if you may need to restore this database later.",
  "settings.reset.chunk_count_label": "Current chunks:",
  "settings.reset.reset_btn": "Reset Database",
  "settings.reset.confirm_title": "Reset Database",
  "settings.reset.confirm_message": "This will permanently delete ALL data. This action cannot be undone. Are you sure?",
  "settings.reset.confirm_btn": "Reset",

  "settings.sessions.desc": "Browse episodic session history and per-session event timelines.",
  "settings.sessions.title": "Episodic Sessions",
  "settings.sessions.refresh": "Refresh",
  "settings.sessions.events_title": "Session Events",
  "settings.sessions.events_close": "Close",

  "settings.scratch.desc": "Ephemeral key-value scratch pad with optional TTL, promotable to long-term memory.",
  "settings.scratch.title": "Working Memory",
  "settings.scratch.refresh": "Refresh",
  "settings.scratch.key_placeholder": "Key",
  "settings.scratch.value_placeholder": "Value",
  "settings.scratch.ttl_placeholder": "TTL (min)",
  "settings.scratch.add_btn": "Add",

  "settings.procedures.desc": "Saved procedures (recipes) available for recall.",
  "settings.procedures.title": "Procedures",
  "settings.procedures.refresh": "Refresh",

  "settings.health.desc": "Memory health report — coverage, dead chunks, session stats. Includes watchdog run.",
  "settings.health.title": "Memory Health",
  "settings.health.refresh": "Refresh",
  "settings.health.watchdog_heading": "Watchdog",
  "settings.health.watchdog_desc": "Periodic background checks. Run manually to force an update.",

  "settings.watchdog.title": "Health Watchdog",
  "settings.watchdog.run_btn": "Run Now",
  "settings.watchdog.refresh": "Refresh",

  "settings.export.desc": "Export filtered chunks to a JSON bundle or import a bundle to re-index.",
  "settings.export.title": "Export",
  "settings.export.preflight": "Preview the filters before downloading so the bundle size is explicit.",
  "settings.export.source_label": "Source Filter",
  "settings.export.source_placeholder": "optional path substring…",
  "settings.export.tag_label": "Tag Filter",
  "settings.export.tag_placeholder": "exact tag…",
  "settings.export.since_label": "Since (ISO date)",
  "settings.export.since_placeholder": "e.g. 2025-01-01",
  "settings.export.ns_label": "Namespace",
  "settings.export.ns_all": "All Namespaces",
  "settings.export.preview_btn": "Preview",
  "settings.export.download_btn": "Download JSON",
  "settings.export.preview_msg": "{count} chunks will be exported",
  "settings.export.preview_required": "Preview the current filters before downloading.",
  "settings.import.title": "Import",
  "settings.import.hint": "Upload a memtomem_export.json bundle to re-index its chunks.",
  "settings.import.file_label": "Bundle File (.json)",
  "settings.import.choose_btn": "Choose File",
  "settings.import.no_file": "No file chosen",
  "settings.import.import_btn": "Import",
  "settings.import.result.total": "Total chunks",
  "settings.import.result.imported": "Imported",
  "settings.import.result.skipped": "Skipped",
  "settings.import.result.failed": "Failed",

  "tags.help": "Tag cloud sized by frequency. Click a tag to filter search. Auto-Tag analyzes content to suggest tags for untagged chunks.",
  "tags.title": "Tags",
  "tags.cloud_btn": "Cloud",
  "tags.list_btn": "List",
  "tags.refresh": "Refresh",
  "tags.filter_placeholder": "Filter tags...",
  "tags.sort_count_desc": "Count↓",
  "tags.sort_count_asc": "Count↑",
  "tags.sort_az": "A-Z",
  "tags.sort_za": "Z-A",
  "tags.autotag_title": "Auto-Tag",
  "tags.autotag_desc": "Analyze chunk content and extract keyword-based tags automatically.",
  "tags.autotag_source_label": "Source Filter",
  "tags.autotag_source_placeholder": "optional path substring…",
  "tags.autotag_max_label": "Max Tags per Chunk",
  "tags.autotag_overwrite": "Overwrite existing",
  "tags.autotag_dryrun": "Dry run",
  "tags.autotag_dryrun_help": "Preview suggested tags without applying. Uncheck to apply immediately.",
  "tags.autotag_btn": "Run Auto-Tag",
  "tags.autotag_result.total": "Total chunks",
  "tags.autotag_result.tagged": "Tagged",
  "tags.autotag_result.skipped": "Skipped",
  "tags.autotag_samples_title": "Preview",
  "tags.autotag_sample_current": "Current:",
  "tags.autotag_sample_suggested": "Suggested:",
  "tags.autotag_sample_no_current_tags": "(none)",
  "tags.empty_msg": "No tags yet",
  "tags.empty_hint": "Run Auto-Tag to generate tags",
  "tags.manage_rename": "Rename",
  "tags.manage_merge": "Merge",
  "tags.manage_delete": "Delete",
  "tags.manage_rename_title": "Rename tag “{tag}”",
  "tags.manage_merge_title": "Merge tag “{tag}” into…",
  "tags.manage_delete_title": "Delete tag “{tag}”?",
  "tags.manage_new_name_label": "New name",
  "tags.manage_target_label": "Merge into",
  "tags.manage_preview": "Preview",
  "tags.manage_input_required": "Enter a value.",
  "tags.manage_impact": "This will affect {count} chunks across all scopes.",
  "tags.manage_impact_none": "No chunks would change.",
  "tags.manage_rename_done": "Renamed “{old}” → “{new}” in {count} chunks.",
  "tags.manage_merge_done": "Merged “{source}” into “{target}” across {count} chunks.",
  "tags.manage_delete_done": "Removed “{tag}” from {count} chunks.",

  "timeline.help": "Activity timeline of indexed chunks. Heatmap shows daily activity. Toggle Chunks/Files view.",
  "timeline.source_label": "Source filter",
  "timeline.source_placeholder": "optional substring…",
  "timeline.ns_label": "Namespace",
  "timeline.ns_all": "All",
  "timeline.limit_label": "Limit",
  "timeline.load_btn": "Load",
  "timeline.view_chunks": "Chunks",
  "timeline.view_files": "Files",
  "timeline.today": "Today",
  "timeline.7d": "Last 7 days",
  "timeline.30d": "Last 30 days",
  "timeline.90d": "Last 90 days",
  "timeline.180d": "Last 180 days",
  "timeline.365d": "Last 365 days",
  "timeline.custom": "Custom…",
  "timeline.title_tl": "Time range for timeline",
  "timeline.empty_icon": "🕐",
  "timeline.empty_text": "Click Load to view the timeline",
  "timeline.open_in_source": "Open in source",
  "timeline.copy": "Copy",

  "modal.settings_title": "Settings",
  "modal.default_tab_label": "Default Tab",
  "modal.default_tab_main": "Main",
  "modal.default_tab_settings": "Settings",
  "modal.default_topk_label": "Default Top-K",
  "modal.reset_btn": "Reset Defaults",
  "modal.save_btn": "Save",
  "modal.shortcuts_title": "Keyboard Shortcuts",
  "modal.cancel_btn": "Cancel",
  "modal.delete_btn": "Delete",
  "modal.cmd_placeholder": "Type a command…",
  "modal.cmd_palette_aria_label": "Command palette",
  "modal.close_expand_aria": "Close dialog",
  "modal.close_settings_aria": "Close settings",
  "modal.close_shortcuts_aria": "Close keyboard shortcuts",
  "modal.close_source_preview_aria": "Close source preview",

  "shortcut.focus_search": "Focus search input",
  "shortcut.navigate": "Navigate results (next / prev)",
  "shortcut.pin": "Pin / unpin selected chunk",
  "shortcut.copy": "Copy selected chunk content",
  "shortcut.open_detail": "Open selected result detail",
  "shortcut.back": "Back to results list from detail",
  "shortcut.switch_tabs": "Switch tabs (Home=1 … More=8)",
  "shortcut.cmd_palette": "Command palette",
  "shortcut.go_sources": "Go to Sources",
  "shortcut.close": "Close panel, dropdown, or modal",
  "shortcut.toggle_help": "Toggle help hints",
  "shortcut.toggle_shortcuts": "Toggle this help",

  "common.loading": "Loading...",
  "common.refresh": "Refresh",
  "common.close": "Close",
  "common.save": "Save",
  "common.delete": "Delete",
  "common.cancel": "Cancel",
  "common.confirm": "Confirm",
  "common.replace": "Replace",
  "common.merge": "Merge",
  "common.expire": "Expire",
  "common.sync": "Sync",
  "common.done": "Done",
  "common.dismiss_help": "Dismiss help",
  "cmd.group.navigation": "Navigation",
  "cmd.group.settings": "Settings",
  "cmd.group.actions": "Actions",
  "cmd.group.recent_sources": "Recent Sources",
  "cmd.nav.home": "Go to Home",
  "cmd.nav.search": "Go to Search",
  "cmd.nav.sources": "Go to Sources",
  "cmd.nav.index": "Go to Index",
  "cmd.nav.tags": "Go to Tags",
  "cmd.nav.timeline": "Go to Timeline",
  "cmd.nav.settings": "Go to Settings",
  "cmd.open.config": "Open Config",
  "cmd.open.dedup": "Open Dedup",
  "cmd.open.export_import": "Open Export/Import",
  "cmd.action.focus_search": "Focus Search",
  "cmd.action.toggle_theme": "Toggle Theme",
  "cmd.action.keyboard_shortcuts": "Keyboard Shortcuts",
  "cmd.open_source": "Open {name}",
  "cmd.no_match": "No matching commands",
  "common.file_chunk_progress": "{file} — {done}/{total} chunks",

  "time.relative.just_now": "just now",
  "time.relative.minutes_ago": "{m}m ago",
  "time.relative.hours_ago": "{h}h ago",
  "time.relative.days_ago": "{d}d ago",
  "time.relative.months_ago": "{mo}mo ago",
  "time.relative.years_ago": "{y}y ago",

  "picker.aria_label": "Folder picker",
  "picker.title": "Pick a folder",
  "picker.cancel": "Cancel",
  "picker.select": "Select this folder",
  "picker.empty": "No subfolders.",
  "picker.outside": "Outside the picker scope. Close and type the path to use it.",
  "picker.error": "Could not list folder.",
  "picker.retry": "Retry",

  "toast.close_aria": "Close notification",
  "toast.copied": "Copied!",
  "toast.pinned": "Pinned!",
  "toast.unpinned": "Unpinned",
  "toast.pinned_chunk_missing": "Pinned chunk no longer exists. Remove the stale pin.",
  "toast.chunk_saved": "Chunk saved.",
  "toast.chunk_deleted": "Chunk deleted.",
  "toast.chunk_updated": "Chunk updated.",
  "toast.content_restored": "Content restored.",
  "toast.tags_saved": "Tags saved.",
  "toast.source_deleted": "Source deleted.",
  "toast.source_reindexed": "Source reindexed — {count} chunks.",
  "toast.source_reindex_partial": "Source reindex completed with {count} errors: {first}",
  "toast.source_reindex_failed": "Source reindex failed: {error}",
  "toast.dupes_merged": "Duplicate chunks merged.",
  "toast.settings_saved": "Settings saved",
  "toast.settings_reset": "Settings reset to defaults",
  "toast.ns_updated": "Namespace updated",
  "toast.search_removed": "Search removed from saved",
  "toast.config_saved": "Config saved",
  "toast.fts_rebuilt": "FTS index rebuilt ({count} chunks).",
  "toast.diff_shown": "Showing diff: history → current",
  "toast.dev_only_section": "Unknown section (dev-only)",
  "toast.quick_action.open_search": "Opened Search.",
  "toast.quick_action.open_index": "Opened Index. Choose a source, then run indexing.",
  "toast.quick_action.reindex_ready": "Force re-index is selected. Review the source, then run indexing.",
  "toast.quick_action.open_export": "Opened Export / Import. Choose filters before previewing or downloading.",
  "toast.quick_action.open_dedup": "Opened Deduplicate. Review the threshold, then run the scan.",
  "toast.quick_action.open_tags": "Opened Tags.",
  "toast.stream_fallback": "Streaming failed. Try the Index button instead.",
  "toast.watchdog_disabled": "Health watchdog is disabled. Set MEMTOMEM_HEALTH_WATCHDOG__ENABLED=true to enable.",
  "toast.file_filter": "Only .md/.txt/.py/.js/.ts/.json/.yaml files accepted",
  "toast.enter_query": "Enter a query first",
  "toast.select_saved": "Select a saved search to delete",
  "toast.no_results_export": "No results to export",
  "toast.reset_failed": "Reset failed: {error}",
  "toast.save_failed": "Save failed: {error}",
  "toast.delete_failed": "Delete failed: {error}",
  "toast.tag_remove_failed": "Failed to remove tag: {error}",
  "toast.tag_save_failed": "Failed to save tags: {error}",
  "toast.index_failed": "Indexing failed: {error}",
  "toast.upload_failed": "Upload failed: {error}",
  "toast.merge_failed": "Merge failed: {error}",
  "toast.expire_failed": "Expire failed: {error}",
  "toast.autotag_failed": "Auto-Tag failed: {error}",
  "toast.import_failed": "Import failed: {error}",
  "toast.config_save_failed": "Config save failed: {error}",
  "toast.fts_rebuild_failed": "FTS rebuild failed: {error}",
  "toast.reindex_failed": "Re-index failed: {error}",
  "toast.rename_failed": "Rename failed: {error}",
  "toast.update_failed": "Update failed: {error}",
  "toast.error": "Error: {error}",

  "toast.chunk_target_missing": "Couldn't locate the linked chunk in this view.",
  "toast.ns_deleted": "Deleted {count} chunks from '{name}'",
  "toast.ns_renamed": "Renamed '{oldName}' \u2192 '{newName}'",
  "toast.indexed_count": "Indexed {count} chunks",
  "toast.upload_complete": "Upload complete \u2014 {count} chunks indexed",
  "toast.upload_complete_with_path": "Indexed {count} chunks \u2192 saved to {path}",
  "toast.action.register_persistent": "Register as Source",
  "toast.index_registered_as_source": "Registered {path} as a source",
  "toast.index_register_failed": "Failed to register as source: {error}",
  "toast.saved_to_file": "Saved to {path} \u2014 {count} chunks indexed",
  "toast.tagged_count": "{label}{count} chunks tagged",
  "toast.query_saved": "Saved: \"{name}\"",
  "toast.query_deleted": "Deleted: \"{name}\"",
  "toast.query_removed": "Removed: \"{name}\"",
  "toast.exported_count": "Exported {count} chunks as {ext}",
  "toast.indexing_files": "Indexing {count} files\u2026",
  "toast.indexed_files_chunks": "Indexed {files} files \u2192 {chunks} chunks",
  "toast.bulk_delete_partial": "{deleted} deleted, {failed} failed",
  "toast.bulk_delete_ok": "{count} chunks deleted",
  "toast.expired_count": "{count} chunks expired and deleted.",
  "toast.imported_count": "{count} chunks imported.",
  "toast.fields_rejected": "Some fields rejected: {fields}",
  "toast.settings_updated_count": "{count} settings updated",
  "toast.reindex_partial": "Re-index completed with {count} error(s): {first}",
  "toast.index_partial": "Indexed {count} chunks with {errors} error(s): {first}",
  "toast.reindex_complete": "Re-index complete \u2014 {count} chunks indexed",
  "toast.indexing_in_progress": "Indexing already in progress",
  "toast.hooks_warnings": "Synced with {count} warning(s)",
  "toast.sync_partial_settings_needs_confirmation": "Sync All complete except Settings — confirm host writes in the Settings panel.",
  "toast.sync_partial_failed": "{succeeded} synced — {failed_phase} failed: {reason}",
  "settings.ctx.skills_phase_title": "Skills",
  "settings.ctx.commands_phase_title": "Custom Commands",
  "settings.ctx.agents_phase_title": "Subagents",
  "settings.ctx.mcp_servers_phase_title": "MCP Servers",
  "settings.ctx.settings_phase_title": "Hooks",
  "settings.ctx.sync_status_heading": "Sync progress",
  "settings.ctx.sync_state_pending": "Pending",
  "settings.ctx.sync_state_syncing": "Syncing…",
  "settings.ctx.sync_state_done": "Done",
  "settings.ctx.sync_state_not_run": "Not run",
  "settings.ctx.sync_state_failed": "Failed",
  "settings.ctx.sync_state_needs_confirmation": "Needs confirmation",
  "settings.ctx.sync_count_generated": "{count} generated",
  "settings.ctx.sync_count_dropped": "{count} dropped",
  "settings.ctx.sync_count_skipped": "{count} skipped",
  "toast.open_settings_action": "Open Settings",
  "toast.request_failed": "Request failed",
  "toast.unexpected_response": "Unexpected response",
  "toast.sync_failed": "Sync failed: {error}",
  "toast.sync_scope_changed": "Target scope changed during confirmation — sync cancelled. Re-run sync for the current scope.",
  "toast.sync_targets_unavailable": "Sync cancelled — the server did not disclose which files the write would touch.",
  "toast.create_failed": "Create failed: {error}",
  "toast.refresh_complete": "Refresh complete",
  "toast.name_required": "Name is required",

  "confirm.emb_reset_title": "Reset Embedding Vectors",
  "confirm.emb_reset_msg": "WARNING: All indexed vectors will be deleted. New config: {provider}/{model} (dim {dimension}). Re-indexing required afterwards.",
  "confirm.emb_reset_btn": "Reset",
  "confirm.ns_delete_title": "Delete Namespace",
  "confirm.ns_delete_msg": "Delete all chunks in namespace '{name}'? This cannot be undone.",
  "confirm.chunk_delete_title": "Delete Chunk",
  "confirm.chunk_delete_msg": "This will permanently remove {lines} from the source file \"{source}\" and delete the chunk from the index. This cannot be undone.",
  "confirm.chunk_delete_simple_msg": "Delete this chunk (lines {start}\u2013{end})",
  "confirm.bulk_delete_title": "Delete {count} Chunks",
  "confirm.bulk_delete_msg": "{count} chunks will be permanently removed from source files and deleted from the index. This cannot be undone.",
  "confirm.source_delete_title": "Delete Source",
  "confirm.source_delete_msg": "Delete all chunks for:\n{path}",
  "confirm.merge_dupe_title": "Merge Duplicate",
  "confirm.merge_dupe_keep_a_msg": "Keep A and delete B.",
  "confirm.merge_dupe_keep_b_msg": "Keep B and delete A.",
  "confirm.expire_title": "Expire Chunks",
  "confirm.expire_msg": "Permanently delete {count} expired chunk(s). This action cannot be undone.",
  "confirm.hooks_replace_title": "Replace hook rule",
  "confirm.hooks_replace_msg": "Replace your \"{label}\" rule with memtomem's version?",
  "confirm.hooks_sync_title": "Sync settings",
  "confirm.hooks_sync_msg": "Merge .memtomem/settings.json hooks into these runtime settings files?\n{targets}",

  "settings.exclude_patterns.builtin_title": "Built-in (read-only)",
  "settings.exclude_patterns.builtin_hint": "cannot be disabled",
  "settings.exclude_patterns.group_secret": "Secret",
  "settings.exclude_patterns.group_noise": "Noise",
  "settings.exclude_patterns.user_title": "User patterns",
  "settings.exclude_patterns.add": "+ Add pattern",
  "settings.exclude_patterns.remove": "Remove pattern",
  "settings.exclude_patterns.placeholder": "e.g. **/*.log",
  "settings.exclude_patterns.err_empty": "Pattern cannot be empty",
  "settings.exclude_patterns.err_duplicate": "Duplicate pattern: {pattern}",
  "settings.exclude_patterns.err_syntax": "Invalid pathspec pattern: {pattern}",
  "settings.exclude_patterns.err_save_blocked": "Fix the highlighted exclude patterns before saving",

  "settings.supported_extensions.placeholder": "e.g. .md, .py",
  "settings.supported_extensions.add": "+ Add",
  "settings.supported_extensions.remove": "Remove extension",
  "settings.supported_extensions.err_cap": "Maximum 20 extensions",
  "settings.supported_extensions.min_required": "At least one extension required",
  "settings.supported_extensions.reset_confirm": "Reset extensions to default?",
  "settings.supported_extensions.reindex_hint": "New extensions take effect on next index. Existing directories need a re-index to pick them up.",

  "settings.reset.aria_label": "Reset to default",
  "settings.reset.title": "Reset to default (preview; press Save to apply)",

  "sources.memory_dirs.title": "Memory Dirs",
  "sources.memory_dirs.total_one": "{count} dir",
  "sources.memory_dirs.total_other": "{count} dirs",
  "sources.memory_dirs.category.user": "User",
  "sources.memory_dirs.category.claude_memory": "Claude projects",
  "sources.memory_dirs.category.claude_plans": "Claude plans",
  "sources.memory_dirs.category.codex": "Codex",
  "sources.category_nav_label": "Source categories",
  "sources.category_showing": "Showing {shown}/{total}",
  "sources.category_scroll_more": "Showing {shown}/{total}; scroll for more",
  "sources.category_scroll_more_folders": "Showing {shown}/{total} folders; scroll for more",
  "sources.source_reindex_btn": "Reindex",
  "sources.source_reindex_title": "Force reindex this file",
  "sources.source_delete_btn": "Delete",
  "sources.source_delete_title": "Delete indexed chunks for this file",
  "sources.memory_dirs.provider.user": "User",
  "sources.memory_dirs.provider.claude": "Claude",
  "sources.memory_dirs.provider.openai": "OpenAI",
  "sources.memory_dirs.add_placeholder": "/absolute/path/to/directory",
  "sources.memory_dirs.add_btn": "+ Add path",
  "sources.memory_dirs.add_submit": "Add",
  "sources.memory_dirs.add_cancel": "Cancel",
  "sources.memory_dirs.reindex_all": "Reindex all",
  "sources.memory_dirs.reindex_group": "Reindex group",
  "sources.memory_dirs.reindex_title": "Reindex this directory",
  "sources.memory_dirs.delete_title": "Remove from memory_dirs",
  "sources.memory_dirs.action_index": "Index",
  "sources.memory_dirs.action_reindex": "Reindex",
  "sources.memory_dirs.action_delete": "Delete",
  "sources.memory_dirs.action_open": "Open",
  "sources.memory_dirs.action_reindex_group": "Reindex",
  "sources.memory_dirs.open_title": "Open in file manager",
  "sources.memory_dirs.status_empty": "not indexed",
  "sources.memory_dirs.status_missing": "missing",
  "sources.memory_dirs.status_chunks": "{count} chunks",
  "sources.memory_dirs.status_group": "{indexed}/{files} files · {chunks} chunks",
  "sources.memory_dirs.status_files_only": "{count} files",
  "sources.memory_dirs.sort_label": "Sort by",
  "sources.memory_dirs.sort.created_desc": "Newest first",
  "sources.memory_dirs.sort.created_asc": "Oldest first",
  "sources.memory_dirs.sort.path_asc": "Path (A→Z)",
  "sources.memory_dirs.sort.files_desc": "Most files",
  "sources.memory_dirs.sort.chunks_desc": "Most chunks",
  "sources.memory_dirs.sort.last_indexed_desc": "Recently indexed",
  "sources.memory_dirs.meta_created": "created {dt}",
  "sources.memory_dirs.meta_indexed": "indexed {dt}",
  "sources.memory_dirs.files_empty": "No indexed files in this directory yet",
  "sources.memory_dirs.file_meta": "{chunks} chunks",
  "settings.memory_dirs.moved_notice": "Memory directories are managed in the",
  "settings.memory_dirs.moved_notice_action": "Sources tab →",
  "confirm.memory_dir_remove_title": "Remove memory directory?",
  "confirm.memory_dir_remove_msg": "Remove {path} from memory_dirs? The directory and its files on disk are not touched.",
  "confirm.memory_dir_delete_chunks_label": "Also delete {count} indexed chunks from this directory",
  "toast.memory_dir.added": "Added {path}",
  "toast.memory_dir.added_indexed": "Added {path} · {chunks} chunks from {files} files",
  "toast.memory_dir.removed": "Removed {path}",
  "toast.memory_dir.removed_with_chunks": "Removed {path} and {count} chunks",
  "toast.memory_dir.opened": "Opened {path}",
  "toast.memory_dir.open_failed": "Open failed: {error}",
  "toast.memory_dir.add_failed": "Add failed: {error}",
  "toast.memory_dir.remove_failed": "Remove failed: {error}",
  "toast.memory_dir.reindex_started": "Reindexing {path}…",
  "toast.memory_dir.reindex_done": "Reindexed {path} — {count} chunks",
  "toast.memory_dir.reindex_failed": "Reindex failed: {error}"
}
