@fresh-editor/fresh-editor 0.1.93 → 0.1.95

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,49 @@
1
1
  # Release Notes
2
2
 
3
+ ## 0.1.95
4
+
5
+ ### Bug Fixes
6
+
7
+ * Fixed data corruption issue when saving a large file multiple times (#882)
8
+
9
+ * Fixed hidden menus showing up when using left/right arrow keys to move between menus
10
+
11
+ * Fixed language pack plugins not being loaded properly in some cases
12
+
13
+ ## 0.1.94
14
+
15
+ ### Documentation
16
+
17
+ * **New documentation site**: @radiorambo contributed a complete restructure and build for a documentation section in the website. Kudos, awesome work!
18
+
19
+ See [getfresh.dev/docs](https://getfresh.dev/docs)
20
+
21
+ ### Features
22
+
23
+ * **Event Debug Dialog**: New diagnostic tool for troubleshooting keyboard and terminal issues. Shows raw key codes and modifiers as they are received, helping diagnose keybinding problems. Access via Command Palette → "Event Debug".
24
+
25
+ * **File Explorer Keybindings**: Reorganized the keys and updated the docs. Ctrl+E now toggles focus between file explorer and editor. Ctrl+B toggles sidebar visibility. Single-click opens files without leaving explorer; double-click or Enter opens and focuses editor (#748).
26
+
27
+ ### Bug Fixes
28
+
29
+ * **Case Conversion Enhancement**: To Upper (Alt+U) and To Lower (Alt+L) now automatically select the current word when no text is selected, matching common editor behavior.
30
+
31
+ * **Block Selection Copy**: Fixed Ctrl+C copying entire lines instead of the rectangular region. Block selection (Alt+Shift+Arrow) now correctly copies only the characters within the column bounds for each line.
32
+
33
+ * **Block Selection Editing**: Block selection now converts to multiple cursors for editing actions (typing, delete, backspace), enabling proper rectangular editing.
34
+
35
+ * **Dropdown Menu Position**: Fixed Help menu dropdown appearing at wrong position when Explorer menu was hidden. Menu position calculation now correctly skips hidden menus.
36
+
37
+ * **Settings Access**: Moved Settings to Edit menu and removed broken Ctrl+, keybinding which doesn't work reliably in terminals. Settings remain accessible via Edit → Settings... and Command Palette.
38
+
39
+ * **Block Selection Rendering**: Fixed double rendering of block selections that could cause visual artifacts.
40
+
41
+ ### Internal
42
+
43
+ * **Remote Save Optimization**: SSH remote editing now uses recipe-based patched saves. For large files with small edits, only the changed portions are transferred instead of the entire file. A 10MB file with a 100-byte edit now transfers ~200 bytes instead of 10MB.
44
+
45
+ ---
46
+
3
47
  ## 0.1.93
4
48
 
5
49
  ### Experimental
package/README.md CHANGED
@@ -41,9 +41,9 @@ Fresh is engineered for speed. It delivers a low-latency experience, with text a
41
41
  - **Internationalization**: Multiple language support (see [`locales/`](locales/) for available languages), plugin translation system
42
42
 
43
43
  ![Fresh Demo](docs/fresh-demo2.gif)
44
- ![Fresh Screenshot](docs/screenshot1.png)
45
- ![Fresh Screenshot](docs/screenshot2.png)
46
- ![Fresh Screenshot](docs/screenshot3.png)
44
+ ![Fresh Screenshot](docs/public/images/screenshot1.png)
45
+ ![Fresh Screenshot](docs/public/images/screenshot2.png)
46
+ ![Fresh Screenshot](docs/public/images/screenshot3.png)
47
47
 
48
48
  ## Installation
49
49
 
@@ -219,10 +219,10 @@ cargo build --release
219
219
 
220
220
  ## Documentation
221
221
 
222
- - [User Guide](docs/USER_GUIDE.md)
223
- - [macOS Tips](docs/USER_GUIDE.md#macos-terminal-tips) - Terminal configuration, keyboard shortcuts, and troubleshooting for Mac users
224
- - [Plugin Development](docs/PLUGIN_DEVELOPMENT.md)
225
- - [Architecture](docs/ARCHITECTURE.md)
222
+ - [User Guide](https://sinelaw.github.io/fresh/docs/guide/)
223
+ - [macOS Tips](https://sinelaw.github.io/fresh/docs/guide/keyboard#macos-terminal-configuration) - Terminal configuration, keyboard shortcuts, and troubleshooting for Mac users
224
+ - [Plugin Development](https://sinelaw.github.io/fresh/docs/development/plugin-development)
225
+ - [Architecture](https://sinelaw.github.io/fresh/docs/development/architecture)
226
226
 
227
227
  ## Contributing
228
228
 
@@ -242,7 +242,10 @@ Thanks for contributing!
242
242
 
243
243
  7. **LSP**: Ensure LSP interactions follow the correct lifecycle (e.g., `didOpen` must always precede other requests to avoid server-side errors). Use the appropriate existing helpers for this pattern.
244
244
 
245
- 8. **Regenerate plugin types**: After modifying the plugin API, run `cargo test -p fresh-plugin-runtime write_fresh_dts_file -- --ignored`
245
+ 8. **Regenerate plugin types and schemas**: After modifying the plugin API or config types:
246
+ - **TypeScript definitions** (`plugins/lib/fresh.d.ts`): Auto-generated from Rust types with `#[derive(TS)]`. Run: `cargo test -p fresh-plugin-runtime write_fresh_dts_file -- --ignored`
247
+ - **JSON schemas** (`plugins/config-schema.json`, `plugins/schemas/theme.schema.json`): Auto-generated from Rust types with `#[derive(JsonSchema)]`. Run: `./scripts/gen_schema.sh`
248
+ - **Package schema** (`plugins/schemas/package.schema.json`): Manually maintained - edit directly when adding new language pack fields
246
249
 
247
250
  9. **Type check plugins**: Run `crates/fresh-editor/plugins/check-types.sh` (requires `tsc`)
248
251
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fresh-editor/fresh-editor",
3
- "version": "0.1.93",
3
+ "version": "0.1.95",
4
4
  "description": "A modern terminal-based text editor with plugin support",
5
5
  "repository": {
6
6
  "type": "git",
package/plugins/README.md CHANGED
@@ -65,8 +65,8 @@ The `examples/` directory contains educational examples demonstrating specific A
65
65
  ## Plugin Development
66
66
 
67
67
  For plugin development guides, see:
68
- - **Getting Started:** [`docs/PLUGIN_DEVELOPMENT.md`](../docs/PLUGIN_DEVELOPMENT.md)
69
- - **API Reference:** [`docs/plugin-api.md`](../docs/plugin-api.md)
68
+ - **Getting Started:** [`docs/development/plugin-development.md`](../docs/development/plugin-development.md)
69
+ - **API Reference:** [`docs/development/plugin-api.md`](../docs/development/plugin-api.md)
70
70
  - **Examples:** [`examples/README.md`](examples/README.md)
71
71
  - **Clangd Plugin:** [`clangd_support.md`](clangd_support.md)
72
72
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  This directory contains example plugins demonstrating the editor's plugin system. These are educational examples showing specific API features.
4
4
 
5
- For the complete API reference, see **[docs/plugin-api.md](../../docs/plugin-api.md)**.
5
+ For the complete API reference, see **[docs/development/plugin-api.md](../../docs/development/plugin-api.md)**.
6
6
 
7
7
  ## Available Examples
8
8
 
@@ -81,5 +81,5 @@ editor.debug("My custom plugin loaded");
81
81
 
82
82
  ## Further Reading
83
83
 
84
- - **Getting Started:** [docs/PLUGIN_DEVELOPMENT.md](../../docs/PLUGIN_DEVELOPMENT.md)
85
- - **API Reference:** [docs/plugin-api.md](../../docs/plugin-api.md)
84
+ - **Getting Started:** [docs/development/plugin-development.md](../../docs/development/plugin-development.md)
85
+ - **API Reference:** [docs/development/plugin-api.md](../../docs/development/plugin-api.md)
@@ -559,6 +559,11 @@ type LanguagePackConfig = {
559
559
  */
560
560
  autoIndent: boolean | null;
561
561
  /**
562
+ * Whether to show whitespace tab indicators (→) for this language
563
+ * Defaults to true. Set to false for languages like Go/Hare that use tabs for indentation.
564
+ */
565
+ showWhitespaceTabs: boolean | null;
566
+ /**
562
567
  * Formatter configuration
563
568
  */
564
569
  formatter: FormatterPackConfig | null;
package/plugins/pkg.ts CHANGED
@@ -92,6 +92,7 @@ interface PackageManifest {
92
92
  useTabs?: boolean;
93
93
  tabSize?: number;
94
94
  autoIndent?: boolean;
95
+ showWhitespaceTabs?: boolean;
95
96
  formatter?: {
96
97
  command: string;
97
98
  args?: string[];
@@ -828,6 +829,7 @@ async function loadLanguagePack(packageDir: string, manifest: PackageManifest):
828
829
  useTabs: lang.useTabs ?? null,
829
830
  tabSize: lang.tabSize ?? null,
830
831
  autoIndent: lang.autoIndent ?? null,
832
+ showWhitespaceTabs: lang.showWhitespaceTabs ?? null,
831
833
  formatter: lang.formatter ? {
832
834
  command: lang.formatter.command,
833
835
  args: lang.formatter.args ?? [],
@@ -98,7 +98,7 @@
98
98
  "properties": {
99
99
  "file": {
100
100
  "type": "string",
101
- "description": "Path to TextMate grammar file (.tmLanguage.json)"
101
+ "description": "Path to grammar file (.sublime-syntax recommended, or .tmLanguage)"
102
102
  },
103
103
  "extensions": {
104
104
  "type": "array",
@@ -140,6 +140,10 @@
140
140
  "type": "boolean",
141
141
  "description": "Enable automatic indentation"
142
142
  },
143
+ "showWhitespaceTabs": {
144
+ "type": "boolean",
145
+ "description": "Whether to show whitespace tab indicators (→). Defaults to true. Set to false for languages like Go/Hare that use tabs for indentation."
146
+ },
143
147
  "formatter": {
144
148
  "type": "object",
145
149
  "required": ["command"],