pi-x-ide 1.14.0 → 1.15.1

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.
Files changed (132) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/README.md +31 -59
  3. package/README.zh-CN.md +25 -49
  4. package/RELEASE.md +213 -0
  5. package/dist/src/pi/commands.js +0 -1
  6. package/dist/src/pi/connection.js +2 -4
  7. package/dist/src/pi/context.js +2 -4
  8. package/dist/src/pi/diagnostics.js +0 -1
  9. package/dist/src/pi/discovery.js +0 -3
  10. package/dist/src/pi/ide-host.js +0 -3
  11. package/dist/src/pi/index.js +0 -1
  12. package/dist/src/pi/install.js +0 -5
  13. package/dist/src/pi/reconnect.js +0 -1
  14. package/dist/src/pi/safety.js +0 -1
  15. package/dist/src/pi/state.js +0 -1
  16. package/dist/src/pi/ui.js +44 -21
  17. package/dist/src/pi/zed.js +5 -45
  18. package/dist/src/shared/config-options.js +0 -1
  19. package/dist/src/shared/config.js +4 -3
  20. package/dist/src/shared/display-width.js +98 -0
  21. package/dist/src/shared/errors.js +0 -3
  22. package/dist/src/shared/format.js +11 -6
  23. package/dist/src/shared/ide-server.js +0 -3
  24. package/dist/src/shared/lock-file.js +0 -1
  25. package/dist/src/shared/paths.js +3 -15
  26. package/dist/src/shared/platform.js +0 -14
  27. package/dist/src/shared/protocol.js +0 -3
  28. package/dist/src/shared/schema.js +0 -1
  29. package/dist/src/shared/ws.js +0 -1
  30. package/package.json +11 -7
  31. package/dist/package.json +0 -68
  32. package/dist/src/nvim/sidecar-schema.d.ts +0 -25
  33. package/dist/src/nvim/sidecar-schema.js +0 -64
  34. package/dist/src/nvim/sidecar-schema.js.map +0 -1
  35. package/dist/src/nvim/sidecar.d.ts +0 -16
  36. package/dist/src/nvim/sidecar.js +0 -174
  37. package/dist/src/nvim/sidecar.js.map +0 -1
  38. package/dist/src/pi/commands.d.ts +0 -20
  39. package/dist/src/pi/commands.js.map +0 -1
  40. package/dist/src/pi/connection.d.ts +0 -42
  41. package/dist/src/pi/connection.js.map +0 -1
  42. package/dist/src/pi/context.d.ts +0 -8
  43. package/dist/src/pi/context.js.map +0 -1
  44. package/dist/src/pi/diagnostics.d.ts +0 -10
  45. package/dist/src/pi/diagnostics.js.map +0 -1
  46. package/dist/src/pi/discovery.d.ts +0 -16
  47. package/dist/src/pi/discovery.js.map +0 -1
  48. package/dist/src/pi/ide-host.d.ts +0 -17
  49. package/dist/src/pi/ide-host.js.map +0 -1
  50. package/dist/src/pi/index.d.ts +0 -4
  51. package/dist/src/pi/index.js.map +0 -1
  52. package/dist/src/pi/install.d.ts +0 -55
  53. package/dist/src/pi/install.js.map +0 -1
  54. package/dist/src/pi/reconnect.d.ts +0 -6
  55. package/dist/src/pi/reconnect.js.map +0 -1
  56. package/dist/src/pi/safety.d.ts +0 -7
  57. package/dist/src/pi/safety.js.map +0 -1
  58. package/dist/src/pi/state.d.ts +0 -31
  59. package/dist/src/pi/state.js.map +0 -1
  60. package/dist/src/pi/ui.d.ts +0 -13
  61. package/dist/src/pi/ui.js.map +0 -1
  62. package/dist/src/pi/zed.d.ts +0 -31
  63. package/dist/src/pi/zed.js.map +0 -1
  64. package/dist/src/shared/config-options.d.ts +0 -50
  65. package/dist/src/shared/config-options.js.map +0 -1
  66. package/dist/src/shared/config.d.ts +0 -8
  67. package/dist/src/shared/config.js.map +0 -1
  68. package/dist/src/shared/errors.d.ts +0 -5
  69. package/dist/src/shared/errors.js.map +0 -1
  70. package/dist/src/shared/format.d.ts +0 -24
  71. package/dist/src/shared/format.js.map +0 -1
  72. package/dist/src/shared/ide-server.d.ts +0 -24
  73. package/dist/src/shared/ide-server.js.map +0 -1
  74. package/dist/src/shared/lock-file.d.ts +0 -17
  75. package/dist/src/shared/lock-file.js.map +0 -1
  76. package/dist/src/shared/paths.d.ts +0 -14
  77. package/dist/src/shared/paths.js.map +0 -1
  78. package/dist/src/shared/platform.d.ts +0 -5
  79. package/dist/src/shared/platform.js.map +0 -1
  80. package/dist/src/shared/protocol.d.ts +0 -137
  81. package/dist/src/shared/protocol.js.map +0 -1
  82. package/dist/src/shared/schema.d.ts +0 -10
  83. package/dist/src/shared/schema.js.map +0 -1
  84. package/dist/src/shared/ws.d.ts +0 -2
  85. package/dist/src/shared/ws.js.map +0 -1
  86. package/dist/test/connection.test.d.ts +0 -1
  87. package/dist/test/connection.test.js +0 -312
  88. package/dist/test/connection.test.js.map +0 -1
  89. package/dist/test/diagnostics.test.d.ts +0 -1
  90. package/dist/test/diagnostics.test.js +0 -168
  91. package/dist/test/diagnostics.test.js.map +0 -1
  92. package/dist/test/ide-server.test.d.ts +0 -1
  93. package/dist/test/ide-server.test.js +0 -50
  94. package/dist/test/ide-server.test.js.map +0 -1
  95. package/dist/test/install.test.d.ts +0 -1
  96. package/dist/test/install.test.js +0 -125
  97. package/dist/test/install.test.js.map +0 -1
  98. package/dist/test/nvim-sidecar.test.d.ts +0 -1
  99. package/dist/test/nvim-sidecar.test.js +0 -148
  100. package/dist/test/nvim-sidecar.test.js.map +0 -1
  101. package/dist/test/shared.test.d.ts +0 -1
  102. package/dist/test/shared.test.js +0 -522
  103. package/dist/test/shared.test.js.map +0 -1
  104. package/dist/test/zed.test.d.ts +0 -1
  105. package/dist/test/zed.test.js +0 -609
  106. package/dist/test/zed.test.js.map +0 -1
  107. package/src/nvim/sidecar-schema.ts +0 -71
  108. package/src/nvim/sidecar.ts +0 -223
  109. package/src/pi/commands.ts +0 -174
  110. package/src/pi/connection.ts +0 -240
  111. package/src/pi/context.ts +0 -102
  112. package/src/pi/diagnostics.ts +0 -115
  113. package/src/pi/discovery.ts +0 -152
  114. package/src/pi/ide-host.ts +0 -82
  115. package/src/pi/index.ts +0 -478
  116. package/src/pi/install.ts +0 -349
  117. package/src/pi/reconnect.ts +0 -33
  118. package/src/pi/safety.ts +0 -38
  119. package/src/pi/state.ts +0 -39
  120. package/src/pi/ui.ts +0 -198
  121. package/src/pi/zed.ts +0 -507
  122. package/src/shared/config-options.ts +0 -63
  123. package/src/shared/config.ts +0 -65
  124. package/src/shared/errors.ts +0 -43
  125. package/src/shared/format.ts +0 -101
  126. package/src/shared/ide-server.ts +0 -183
  127. package/src/shared/lock-file.ts +0 -67
  128. package/src/shared/paths.ts +0 -119
  129. package/src/shared/platform.ts +0 -79
  130. package/src/shared/protocol.ts +0 -159
  131. package/src/shared/schema.ts +0 -189
  132. package/src/shared/ws.ts +0 -8
package/CHANGELOG.md ADDED
@@ -0,0 +1,218 @@
1
+ # Changelog
2
+
3
+ ## [1.15.1](https://github.com/balaenis/pi-x-ide/compare/v1.15.0...v1.15.1) (2026-06-29)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ui:** use grapheme-aware width for CJK-safe IDE status bar truncation ([9513960](https://github.com/balaenis/pi-x-ide/commit/95139605c36926be7e0ecb1553f823d3639a2b65))
9
+
10
+ ## [1.15.0](https://github.com/balaenis/pi-x-ide/compare/v1.14.0...v1.15.0) (2026-06-23)
11
+
12
+
13
+ ### Features
14
+
15
+ * **context:** wrap editor context in SELECTED_CONTEXT_MARKER for precise detection ([341e957](https://github.com/balaenis/pi-x-ide/commit/341e957e6f9ea32f60a90645f8fafa2e814bf267))
16
+
17
+ ## [1.14.0](https://github.com/balaenis/pi-x-ide/compare/v1.13.1...v1.14.0) (2026-06-22)
18
+
19
+
20
+ ### Features
21
+
22
+ * **jetbrains:** add JetBrains IDE plugin with lock-file, selection-tracking, and WebSocket server ([401e65d](https://github.com/balaenis/pi-x-ide/commit/401e65d50ed00f2803324c954560551f9ebe5c70)), closes [#47](https://github.com/balaenis/pi-x-ide/issues/47)
23
+ * **jetbrains:** add plugin icons, toolbar group, and icon references to actions ([ab5b0c4](https://github.com/balaenis/pi-x-ide/commit/ab5b0c483d004b2cc1d5950acbbdab9af8b9d9b6))
24
+ * **jetbrains:** add signing and publishPlugin support for JetBrains Marketplace ([d86f5e0](https://github.com/balaenis/pi-x-ide/commit/d86f5e0ec2769eeaec5a90b4c117c40d08e4df4e))
25
+ * **jetbrains:** run pi through login shell for proper PATH setup on native Unix and WSL ([7bf2924](https://github.com/balaenis/pi-x-ide/commit/7bf2924918692481c80a78fffd3ccffa67b166d3))
26
+ * **wsl:** add WSL-aware IDE discovery and cross-platform host resolution ([d8bd2e4](https://github.com/balaenis/pi-x-ide/commit/d8bd2e42687a79022a47337149169f03f1034b21))
27
+
28
+ ## [1.13.1](https://github.com/balaenis/pi-x-ide/compare/v1.13.0...v1.13.1) (2026-06-20)
29
+
30
+ ### Bug Fixes
31
+
32
+ - **vscode:** run pi through login shell in tmux terminal ([bee8563](https://github.com/balaenis/pi-x-ide/commit/bee8563bfde5623eb08d1db40260e50ea6ff2d94))
33
+
34
+ ## [1.13.0](https://github.com/balaenis/pi-x-ide/compare/v1.12.0...v1.13.0) (2026-06-19)
35
+
36
+ ### Features
37
+
38
+ - add error containment boundaries across all extension entry points ([064e725](https://github.com/balaenis/pi-x-ide/commit/064e72589f18979e57024166692627de7464edf0))
39
+
40
+ ### Bug Fixes
41
+
42
+ - guard stale extension context callbacks ([316b1c1](https://github.com/balaenis/pi-x-ide/commit/316b1c1cea974229c8bef94a94d105b31cc76796))
43
+ - **pi:** guard stale connection callbacks and extension ctx errors ([094975c](https://github.com/balaenis/pi-x-ide/commit/094975c0081a48fb08ae226f4d8f64b5b38b5084))
44
+
45
+ ## [1.12.0](https://github.com/balaenis/pi-x-ide/compare/v1.11.1...v1.12.0) (2026-06-16)
46
+
47
+ ### Features
48
+
49
+ - **ui:** add animated spinner for connecting state ([ae82969](https://github.com/balaenis/pi-x-ide/commit/ae82969223f79c6ce28315337e846888738649aa))
50
+
51
+ ## [1.11.1](https://github.com/balaenis/pi-x-ide/compare/v1.11.0...v1.11.1) (2026-06-15)
52
+
53
+ ### Bug Fixes
54
+
55
+ - **ci:** Modify the rules guide and trigger once release pr ([f468f5a](https://github.com/balaenis/pi-x-ide/commit/f468f5ab8d61227b1d16faf2719f218a17829ecc))
56
+
57
+ ## [1.11.0](https://github.com/balaenis/pi-x-ide/compare/v1.10.0...v1.11.0) (2026-06-14)
58
+
59
+ ### Features
60
+
61
+ - **diagnostics:** send diagnostic context to one connected Pi client instead of broadcasting ([9681fd4](https://github.com/balaenis/pi-x-ide/commit/9681fd4dcf88aad1a43a5c1d002219a2477c5279))
62
+
63
+ ### Bug Fixes
64
+
65
+ - **diagnostics:** escape primary context line marker to avoid markdown blockquote interpretation ([c2f005e](https://github.com/balaenis/pi-x-ide/commit/c2f005e8cd16c2743838d2e79d0ca0987a2e0a8d))
66
+
67
+ ## [1.10.0](https://github.com/balaenis/pi-x-ide/compare/v1.9.0...v1.10.0) (2026-06-14)
68
+
69
+ ### Features
70
+
71
+ - **diagnostics:** add configurable fix prompt for IDE diagnostics ([ca8621c](https://github.com/balaenis/pi-x-ide/commit/ca8621c6050c37ed921e20efcb4dd38907b1cbb9))
72
+ - **nvim:** verify sidecar binary against GitHub Release SHA-256 digest ([0cc1d9b](https://github.com/balaenis/pi-x-ide/commit/0cc1d9bf1ee5ef8f30d50374ffe68953c242d4ce))
73
+ - **vscode:** add Fix with Pi suggest quick action for diagnostics ([e8dc6d5](https://github.com/balaenis/pi-x-ide/commit/e8dc6d56543afb1d8019bcede0a540cacd440c6d))
74
+ - **vscode:** add Pi: Send diagnostic quick fix action ([d53d72b](https://github.com/balaenis/pi-x-ide/commit/d53d72bb1030f58da7f82136a75b95da2568f28a))
75
+ - **vscode:** hide pi terminal from user initially and show without stealing focus ([15ca612](https://github.com/balaenis/pi-x-ide/commit/15ca6121a4c25a1ed68cb6631372b5a100c77a7b))
76
+
77
+ ### Bug Fixes
78
+
79
+ - **pi:** wrap diagnostic context message with marker on both sides ([592da42](https://github.com/balaenis/pi-x-ide/commit/592da424d16a190c958eac86a70045405e91e936))
80
+
81
+ ## [1.9.0](https://github.com/balaenis/pi-x-ide/compare/v1.8.0...v1.9.0) (2026-06-13)
82
+
83
+ ### Features
84
+
85
+ - **vscode:** add useTmux setting to open Pi through tmux ([93cec4d](https://github.com/balaenis/pi-x-ide/commit/93cec4de9f2f51312db4c3a4672b2f2ffe2ddc61))
86
+
87
+ ### Bug Fixes
88
+
89
+ - **pi/install:** filter out unknown-reason candidates from auto-install ([375449b](https://github.com/balaenis/pi-x-ide/commit/375449b2306d8fa1098a30a0176eff9dc5f602e2))
90
+
91
+ ## [1.8.0](https://github.com/balaenis/pi-x-ide/compare/v1.7.0...v1.8.0) (2026-06-12)
92
+
93
+ ### Features
94
+
95
+ - **attach:** make TUI attach shortcut configurable via PI_X_IDE_ATTACH_SHORTCUT ([20a7e9c](https://github.com/balaenis/pi-x-ide/commit/20a7e9c80644d4a46cdc4459c7394faa7f3e21e5))
96
+ - **ide:** register Ctrl+Alt+K shortcut in Pi TUI for /ide attach ([9803840](https://github.com/balaenis/pi-x-ide/commit/9803840f73bc965dae3e0e0a53f7fccae173e2d7))
97
+
98
+ ## [1.7.0](https://github.com/balaenis/pi-x-ide/compare/v1.6.0...v1.7.0) (2026-06-12)
99
+
100
+ ### Features
101
+
102
+ - **zed:** add configurable poll interval env var and clean up env schema ([04d870e](https://github.com/balaenis/pi-x-ide/commit/04d870e88d756a2faea998e741f8893bc95c3a31))
103
+
104
+ ## [1.6.0](https://github.com/balaenis/pi-x-ide/compare/v1.5.1...v1.6.0) (2026-06-12)
105
+
106
+ ### Features
107
+
108
+ - **mise:** add compile and compile:all tasks ([517e9cd](https://github.com/balaenis/pi-x-ide/commit/517e9cdfe533294f69d71021680b471662104a32))
109
+ - **pi:** limit reconnect attempts and add handshake timeout ([4dc855e](https://github.com/balaenis/pi-x-ide/commit/4dc855e715f1b8bf141a0f055962af53ac581696))
110
+
111
+ ## [1.5.1](https://github.com/balaenis/pi-x-ide/compare/v1.5.0...v1.5.1) (2026-06-11)
112
+
113
+ ### Bug Fixes
114
+
115
+ - **nvim:** capture sidecar download stderr and handle job start failure ([eae98bf](https://github.com/balaenis/pi-x-ide/commit/eae98bfd7cd313f2e57b4c5665255df6ef30d25f))
116
+
117
+ ## [1.5.0](https://github.com/balaenis/pi-x-ide/compare/v1.4.3...v1.5.0) (2026-06-11)
118
+
119
+ ### Features
120
+
121
+ - **nvim:** auto-download sidecar binary from GitHub Releases ([85f8e0a](https://github.com/balaenis/pi-x-ide/commit/85f8e0a395cb12f436bf972628d0306e78ee0bf5))
122
+ - **nvim:** compile sidecar to standalone binary via bun ([c7b0763](https://github.com/balaenis/pi-x-ide/commit/c7b07632a5d5a683c48f7517334bc4033cb8d556))
123
+
124
+ ## [1.4.3](https://github.com/balaenis/pi-x-ide/compare/v1.4.2...v1.4.3) (2026-06-11)
125
+
126
+ ### Bug Fixes
127
+
128
+ - always create a fresh Pi terminal instead of reusing existing ([6ad4438](https://github.com/balaenis/pi-x-ide/commit/6ad4438acdd41ea6464c62a0f0ac2858b0c2f2d7))
129
+
130
+ ## [1.4.2](https://github.com/balaenis/pi-x-ide/compare/v1.4.1...v1.4.2) (2026-06-11)
131
+
132
+ ### Bug Fixes
133
+
134
+ - **pi:** normalize Windows drive letter to uppercase for path matching ([cb4e8ad](https://github.com/balaenis/pi-x-ide/commit/cb4e8adef41d2d80cf2577c3e33879c5aaceb52b))
135
+ - **pi:** skip extensionless search on Windows to avoid matching shell scripts ([bb47f76](https://github.com/balaenis/pi-x-ide/commit/bb47f761c7388f316c10d2a6eae53b839e486322))
136
+ - **pi:** update install notification on connection success or failure ([46a8901](https://github.com/balaenis/pi-x-ide/commit/46a8901fb271c4c4c6931c02f4da33794224f638))
137
+ - update notification messages to reference `/ide` instead of `/ide auto` ([cc27727](https://github.com/balaenis/pi-x-ide/commit/cc277274d1e0fda23e8fbf3e597de9924d2863f5))
138
+
139
+ ## [1.4.1](https://github.com/balaenis/pi-x-ide/compare/v1.4.0...v1.4.1) (2026-06-11)
140
+
141
+ ### Bug Fixes
142
+
143
+ - **docs:** replace lazy.nvim `rtp` with `init` block in install instructions ([1f186ff](https://github.com/balaenis/pi-x-ide/commit/1f186fffa6e050e495fcece71a8ddc185a4f217d))
144
+ - **nvim:** safely stop timer with pcall to prevent errors ([22c422e](https://github.com/balaenis/pi-x-ide/commit/22c422e53057eb2ed7c1b2b343851d751a936632))
145
+
146
+ ## [1.4.0](https://github.com/balaenis/pi-x-ide/compare/v1.3.0...v1.4.0) (2026-06-11)
147
+
148
+ ### Features
149
+
150
+ - **config:** support pi config env overrides ([1aa20c1](https://github.com/balaenis/pi-x-ide/commit/1aa20c1027ec2172c5ca86cdfb4c1fb362d616b1))
151
+
152
+ ## [1.3.0](https://github.com/balaenis/pi-x-ide/compare/v1.2.0...v1.3.0) (2026-06-10)
153
+
154
+ ### Features
155
+
156
+ - **vscode:** cache selection snapshot when terminal tab is active ([785f834](https://github.com/balaenis/pi-x-ide/commit/785f834a5092ec77944e7659ca0efa2c6a94f74b))
157
+ - **zed:** add Zed editor integration with SQLite polling ([90da726](https://github.com/balaenis/pi-x-ide/commit/90da726a4d997446f3d05d0b3fb9a439572bec9f))
158
+ - **zed:** support WSL+Windows path normalization for cross-OS Zed DB access ([963e975](https://github.com/balaenis/pi-x-ide/commit/963e975eb3e4824b8e46015ae324bfcc8c33f6c0))
159
+
160
+ ### Performance Improvements
161
+
162
+ - **zed:** skip DB snapshot when WAL unchanged, checkpoint into snapshot ([76a6dab](https://github.com/balaenis/pi-x-ide/commit/76a6dab7e6af78a534d9f7401901b1df813dd039))
163
+
164
+ ## [1.2.0](https://github.com/balaenis/pi-x-ide/compare/v1.1.0...v1.2.0) (2026-06-10)
165
+
166
+ ### Features
167
+
168
+ - **vscode:** add editor toolbar button to open Pi terminal ([6289dbd](https://github.com/balaenis/pi-x-ide/commit/6289dbdab4ba8414231cc38c883724f7a56efcb5))
169
+
170
+ ### Bug Fixes
171
+
172
+ - **pi:** restrict auto-connect to direct workspace matches ([6899dda](https://github.com/balaenis/pi-x-ide/commit/6899dda792571e2a51402f235d45c7ff3667eeb2))
173
+
174
+ ## [1.1.0](https://github.com/balaenis/pi-x-ide/compare/v1.0.5...v1.1.0) (2026-06-10)
175
+
176
+ ### Features
177
+
178
+ - **pi:** auto-install IDE extension and add /ide install command ([cbaeb11](https://github.com/balaenis/pi-x-ide/commit/cbaeb11dcd897790f68941b84b297505b370dac6)), closes [#6](https://github.com/balaenis/pi-x-ide/issues/6)
179
+
180
+ ## [1.0.5](https://github.com/balaenis/pi-x-ide/compare/v1.0.4...v1.0.5) (2026-06-10)
181
+
182
+ ### Bug Fixes
183
+
184
+ - build vsix error display name is taken ([477a044](https://github.com/balaenis/pi-x-ide/commit/477a0447b7c4fbfa0f582c47c649ea0e5c5983bd))
185
+
186
+ ## [1.0.4](https://github.com/balaenis/pi-x-ide/compare/v1.0.3...v1.0.4) (2026-06-10)
187
+
188
+ ### Bug Fixes
189
+
190
+ - build vsix error ([fab6668](https://github.com/balaenis/pi-x-ide/commit/fab66685ce416fa170a939d74564ca75d480ae50))
191
+
192
+ ## [1.0.3](https://github.com/balaenis/pi-x-ide/compare/v1.0.2...v1.0.3) (2026-06-10)
193
+
194
+ ### Bug Fixes
195
+
196
+ - force release ([6525d08](https://github.com/balaenis/pi-x-ide/commit/6525d083f661d40a7a9506e8cc93db3fd34a6893))
197
+
198
+ ## [1.0.2](https://github.com/balaenis/pi-x-ide/compare/v1.0.1...v1.0.2) (2026-06-10)
199
+
200
+ ### Bug Fixes
201
+
202
+ - release workflows ([30f6b70](https://github.com/balaenis/pi-x-ide/commit/30f6b70492746f376b5b0520aefc44be687603d1))
203
+
204
+ ## [1.0.1](https://github.com/balaenis/pi-x-ide/compare/v1.0.0...v1.0.1) (2026-06-10)
205
+
206
+ ### Bug Fixes
207
+
208
+ - test release pipeline ([2d887b8](https://github.com/balaenis/pi-x-ide/commit/2d887b8a27da44c116e4e6a42c69727c469c873d))
209
+
210
+ ## 1.0.0 (2026-06-09)
211
+
212
+ ### Features
213
+
214
+ - **ci:** add CI/CD workflows and release automation ([a989bfc](https://github.com/balaenis/pi-x-ide/commit/a989bfc2ed39644d9543e4f8a28ece48a0596612))
215
+ - **pi:** add argument completions for ide command ([bc95e88](https://github.com/balaenis/pi-x-ide/commit/bc95e887172ebea5b86263d330c16bad00de3047))
216
+ - **protocol:** broadcast selection_cleared when no active editor ([3fd4c32](https://github.com/balaenis/pi-x-ide/commit/3fd4c328e906b29c83fb61d8dfe6d84ba753b180))
217
+ - **vscode:** add extension icon and branding assets ([efb71b5](https://github.com/balaenis/pi-x-ide/commit/efb71b5852f6ea81097079c8b42f052a2bd67053))
218
+ - **vscode:** send editor selection snapshot on client init ([a268483](https://github.com/balaenis/pi-x-ide/commit/a2684832ba1f3f36ad73cf45a70ae8b76cc61270))
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Automatically attaches the currently opened or selected file and text range from VS Code, Zed, Neovim, and JetBrains IDEs to the Pi TUI, submitting them as conversation context to the LLM.
6
6
 
7
- ---
7
+ <img width="3822" height="2010" alt="pi-x-ide-guide" src="https://github.com/user-attachments/assets/70abe40d-e4ac-4c2e-aca7-80d2e7867945" />
8
8
 
9
9
  ## Installation & Usage
10
10
 
@@ -42,17 +42,8 @@ No extension installation is needed. Pi automatically detects Zed when running i
42
42
 
43
43
  #### Neovim
44
44
 
45
- Neovim support uses a Lua plugin plus a sidecar process. On first start the
46
- plugin downloads a standalone binary for your platform (Linux / macOS / Windows,
47
- x64 or arm64) from GitHub Releases and verifies it against the release asset's
48
- SHA-256 digest before caching it. If the download or checksum verification fails,
49
- or no binary matches your platform, the plugin falls back to the bundled Node.js
50
- sidecar — Node.js is then required on PATH.
51
-
52
- Downloaded binaries are cached under `stdpath("cache")/pi-x-ide/` and reused on
53
- subsequent starts. The optional lazy.nvim build hook uses the bundled binary when
54
- present; otherwise it checks the release digest on install and update,
55
- downloading only when the cached binary is missing or stale.
45
+ Neovim support uses a Lua plugin plus a sidecar process. The plugin auto-downloads
46
+ a platform binary on first start and falls back to Node.js if unavailable.
56
47
 
57
48
  **lazy.nvim:**
58
49
 
@@ -73,14 +64,10 @@ downloading only when the cached binary is missing or stale.
73
64
  }
74
65
  ```
75
66
 
76
- > **Note:** The `init` block manually adds the `ide-plugins/nvim/` subdirectory to the runtime path to avoid a Lua module resolution issue with some lazy.nvim versions. The plugin options are passed through lazy.nvim's recommended `opts` field.
77
- >
78
- > The optional `build` hook resolves the bundled sidecar binary when present;
79
- > otherwise it checks the GitHub Release asset digest at install/update time
80
- > (`:Lazy build pi-x-ide` to re-run) and downloads only when the cached binary is
81
- > missing or stale. It is safe to omit: the plugin still downloads the binary
82
- > lazily on first start and falls back to the Node.js sidecar if the download is
83
- > unavailable.
67
+ > **Note:** The `init` block adds the plugin subdirectory to the runtime path to
68
+ > work around a Lua module resolution issue with some lazy.nvim versions. The
69
+ > optional `build` hook pre-downloads the sidecar binary; it is safe to omit —
70
+ > the plugin downloads it lazily on first start.
84
71
 
85
72
  **Native package:**
86
73
 
@@ -93,25 +80,7 @@ See [Configuration Reference](#neovim-2) for full setup options, commands, and t
93
80
 
94
81
  #### JetBrains IDEs
95
82
 
96
- JetBrains support is provided by the plugin project under `ide-plugins/jetbrains`. The MVP is installed manually: build a local ZIP and install it through the IDE, or run it in a sandbox IDE for development.
97
-
98
- Run a sandbox IDE:
99
-
100
- ```bash
101
- cd ide-plugins/jetbrains
102
- ./gradlew runIde
103
- ```
104
-
105
- Build a plugin ZIP for manual installation:
106
-
107
- ```bash
108
- cd ide-plugins/jetbrains
109
- ./gradlew buildPlugin
110
- ```
111
-
112
- The ZIP is written to `ide-plugins/jetbrains/build/distributions/`. Install it from **Settings | Plugins | ⚙ | Install Plugin from Disk...**.
113
-
114
- JetBrains MVP support includes live active-file tracking, live selection tracking, `Ctrl+Alt+K` / **Pi x IDE: Attach Selection**, Pi-side `/ide auto`, and **Pi x IDE: Open Pi Terminal**. Diagnostic Quick Fix actions and Pi-side automatic JetBrains plugin installation are not part of the MVP.
83
+ Download the latest JetBrains plugin ZIP(pi-x-ide-jetbrains-\*.zip) from the [latest GitHub Release](https://github.com/balaenis/pi-x-ide/releases/latest), then install it in your JetBrains IDE via **Settings | Plugins | | Install Plugin from Disk...**.
115
84
 
116
85
  ### Connect Pi & Verify
117
86
 
@@ -121,21 +90,26 @@ Start Pi in the **same project directory** as your IDE workspace:
121
90
  pi
122
91
  ```
123
92
 
124
- Pi auto-loads `pi-x-ide` and connects to your IDE. The TUI should display a connected IDE source such as `IDE: vscode ✓` or `IDE: jetbrains ✓` in the footer and a widget showing the IDE name, workspace, current file, and selection range.
93
+ Pi auto-loads `pi-x-ide` and connects to your IDE. The TUI shows a widget above the
94
+ editor with the current IDE connection and selection state.
125
95
 
126
96
  **Verify it works:**
127
97
 
128
98
  Open a file in your IDE and select some text. The widget should update in real time:
129
99
 
130
100
  ```
131
- IDE: vscode ✓ src/foo.ts#L10-L20 pending
101
+ foo.ts#L10-L20
132
102
  ```
133
103
 
134
104
  Attach the selection from either side: press `Ctrl+Alt+K` (Linux/Windows) or `Cmd+Alt+K` (macOS) in a VS Code-family IDE, press `Ctrl+Alt+K` or run **Pi x IDE: Attach Selection** in JetBrains, use `:PiXIdeAttach` in Neovim, or focus the Pi TUI and press `Ctrl+Alt+K` / run `/ide attach`. The Pi input box should insert `@src/foo.ts#L10-L20`.
135
105
 
136
- Type a chat prompt in Pi and submit it. The selected text is injected as LLM context (does not persist in session history). After submission, the widget shows `sent`.
106
+ Type a chat prompt in Pi and submit it. The selected text is injected as LLM context.
107
+ After submission, the widget changes to
108
+ `⧉ ✓ foo.ts#L10-L20`.
137
109
 
138
- For diagnostics in VS Code-family IDEs, connect Pi first, then place the cursor on an error or warning and open Quick Fix. The **Pi: Fix it** and **Pi: Send diagnostic** actions are shown only while at least one Pi client is connected. **Pi: Fix it** sends the diagnostic message, source range, nearby context lines, and related information to one connected Pi client and starts a diagnostic-analysis turn with a configurable prompt template (see [`fix_prompt`](#pi-side-configuration)). **Pi: Send diagnostic** sends the same context to one connected Pi client and pastes it into Pi's input box without starting a turn. JetBrains does not provide diagnostic Quick Fix actions in the MVP.
110
+ **Diagnostic Quick Fix (VS Code only):** place the cursor on an error or warning,
111
+ open Quick Fix, and choose **Pi: Fix it** to send the diagnostic to Pi and start an
112
+ analysis turn, or **Pi: Send diagnostic** to paste it into the input box.
139
113
 
140
114
  **If the connection doesn't appear:**
141
115
 
@@ -143,13 +117,14 @@ For diagnostics in VS Code-family IDEs, connect Pi first, then place the cursor
143
117
  - If the IDE was started after Pi, reload the IDE window and run `/ide auto` again.
144
118
  - Run `/ide` to manually select a connection from the list.
145
119
 
146
- ### WSL2 IDE Discovery
147
-
148
- VS Code Remote WSL works like a same-host setup: the extension host runs inside WSL, writes Linux-side lock files under `~/.pi/pi-x-ide/lock`, and binds the WebSocket server inside the WSL network namespace.
120
+ ### WSL2
149
121
 
150
- When Pi runs inside WSL2 and a native Windows IDE plugin is running on the Windows side, Pi also scans Windows user lock directories such as `/mnt/c/Users/<user>/.pi/pi-x-ide/lock`. New Windows-side lock files include `runningInWindows: true`; Pi uses that metadata to try the WSL default gateway before falling back to the lock file's `host` value. Windows and WSL UNC paths are normalized before workspace matching and before formatting `@file#Lx-Ly` mentions.
122
+ When Pi runs inside WSL2 and your IDE runs on native Windows, Pi automatically
123
+ discovers the IDE connection across the WSL boundary. No extra configuration is
124
+ needed in most cases.
151
125
 
152
- If your WSL networking mode, firewall, or endpoint security blocks the default gateway, set `PI_X_IDE_HOST_OVERRIDE`:
126
+ If your WSL networking mode, firewall, or endpoint security blocks the automatic
127
+ discovery, set `PI_X_IDE_HOST_OVERRIDE`:
153
128
 
154
129
  ```bash
155
130
  PI_X_IDE_HOST_OVERRIDE=127.0.0.1 pi
@@ -191,8 +166,6 @@ Default database paths:
191
166
  - **Windows:** `%LOCALAPPDATA%\Zed\db\0-stable\db.sqlite`
192
167
  - **WSL with Windows Zed:** `/mnt/c/Users/<user>/AppData/Local/Zed/db/0-stable/db.sqlite`
193
168
 
194
- When Pi runs in WSL and Zed runs as a Windows app, pi-x-ide normalizes Windows paths (`C:\Users\<user>\project`) to `/mnt/c/Users/<user>/project`, and matching WSL UNC paths to `/home/<user>/project`.
195
-
196
169
  #### Neovim
197
170
 
198
171
  ```lua
@@ -201,14 +174,12 @@ require("pi_x_ide").setup({
201
174
  keymap = "<C-A-k>",
202
175
  debounce_ms = 150,
203
176
  -- sidecar_cmd = { "node", "/absolute/path/to/pi-x-ide-nvim-sidecar.cjs" },
204
- -- (defaults to the platform binary; falls back to node + cjs if no binary found)
205
177
  -- workspace_folders = { "/path/to/project" },
206
178
  })
207
179
  ```
208
180
 
209
181
  If the sidecar does not start, run `:PiXIdeStatus`, or set `sidecar_cmd` to a
210
- custom command. The plugin prefers the platform binary but falls back to Node.js
211
- when no binary matches.
182
+ custom command.
212
183
 
213
184
  **Commands:**
214
185
 
@@ -252,13 +223,14 @@ See [schemas/config.json](schemas/config.json) for editor schema guidance. A [co
252
223
  | Diagnostic Quick Fix | ✅ | ❌ | ❌ | ❌ |
253
224
  | Auto-install | ✅ VS Code-family only | N/A | ❌ | ❌ |
254
225
 
255
- ### Lock File Protocol
256
-
257
- After the IDE WebSocket server starts, connection information is written to `~/.pi/pi-x-ide/lock/`.
226
+ ### How Discovery Works
258
227
 
259
- Pi uses `ctx.cwd` to find the longest path match against `workspaceFolders` in the lock files, selecting the best-matching and most recent IDE connection. Pi auto-connects only when the current `cwd` is inside or equal to one of the IDE `workspaceFolders`; if `cwd` is only a parent directory such as `~/`, run `/ide` to choose a connection manually.
228
+ Pi discovers IDE connections via lock files under `~/.pi/pi-x-ide/lock/`. It
229
+ auto-connects when your terminal `cwd` is inside one of the IDE's workspace
230
+ folders. If `cwd` is only a parent directory (e.g. `~/`), run `/ide` to choose a
231
+ connection manually.
260
232
 
261
- See [docs/specs/ide-protocol.md](docs/specs/ide-protocol.md) for protocol details.
233
+ See [docs/specs/ide-protocol.md](docs/specs/ide-protocol.md) for the full protocol.
262
234
 
263
235
  ---
264
236
 
@@ -353,6 +325,6 @@ This project uses [Release Please](https://github.com/googleapis/release-please)
353
325
 
354
326
  See [RELEASE.md](RELEASE.md) for the full release guide.
355
327
 
356
- ## Acknowledgments
328
+ ## Reference
357
329
 
358
330
  - [opencode](https://github.com/anomalyco/opencode)
package/README.zh-CN.md CHANGED
@@ -42,14 +42,8 @@ PI_X_IDE_AUTO_INSTALL=0
42
42
 
43
43
  #### Neovim
44
44
 
45
- Neovim 支持由一个 Lua 插件和一个 sidecar 进程组成。首次启动时插件会自动从
46
- GitHub Releases 下载适合当前平台的独立二进制文件(Linux/macOS/Windows,
47
- x64 或 arm64),并在写入缓存前用 release asset 的 SHA-256 digest 做校验。下载
48
- 或校验失败、或无匹配二进制时,插件降级到内置的 Node.js sidecar — 此时需要
49
- PATH 中有 Node.js。
50
-
51
- 下载的二进制文件缓存在 `stdpath("cache")/pi-x-ide/` 目录,后续启动直接复用。可选的
52
- lazy.nvim build 钩子会优先使用插件包内的 bundled binary;如果不存在,则在安装和更新时检查 release digest,仅在缓存二进制缺失或过期时下载。
45
+ Neovim 支持由一个 Lua 插件和一个 sidecar 进程组成。插件首次启动时自动下载
46
+ 平台二进制文件,不可用时回退到 Node.js。
53
47
 
54
48
  **lazy.nvim:**
55
49
 
@@ -70,9 +64,9 @@ lazy.nvim build 钩子会优先使用插件包内的 bundled binary;如果不
70
64
  }
71
65
  ```
72
66
 
73
- > **注意:** `init` 块手动将 `ide-plugins/nvim/` 子目录加入 runtime path,以规避部分版本 lazy.nvim 的 Lua 模块解析兼容性问题。插件选项通过 lazy.nvim 推荐的 `opts` 字段传入。
74
- >
75
- > 可选的 `build` 钩子会优先使用插件包内的 bundled sidecar 二进制;如果不存在,则在安装/更新时检查 GitHub Release asset digest(用 `:Lazy build pi-x-ide` 可重新触发),仅在缓存二进制缺失或过期时下载。该钩子可以省略:插件仍会在首次启动时按需下载二进制,下载不可用时回退到 Node.js sidecar。
67
+ > **注意:** `init` 块将插件子目录加入 runtime path,以规避部分版本 lazy.nvim 的
68
+ > Lua 模块解析兼容性问题。可选的 `build` 钩子会预下载 sidecar 二进制;可以省略
69
+ > 插件会在首次启动时按需下载。
76
70
 
77
71
  **原生 package:**
78
72
 
@@ -85,25 +79,7 @@ lua require("pi_x_ide").setup({ keymap = "<leader>pa" })
85
79
 
86
80
  #### JetBrains IDE
87
81
 
88
- JetBrains 支持由 `ide-plugins/jetbrains` 下的插件项目提供。MVP 需要手动安装:可以构建本地 ZIP 后从 IDE 安装,也可以在开发用 sandbox IDE 中运行。
89
-
90
- 运行 sandbox IDE:
91
-
92
- ```bash
93
- cd ide-plugins/jetbrains
94
- ./gradlew runIde
95
- ```
96
-
97
- 构建用于手动安装的插件 ZIP:
98
-
99
- ```bash
100
- cd ide-plugins/jetbrains
101
- ./gradlew buildPlugin
102
- ```
103
-
104
- ZIP 会输出到 `ide-plugins/jetbrains/build/distributions/`。在 JetBrains IDE 中通过 **Settings | Plugins | ⚙ | Install Plugin from Disk...** 安装。
105
-
106
- JetBrains MVP 支持实时活跃文件追踪、实时选区追踪、`Ctrl+Alt+K` / **Pi x IDE: Attach Selection**、Pi 侧 `/ide auto`,以及 **Pi x IDE: Open Pi Terminal**。诊断 Quick Fix 和 Pi 侧自动安装 JetBrains 插件不属于 MVP 范围。
82
+ [GitHub 最新 Release](https://github.com/balaenis/pi-x-ide/releases/latest) 下载 JetBrains 插件 ZIP,然后在 JetBrains IDE 中通过 **Settings | Plugins | ⚙ | Install Plugin from Disk...** 安装。
107
83
 
108
84
  ### 连接 Pi 并验证
109
85
 
@@ -113,21 +89,25 @@ JetBrains MVP 支持实时活跃文件追踪、实时选区追踪、`Ctrl+Alt+K`
113
89
  pi
114
90
  ```
115
91
 
116
- Pi 自动加载 `pi-x-ide` 并连接 IDE。TUI 底部应显示类似 `IDE: vscode ✓` 或 `IDE: jetbrains ✓` 的已连接 IDE source,输入框下方 widget 显示 IDE 名称、workspace、当前文件和选区范围。
92
+ Pi 自动加载 `pi-x-ide` 并连接 IDE。TUI 在编辑器上方显示一个 widget,展示当前
93
+ IDE 连接和选区状态。
117
94
 
118
95
  **验证是否正常:**
119
96
 
120
97
  在 IDE 中打开文件并选中文本,widget 应实时更新:
121
98
 
122
99
  ```text
123
- IDE: vscode ✓ src/foo.ts#L10-L20 pending
100
+ foo.ts#L10-L20
124
101
  ```
125
102
 
126
103
  可以从任一侧附加选区:在 VS Code 系列 IDE 中按 `Ctrl+Alt+K`(Linux/Windows)或 `Cmd+Alt+K`(macOS),在 JetBrains 中按 `Ctrl+Alt+K` 或运行 **Pi x IDE: Attach Selection**,在 Neovim 中使用 `:PiXIdeAttach`,或聚焦 Pi TUI 后按 `Ctrl+Alt+K` / 运行 `/ide attach`。Pi 输入框应插入 `@src/foo.ts#L10-L20`。
127
104
 
128
- 在 Pi 中输入对话提示并提交,选中文本会作为 LLM 上下文注入(不写入 session 历史)。提交后 widget 显示 `sent`。
105
+ 在 Pi 中输入对话提示并提交,选中文本会作为 LLM 上下文注入。
106
+ 提交后 widget 变为 `⧉ ✓ foo.ts#L10-L20`。
129
107
 
130
- 对于 VS Code 系列 IDE 中的诊断信息,先连接 Pi,再把光标放在 error 或 warning 上并打开 Quick Fix。只有至少一个 Pi 客户端已连接时,才会显示 **Pi: Fix it** 和 **Pi: Send diagnostic**。**Pi: Fix it** 会把诊断消息、源码范围、附近上下文行和 related information 发送给一个已连接的 Pi 客户端,并用可自定义的 prompt 模板自动开始诊断分析(参见 [`fix_prompt`](#pi-侧配置))。**Pi: Send diagnostic** 会把相同上下文发送给一个已连接的 Pi 客户端并粘贴到 Pi 输入框,不会自动开始一轮对话。JetBrains MVP 不提供诊断 Quick Fix。
108
+ **诊断 Quick Fix(仅 VS Code):** 将光标放在 error 或 warning 上,打开 Quick Fix
109
+ 选择 **Pi: Fix it** 将诊断信息发送给 Pi 并启动分析对话,或选择 **Pi: Send diagnostic**
110
+ 将其粘贴到输入框。
131
111
 
132
112
  **如果连接未出现:**
133
113
 
@@ -135,13 +115,13 @@ IDE: vscode ✓ src/foo.ts#L10-L20 pending
135
115
  - 如果 IDE 在 Pi 之后启动,reload IDE 窗口后再次运行 `/ide auto`
136
116
  - 运行 `/ide` 手动从列表中选择连接
137
117
 
138
- ### WSL2 IDE 发现
139
-
140
- VS Code Remote WSL 的行为等同于同主机连接:扩展宿主运行在 WSL 内部,在 Linux 侧的 `~/.pi/pi-x-ide/lock` 写入 lock file,并在 WSL 网络命名空间中绑定 WebSocket server。
118
+ ### WSL2
141
119
 
142
- 当 Pi 运行在 WSL2 中,而原生 Windows IDE 插件运行在 Windows 侧时,Pi 也会扫描 Windows 用户 lock 目录,例如 `/mnt/c/Users/<user>/.pi/pi-x-ide/lock`。新的 Windows 侧 lock file 会包含 `runningInWindows: true`;Pi 会使用该元数据优先尝试 WSL 默认网关,再回退到 lock file 中的 `host`。Windows 路径和 WSL UNC 路径会在 workspace 匹配以及格式化 `@file#Lx-Ly` mention 前规范化。
120
+ 当 Pi 运行在 WSL2 中、IDE 运行在原生 Windows 上时,Pi 会自动跨 WSL 边界发现
121
+ IDE 连接。大多数情况下无需额外配置。
143
122
 
144
- 如果你的 WSL 网络模式、防火墙或终端安全策略阻止默认网关访问,可设置 `PI_X_IDE_HOST_OVERRIDE`:
123
+ 如果你的 WSL 网络模式、防火墙或终端安全策略阻止自动发现,可设置
124
+ `PI_X_IDE_HOST_OVERRIDE`:
145
125
 
146
126
  ```bash
147
127
  PI_X_IDE_HOST_OVERRIDE=127.0.0.1 pi
@@ -183,8 +163,6 @@ Pi 默认也会在 TUI 中注册 `Ctrl+Alt+K`,作为 `/ide attach` 的快捷
183
163
  - **Windows:** `%LOCALAPPDATA%\Zed\db\0-stable\db.sqlite`
184
164
  - **WSL + Windows 版 Zed:** `/mnt/c/Users/<user>/AppData/Local/Zed/db/0-stable/db.sqlite`
185
165
 
186
- 当 Pi 运行在 WSL 中而 Zed 是 Windows 应用时,pi-x-ide 会将 Windows 路径(`C:\Users\<user>\project`)规范化为 `/mnt/c/Users/<user>/project`,并将 WSL UNC 路径规范化为 `/home/<user>/project`。
187
-
188
166
  #### Neovim
189
167
 
190
168
  ```lua
@@ -193,13 +171,11 @@ require("pi_x_ide").setup({
193
171
  keymap = "<C-A-k>",
194
172
  debounce_ms = 150,
195
173
  -- sidecar_cmd = { "node", "/absolute/path/to/pi-x-ide-nvim-sidecar.cjs" },
196
- -- (默认使用平台二进制文件;找不到时降级到 node + cjs)
197
174
  -- workspace_folders = { "/path/to/project" },
198
175
  })
199
176
  ```
200
177
 
201
- 如果 sidecar 无法启动,请运行 `:PiXIdeStatus`,或设置 `sidecar_cmd` 为自定义
202
- 命令。插件优先使用平台二进制文件,找不到匹配项时降级到 Node.js。
178
+ 如果 sidecar 无法启动,请运行 `:PiXIdeStatus`,或设置 `sidecar_cmd` 为自定义命令。
203
179
 
204
180
  **命令:**
205
181
 
@@ -243,13 +219,13 @@ Pi 侧变量可设为真实环境变量或写入 `~/.pi/pi-x-ide/config.json`
243
219
  | 诊断 Quick Fix | ✅ | ❌ | ❌ | ❌ |
244
220
  | 自动安装 | ✅ 仅 VS Code 系列 | N/A | ❌ | ❌ |
245
221
 
246
- ### Lock File 协议
247
-
248
- IDE WebSocket server 启动后默认将连接信息写入 `~/.pi/pi-x-ide/lock/`。
222
+ ### 发现机制
249
223
 
250
- Pi 通过 `ctx.cwd` lock file 中的 `workspaceFolders` 做最长路径匹配,选中最匹配且最新的 IDE 连接。只有当前 `cwd` 位于某个 IDE `workspaceFolders` 内或与其相等时,Pi 才会自动连接;如果 `cwd` 只是父级目录(例如 `~/`),请运行 `/ide` 手动选择连接。
224
+ Pi 通过 `~/.pi/pi-x-ide/lock/` 下的 lock file 发现 IDE 连接。当终端 `cwd`
225
+ 位于某个 IDE workspace 目录内时自动连接;如果 `cwd` 只是父级目录(如 `~/`),
226
+ 请运行 `/ide` 手动选择连接。
251
227
 
252
- 协议详情见 [docs/specs/ide-protocol.md](docs/specs/ide-protocol.md)。
228
+ 完整协议见 [docs/specs/ide-protocol.md](docs/specs/ide-protocol.md)。
253
229
 
254
230
  ---
255
231