@fresh-editor/fresh-editor 0.1.87 → 0.1.90

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,74 @@
1
1
  # Release Notes
2
2
 
3
+ ## 0.1.90
4
+
5
+ ### Features
6
+
7
+ * **Package Manager**: Browse, install, and uninstall plugins, themes, and language packs from the [official registry](https://github.com/sinelaw/fresh-plugins-registry). Features search, package validation, background registry sync with local caching, and automatic theme reloading after install.
8
+ - **Language packs** bundle syntax highlighting (`.sublime-syntax`), language settings, and LSP server configuration
9
+ - Filter by package type: Plugins, Themes, Languages
10
+ - See [fresh-plugins](https://github.com/sinelaw/fresh-plugins) for example packages
11
+
12
+ * **Command Palette** (Ctrl+P): Unified prompt for navigating files, commands, buffers, and lines. Use prefix characters to switch modes:
13
+ - No prefix: fuzzy file finder
14
+ - `>` prefix: commands
15
+ - `#` prefix: switch open buffers by name
16
+ - `:` prefix: go to line number
17
+
18
+ Includes hints line showing available prefixes and Tab completion.
19
+
20
+ * **Status Message Log**: Click status bar messages to view full message history.
21
+
22
+ * **Package Scaffolding (`--init`)**: Create new plugin, theme, or language pack projects with `fresh --init`. Interactive wizard generates package.json, entry files, and proper directory structure.
23
+
24
+ * **Theme Schema**: JSON Schema for theme validation. Use `scripts/validate-theme.sh` or any JSON Schema validator.
25
+
26
+ ### Bug Fixes
27
+
28
+ * **Bracket Expansion**: Pressing Enter between matching brackets expands them with proper indentation (#629).
29
+ * **Ctrl+D Word Selection**: Ctrl+D selects the entire word when no selection exists.
30
+ * **Ctrl+Right Word Jump**: Ctrl+Right jumps to word end, matching Ctrl+Shift+Right behavior.
31
+ * **Alt+N/P Search**: Search invalidates when cursor moves manually, preventing stale matches.
32
+ * **Theme Fallback**: Falls back to default theme when configured theme is not found.
33
+ * **Cross-Platform Theme Paths**: Theme path handling works correctly on Windows.
34
+
35
+ ### Internal
36
+
37
+ * Moved calculator, color-highlighter, todo-highlighter plugins to external repository (installable via package manager).
38
+ * Moved catppuccin and xscriptor themes to external repository (installable via package manager).
39
+ * Added WASM feature flag for shared editor core modules.
40
+ * Italian translation update (#839).
41
+
42
+ ---
43
+
44
+ ## 0.1.88
45
+
46
+ ### Features
47
+
48
+ * **Status Bar Language Indicator**: Click the language name in the status bar to change syntax highlighting. Supports mouse wheel scrolling and type-to-filter.
49
+ * **VS Code-like Completion UX**: Debounced completion triggers, Tab accepts completion, uppercase letters work in type-to-filter.
50
+ * **Per-Language LSP Root URI**: LSP servers can now have per-language root URI detection. Includes automatic C# project root detection via `.csproj` files.
51
+ * **Settings UI Improvements**: Settings organized by topic sections, improved focus colors, search navigates to setting, better Map control navigation.
52
+
53
+ ### Bug Fixes
54
+
55
+ * **Tab Bar Mouse Events**: Fixed clicks on tabs not working when menu bar is hidden (#832).
56
+ * **LSP Deadlock**: Fixed deadlock when LSP server sends requests while client is awaiting a response.
57
+ * **LSP Root URI**: Include `root_uri` in LSP initialize params for server compatibility.
58
+ * **Terminal Scrollback**: Fixed race condition truncating terminal backing file when PTY already wrote content.
59
+ * **Plugin i18n**: Fixed placeholder format to use `%{variable}` syntax.
60
+ * **Settings UI**: Fixed confirm dialog mouse clicks/Tab navigation, dropdown option selection, search result navigation, and content bleeding into footer.
61
+
62
+ ### Packaging
63
+
64
+ * **Winget**: Added Windows Package Manager (winget) publishing to release pipeline.
65
+
66
+ ### Internal
67
+
68
+ * **FileSystem Trait**: New IO abstraction layer enabling different backends (local, remote, WASM). All filesystem operations now use injectable `FileSystem` trait.
69
+
70
+ ---
71
+
3
72
  ## 0.1.87
4
73
 
5
74
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fresh-editor/fresh-editor",
3
- "version": "0.1.87",
3
+ "version": "0.1.90",
4
4
  "description": "A modern terminal-based text editor with plugin support",
5
5
  "repository": {
6
6
  "type": "git",
@@ -557,19 +557,12 @@ async function updateReviewUI() {
557
557
 
558
558
  editor.clearNamespace(state.reviewBufferId, "review-diff");
559
559
  highlights.forEach((h) => {
560
- const bg = h.bg || [-1, -1, -1];
561
- // addOverlay signature: bufferId, namespace, start, end, r, g, b, underline, bold, italic, bg_r, bg_g, bg_b
562
- editor.addOverlay(
563
- state.reviewBufferId!,
564
- "review-diff",
565
- h.range[0],
566
- h.range[1],
567
- h.fg[0], h.fg[1], h.fg[2], // foreground color
568
- false, // underline
569
- h.bold || false, // bold
570
- h.italic || false, // italic
571
- bg[0], bg[1], bg[2] // background color
572
- );
560
+ editor.addOverlay(state.reviewBufferId!, "review-diff", h.range[0], h.range[1], {
561
+ fg: h.fg,
562
+ bg: h.bg,
563
+ bold: h.bold || false,
564
+ italic: h.italic || false,
565
+ });
573
566
  });
574
567
  }
575
568
  }
@@ -11,10 +11,10 @@
11
11
  "status.unsupported_file_type": "Clangd: unsupported file type for switch header",
12
12
  "status.opened_corresponding_file": "Clangd: opened corresponding file",
13
13
  "status.no_matching_found": "Clangd: no matching header/source found",
14
- "status.switch_failed": "Clangd switch source/header failed: {error}",
14
+ "status.switch_failed": "Clangd switch source/header failed: %{error}",
15
15
  "status.opened_config": "Opened .clangd configuration",
16
16
  "status.config_not_found": "Could not find .clangd configuration in workspace",
17
- "status.file_status": "Clangd file status: {status}"
17
+ "status.file_status": "Clangd file status: %{status}"
18
18
  },
19
19
  "cs": {
20
20
  "cmd.project_setup": "Clangd: Nastaveni projektu",
@@ -28,10 +28,10 @@
28
28
  "status.unsupported_file_type": "Clangd: nepodporovany typ souboru pro prepnuti hlavicky",
29
29
  "status.opened_corresponding_file": "Clangd: odpovidajici soubor otevren",
30
30
  "status.no_matching_found": "Clangd: nenalezena odpovidajici hlavicka/zdroj",
31
- "status.switch_failed": "Clangd prepnuti zdroj/hlavicka selhalo: {error}",
31
+ "status.switch_failed": "Clangd prepnuti zdroj/hlavicka selhalo: %{error}",
32
32
  "status.opened_config": "Konfigurace .clangd otevrena",
33
33
  "status.config_not_found": "Nelze najit konfiguraci .clangd v pracovnim prostoru",
34
- "status.file_status": "Clangd stav souboru: {status}"
34
+ "status.file_status": "Clangd stav souboru: %{status}"
35
35
  },
36
36
  "de": {
37
37
  "cmd.project_setup": "Clangd: Projekteinrichtung",
@@ -45,10 +45,10 @@
45
45
  "status.unsupported_file_type": "Clangd: nicht unterstutzter Dateityp fur Header-Wechsel",
46
46
  "status.opened_corresponding_file": "Clangd: entsprechende Datei geoffnet",
47
47
  "status.no_matching_found": "Clangd: kein passendes Header/Quelle gefunden",
48
- "status.switch_failed": "Clangd Quelle/Header-Wechsel fehlgeschlagen: {error}",
48
+ "status.switch_failed": "Clangd Quelle/Header-Wechsel fehlgeschlagen: %{error}",
49
49
  "status.opened_config": ".clangd-Konfiguration geoffnet",
50
50
  "status.config_not_found": "Konnte .clangd-Konfiguration im Arbeitsbereich nicht finden",
51
- "status.file_status": "Clangd Dateistatus: {status}"
51
+ "status.file_status": "Clangd Dateistatus: %{status}"
52
52
  },
53
53
  "es": {
54
54
  "cmd.project_setup": "Clangd: Configuracion del Proyecto",
@@ -62,10 +62,10 @@
62
62
  "status.unsupported_file_type": "Clangd: tipo de archivo no soportado para alternar cabecera",
63
63
  "status.opened_corresponding_file": "Clangd: archivo correspondiente abierto",
64
64
  "status.no_matching_found": "Clangd: no se encontro cabecera/fuente coincidente",
65
- "status.switch_failed": "Clangd alternar fuente/cabecera fallo: {error}",
65
+ "status.switch_failed": "Clangd alternar fuente/cabecera fallo: %{error}",
66
66
  "status.opened_config": "Configuracion .clangd abierta",
67
67
  "status.config_not_found": "No se pudo encontrar configuracion .clangd en el espacio de trabajo",
68
- "status.file_status": "Estado del archivo Clangd: {status}"
68
+ "status.file_status": "Estado del archivo Clangd: %{status}"
69
69
  },
70
70
  "fr": {
71
71
  "cmd.project_setup": "Clangd: Configuration du Projet",
@@ -79,10 +79,10 @@
79
79
  "status.unsupported_file_type": "Clangd: type de fichier non supporte pour la bascule d'en-tete",
80
80
  "status.opened_corresponding_file": "Clangd: fichier correspondant ouvert",
81
81
  "status.no_matching_found": "Clangd: aucun en-tete/source correspondant trouve",
82
- "status.switch_failed": "Clangd bascule source/en-tete echouee: {error}",
82
+ "status.switch_failed": "Clangd bascule source/en-tete echouee: %{error}",
83
83
  "status.opened_config": "Configuration .clangd ouverte",
84
84
  "status.config_not_found": "Impossible de trouver la configuration .clangd dans l'espace de travail",
85
- "status.file_status": "Statut du fichier Clangd: {status}"
85
+ "status.file_status": "Statut du fichier Clangd: %{status}"
86
86
  },
87
87
  "it": {
88
88
  "cmd.project_setup": "Clangd: Configurazione progetto",
@@ -96,10 +96,10 @@
96
96
  "status.unsupported_file_type": "Clangd: tipo di file non supportato per il cambio header",
97
97
  "status.opened_corresponding_file": "Clangd: aperto file corrispondente",
98
98
  "status.no_matching_found": "Clangd: nessuna corrispondenza header/sorgente trovata",
99
- "status.switch_failed": "Cambio sorgente/header Clangd fallito: {error}",
99
+ "status.switch_failed": "Cambio sorgente/header Clangd fallito: %{error}",
100
100
  "status.opened_config": "Configurazione .clangd aperta",
101
101
  "status.config_not_found": "Impossibile trovare la configurazione .clangd nell'area di lavoro",
102
- "status.file_status": "Stato del file Clangd: {status}"
102
+ "status.file_status": "Stato del file Clangd: %{status}"
103
103
  },
104
104
  "ja": {
105
105
  "cmd.project_setup": "Clangd: プロジェクト設定",
@@ -113,10 +113,10 @@
113
113
  "status.unsupported_file_type": "Clangd: ヘッダー切り替えに対応していないファイル形式です",
114
114
  "status.opened_corresponding_file": "Clangd: 対応するファイルを開きました",
115
115
  "status.no_matching_found": "Clangd: 一致するヘッダー/ソースが見つかりません",
116
- "status.switch_failed": "Clangdソース/ヘッダー切り替えに失敗しました: {error}",
116
+ "status.switch_failed": "Clangdソース/ヘッダー切り替えに失敗しました: %{error}",
117
117
  "status.opened_config": ".clangd設定を開きました",
118
118
  "status.config_not_found": "ワークスペース内に.clangd設定が見つかりません",
119
- "status.file_status": "Clangdファイルステータス: {status}"
119
+ "status.file_status": "Clangdファイルステータス: %{status}"
120
120
  },
121
121
  "ko": {
122
122
  "cmd.project_setup": "Clangd: 프로젝트 설정",
@@ -130,10 +130,10 @@
130
130
  "status.unsupported_file_type": "Clangd: 헤더 전환에 지원되지 않는 파일 형식",
131
131
  "status.opened_corresponding_file": "Clangd: 해당 파일을 열었습니다",
132
132
  "status.no_matching_found": "Clangd: 일치하는 헤더/소스를 찾을 수 없습니다",
133
- "status.switch_failed": "Clangd 소스/헤더 전환 실패: {error}",
133
+ "status.switch_failed": "Clangd 소스/헤더 전환 실패: %{error}",
134
134
  "status.opened_config": ".clangd 설정을 열었습니다",
135
135
  "status.config_not_found": "작업 공간에서 .clangd 설정을 찾을 수 없습니다",
136
- "status.file_status": "Clangd 파일 상태: {status}"
136
+ "status.file_status": "Clangd 파일 상태: %{status}"
137
137
  },
138
138
  "pt-BR": {
139
139
  "cmd.project_setup": "Clangd: Configuracao do Projeto",
@@ -147,10 +147,10 @@
147
147
  "status.unsupported_file_type": "Clangd: tipo de arquivo nao suportado para alternar cabecalho",
148
148
  "status.opened_corresponding_file": "Clangd: arquivo correspondente aberto",
149
149
  "status.no_matching_found": "Clangd: nenhum cabecalho/fonte correspondente encontrado",
150
- "status.switch_failed": "Clangd alternar fonte/cabecalho falhou: {error}",
150
+ "status.switch_failed": "Clangd alternar fonte/cabecalho falhou: %{error}",
151
151
  "status.opened_config": "Configuracao .clangd aberta",
152
152
  "status.config_not_found": "Nao foi possivel encontrar configuracao .clangd no espaco de trabalho",
153
- "status.file_status": "Status do arquivo Clangd: {status}"
153
+ "status.file_status": "Status do arquivo Clangd: %{status}"
154
154
  },
155
155
  "ru": {
156
156
  "cmd.project_setup": "Clangd: Настройка проекта",
@@ -164,10 +164,10 @@
164
164
  "status.unsupported_file_type": "Clangd: неподдерживаемый тип файла для переключения заголовка",
165
165
  "status.opened_corresponding_file": "Clangd: соответствующий файл открыт",
166
166
  "status.no_matching_found": "Clangd: соответствующий заголовок/исходник не найден",
167
- "status.switch_failed": "Clangd переключение исходник/заголовок не удалось: {error}",
167
+ "status.switch_failed": "Clangd переключение исходник/заголовок не удалось: %{error}",
168
168
  "status.opened_config": "Конфигурация .clangd открыта",
169
169
  "status.config_not_found": "Не удалось найти конфигурацию .clangd в рабочем пространстве",
170
- "status.file_status": "Статус файла Clangd: {status}"
170
+ "status.file_status": "Статус файла Clangd: %{status}"
171
171
  },
172
172
  "th": {
173
173
  "cmd.project_setup": "Clangd: ตั้งค่าโปรเจกต์",
@@ -181,10 +181,10 @@
181
181
  "status.unsupported_file_type": "Clangd: ไม่รองรับประเภทไฟล์สำหรับสลับเฮดเดอร์",
182
182
  "status.opened_corresponding_file": "Clangd: เปิดไฟล์ที่เกี่ยวข้องแล้ว",
183
183
  "status.no_matching_found": "Clangd: ไม่พบเฮดเดอร์/ซอร์สที่ตรงกัน",
184
- "status.switch_failed": "Clangd สลับซอร์ส/เฮดเดอร์ล้มเหลว: {error}",
184
+ "status.switch_failed": "Clangd สลับซอร์ส/เฮดเดอร์ล้มเหลว: %{error}",
185
185
  "status.opened_config": "เปิดการตั้งค่า .clangd แล้ว",
186
186
  "status.config_not_found": "ไม่พบการตั้งค่า .clangd ในพื้นที่ทำงาน",
187
- "status.file_status": "สถานะไฟล์ Clangd: {status}"
187
+ "status.file_status": "สถานะไฟล์ Clangd: %{status}"
188
188
  },
189
189
  "uk": {
190
190
  "cmd.project_setup": "Clangd: Налаштування проекту",
@@ -198,10 +198,10 @@
198
198
  "status.unsupported_file_type": "Clangd: непідтримуваний тип файлу для перемикання заголовка",
199
199
  "status.opened_corresponding_file": "Clangd: відповідний файл відкрито",
200
200
  "status.no_matching_found": "Clangd: відповідний заголовок/вихідний файл не знайдено",
201
- "status.switch_failed": "Clangd перемикання вихідний/заголовний файл не вдалося: {error}",
201
+ "status.switch_failed": "Clangd перемикання вихідний/заголовний файл не вдалося: %{error}",
202
202
  "status.opened_config": "Конфігурацію .clangd відкрито",
203
203
  "status.config_not_found": "Не вдалося знайти конфігурацію .clangd у робочому просторі",
204
- "status.file_status": "Статус файлу Clangd: {status}"
204
+ "status.file_status": "Статус файлу Clangd: %{status}"
205
205
  },
206
206
  "zh-CN": {
207
207
  "cmd.project_setup": "Clangd: 项目设置",
@@ -215,9 +215,9 @@
215
215
  "status.unsupported_file_type": "Clangd: 不支持的文件类型,无法切换头文件",
216
216
  "status.opened_corresponding_file": "Clangd: 已打开对应文件",
217
217
  "status.no_matching_found": "Clangd: 未找到匹配的头文件/源文件",
218
- "status.switch_failed": "Clangd切换源文件/头文件失败: {error}",
218
+ "status.switch_failed": "Clangd切换源文件/头文件失败: %{error}",
219
219
  "status.opened_config": "已打开.clangd配置",
220
220
  "status.config_not_found": "在工作区中找不到.clangd配置",
221
- "status.file_status": "Clangd文件状态: {status}"
221
+ "status.file_status": "Clangd文件状态: %{status}"
222
222
  }
223
223
  }