pi-x-ide 1.15.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 (131) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/README.md +2 -3
  3. package/RELEASE.md +213 -0
  4. package/dist/src/pi/commands.js +0 -1
  5. package/dist/src/pi/connection.js +0 -3
  6. package/dist/src/pi/context.js +0 -3
  7. package/dist/src/pi/diagnostics.js +0 -1
  8. package/dist/src/pi/discovery.js +0 -3
  9. package/dist/src/pi/ide-host.js +0 -3
  10. package/dist/src/pi/index.js +0 -1
  11. package/dist/src/pi/install.js +0 -5
  12. package/dist/src/pi/reconnect.js +0 -1
  13. package/dist/src/pi/safety.js +0 -1
  14. package/dist/src/pi/state.js +0 -1
  15. package/dist/src/pi/ui.js +37 -16
  16. package/dist/src/pi/zed.js +5 -45
  17. package/dist/src/shared/config-options.js +0 -1
  18. package/dist/src/shared/config.js +0 -1
  19. package/dist/src/shared/display-width.js +98 -0
  20. package/dist/src/shared/errors.js +0 -3
  21. package/dist/src/shared/format.js +0 -3
  22. package/dist/src/shared/ide-server.js +0 -3
  23. package/dist/src/shared/lock-file.js +0 -1
  24. package/dist/src/shared/paths.js +0 -13
  25. package/dist/src/shared/platform.js +0 -14
  26. package/dist/src/shared/protocol.js +0 -1
  27. package/dist/src/shared/schema.js +0 -1
  28. package/dist/src/shared/ws.js +0 -1
  29. package/package.json +11 -7
  30. package/dist/package.json +0 -68
  31. package/dist/src/nvim/sidecar-schema.d.ts +0 -25
  32. package/dist/src/nvim/sidecar-schema.js +0 -64
  33. package/dist/src/nvim/sidecar-schema.js.map +0 -1
  34. package/dist/src/nvim/sidecar.d.ts +0 -16
  35. package/dist/src/nvim/sidecar.js +0 -174
  36. package/dist/src/nvim/sidecar.js.map +0 -1
  37. package/dist/src/pi/commands.d.ts +0 -20
  38. package/dist/src/pi/commands.js.map +0 -1
  39. package/dist/src/pi/connection.d.ts +0 -42
  40. package/dist/src/pi/connection.js.map +0 -1
  41. package/dist/src/pi/context.d.ts +0 -8
  42. package/dist/src/pi/context.js.map +0 -1
  43. package/dist/src/pi/diagnostics.d.ts +0 -10
  44. package/dist/src/pi/diagnostics.js.map +0 -1
  45. package/dist/src/pi/discovery.d.ts +0 -16
  46. package/dist/src/pi/discovery.js.map +0 -1
  47. package/dist/src/pi/ide-host.d.ts +0 -17
  48. package/dist/src/pi/ide-host.js.map +0 -1
  49. package/dist/src/pi/index.d.ts +0 -4
  50. package/dist/src/pi/index.js.map +0 -1
  51. package/dist/src/pi/install.d.ts +0 -55
  52. package/dist/src/pi/install.js.map +0 -1
  53. package/dist/src/pi/reconnect.d.ts +0 -6
  54. package/dist/src/pi/reconnect.js.map +0 -1
  55. package/dist/src/pi/safety.d.ts +0 -7
  56. package/dist/src/pi/safety.js.map +0 -1
  57. package/dist/src/pi/state.d.ts +0 -31
  58. package/dist/src/pi/state.js.map +0 -1
  59. package/dist/src/pi/ui.d.ts +0 -13
  60. package/dist/src/pi/ui.js.map +0 -1
  61. package/dist/src/pi/zed.d.ts +0 -31
  62. package/dist/src/pi/zed.js.map +0 -1
  63. package/dist/src/shared/config-options.d.ts +0 -50
  64. package/dist/src/shared/config-options.js.map +0 -1
  65. package/dist/src/shared/config.d.ts +0 -10
  66. package/dist/src/shared/config.js.map +0 -1
  67. package/dist/src/shared/errors.d.ts +0 -5
  68. package/dist/src/shared/errors.js.map +0 -1
  69. package/dist/src/shared/format.d.ts +0 -25
  70. package/dist/src/shared/format.js.map +0 -1
  71. package/dist/src/shared/ide-server.d.ts +0 -24
  72. package/dist/src/shared/ide-server.js.map +0 -1
  73. package/dist/src/shared/lock-file.d.ts +0 -17
  74. package/dist/src/shared/lock-file.js.map +0 -1
  75. package/dist/src/shared/paths.d.ts +0 -14
  76. package/dist/src/shared/paths.js.map +0 -1
  77. package/dist/src/shared/platform.d.ts +0 -5
  78. package/dist/src/shared/platform.js.map +0 -1
  79. package/dist/src/shared/protocol.d.ts +0 -138
  80. package/dist/src/shared/protocol.js.map +0 -1
  81. package/dist/src/shared/schema.d.ts +0 -10
  82. package/dist/src/shared/schema.js.map +0 -1
  83. package/dist/src/shared/ws.d.ts +0 -2
  84. package/dist/src/shared/ws.js.map +0 -1
  85. package/dist/test/connection.test.d.ts +0 -1
  86. package/dist/test/connection.test.js +0 -312
  87. package/dist/test/connection.test.js.map +0 -1
  88. package/dist/test/diagnostics.test.d.ts +0 -1
  89. package/dist/test/diagnostics.test.js +0 -168
  90. package/dist/test/diagnostics.test.js.map +0 -1
  91. package/dist/test/ide-server.test.d.ts +0 -1
  92. package/dist/test/ide-server.test.js +0 -50
  93. package/dist/test/ide-server.test.js.map +0 -1
  94. package/dist/test/install.test.d.ts +0 -1
  95. package/dist/test/install.test.js +0 -125
  96. package/dist/test/install.test.js.map +0 -1
  97. package/dist/test/nvim-sidecar.test.d.ts +0 -1
  98. package/dist/test/nvim-sidecar.test.js +0 -149
  99. package/dist/test/nvim-sidecar.test.js.map +0 -1
  100. package/dist/test/shared.test.d.ts +0 -1
  101. package/dist/test/shared.test.js +0 -522
  102. package/dist/test/shared.test.js.map +0 -1
  103. package/dist/test/zed.test.d.ts +0 -1
  104. package/dist/test/zed.test.js +0 -609
  105. package/dist/test/zed.test.js.map +0 -1
  106. package/src/nvim/sidecar-schema.ts +0 -71
  107. package/src/nvim/sidecar.ts +0 -223
  108. package/src/pi/commands.ts +0 -174
  109. package/src/pi/connection.ts +0 -241
  110. package/src/pi/context.ts +0 -105
  111. package/src/pi/diagnostics.ts +0 -115
  112. package/src/pi/discovery.ts +0 -152
  113. package/src/pi/ide-host.ts +0 -82
  114. package/src/pi/index.ts +0 -478
  115. package/src/pi/install.ts +0 -349
  116. package/src/pi/reconnect.ts +0 -33
  117. package/src/pi/safety.ts +0 -38
  118. package/src/pi/state.ts +0 -39
  119. package/src/pi/ui.ts +0 -200
  120. package/src/pi/zed.ts +0 -507
  121. package/src/shared/config-options.ts +0 -63
  122. package/src/shared/config.ts +0 -67
  123. package/src/shared/errors.ts +0 -43
  124. package/src/shared/format.ts +0 -109
  125. package/src/shared/ide-server.ts +0 -183
  126. package/src/shared/lock-file.ts +0 -67
  127. package/src/shared/paths.ts +0 -120
  128. package/src/shared/platform.ts +0 -79
  129. package/src/shared/protocol.ts +0 -161
  130. package/src/shared/schema.ts +0 -189
  131. 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
@@ -6,7 +6,6 @@ Automatically attaches the currently opened or selected file and text range from
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
-
10
9
  ## Installation & Usage
11
10
 
12
11
  ### Install the Pi Extension Package
@@ -81,7 +80,7 @@ See [Configuration Reference](#neovim-2) for full setup options, commands, and t
81
80
 
82
81
  #### JetBrains IDEs
83
82
 
84
- 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...**.
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...**.
85
84
 
86
85
  ### Connect Pi & Verify
87
86
 
@@ -326,6 +325,6 @@ This project uses [Release Please](https://github.com/googleapis/release-please)
326
325
 
327
326
  See [RELEASE.md](RELEASE.md) for the full release guide.
328
327
 
329
- ## Acknowledgments
328
+ ## Reference
330
329
 
331
330
  - [opencode](https://github.com/anomalyco/opencode)
package/RELEASE.md ADDED
@@ -0,0 +1,213 @@
1
+ # Release Process
2
+
3
+ This project uses [Release Please](https://github.com/googleapis/release-please) for automated releases.
4
+
5
+ It follows two release channels:
6
+
7
+ - **Pre-release**: Normal PRs merged to `main` create `x.x.x-next.N` versions published to the `next` npm dist-tag for testing and feedback.
8
+ - **Stable Releases**: Release PRs merged to `main` create computed versions and publish to the `latest` npm dist-tag.
9
+
10
+ You can also trigger manual releases in the following ways:
11
+
12
+ - Push a tag in the format `v{semver}` (e.g. `v1.2.3`)
13
+ - Run the `publish.yml` workflow manually from the GitHub Actions tab and supply a channel `latest` or `next`.
14
+
15
+ ## First Release
16
+
17
+ Before automated releases will work, you need to perform the first release manually.
18
+
19
+ Why:
20
+
21
+ - The first release creates the npm package on npmjs.com.
22
+ - This then allows you to set up trusted publishing with GitHub Actions for future releases.
23
+
24
+ ### Steps
25
+
26
+ 1. Make sure the `package.json` is correct:
27
+ - Is the `version` correct?
28
+ - Is the package name correct?
29
+ - Do you have the right `keywords`?
30
+ - Do you have the right `repository` field?
31
+ - Do you have the right `author` field?
32
+
33
+ 2. Run `bunx npm login` to authenticate with npm.
34
+
35
+ 3. Run `mise run build` to build the package.
36
+
37
+ 4. Run `bun publish --access public` to publish the first version.
38
+
39
+ 5. Go to your npm package settings on npmjs.com and add a trusted publisher for GitHub Actions with:
40
+ - **Organization or user**: Your GitHub username/org
41
+ - **Repository**: Your repository name
42
+ - **Workflow filename**: `publish.yml` (the publish workflow filename)
43
+
44
+ 6. [Restrict token access](https://docs.npmjs.com/trusted-publishers#recommended-restrict-token-access-when-using-trusted-publishers) for maximum security.
45
+
46
+ ## Release Workflow
47
+
48
+ ### Conventional Commits
49
+
50
+ We follow [Conventional Commits](https://www.conventionalcommits.org/) specification:
51
+
52
+ - `fix:` patches
53
+ - `feat:` minor features
54
+ - `feat!:` or `fix!:` breaking changes
55
+
56
+ ### Pre-1.0 Versioning
57
+
58
+ While the version is `0.x.x`, breaking changes bump the **minor** version.
59
+
60
+ ### Release Process
61
+
62
+ 1. Push commits to the `main` branch
63
+ 2. Release Please will:
64
+ - Analyze commits
65
+ - Determine version bump
66
+ - Update `package.json`
67
+ - Update `CHANGELOG.md`
68
+ - Create a release PR
69
+
70
+ 3. Review and merge the Release Please PR
71
+
72
+ ### Commit Message Examples
73
+
74
+ - `fix: resolve IDE connection timeout`
75
+ - `feat: add VS Code workspace trust support`
76
+ - `feat!: change extension activation API`
77
+ - `docs: improve README`
78
+ - `chore: update dependencies`
79
+
80
+ ## Advanced Release Features
81
+
82
+ ### Force a Specific Version
83
+
84
+ Use the `Release-As` footer in your commit message to force a specific version, bypassing conventional commit analysis:
85
+
86
+ ```bash
87
+ git commit --allow-empty -m "chore: release 2.0.0" -m "Release-As: 2.0.0"
88
+ ```
89
+
90
+ This creates a commit:
91
+
92
+ ```
93
+ chore: release 2.0.0
94
+
95
+ Release-As: 2.0.0
96
+ ```
97
+
98
+ Release Please will open a PR for version `2.0.0` regardless of commit message types.
99
+
100
+ ### Update Extra Files During Release
101
+
102
+ If you have version numbers in other files beyond `package.json`, configure them in `release-please-config.json`:
103
+
104
+ ```json
105
+ {
106
+ "extra-files": [
107
+ "src/version.ts",
108
+ {
109
+ "type": "generic",
110
+ "path": "docs/VERSION.md"
111
+ },
112
+ {
113
+ "type": "json",
114
+ "path": "ide-plugins/vscode/package.json",
115
+ "jsonpath": "$.version"
116
+ }
117
+ ]
118
+ }
119
+ ```
120
+
121
+ **Supported file types:**
122
+
123
+ - Generic files (any type)
124
+ - JSON files (with JSONPath)
125
+ - YAML files (with JSONPath)
126
+ - XML files (with XPath)
127
+ - TOML files (with JSONPath)
128
+
129
+ ### Magic Comments for Version Markers
130
+
131
+ Use inline comments to mark where versions should be updated:
132
+
133
+ ```javascript
134
+ // x-release-please-version
135
+ const VERSION = "1.0.0";
136
+
137
+ // x-release-please-major
138
+ const MAJOR = "1";
139
+ ```
140
+
141
+ Or use block markers:
142
+
143
+ ```markdown
144
+ <!-- x-release-please-start-version -->
145
+
146
+ - Current version: 1.0.0
147
+ <!-- x-release-please-end -->
148
+ ```
149
+
150
+ Available markers:
151
+
152
+ - `x-release-please-version` - Full semver
153
+ - `x-release-please-major` - Major number
154
+ - `x-release-please-minor` - Minor number
155
+ - `x-release-please-patch` - Patch number
156
+
157
+ ## Do Not
158
+
159
+ - Manually edit Release Please PRs
160
+ - Manually create GitHub releases
161
+ - Modify version numbers directly
162
+
163
+ ## Publishing
164
+
165
+ Releases are automatically published to npm when the Release Please PR is merged.
166
+
167
+ ### NPM Trusted Publishing
168
+
169
+ This project supports [NPM Trusted Publishing](https://docs.npmjs.com/trusted-publishers) with GitHub Actions. No npm tokens are needed — authentication is handled automatically via OIDC (OpenID Connect).
170
+
171
+ **How it works:**
172
+
173
+ - Each publish uses short-lived, cryptographically-signed tokens specific to your workflow
174
+ - Tokens cannot be extracted or reused
175
+ - No need to manage or rotate long-lived credentials
176
+
177
+ **Setup required:**
178
+
179
+ 1. Go to your npm package settings on npmjs.com
180
+ 2. Add a trusted publisher for GitHub Actions with:
181
+ - **Organization or user**: Your GitHub username/org
182
+ - **Repository**: Your repository name
183
+ - **Workflow filename**: `publish.yml` (the publish workflow filename)
184
+ 3. Optionally, [restrict token access](https://docs.npmjs.com/trusted-publishers#recommended-restrict-token-access-when-using-trusted-publishers) for maximum security
185
+
186
+ When you merge a release PR, the GitHub Actions workflow will automatically:
187
+
188
+ 1. Build the package
189
+ 2. Publish to npm with OIDC authentication
190
+ 3. Create a GitHub release
191
+
192
+ ### Manual Releases
193
+
194
+ You can also manually trigger a release by pushing a tag in the format `v{semver}`:
195
+
196
+ ```bash
197
+ git tag v1.2.3
198
+ git push origin v1.2.3
199
+ ```
200
+
201
+ This will:
202
+
203
+ 1. Trigger the release workflow
204
+ 2. Build and publish to npm
205
+ 3. Create a GitHub release
206
+
207
+ Use manual releases for:
208
+
209
+ - Hot-fixes outside the normal release cycle
210
+ - Bypassing Release Please when needed
211
+ - Direct version control over releases
212
+
213
+ **Learn more:** See the [NPM Trusted Publishing documentation](https://docs.npmjs.com/trusted-publishers) for complete setup and best practices.
@@ -123,4 +123,3 @@ function attachLatest(runtime, ctx) {
123
123
  (0, ui_1.updateIdeUi)(runtime, ctx);
124
124
  ctx.ui.notify(`Attached ${mention}`, "info");
125
125
  }
126
- //# sourceMappingURL=commands.js.map
@@ -4,8 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.IdeConnection = exports.IdeConnectionTimeoutError = exports.IDE_CONNECT_TIMEOUT_MS = void 0;
7
- // ABOUTME: Implements the Pi-side WebSocket client that receives IDE selection notifications.
8
- // ABOUTME: Contains callback dispatch boundaries so IDE messages cannot crash the Pi process.
9
7
  const ws_1 = __importDefault(require("ws"));
10
8
  const config_1 = require("../shared/config");
11
9
  const protocol_1 = require("../shared/protocol");
@@ -208,4 +206,3 @@ function getServerInfo(response) {
208
206
  ide: typeof ide === "string" ? ide : undefined,
209
207
  };
210
208
  }
211
- //# sourceMappingURL=connection.js.map
@@ -18,8 +18,6 @@ function registerContextHandlers(pi, runtime) {
18
18
  return;
19
19
  runtime.turnSelection = runtime.latestSelection;
20
20
  }, ctx));
21
- // Merge the active editor context into the submitted user prompt rather than
22
- // adding a separate extension message.
23
21
  pi.on("message_end", (event, ctx) => (0, safety_1.runPiBoundary)("Pi message_end", runtime, () => {
24
22
  runtime.ctx = ctx;
25
23
  if (!runtime.enabled || !runtime.turnSelection)
@@ -68,4 +66,3 @@ function messageContainsMarker(message) {
68
66
  return (serialized.includes(`<${format_1.SYSTEM_REMINDER_TAG}><${format_1.SELECTED_CONTEXT_MARKER}>`) ||
69
67
  serialized.includes(diagnostics_1.DIAGNOSTIC_CONTEXT_MARKER));
70
68
  }
71
- //# sourceMappingURL=context.js.map
@@ -99,4 +99,3 @@ function fence(text) {
99
99
  const fenceMarker = text.includes("```") ? "````" : "```";
100
100
  return `${fenceMarker}\n${text}\n${fenceMarker}`;
101
101
  }
102
- //# sourceMappingURL=diagnostics.js.map
@@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sortCandidates = sortCandidates;
4
4
  exports.discoverIdeCandidates = discoverIdeCandidates;
5
5
  exports.resolveBestIdeCandidate = resolveBestIdeCandidate;
6
- // ABOUTME: Discovers IDE lock files and ranks candidates for Pi auto-connect.
7
- // ABOUTME: Scans local and WSL-visible Windows lock directories while cleaning stale files safely.
8
6
  const promises_1 = require("node:fs/promises");
9
7
  const node_path_1 = require("node:path");
10
8
  const protocol_1 = require("../shared/protocol");
@@ -119,4 +117,3 @@ async function isDeadWindowsPidLockReachable(lock, options, env) {
119
117
  async function resolveBestIdeCandidate(options) {
120
118
  return (await discoverIdeCandidates(options))[0];
121
119
  }
122
- //# sourceMappingURL=discovery.js.map
@@ -5,8 +5,6 @@ exports.resolveIdeHost = resolveIdeHost;
5
5
  exports.resolveWslDefaultGateway = resolveWslDefaultGateway;
6
6
  exports.parseDefaultGateway = parseDefaultGateway;
7
7
  exports.tcpReachable = tcpReachable;
8
- // ABOUTME: Resolves the host Pi should use when connecting to IDE WebSocket lock files.
9
- // ABOUTME: Handles config overrides and WSL-to-Windows gateway probing for native Windows IDEs.
10
8
  const node_child_process_1 = require("node:child_process");
11
9
  const node_net_1 = require("node:net");
12
10
  const node_util_1 = require("node:util");
@@ -69,4 +67,3 @@ function tcpReachable(host, port, timeoutMs = exports.IDE_HOST_TCP_PROBE_TIMEOUT
69
67
  socket.once("error", () => finish(false));
70
68
  });
71
69
  }
72
- //# sourceMappingURL=ide-host.js.map
@@ -370,4 +370,3 @@ function handleAtMentioned(runtime, params) {
370
370
  ctx.ui.pasteToEditor(text);
371
371
  ctx.ui.notify(`Attached ${text}`, "info");
372
372
  }
373
- //# sourceMappingURL=index.js.map
@@ -130,7 +130,6 @@ async function findExecutable(command, env = process.env) {
130
130
  return candidate;
131
131
  }
132
132
  catch {
133
- // Keep searching PATH.
134
133
  }
135
134
  }
136
135
  return undefined;
@@ -255,9 +254,6 @@ function parsePathExt(env) {
255
254
  .split(";")
256
255
  .map((extension) => extension.trim())
257
256
  .filter(Boolean);
258
- // On Windows, skip extensionless search to avoid matching
259
- // non-executable shell scripts (e.g., VS Code ships both
260
- // `code` (sh) and `code.cmd` — only `.cmd` is executable).
261
257
  if (process.platform !== "win32") {
262
258
  return values.length > 0 ? ["", ...values] : [""];
263
259
  }
@@ -289,4 +285,3 @@ function getExecOutput(error, key) {
289
285
  return value.toString();
290
286
  return "";
291
287
  }
292
- //# sourceMappingURL=install.js.map
@@ -27,4 +27,3 @@ function formatReconnectLimitMessage(candidate) {
27
27
  function reconnectCandidateKey(candidate) {
28
28
  return `${candidate.path}:${candidate.lock.host}:${candidate.lock.port}:${candidate.mtimeMs}`;
29
29
  }
30
- //# sourceMappingURL=reconnect.js.map
@@ -17,4 +17,3 @@ function runPiBoundary(scope, runtime, action, ctx) {
17
17
  async function runPiBoundaryAsync(scope, runtime, action, ctx) {
18
18
  return (0, errors_1.safeRunAsync)(scope, action, (error) => containPiError(runtime, scope, error, ctx));
19
19
  }
20
- //# sourceMappingURL=safety.js.map
@@ -12,4 +12,3 @@ function createRuntime() {
12
12
  sessionGeneration: 0,
13
13
  };
14
14
  }
15
- //# sourceMappingURL=state.js.map