@fresh-editor/fresh-editor 0.2.1 → 0.2.3

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,44 @@
1
1
  # Release Notes
2
2
 
3
+ ## 0.2.3
4
+
5
+ ### Bug Fixes
6
+
7
+ * **Undo Corruption After Save**: Fixed undo corrupting text after a bulk edit (e.g. multi-cursor or replace-all) followed by save. Piece tree buffers are now restored alongside the tree during undo.
8
+
9
+ * **Theme Not Found After Restart**: Fixed theme reverting to default when the JSON `name` field differs from the filename (#1001).
10
+
11
+ * **AltGr+Shift Input on Windows**: Fixed AltGr+Shift key combinations not being recognized as text input (#993).
12
+
13
+ * **Winget Manifest**: Fixed `UpgradeBehavior` indentation causing schema validation failure in winget publishing.
14
+
15
+ ### Internal
16
+
17
+ * Added shadow model undo/redo property-based tests for increased piece tree correctness confidence.
18
+ * Added blog showcase system with animated GIF demos for the documentation site.
19
+
20
+ ---
21
+
22
+ ## 0.2.2
23
+
24
+ ### Bug Fixes
25
+
26
+ * **Regex Find-and-Replace**: Fixed regex mode not working. Added capture group support (`$1`, `$2`, `${name}`) and a toolbar hint when regex mode is active.
27
+
28
+ * **Keybinding Editor**: Fixed actions with no default keybinding missing from the editor; all actions are now listed. Fixed inability to delete built-in keymap bindings. Fixed deleted bindings reappearing after save.
29
+
30
+ * **LSP Completion Popup**: Fixed completion popup blocking typing when not working in non-English locales.
31
+
32
+ * **Revised in-editor help**: Rewrote the in-memory help manual, should be a bit more useful.
33
+
34
+ ### Internal
35
+
36
+ * Refactored keybinding editor into multi-file module.
37
+ * Locked Cargo.toml dependency versions to minor; docs recommend `--locked`. Dependency updates.
38
+ * ~53 documentation clarity fixes.
39
+
40
+ ---
41
+
3
42
  ## 0.2.0
4
43
 
5
44
  ### Features
package/README.md CHANGED
@@ -1,51 +1,54 @@
1
1
  # Fresh
2
2
 
3
- A terminal-based text editor. [Official Website →](https://sinelaw.github.io/fresh/)
3
+ A modern, full-featured terminal text editor, **with zero configuration**. Familiar keybindings, mouse support, and IDE-level features — no learning curve required.
4
4
 
5
- **[📦 Installation Instructions](#installation)**
5
+ [Official Website](https://sinelaw.github.io/fresh/)  ·  [Documentation](https://getfresh.dev/docs)  ·  [Discord](https://discord.gg/qUutBj9t)  ·  [Contributing](#contributing)
6
6
 
7
- **[Contributing](#contributing)**
7
+ **[Quick Install](#installation):**   `curl https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh`
8
8
 
9
- **[Discord](https://discord.gg/qUutBj9t)**
9
+ ---
10
10
 
11
- ## Why?
11
+ ![Fresh Demo](docs/fresh-demo2.gif)
12
12
 
13
- Why another text editor? Fresh brings the intuitive, conventional UX of editors like VS Code and Sublime Text to the terminal.
13
+ Fresh brings the intuitive UX of VS Code and Sublime Text to the terminal. Standard keybindings, full mouse support, menus, and a command palette — everything works the way you'd expect, right out of the box. No modes, no memorizing shortcuts.
14
14
 
15
- While veterans like Emacs and Vim - and newer editors like Neovim and Helix - are excellent for power users who prefer modal, highly specialized workflows, they often present a steep learning curve for those used to standard GUI interactions. Fresh is built for the developer who wants a familiar, non-modal experience out-of-the-box, without sacrificing the speed and portability of the command line. Keyboard bindings, mouse support, menus, command palette etc. are all designed to be familiar to most modern users.
15
+ Built for real-world performance: Fresh handles [multi-gigabyte files](https://noamlewis.com/blog/2025/12/09/how-fresh-loads-huge-files-fast) with negligible memory overhead and delivers consistently low-latency input, regardless of file size.
16
16
 
17
- Architecturally, Fresh is built to handle multi-gigabyte files or slow network streams efficiently, maintaining a negligible memory overhead regardless of file size. While traditional editors struggle with latency and RAM bloat on large files, Fresh delivers consistent, high-speed performance on any scale.
17
+ ### Command Palette & Fuzzy Finder
18
18
 
19
- The goal for Fresh is to be an intuitive and accessible, high-performance terminal-based editor that "just works" on any hardware, for everyone.
19
+ One shortcut to find files, run commands, switch buffers, and jump to any line.
20
20
 
21
- ## Discovery & Ease of Use
21
+ ![Command Palette](docs/blog/productivity/command-palette/showcase.gif)
22
22
 
23
- Fresh is designed for discovery. It features native UIs, a full Menu system, and a powerful Command Palette. With full mouse support, transitioning from graphical editors is seamless.
23
+ ### Multi-Cursor Editing
24
24
 
25
- ## Modern Extensibility
25
+ Select and edit multiple occurrences simultaneously — the same workflow you know from graphical editors.
26
26
 
27
- Extend Fresh easily using modern tools. Plugins are written in TypeScript and run securely in a sandboxed Deno environment, providing access to a modern JavaScript ecosystem without compromising stability.
27
+ ![Multi-Cursor](docs/blog/editing/multi-cursor/showcase.gif)
28
28
 
29
- ## Low-Latency Performance
29
+ ### Themes & Customization
30
30
 
31
- Fresh is engineered for speed. It delivers a low-latency experience, with text appearing instantly. The editor is designed to be light and fast, reliably opening and editing [huge files up to multi-gigabyte sizes](https://noamlewis.com/blog/2025/12/09/how-fresh-loads-huge-files-fast) without slowdown.
31
+ Browse and apply color themes instantly. Full settings UI and interactive keybinding editor included.
32
32
 
33
- ## Comprehensive Feature Set
33
+ ![Select Theme](docs/blog/themes/select-theme/showcase.gif)
34
34
 
35
- - **File Management**: open/save/new/close, file explorer, tabs, auto-revert, git file finder
36
- - **Editing**: undo/redo, multi-cursor, block selection, smart indent, comments, clipboard
37
- - **Search & Replace**: incremental search, find in selection, query replace, git grep
38
- - **Navigation**: go to line/bracket, word movement, position history, bookmarks, error navigation
39
- - **Views & Layout**: split panes, line numbers, line wrap, backgrounds, markdown preview
40
- - **Language Server (LSP)**: go to definition, references, hover, code actions, rename, diagnostics, autocompletion
41
- - **Productivity**: command palette, menu bar, keyboard macros, git log, diagnostics panel
42
- - **Plugins & Extensibility**: TypeScript plugins, color highlighter, TODO highlighter, merge conflicts, path complete, keymaps
43
- - **Internationalization**: Multiple language support (see [`locales/`](locales/) for available languages), plugin translation system
35
+ See more feature demos: [Editing](https://getfresh.dev/docs/blog/editing) (search & replace, block selection, sort lines, ...) · [Productivity](https://getfresh.dev/docs/blog/productivity) (file explorer, split view, integrated terminal, ...) · [Themes](https://getfresh.dev/docs/blog/themes)
44
36
 
45
- ![Fresh Demo](docs/fresh-demo2.gif)
46
- ![Fresh Screenshot](docs/public/images/screenshot1.png)
47
- ![Fresh Screenshot](docs/public/images/screenshot2.png)
48
- ![Fresh Screenshot](docs/public/images/screenshot3.png)
37
+ ---
38
+
39
+ ## Feature Overview
40
+
41
+ | Category | Features |
42
+ |----------|----------|
43
+ | **File Management** | open/save/new/close, file explorer, tabs, auto-revert, git file finder |
44
+ | **Editing** | undo/redo, multi-cursor, block selection, smart indent, comments, clipboard |
45
+ | **Search & Replace** | incremental search, find in selection, query replace, git grep |
46
+ | **Navigation** | go to line/bracket, word movement, position history, bookmarks, error navigation |
47
+ | **Views & Layout** | split panes, line numbers, line wrap, backgrounds, markdown preview |
48
+ | **Language Server (LSP)** | go to definition, references, hover, code actions, rename, diagnostics, autocompletion |
49
+ | **Productivity** | command palette, menu bar, keyboard macros, git log, diagnostics panel |
50
+ | **Extensibility** | TypeScript plugins (sandboxed Deno), color highlighter, TODO highlighter, merge conflicts, path complete, keymaps |
51
+ | **Internationalization** | Multiple language support (see [`locales/`](locales/)), plugin translation system |
49
52
 
50
53
  ## Installation
51
54
 
@@ -217,7 +220,7 @@ nix profile add github:sinelaw/fresh
217
220
  ### From crates.io
218
221
 
219
222
  ```bash
220
- cargo install fresh-editor
223
+ cargo install --locked fresh-editor
221
224
  ```
222
225
 
223
226
  ### From source
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fresh-editor/fresh-editor",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "A modern terminal-based text editor with plugin support",
5
5
  "repository": {
6
6
  "type": "git",
@@ -145,9 +145,9 @@
145
145
  "additionalProperties": {
146
146
  "$ref": "#/$defs/PluginConfig"
147
147
  },
148
+ "default": {},
148
149
  "x-standalone-category": true,
149
- "x-no-add": true,
150
- "default": {}
150
+ "x-no-add": true
151
151
  },
152
152
  "packages": {
153
153
  "description": "Package manager settings for plugin/theme installation",
@@ -197,256 +197,256 @@
197
197
  "line_numbers": {
198
198
  "description": "Show line numbers in the gutter (default for new buffers)",
199
199
  "type": "boolean",
200
- "x-section": "Display",
201
- "default": true
200
+ "default": true,
201
+ "x-section": "Display"
202
202
  },
203
203
  "relative_line_numbers": {
204
204
  "description": "Show line numbers relative to cursor position",
205
205
  "type": "boolean",
206
- "x-section": "Display",
207
- "default": false
206
+ "default": false,
207
+ "x-section": "Display"
208
208
  },
209
209
  "line_wrap": {
210
210
  "description": "Wrap long lines to fit the window width (default for new views)",
211
211
  "type": "boolean",
212
- "x-section": "Display",
213
- "default": true
212
+ "default": true,
213
+ "x-section": "Display"
214
214
  },
215
215
  "syntax_highlighting": {
216
216
  "description": "Enable syntax highlighting for code files",
217
217
  "type": "boolean",
218
- "x-section": "Display",
219
- "default": true
218
+ "default": true,
219
+ "x-section": "Display"
220
220
  },
221
221
  "show_menu_bar": {
222
222
  "description": "Whether the menu bar is visible by default.\nThe menu bar provides access to menus (File, Edit, View, etc.) at the top of the screen.\nCan be toggled at runtime via command palette or keybinding.\nDefault: true",
223
223
  "type": "boolean",
224
- "x-section": "Display",
225
- "default": true
224
+ "default": true,
225
+ "x-section": "Display"
226
226
  },
227
227
  "show_tab_bar": {
228
228
  "description": "Whether the tab bar is visible by default.\nThe tab bar shows open files in each split pane.\nCan be toggled at runtime via command palette or keybinding.\nDefault: true",
229
229
  "type": "boolean",
230
- "x-section": "Display",
231
- "default": true
230
+ "default": true,
231
+ "x-section": "Display"
232
232
  },
233
233
  "use_terminal_bg": {
234
234
  "description": "Use the terminal's default background color instead of the theme's editor background.\nWhen enabled, the editor background inherits from the terminal emulator,\nallowing transparency or custom terminal backgrounds to show through.\nDefault: false",
235
235
  "type": "boolean",
236
- "x-section": "Display",
237
- "default": false
236
+ "default": false,
237
+ "x-section": "Display"
238
238
  },
239
239
  "cursor_style": {
240
240
  "description": "Cursor style for the terminal cursor.\nOptions: blinking_block, steady_block, blinking_bar, steady_bar, blinking_underline, steady_underline\nDefault: blinking_block",
241
241
  "$ref": "#/$defs/CursorStyle",
242
- "x-section": "Display",
243
- "default": "default"
242
+ "default": "default",
243
+ "x-section": "Display"
244
244
  },
245
245
  "tab_size": {
246
246
  "description": "Number of spaces per tab character",
247
247
  "type": "integer",
248
248
  "format": "uint",
249
249
  "minimum": 0,
250
- "x-section": "Editing",
251
- "default": 4
250
+ "default": 4,
251
+ "x-section": "Editing"
252
252
  },
253
253
  "auto_indent": {
254
254
  "description": "Automatically indent new lines based on the previous line",
255
255
  "type": "boolean",
256
- "x-section": "Editing",
257
- "default": true
256
+ "default": true,
257
+ "x-section": "Editing"
258
258
  },
259
259
  "scroll_offset": {
260
260
  "description": "Minimum lines to keep visible above/below cursor when scrolling",
261
261
  "type": "integer",
262
262
  "format": "uint",
263
263
  "minimum": 0,
264
- "x-section": "Editing",
265
- "default": 3
264
+ "default": 3,
265
+ "x-section": "Editing"
266
266
  },
267
267
  "default_line_ending": {
268
268
  "description": "Default line ending format for new files.\nFiles loaded from disk will use their detected line ending format.\nOptions: \"lf\" (Unix/Linux/macOS), \"crlf\" (Windows), \"cr\" (Classic Mac)\nDefault: \"lf\"",
269
269
  "$ref": "#/$defs/LineEndingOption",
270
- "x-section": "Editing",
271
- "default": "lf"
270
+ "default": "lf",
271
+ "x-section": "Editing"
272
272
  },
273
273
  "trim_trailing_whitespace_on_save": {
274
274
  "description": "Remove trailing whitespace from lines when saving.\nDefault: false",
275
275
  "type": "boolean",
276
- "x-section": "Editing",
277
- "default": false
276
+ "default": false,
277
+ "x-section": "Editing"
278
278
  },
279
279
  "ensure_final_newline_on_save": {
280
280
  "description": "Ensure files end with a newline when saving.\nDefault: false",
281
281
  "type": "boolean",
282
- "x-section": "Editing",
283
- "default": false
282
+ "default": false,
283
+ "x-section": "Editing"
284
284
  },
285
285
  "highlight_matching_brackets": {
286
286
  "description": "Highlight matching bracket pairs when cursor is on a bracket.\nDefault: true",
287
287
  "type": "boolean",
288
- "x-section": "Bracket Matching",
289
- "default": true
288
+ "default": true,
289
+ "x-section": "Bracket Matching"
290
290
  },
291
291
  "rainbow_brackets": {
292
292
  "description": "Use rainbow colors for nested brackets based on nesting depth.\nRequires highlight_matching_brackets to be enabled.\nDefault: true",
293
293
  "type": "boolean",
294
- "x-section": "Bracket Matching",
295
- "default": true
294
+ "default": true,
295
+ "x-section": "Bracket Matching"
296
296
  },
297
297
  "quick_suggestions": {
298
298
  "description": "Enable quick suggestions (VS Code-like behavior).\nWhen enabled, completion suggestions appear automatically while typing,\nnot just on trigger characters (like `.` or `::`).\nDefault: true",
299
299
  "type": "boolean",
300
- "x-section": "Completion",
301
- "default": true
300
+ "default": true,
301
+ "x-section": "Completion"
302
302
  },
303
303
  "quick_suggestions_delay_ms": {
304
304
  "description": "Delay in milliseconds before showing completion suggestions.\nLower values (10-50ms) feel more responsive but may be distracting.\nHigher values (100-500ms) reduce noise while typing.\nTrigger characters (like `.`) bypass this delay.\nDefault: 10 (matches VS Code)",
305
305
  "type": "integer",
306
306
  "format": "uint64",
307
307
  "minimum": 0,
308
- "x-section": "Completion",
309
- "default": 10
308
+ "default": 10,
309
+ "x-section": "Completion"
310
310
  },
311
311
  "suggest_on_trigger_characters": {
312
312
  "description": "Whether trigger characters (like `.`, `::`, `->`) immediately show completions.\nWhen true, typing a trigger character bypasses quick_suggestions_delay_ms.\nDefault: true",
313
313
  "type": "boolean",
314
- "x-section": "Completion",
315
- "default": true
314
+ "default": true,
315
+ "x-section": "Completion"
316
316
  },
317
317
  "accept_suggestion_on_enter": {
318
318
  "description": "Controls whether pressing Enter accepts the selected completion.\n- \"on\": Enter always accepts the completion\n- \"off\": Enter inserts a newline (use Tab to accept)\n- \"smart\": Enter accepts only if the completion text differs from typed text\nDefault: \"on\"",
319
319
  "$ref": "#/$defs/AcceptSuggestionOnEnter",
320
- "x-section": "Completion",
321
- "default": "on"
320
+ "default": "on",
321
+ "x-section": "Completion"
322
322
  },
323
323
  "enable_inlay_hints": {
324
324
  "description": "Whether to enable LSP inlay hints (type hints, parameter hints, etc.)",
325
325
  "type": "boolean",
326
- "x-section": "LSP",
327
- "default": true
326
+ "default": true,
327
+ "x-section": "LSP"
328
328
  },
329
329
  "enable_semantic_tokens_full": {
330
330
  "description": "Whether to request full-document LSP semantic tokens.\nRange requests are still used when supported.\nDefault: false (range-only to avoid heavy full refreshes).",
331
331
  "type": "boolean",
332
- "x-section": "LSP",
333
- "default": false
332
+ "default": false,
333
+ "x-section": "LSP"
334
334
  },
335
335
  "mouse_hover_enabled": {
336
336
  "description": "Whether mouse hover triggers LSP hover requests.\nWhen enabled, hovering over code with the mouse will show documentation.\nDefault: true",
337
337
  "type": "boolean",
338
- "x-section": "Mouse",
339
- "default": true
338
+ "default": true,
339
+ "x-section": "Mouse"
340
340
  },
341
341
  "mouse_hover_delay_ms": {
342
342
  "description": "Delay in milliseconds before a mouse hover triggers an LSP hover request.\nLower values show hover info faster but may cause more LSP server load.\nDefault: 500ms",
343
343
  "type": "integer",
344
344
  "format": "uint64",
345
345
  "minimum": 0,
346
- "x-section": "Mouse",
347
- "default": 500
346
+ "default": 500,
347
+ "x-section": "Mouse"
348
348
  },
349
349
  "double_click_time_ms": {
350
350
  "description": "Time window in milliseconds for detecting double-clicks.\nTwo clicks within this time are treated as a double-click (word selection).\nDefault: 500ms",
351
351
  "type": "integer",
352
352
  "format": "uint64",
353
353
  "minimum": 0,
354
- "x-section": "Mouse",
355
- "default": 500
354
+ "default": 500,
355
+ "x-section": "Mouse"
356
356
  },
357
357
  "recovery_enabled": {
358
358
  "description": "Whether to enable file recovery (Emacs-style auto-save)\nWhen enabled, buffers are periodically saved to recovery files\nso they can be recovered if the editor crashes.",
359
359
  "type": "boolean",
360
- "x-section": "Recovery",
361
- "default": true
360
+ "default": true,
361
+ "x-section": "Recovery"
362
362
  },
363
363
  "auto_save_interval_secs": {
364
364
  "description": "Auto-save interval in seconds for file recovery\nModified buffers are saved to recovery files at this interval.\nDefault: 2 seconds for fast recovery with minimal data loss.\nSet to 0 to disable periodic auto-save (manual recovery only).",
365
365
  "type": "integer",
366
366
  "format": "uint32",
367
367
  "minimum": 0,
368
- "x-section": "Recovery",
369
- "default": 2
368
+ "default": 2,
369
+ "x-section": "Recovery"
370
370
  },
371
371
  "auto_revert_poll_interval_ms": {
372
372
  "description": "Poll interval in milliseconds for auto-reverting open buffers.\nWhen auto-revert is enabled, file modification times are checked at this interval.\nLower values detect external changes faster but use more CPU.\nDefault: 2000ms (2 seconds)",
373
373
  "type": "integer",
374
374
  "format": "uint64",
375
375
  "minimum": 0,
376
- "x-section": "Recovery",
377
- "default": 2000
376
+ "default": 2000,
377
+ "x-section": "Recovery"
378
378
  },
379
379
  "keyboard_disambiguate_escape_codes": {
380
380
  "description": "Enable keyboard enhancement: disambiguate escape codes using CSI-u sequences.\nThis allows unambiguous reading of Escape and modified keys.\nRequires terminal support (kitty keyboard protocol).\nDefault: true",
381
381
  "type": "boolean",
382
- "x-section": "Keyboard",
383
- "default": true
382
+ "default": true,
383
+ "x-section": "Keyboard"
384
384
  },
385
385
  "keyboard_report_event_types": {
386
386
  "description": "Enable keyboard enhancement: report key event types (repeat/release).\nAdds extra events when keys are autorepeated or released.\nRequires terminal support (kitty keyboard protocol).\nDefault: false",
387
387
  "type": "boolean",
388
- "x-section": "Keyboard",
389
- "default": false
388
+ "default": false,
389
+ "x-section": "Keyboard"
390
390
  },
391
391
  "keyboard_report_alternate_keys": {
392
392
  "description": "Enable keyboard enhancement: report alternate keycodes.\nSends alternate keycodes in addition to the base keycode.\nRequires terminal support (kitty keyboard protocol).\nDefault: true",
393
393
  "type": "boolean",
394
- "x-section": "Keyboard",
395
- "default": true
394
+ "default": true,
395
+ "x-section": "Keyboard"
396
396
  },
397
397
  "keyboard_report_all_keys_as_escape_codes": {
398
398
  "description": "Enable keyboard enhancement: report all keys as escape codes.\nRepresents all keyboard events as CSI-u sequences.\nRequired for repeat/release events on plain-text keys.\nRequires terminal support (kitty keyboard protocol).\nDefault: false",
399
399
  "type": "boolean",
400
- "x-section": "Keyboard",
401
- "default": false
400
+ "default": false,
401
+ "x-section": "Keyboard"
402
402
  },
403
403
  "highlight_timeout_ms": {
404
404
  "description": "Maximum time in milliseconds for syntax highlighting per frame",
405
405
  "type": "integer",
406
406
  "format": "uint64",
407
407
  "minimum": 0,
408
- "x-section": "Performance",
409
- "default": 5
408
+ "default": 5,
409
+ "x-section": "Performance"
410
410
  },
411
411
  "snapshot_interval": {
412
412
  "description": "Undo history snapshot interval (number of edits between snapshots)",
413
413
  "type": "integer",
414
414
  "format": "uint",
415
415
  "minimum": 0,
416
- "x-section": "Performance",
417
- "default": 100
416
+ "default": 100,
417
+ "x-section": "Performance"
418
418
  },
419
419
  "highlight_context_bytes": {
420
420
  "description": "Number of bytes to look back/forward from the viewport for syntax highlighting context.\nLarger values improve accuracy for multi-line constructs (strings, comments, nested blocks)\nbut may slow down highlighting for very large files.\nDefault: 10KB (10000 bytes)",
421
421
  "type": "integer",
422
422
  "format": "uint",
423
423
  "minimum": 0,
424
- "x-section": "Performance",
425
- "default": 10000
424
+ "default": 10000,
425
+ "x-section": "Performance"
426
426
  },
427
427
  "large_file_threshold_bytes": {
428
428
  "description": "File size threshold in bytes for \"large file\" behavior\nFiles larger than this will:\n- Skip LSP features\n- Use constant-size scrollbar thumb (1 char)\n\nFiles smaller will count actual lines for accurate scrollbar rendering",
429
429
  "type": "integer",
430
430
  "format": "uint64",
431
431
  "minimum": 0,
432
- "x-section": "Performance",
433
- "default": 1048576
432
+ "default": 1048576,
433
+ "x-section": "Performance"
434
434
  },
435
435
  "estimated_line_length": {
436
436
  "description": "Estimated average line length in bytes (used for large file line estimation)\nThis is used by LineIterator to estimate line positions in large files\nwithout line metadata. Typical values: 80-120 bytes.",
437
437
  "type": "integer",
438
438
  "format": "uint",
439
439
  "minimum": 0,
440
- "x-section": "Performance",
441
- "default": 80
440
+ "default": 80,
441
+ "x-section": "Performance"
442
442
  },
443
443
  "file_tree_poll_interval_ms": {
444
444
  "description": "Poll interval in milliseconds for refreshing expanded directories in the file explorer.\nDirectory modification times are checked at this interval to detect new/deleted files.\nLower values detect changes faster but use more CPU.\nDefault: 3000ms (3 seconds)",
445
445
  "type": "integer",
446
446
  "format": "uint64",
447
447
  "minimum": 0,
448
- "x-section": "Performance",
449
- "default": 3000
448
+ "default": 3000,
449
+ "x-section": "Performance"
450
450
  }
451
451
  }
452
452
  },