@fresh-editor/fresh-editor 0.3.8 → 0.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,82 @@
1
1
  # Release Notes
2
2
 
3
+ ## 0.3.10
4
+
5
+ A lot of work on bug fixes and polish in this release.
6
+
7
+ ### Improvements
8
+
9
+ * **Live Grep**: previews highlight all matches and center on the match in wrapped documents; keyboard nav re-reveals the selection after a wheel scroll; prompt text is readable on all themes (new `suggestion_fg` theme key) and toolbar labels readable on light themes.
10
+ * The **Workspace Trust** prompt and the **env-manager** plugin's commands and status messages are now localized across all 14 supported languages (#2158).
11
+ * Session model reworked: **one session per directory**, `windows.json` dropped (sessions are discovered from the per-dir workspace cache), only the foreground window is materialized at startup with the rest lazy-restored, and the **base session is no longer magic — it can be deleted** like any other.
12
+ * Orchestrator picker hides **empty / single-file sessions** by default, with a toggle to show them (#2137).
13
+ * The Live Grep => Quickfix (persisted) list is now a **Finder dock panel** instead of a bespoke buffer: **Enter navigates** to the match, the dock stays open when jumping, and `live_grep_export_quickfix` is bound by default (#2124).
14
+
15
+ ### Bug Fixes
16
+
17
+ * **Mouse-wheel scrolling** fixed in File Explorer, Live Grep, and Git Log panels (#2119, reported by @brunnerh in #2107).
18
+ * **Search highlights** no longer grow over adjacent typing (#2053, reported by @mandolyte) and stale matches now clear after edits inside a match (#2133).
19
+ * **Search / Replace**: panel no longer gets stuck on "Searching…" with zero matches; *Search and Replace in Current File* now works for unnamed buffers and for files outside the workspace root (#2112).
20
+ * **LSP**: diagnostics now display in Markdown compose/preview mode (#2146); `workspace/configuration` is answered per-server instead of with a fixed rust-analyzer blob; newly configured servers default to `auto_start = true`.
21
+ * **Diagnostics panel** `q` / `a` / `r` shortcuts work again instead of tripping "Editing disabled" (#2125).
22
+ * **Review Diff**: *Discard hunk* now succeeds for files with an unterminated final line (#2117).
23
+ * **Macro replay** is now a **single undo unit** instead of per-char (#2062).
24
+ * **Submenus** align so the first item is inline with the selected parent item (#2118, reported by @RandomGHUser).
25
+ * **File Explorer**: `Ctrl+O` works and keeps focus on the opened buffer.
26
+ * **Settings**: text fields commit and advance focus on `Enter`; `Ctrl+U` clears the prompt.
27
+ * **Gutter** no longer eats text width in non-compose mode when line numbers are off.
28
+ * **Windows**: the Microsoft Store `pwsh` App Execution Alias is skipped when opening a terminal (#2077, reported by @ket000), with an opt-out flag.
29
+ * Session working trees stored under the data dir are now editable.
30
+
31
+ ## 0.3.9
32
+
33
+ ### Features
34
+
35
+ #### Universal Search (multi-scope Live Grep)
36
+
37
+ Live Grep grows into a universal search overlay: search across multiple **scopes** — project files, open **Buffers**, and **Terminals** scrollback — with **Word** and **Regex** search modes (each keybindable). The overlay gets a clickable widget toolbar (focusable provider button, toggle controls), a full-width header band, and inline status shown in the overlay itself. Closed-terminal scrollback is retained so it stays searchable (#2099).
38
+
39
+ #### Orchestrator & git worktrees
40
+
41
+ * **Attach sessions to existing git worktrees** and discover them automatically (#2095).
42
+ * Multi-select **bulk actions**, worktree ordering, and a *Show all worktrees* filter toggle.
43
+ * Draggable scrollbars on the picker lists, with bulk-pane reorder.
44
+
45
+ #### Editor
46
+
47
+ * **Move to Next / Previous Paragraph** actions, including translations (#2084, contributed by @PavelLoparev; requested in #2083).
48
+
49
+ #### Language Support
50
+
51
+ * **C3** (`.c3`) syntax highlighting and LSP (#2101, requested by @data-man).
52
+
53
+ #### Plugins & API
54
+
55
+ * New `getWorkingDataDir()` (per-working-dir data root) and `getTerminalDir()` plugin APIs.
56
+ * Overlay toolbar widget APIs — clickable `Toggle`/`Button` controls, `toggleOverlayToolbarWidget`, and a `Row { wrap }` layout that reflows toolbars across lines.
57
+
58
+ ### Improvements
59
+
60
+ * The **dashboard no longer opens automatically** on startup by default. To re-enable it, open **Settings**, select **Plugin: dashboard**, and turn on **AutoOpen** ("Show the dashboard automatically when Fresh starts with no real files open."). The dashboard remains available any time via the **Show Dashboard** command.
61
+ * Homebrew install simplified now that fresh-editor is in homebrew-core — `brew install fresh-editor`, no tap step.
62
+
63
+ ### Bug Fixes
64
+
65
+ * Plugin `getCursorLine()` now returns the real cursor line instead of `0` (#2076, reported by @pmburov).
66
+ * **Reduced serial-console lag** by not repainting on non-visual plugin async events (#2100, reported by @jetpax).
67
+ * **Custom theme colours** no longer silently ignored for many UI fields (#2080, contributed by @flexiondotorg; reported in #2079).
68
+ * `PageDown`/`PageUp` no longer overshoot on a single soft-wrapped line (#2085).
69
+ * **Workspace restore** no longer mixes tabs from multiple projects in one window (#2056, reported by @mandolyte).
70
+ * **Live Grep**: *Resume* keeps the query and opens the selected result; overlay preview and input-box undo/redo corrected; Buffers scope finds unmodified open buffers; non-file-scope previews and read-only data-dir files fixed.
71
+ * `getKeybindingLabel` resolves correctly for bound plugin actions.
72
+
73
+ ### Internal
74
+
75
+ * Major window refactor: window-scoped save/restore (`Window::from_workspace`), `WindowId`-parameterized persistence, `working_dir` derived from the active window, and `open_file`/LSP/watch helpers moved onto `Window`.
76
+ * Orchestrator bring-up characterization tests and fixtures across persistence layouts.
77
+ * Serial-console lag benchmark/diagnostic scripts; theme-key resolver schema-drift guard.
78
+ * Internal docs excluded from the public docs build.
79
+
3
80
  ## 0.3.8
4
81
 
5
82
  ### Features / Improvements
package/README.md CHANGED
@@ -84,7 +84,6 @@ On macOS and some linux distros (Bazzite/Bluefin/Aurora):
84
84
  > **Note:** On macOS, see [macOS Terminal Tips](https://getfresh.dev/docs/configuration/keyboard#macos-terminal-tips) for recommended terminal configuration.
85
85
 
86
86
  ```bash
87
- brew tap sinelaw/fresh
88
87
  brew install fresh-editor
89
88
  ```
90
89
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fresh-editor/fresh-editor",
3
- "version": "0.3.8",
3
+ "version": "0.3.10",
4
4
  "description": "A modern terminal-based text editor with plugin support",
5
5
  "repository": {
6
6
  "type": "git",
@@ -537,7 +537,12 @@ function parseDiffOutput(stdout: string, gitStatus: 'staged' | 'unstaged' | 'unt
537
537
  };
538
538
  hunks.push(currentHunk);
539
539
  }
540
- } else if (currentHunk && (line.startsWith('+') || line.startsWith('-') || line.startsWith(' '))) {
540
+ } else if (currentHunk && (line.startsWith('+') || line.startsWith('-') || line.startsWith(' ') || line.startsWith('\\'))) {
541
+ // Keep the "" marker (starts with
542
+ // a backslash) so buildHunkPatch can reproduce the exact
543
+ // end-of-file newline state; without it git refuses to apply
544
+ // the reconstructed patch (e.g. discarding a hunk that adds an
545
+ // unterminated final line).
541
546
  if (!line.startsWith('---') && !line.startsWith('+++')) {
542
547
  currentHunk.lines.push(line);
543
548
  }
@@ -921,6 +926,21 @@ function buildDiffLines(_rightWidth: number): DiffLine[] {
921
926
  // Diff content lines with word-level highlighting for adjacent -/+ pairs
922
927
  for (let li = 0; li < hunk.lines.length; li++) {
923
928
  const line = hunk.lines[li];
929
+ if (line[0] === '\\') {
930
+ // "": informational marker, not a
931
+ // real line. Render it dim with no line numbers and don't
932
+ // advance the line counters. It still occupies exactly one
933
+ // row so hunk.lines stays 1:1 with displayed rows (which
934
+ // selectionLineRange relies on).
935
+ lines.push({
936
+ text: line, type: 'context',
937
+ hunkId: hunk.id, file: hunk.file,
938
+ lineType: 'context', oldLine: undefined, newLine: undefined,
939
+ lineContent: line,
940
+ style: { fg: STYLE_LINE_NUM_FG },
941
+ });
942
+ continue;
943
+ }
924
944
  const nextLine = hunk.lines[li + 1];
925
945
  const prefix = line[0];
926
946
  const lineType: 'add' | 'remove' | 'context' =
@@ -2209,20 +2229,32 @@ function buildHunkPatch(filePath: string, hunk: Hunk, lineRange?: { start: numbe
2209
2229
  const filtered: string[] = [];
2210
2230
  let oldCount = 0;
2211
2231
  let newCount = 0;
2232
+ // Whether the preceding diff line produced output. A trailing
2233
+ // "" marker annotates the line just above
2234
+ // it, so it is only meaningful when that line was kept.
2235
+ let lastEmitted = false;
2212
2236
 
2213
2237
  for (let i = 0; i < hunk.lines.length; i++) {
2214
2238
  const line = hunk.lines[i];
2215
2239
  const ch = line[0];
2240
+ if (ch === '\\') {
2241
+ // "": travels with its annotated
2242
+ // line and never counts toward the @@ line totals.
2243
+ if (lastEmitted) filtered.push(line);
2244
+ continue;
2245
+ }
2216
2246
  const inRange = !lineRange || (i >= lineRange.start && i <= lineRange.end);
2217
2247
  if (ch === '+') {
2218
2248
  if (inRange) {
2219
2249
  filtered.push(line);
2220
2250
  newCount++;
2251
+ lastEmitted = true;
2221
2252
  } else {
2222
2253
  // An out-of-range '+' line means: this addition isn't being
2223
2254
  // applied, so it shouldn't appear in either side. Drop it
2224
2255
  // entirely (don't convert to context — there's nothing to
2225
2256
  // match in the source file).
2257
+ lastEmitted = false;
2226
2258
  }
2227
2259
  } else if (ch === '-') {
2228
2260
  if (inRange) {
@@ -2235,10 +2267,12 @@ function buildHunkPatch(filePath: string, hunk: Hunk, lineRange?: { start: numbe
2235
2267
  oldCount++;
2236
2268
  newCount++;
2237
2269
  }
2270
+ lastEmitted = true;
2238
2271
  } else {
2239
2272
  filtered.push(line);
2240
2273
  oldCount++;
2241
2274
  newCount++;
2275
+ lastEmitted = true;
2242
2276
  }
2243
2277
  }
2244
2278
 
@@ -161,7 +161,8 @@
161
161
  "$ref": "#/$defs/TerminalConfig",
162
162
  "default": {
163
163
  "jump_to_end_on_output": true,
164
- "shell": null
164
+ "shell": null,
165
+ "skip_app_execution_alias": true
165
166
  }
166
167
  },
167
168
  "keybindings": {
@@ -1048,6 +1049,11 @@
1048
1049
  }
1049
1050
  ],
1050
1051
  "default": null
1052
+ },
1053
+ "skip_app_execution_alias": {
1054
+ "description": "Workaround for fresh#2077: when auto-detecting a shell on Windows,\nskip Microsoft Store **App Execution Alias** stubs (zero-byte\n`APPEXECLINK` reparse points under `%LOCALAPPDATA%\\Microsoft\\WindowsApps`).\nSpawning such a stub through ConPTY has been reported to crash with\n`0xc0000142` (STATUS_DLL_INIT_FAILED) on Windows 11 23H2.\n\nDefault `true`. Set to `false` to launch whatever `pwsh.exe`\nappears first on `PATH`, including the Store alias — useful if you\nwant the old behavior, or if you've confirmed the alias works on\nyour Windows build. No effect on non-Windows platforms or when\n`terminal.shell` is set explicitly.",
1055
+ "type": "boolean",
1056
+ "default": true
1051
1057
  }
1052
1058
  }
1053
1059
  },
@@ -1452,9 +1458,9 @@
1452
1458
  "x-order": 4
1453
1459
  },
1454
1460
  "auto_start": {
1455
- "description": "Whether to auto-start this LSP server when opening matching files\nIf false (default), the server must be started manually via command palette",
1461
+ "description": "Whether to auto-start this LSP server when opening matching files.\nDefaults to true: a server you configure is normally one you want\nused, so it starts on the next matching file open. Set to false to\nrequire a manual start via the command palette.",
1456
1462
  "type": "boolean",
1457
- "default": false,
1463
+ "default": true,
1458
1464
  "x-order": 5
1459
1465
  },
1460
1466
  "root_markers": {
@@ -16,7 +16,7 @@ const editor = getEditor();
16
16
  // it is never loaded, so no buffers are created, no timers run,
17
17
  // and no network fetches fire.
18
18
  //
19
- // A second flag `plugins.dashboard.auto-open` (default true) gates
19
+ // A second flag `plugins.dashboard.auto-open` (default false) gates
20
20
  // only the ambient open paths (startup + last-buffer-closed). When
21
21
  // false the plugin still loads and the "Show Dashboard" command is
22
22
  // still available — it just won't appear on its own.
@@ -1590,7 +1590,7 @@ registerHandler("dashboardShowOrFocus", dashboardShowOrFocus);
1590
1590
  // comes from the typed plugin-config field declared below. The field
1591
1591
  // shows up in the Settings UI under "Plugin Settings → dashboard".
1592
1592
  editor.defineConfigBoolean("autoOpen", {
1593
- default: true,
1593
+ default: false,
1594
1594
  description: "Show the dashboard automatically when Fresh starts with no real files open.",
1595
1595
  });
1596
1596
 
@@ -1599,7 +1599,7 @@ let autoOpenOverride: boolean | null = null;
1599
1599
  function autoOpenEnabled(): boolean {
1600
1600
  if (autoOpenOverride !== null) return autoOpenOverride;
1601
1601
  const cfg = (editor.getPluginConfig() ?? {}) as { autoOpen?: boolean };
1602
- return cfg.autoOpen !== false;
1602
+ return cfg.autoOpen === true;
1603
1603
  }
1604
1604
 
1605
1605
  function shouldShowDashboard(): boolean {
@@ -130,6 +130,16 @@ const finder = new Finder<DiagnosticItem>(editor, {
130
130
  // the shared Utility Dock so it shares space with Quickfix,
131
131
  // search-replace results, etc. See issue #1796.
132
132
  useUtilityDock: true,
133
+ // Keys advertised in the panel's status hint
134
+ // ("a: toggle filter | RET: goto | q: close"). RET/Esc are bound by
135
+ // the Finder itself; these wire up the diagnostics-specific actions
136
+ // so they no longer fall through to the read-only text layer and
137
+ // trip "Editing disabled in this buffer" (issue #2125).
138
+ panelKeys: [
139
+ ["q", "diagnostics_close"],
140
+ ["a", "diagnostics_toggle_all"],
141
+ ["r", "diagnostics_refresh"],
142
+ ],
133
143
  onClose: () => {
134
144
  isOpen = false;
135
145
  sourceBufferId = null;
@@ -0,0 +1,338 @@
1
+ {
2
+ "en": {
3
+ "cmd.activate": "Env: Activate Detected Environment (venv / direnv / mise)",
4
+ "cmd.activate_desc": "Detect and activate the project environment so language servers and spawned processes inherit it",
5
+ "cmd.reload": "Env: Reload Environment (re-capture after .envrc/mise.toml change)",
6
+ "cmd.reload_desc": "Re-capture the environment after .envrc or mise.toml changes and restart affected processes",
7
+ "cmd.use_system": "Env: Use System (Deactivate Environment)",
8
+ "cmd.use_system_desc": "Deactivate the project environment and use the system environment for new processes",
9
+ "cmd.status": "Env: Show Environment Status",
10
+ "cmd.status_desc": "Show which environment manager is detected and whether it is active",
11
+ "status.not_trusted": "Workspace not trusted — run \"Workspace Trust: Trust This Folder\" to activate the environment",
12
+ "status.no_env_detected": "No environment manager detected in this project",
13
+ "status.activating": "Activating %{name} environment…",
14
+ "status.reloading": "Reloading %{name} environment…",
15
+ "status.deactivated": "Environment deactivated — using the system environment",
16
+ "status.env_active": "Environment active",
17
+ "status.env_active_named": "Environment active (%{name})",
18
+ "status.env_detected": "Detected %{name} (trust: %{trust}). Run \"Env: Activate\" to use it.",
19
+ "status.no_env": "No environment detected (trust: %{trust})",
20
+ "statusbar.label": "Environment",
21
+ "statusbar.locked": "%{name} (locked)",
22
+ "statusbar.active": "%{name} ✓",
23
+ "statusbar.active_unknown": "active",
24
+ "statusbar.system": "system"
25
+ },
26
+ "cs": {
27
+ "cmd.activate": "Prostředí: Aktivovat zjištěné prostředí (venv / direnv / mise)",
28
+ "cmd.activate_desc": "Zjistit a aktivovat prostředí projektu, aby ho zdědily jazykové servery a spuštěné procesy",
29
+ "cmd.reload": "Prostředí: Znovu načíst prostředí (po změně .envrc/mise.toml)",
30
+ "cmd.reload_desc": "Znovu načíst prostředí po změně .envrc nebo mise.toml a restartovat ovlivněné procesy",
31
+ "cmd.use_system": "Prostředí: Použít systémové (Deaktivovat prostředí)",
32
+ "cmd.use_system_desc": "Deaktivovat prostředí projektu a používat pro nové procesy systémové prostředí",
33
+ "cmd.status": "Prostředí: Zobrazit stav prostředí",
34
+ "cmd.status_desc": "Zobrazit, jaký správce prostředí byl zjištěn a zda je aktivní",
35
+ "status.not_trusted": "Pracovní prostor není důvěryhodný — spusťte „Důvěra k pracovnímu prostoru: Důvěřovat této složce“ pro aktivaci prostředí",
36
+ "status.no_env_detected": "V tomto projektu nebyl zjištěn žádný správce prostředí",
37
+ "status.activating": "Aktivuji prostředí %{name}…",
38
+ "status.reloading": "Znovu načítám prostředí %{name}…",
39
+ "status.deactivated": "Prostředí deaktivováno — používám systémové prostředí",
40
+ "status.env_active": "Prostředí je aktivní",
41
+ "status.env_active_named": "Prostředí je aktivní (%{name})",
42
+ "status.env_detected": "Zjištěno %{name} (důvěra: %{trust}). Spusťte „Prostředí: Aktivovat“ pro použití.",
43
+ "status.no_env": "Nebylo zjištěno žádné prostředí (důvěra: %{trust})",
44
+ "statusbar.label": "Prostředí",
45
+ "statusbar.locked": "%{name} (uzamčeno)",
46
+ "statusbar.active": "%{name} ✓",
47
+ "statusbar.active_unknown": "aktivní",
48
+ "statusbar.system": "systém"
49
+ },
50
+ "de": {
51
+ "cmd.activate": "Umgebung: Erkannte Umgebung aktivieren (venv / direnv / mise)",
52
+ "cmd.activate_desc": "Projektumgebung erkennen und aktivieren, damit Sprachserver und gestartete Prozesse sie erben",
53
+ "cmd.reload": "Umgebung: Umgebung neu laden (nach Änderung an .envrc/mise.toml)",
54
+ "cmd.reload_desc": "Umgebung nach Änderungen an .envrc oder mise.toml neu erfassen und betroffene Prozesse neu starten",
55
+ "cmd.use_system": "Umgebung: System verwenden (Umgebung deaktivieren)",
56
+ "cmd.use_system_desc": "Projektumgebung deaktivieren und für neue Prozesse die Systemumgebung verwenden",
57
+ "cmd.status": "Umgebung: Status anzeigen",
58
+ "cmd.status_desc": "Anzeigen, welcher Umgebungsmanager erkannt wurde und ob er aktiv ist",
59
+ "status.not_trusted": "Arbeitsbereich nicht vertrauenswürdig — führen Sie „Arbeitsbereich-Vertrauen: Diesem Ordner vertrauen“ aus, um die Umgebung zu aktivieren",
60
+ "status.no_env_detected": "In diesem Projekt wurde kein Umgebungsmanager erkannt",
61
+ "status.activating": "Aktiviere Umgebung %{name}…",
62
+ "status.reloading": "Lade Umgebung %{name} neu…",
63
+ "status.deactivated": "Umgebung deaktiviert — verwende die Systemumgebung",
64
+ "status.env_active": "Umgebung aktiv",
65
+ "status.env_active_named": "Umgebung aktiv (%{name})",
66
+ "status.env_detected": "%{name} erkannt (Vertrauen: %{trust}). Führen Sie „Umgebung: Aktivieren“ aus, um sie zu verwenden.",
67
+ "status.no_env": "Keine Umgebung erkannt (Vertrauen: %{trust})",
68
+ "statusbar.label": "Umgebung",
69
+ "statusbar.locked": "%{name} (gesperrt)",
70
+ "statusbar.active": "%{name} ✓",
71
+ "statusbar.active_unknown": "aktiv",
72
+ "statusbar.system": "System"
73
+ },
74
+ "es": {
75
+ "cmd.activate": "Entorno: Activar entorno detectado (venv / direnv / mise)",
76
+ "cmd.activate_desc": "Detectar y activar el entorno del proyecto para que los servidores de lenguaje y procesos lanzados lo hereden",
77
+ "cmd.reload": "Entorno: Recargar entorno (re-capturar tras cambios en .envrc/mise.toml)",
78
+ "cmd.reload_desc": "Volver a capturar el entorno tras cambios en .envrc o mise.toml y reiniciar los procesos afectados",
79
+ "cmd.use_system": "Entorno: Usar sistema (desactivar entorno)",
80
+ "cmd.use_system_desc": "Desactivar el entorno del proyecto y usar el entorno del sistema para nuevos procesos",
81
+ "cmd.status": "Entorno: Mostrar estado del entorno",
82
+ "cmd.status_desc": "Mostrar qué gestor de entorno se ha detectado y si está activo",
83
+ "status.not_trusted": "Espacio de trabajo no confiable — ejecuta «Confianza del espacio de trabajo: Confiar en esta carpeta» para activar el entorno",
84
+ "status.no_env_detected": "No se detectó ningún gestor de entorno en este proyecto",
85
+ "status.activating": "Activando entorno %{name}…",
86
+ "status.reloading": "Recargando entorno %{name}…",
87
+ "status.deactivated": "Entorno desactivado — usando el entorno del sistema",
88
+ "status.env_active": "Entorno activo",
89
+ "status.env_active_named": "Entorno activo (%{name})",
90
+ "status.env_detected": "Detectado %{name} (confianza: %{trust}). Ejecuta «Entorno: Activar» para usarlo.",
91
+ "status.no_env": "No se detectó ningún entorno (confianza: %{trust})",
92
+ "statusbar.label": "Entorno",
93
+ "statusbar.locked": "%{name} (bloqueado)",
94
+ "statusbar.active": "%{name} ✓",
95
+ "statusbar.active_unknown": "activo",
96
+ "statusbar.system": "sistema"
97
+ },
98
+ "fr": {
99
+ "cmd.activate": "Env : Activer l'environnement détecté (venv / direnv / mise)",
100
+ "cmd.activate_desc": "Détecter et activer l'environnement du projet pour que les serveurs de langage et les processus lancés en héritent",
101
+ "cmd.reload": "Env : Recharger l'environnement (re-capturer après modification de .envrc/mise.toml)",
102
+ "cmd.reload_desc": "Re-capturer l'environnement après modification de .envrc ou mise.toml et redémarrer les processus concernés",
103
+ "cmd.use_system": "Env : Utiliser le système (désactiver l'environnement)",
104
+ "cmd.use_system_desc": "Désactiver l'environnement du projet et utiliser l'environnement système pour les nouveaux processus",
105
+ "cmd.status": "Env : Afficher l'état de l'environnement",
106
+ "cmd.status_desc": "Afficher quel gestionnaire d'environnement est détecté et s'il est actif",
107
+ "status.not_trusted": "Espace de travail non approuvé — exécutez « Confiance de l'espace de travail : Approuver ce dossier » pour activer l'environnement",
108
+ "status.no_env_detected": "Aucun gestionnaire d'environnement détecté dans ce projet",
109
+ "status.activating": "Activation de l'environnement %{name}…",
110
+ "status.reloading": "Rechargement de l'environnement %{name}…",
111
+ "status.deactivated": "Environnement désactivé — utilisation de l'environnement système",
112
+ "status.env_active": "Environnement actif",
113
+ "status.env_active_named": "Environnement actif (%{name})",
114
+ "status.env_detected": "%{name} détecté (confiance : %{trust}). Exécutez « Env : Activer » pour l'utiliser.",
115
+ "status.no_env": "Aucun environnement détecté (confiance : %{trust})",
116
+ "statusbar.label": "Environnement",
117
+ "statusbar.locked": "%{name} (verrouillé)",
118
+ "statusbar.active": "%{name} ✓",
119
+ "statusbar.active_unknown": "actif",
120
+ "statusbar.system": "système"
121
+ },
122
+ "it": {
123
+ "cmd.activate": "Ambiente: Attiva ambiente rilevato (venv / direnv / mise)",
124
+ "cmd.activate_desc": "Rilevare e attivare l'ambiente del progetto affinché i server di linguaggio e i processi avviati lo ereditino",
125
+ "cmd.reload": "Ambiente: Ricarica ambiente (ricattura dopo modifiche a .envrc/mise.toml)",
126
+ "cmd.reload_desc": "Ricatturare l'ambiente dopo modifiche a .envrc o mise.toml e riavviare i processi interessati",
127
+ "cmd.use_system": "Ambiente: Usa sistema (disattiva ambiente)",
128
+ "cmd.use_system_desc": "Disattivare l'ambiente del progetto e usare l'ambiente di sistema per i nuovi processi",
129
+ "cmd.status": "Ambiente: Mostra stato ambiente",
130
+ "cmd.status_desc": "Mostra quale gestore d'ambiente è stato rilevato e se è attivo",
131
+ "status.not_trusted": "Spazio di lavoro non fidato — esegui «Fiducia spazio di lavoro: Fidati di questa cartella» per attivare l'ambiente",
132
+ "status.no_env_detected": "Nessun gestore d'ambiente rilevato in questo progetto",
133
+ "status.activating": "Attivazione ambiente %{name}…",
134
+ "status.reloading": "Ricaricamento ambiente %{name}…",
135
+ "status.deactivated": "Ambiente disattivato — uso l'ambiente di sistema",
136
+ "status.env_active": "Ambiente attivo",
137
+ "status.env_active_named": "Ambiente attivo (%{name})",
138
+ "status.env_detected": "Rilevato %{name} (fiducia: %{trust}). Esegui «Ambiente: Attiva» per usarlo.",
139
+ "status.no_env": "Nessun ambiente rilevato (fiducia: %{trust})",
140
+ "statusbar.label": "Ambiente",
141
+ "statusbar.locked": "%{name} (bloccato)",
142
+ "statusbar.active": "%{name} ✓",
143
+ "statusbar.active_unknown": "attivo",
144
+ "statusbar.system": "sistema"
145
+ },
146
+ "ja": {
147
+ "cmd.activate": "環境: 検出した環境を有効化 (venv / direnv / mise)",
148
+ "cmd.activate_desc": "プロジェクト環境を検出して有効化し、言語サーバーや起動プロセスに継承させます",
149
+ "cmd.reload": "環境: 環境を再読み込み (.envrc/mise.toml の変更後に再取得)",
150
+ "cmd.reload_desc": ".envrc や mise.toml の変更後に環境を再取得し、影響するプロセスを再起動します",
151
+ "cmd.use_system": "環境: システムを使用 (環境を無効化)",
152
+ "cmd.use_system_desc": "プロジェクト環境を無効化し、新しいプロセスではシステム環境を使用します",
153
+ "cmd.status": "環境: 環境の状態を表示",
154
+ "cmd.status_desc": "検出された環境マネージャーと、それが有効かどうかを表示します",
155
+ "status.not_trusted": "ワークスペースが信頼されていません — 「ワークスペースの信頼: このフォルダを信頼」を実行して環境を有効化してください",
156
+ "status.no_env_detected": "このプロジェクトでは環境マネージャーが検出されませんでした",
157
+ "status.activating": "%{name} 環境を有効化中…",
158
+ "status.reloading": "%{name} 環境を再読み込み中…",
159
+ "status.deactivated": "環境を無効化しました — システム環境を使用します",
160
+ "status.env_active": "環境が有効",
161
+ "status.env_active_named": "環境が有効 (%{name})",
162
+ "status.env_detected": "%{name} を検出 (信頼: %{trust})。「環境: 有効化」を実行して使用してください。",
163
+ "status.no_env": "環境が検出されません (信頼: %{trust})",
164
+ "statusbar.label": "環境",
165
+ "statusbar.locked": "%{name} (ロック中)",
166
+ "statusbar.active": "%{name} ✓",
167
+ "statusbar.active_unknown": "有効",
168
+ "statusbar.system": "システム"
169
+ },
170
+ "ko": {
171
+ "cmd.activate": "환경: 감지된 환경 활성화 (venv / direnv / mise)",
172
+ "cmd.activate_desc": "프로젝트 환경을 감지하고 활성화하여 언어 서버와 실행된 프로세스가 상속하도록 합니다",
173
+ "cmd.reload": "환경: 환경 다시 로드 (.envrc/mise.toml 변경 후 재캡처)",
174
+ "cmd.reload_desc": ".envrc 또는 mise.toml 변경 후 환경을 다시 캡처하고 영향을 받는 프로세스를 재시작합니다",
175
+ "cmd.use_system": "환경: 시스템 사용 (환경 비활성화)",
176
+ "cmd.use_system_desc": "프로젝트 환경을 비활성화하고 새 프로세스에 시스템 환경을 사용합니다",
177
+ "cmd.status": "환경: 환경 상태 표시",
178
+ "cmd.status_desc": "감지된 환경 관리자와 활성화 여부를 표시합니다",
179
+ "status.not_trusted": "워크스페이스가 신뢰되지 않음 — \"워크스페이스 신뢰: 이 폴더 신뢰\"를 실행하여 환경을 활성화하세요",
180
+ "status.no_env_detected": "이 프로젝트에서 환경 관리자가 감지되지 않았습니다",
181
+ "status.activating": "%{name} 환경 활성화 중…",
182
+ "status.reloading": "%{name} 환경 다시 로드 중…",
183
+ "status.deactivated": "환경 비활성화됨 — 시스템 환경 사용",
184
+ "status.env_active": "환경 활성화됨",
185
+ "status.env_active_named": "환경 활성화됨 (%{name})",
186
+ "status.env_detected": "%{name} 감지됨 (신뢰: %{trust}). \"환경: 활성화\"를 실행하여 사용하세요.",
187
+ "status.no_env": "환경이 감지되지 않음 (신뢰: %{trust})",
188
+ "statusbar.label": "환경",
189
+ "statusbar.locked": "%{name} (잠김)",
190
+ "statusbar.active": "%{name} ✓",
191
+ "statusbar.active_unknown": "활성",
192
+ "statusbar.system": "시스템"
193
+ },
194
+ "pt-BR": {
195
+ "cmd.activate": "Ambiente: Ativar ambiente detectado (venv / direnv / mise)",
196
+ "cmd.activate_desc": "Detectar e ativar o ambiente do projeto para que servidores de linguagem e processos iniciados o herdem",
197
+ "cmd.reload": "Ambiente: Recarregar ambiente (re-capturar após alterações em .envrc/mise.toml)",
198
+ "cmd.reload_desc": "Recapturar o ambiente após alterações em .envrc ou mise.toml e reiniciar os processos afetados",
199
+ "cmd.use_system": "Ambiente: Usar sistema (Desativar ambiente)",
200
+ "cmd.use_system_desc": "Desativar o ambiente do projeto e usar o ambiente do sistema para novos processos",
201
+ "cmd.status": "Ambiente: Mostrar status do ambiente",
202
+ "cmd.status_desc": "Mostrar qual gerenciador de ambiente foi detectado e se está ativo",
203
+ "status.not_trusted": "Espaço de trabalho não confiável — execute \"Confiança do espaço de trabalho: Confiar nesta pasta\" para ativar o ambiente",
204
+ "status.no_env_detected": "Nenhum gerenciador de ambiente detectado neste projeto",
205
+ "status.activating": "Ativando ambiente %{name}…",
206
+ "status.reloading": "Recarregando ambiente %{name}…",
207
+ "status.deactivated": "Ambiente desativado — usando o ambiente do sistema",
208
+ "status.env_active": "Ambiente ativo",
209
+ "status.env_active_named": "Ambiente ativo (%{name})",
210
+ "status.env_detected": "Detectado %{name} (confiança: %{trust}). Execute \"Ambiente: Ativar\" para usá-lo.",
211
+ "status.no_env": "Nenhum ambiente detectado (confiança: %{trust})",
212
+ "statusbar.label": "Ambiente",
213
+ "statusbar.locked": "%{name} (bloqueado)",
214
+ "statusbar.active": "%{name} ✓",
215
+ "statusbar.active_unknown": "ativo",
216
+ "statusbar.system": "sistema"
217
+ },
218
+ "ru": {
219
+ "cmd.activate": "Окружение: Активировать обнаруженное окружение (venv / direnv / mise)",
220
+ "cmd.activate_desc": "Обнаружить и активировать окружение проекта, чтобы языковые серверы и запускаемые процессы его наследовали",
221
+ "cmd.reload": "Окружение: Перезагрузить окружение (повторный захват после изменения .envrc/mise.toml)",
222
+ "cmd.reload_desc": "Повторно захватить окружение после изменения .envrc или mise.toml и перезапустить затронутые процессы",
223
+ "cmd.use_system": "Окружение: Использовать системное (деактивировать окружение)",
224
+ "cmd.use_system_desc": "Деактивировать окружение проекта и использовать системное окружение для новых процессов",
225
+ "cmd.status": "Окружение: Показать состояние окружения",
226
+ "cmd.status_desc": "Показать, какой менеджер окружения обнаружен и активен ли он",
227
+ "status.not_trusted": "Рабочая область не доверенная — выполните «Доверие рабочей области: Доверять этой папке», чтобы активировать окружение",
228
+ "status.no_env_detected": "В этом проекте не обнаружен менеджер окружения",
229
+ "status.activating": "Активация окружения %{name}…",
230
+ "status.reloading": "Перезагрузка окружения %{name}…",
231
+ "status.deactivated": "Окружение деактивировано — используется системное окружение",
232
+ "status.env_active": "Окружение активно",
233
+ "status.env_active_named": "Окружение активно (%{name})",
234
+ "status.env_detected": "Обнаружено %{name} (доверие: %{trust}). Выполните «Окружение: Активировать», чтобы использовать.",
235
+ "status.no_env": "Окружение не обнаружено (доверие: %{trust})",
236
+ "statusbar.label": "Окружение",
237
+ "statusbar.locked": "%{name} (заблокировано)",
238
+ "statusbar.active": "%{name} ✓",
239
+ "statusbar.active_unknown": "активно",
240
+ "statusbar.system": "система"
241
+ },
242
+ "th": {
243
+ "cmd.activate": "สภาพแวดล้อม: เปิดใช้สภาพแวดล้อมที่ตรวจพบ (venv / direnv / mise)",
244
+ "cmd.activate_desc": "ตรวจหาและเปิดใช้สภาพแวดล้อมของโปรเจกต์ เพื่อให้ language server และโพรเซสที่เปิดสืบทอด",
245
+ "cmd.reload": "สภาพแวดล้อม: โหลดสภาพแวดล้อมใหม่ (จับใหม่หลัง .envrc/mise.toml เปลี่ยน)",
246
+ "cmd.reload_desc": "จับสภาพแวดล้อมใหม่หลังการเปลี่ยนแปลง .envrc หรือ mise.toml และรีสตาร์ทโพรเซสที่เกี่ยวข้อง",
247
+ "cmd.use_system": "สภาพแวดล้อม: ใช้ของระบบ (ปิดสภาพแวดล้อม)",
248
+ "cmd.use_system_desc": "ปิดสภาพแวดล้อมของโปรเจกต์ และใช้สภาพแวดล้อมระบบสำหรับโพรเซสใหม่",
249
+ "cmd.status": "สภาพแวดล้อม: แสดงสถานะสภาพแวดล้อม",
250
+ "cmd.status_desc": "แสดงตัวจัดการสภาพแวดล้อมที่ตรวจพบและสถานะการใช้งาน",
251
+ "status.not_trusted": "พื้นที่ทำงานไม่ได้รับความเชื่อถือ — เรียก \"ความเชื่อถือพื้นที่ทำงาน: เชื่อถือโฟลเดอร์นี้\" เพื่อเปิดใช้สภาพแวดล้อม",
252
+ "status.no_env_detected": "ไม่พบตัวจัดการสภาพแวดล้อมในโปรเจกต์นี้",
253
+ "status.activating": "กำลังเปิดใช้สภาพแวดล้อม %{name}…",
254
+ "status.reloading": "กำลังโหลดสภาพแวดล้อม %{name} ใหม่…",
255
+ "status.deactivated": "ปิดสภาพแวดล้อมแล้ว — กำลังใช้สภาพแวดล้อมระบบ",
256
+ "status.env_active": "สภาพแวดล้อมเปิดใช้งาน",
257
+ "status.env_active_named": "สภาพแวดล้อมเปิดใช้งาน (%{name})",
258
+ "status.env_detected": "พบ %{name} (ความเชื่อถือ: %{trust}) เรียก \"สภาพแวดล้อม: เปิดใช้\" เพื่อใช้งาน",
259
+ "status.no_env": "ไม่พบสภาพแวดล้อม (ความเชื่อถือ: %{trust})",
260
+ "statusbar.label": "สภาพแวดล้อม",
261
+ "statusbar.locked": "%{name} (ล็อก)",
262
+ "statusbar.active": "%{name} ✓",
263
+ "statusbar.active_unknown": "ใช้งาน",
264
+ "statusbar.system": "ระบบ"
265
+ },
266
+ "uk": {
267
+ "cmd.activate": "Середовище: Активувати виявлене середовище (venv / direnv / mise)",
268
+ "cmd.activate_desc": "Виявити та активувати середовище проєкту, щоб мовні сервери та запущені процеси його успадковували",
269
+ "cmd.reload": "Середовище: Перезавантажити середовище (повторно захопити після зміни .envrc/mise.toml)",
270
+ "cmd.reload_desc": "Повторно захопити середовище після зміни .envrc або mise.toml і перезапустити уражені процеси",
271
+ "cmd.use_system": "Середовище: Використати системне (деактивувати середовище)",
272
+ "cmd.use_system_desc": "Деактивувати середовище проєкту та використовувати системне для нових процесів",
273
+ "cmd.status": "Середовище: Показати стан середовища",
274
+ "cmd.status_desc": "Показати, який менеджер середовища виявлено та чи активний він",
275
+ "status.not_trusted": "Робочу область не довірено — виконайте «Довіра робочій області: Довіряти цій теці», щоб активувати середовище",
276
+ "status.no_env_detected": "У цьому проєкті не виявлено менеджера середовища",
277
+ "status.activating": "Активую середовище %{name}…",
278
+ "status.reloading": "Перезавантажую середовище %{name}…",
279
+ "status.deactivated": "Середовище деактивовано — використовується системне середовище",
280
+ "status.env_active": "Середовище активне",
281
+ "status.env_active_named": "Середовище активне (%{name})",
282
+ "status.env_detected": "Виявлено %{name} (довіра: %{trust}). Виконайте «Середовище: Активувати», щоб скористатись.",
283
+ "status.no_env": "Середовище не виявлено (довіра: %{trust})",
284
+ "statusbar.label": "Середовище",
285
+ "statusbar.locked": "%{name} (заблоковано)",
286
+ "statusbar.active": "%{name} ✓",
287
+ "statusbar.active_unknown": "активне",
288
+ "statusbar.system": "система"
289
+ },
290
+ "vi": {
291
+ "cmd.activate": "Môi trường: Kích hoạt môi trường đã phát hiện (venv / direnv / mise)",
292
+ "cmd.activate_desc": "Phát hiện và kích hoạt môi trường dự án để các language server và tiến trình được khởi chạy kế thừa",
293
+ "cmd.reload": "Môi trường: Tải lại môi trường (chụp lại sau khi .envrc/mise.toml thay đổi)",
294
+ "cmd.reload_desc": "Chụp lại môi trường sau khi .envrc hoặc mise.toml thay đổi và khởi động lại các tiến trình bị ảnh hưởng",
295
+ "cmd.use_system": "Môi trường: Dùng hệ thống (Vô hiệu hoá môi trường)",
296
+ "cmd.use_system_desc": "Vô hiệu hoá môi trường dự án và dùng môi trường hệ thống cho tiến trình mới",
297
+ "cmd.status": "Môi trường: Hiển thị trạng thái môi trường",
298
+ "cmd.status_desc": "Hiển thị trình quản lý môi trường nào được phát hiện và đang hoạt động hay không",
299
+ "status.not_trusted": "Không gian làm việc không tin cậy — chạy \"Tin cậy không gian làm việc: Tin cậy thư mục này\" để kích hoạt môi trường",
300
+ "status.no_env_detected": "Không phát hiện trình quản lý môi trường trong dự án này",
301
+ "status.activating": "Đang kích hoạt môi trường %{name}…",
302
+ "status.reloading": "Đang tải lại môi trường %{name}…",
303
+ "status.deactivated": "Đã vô hiệu hoá môi trường — đang dùng môi trường hệ thống",
304
+ "status.env_active": "Môi trường đang hoạt động",
305
+ "status.env_active_named": "Môi trường đang hoạt động (%{name})",
306
+ "status.env_detected": "Đã phát hiện %{name} (tin cậy: %{trust}). Chạy \"Môi trường: Kích hoạt\" để dùng.",
307
+ "status.no_env": "Không phát hiện môi trường (tin cậy: %{trust})",
308
+ "statusbar.label": "Môi trường",
309
+ "statusbar.locked": "%{name} (đã khoá)",
310
+ "statusbar.active": "%{name} ✓",
311
+ "statusbar.active_unknown": "đang hoạt động",
312
+ "statusbar.system": "hệ thống"
313
+ },
314
+ "zh-CN": {
315
+ "cmd.activate": "环境:激活检测到的环境(venv / direnv / mise)",
316
+ "cmd.activate_desc": "检测并激活项目环境,使语言服务器和启动的进程继承它",
317
+ "cmd.reload": "环境:重新加载环境(.envrc/mise.toml 更改后重新捕获)",
318
+ "cmd.reload_desc": "在 .envrc 或 mise.toml 变更后重新捕获环境,并重启受影响的进程",
319
+ "cmd.use_system": "环境:使用系统(停用环境)",
320
+ "cmd.use_system_desc": "停用项目环境,为新进程使用系统环境",
321
+ "cmd.status": "环境:显示环境状态",
322
+ "cmd.status_desc": "显示检测到的环境管理器及其是否处于激活状态",
323
+ "status.not_trusted": "工作区未受信任 — 运行 \"工作区信任:信任此文件夹\" 以激活环境",
324
+ "status.no_env_detected": "在此项目中未检测到环境管理器",
325
+ "status.activating": "正在激活 %{name} 环境…",
326
+ "status.reloading": "正在重新加载 %{name} 环境…",
327
+ "status.deactivated": "已停用环境 — 使用系统环境",
328
+ "status.env_active": "环境已激活",
329
+ "status.env_active_named": "环境已激活(%{name})",
330
+ "status.env_detected": "检测到 %{name}(信任:%{trust})。运行“环境:激活”以使用。",
331
+ "status.no_env": "未检测到环境(信任:%{trust})",
332
+ "statusbar.label": "环境",
333
+ "statusbar.locked": "%{name}(已锁定)",
334
+ "statusbar.active": "%{name} ✓",
335
+ "statusbar.active_unknown": "已激活",
336
+ "statusbar.system": "系统"
337
+ }
338
+ }