termbeam 1.20.4 → 1.21.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 (71) hide show
  1. package/CHANGELOG.md +637 -0
  2. package/package.json +3 -2
  3. package/public/assets/{_basePickBy-BLefhu0l.js → _basePickBy-BIHCnP-C.js} +1 -1
  4. package/public/assets/{_baseUniq-DaY_Bc3O.js → _baseUniq-DnMFuvsx.js} +1 -1
  5. package/public/assets/{arc-DmuNthMW.js → arc-BNbndmGK.js} +1 -1
  6. package/public/assets/{architectureDiagram-Q4EWVU46-D_3Wy2pQ.js → architectureDiagram-Q4EWVU46-BmFTw0nZ.js} +1 -1
  7. package/public/assets/{blockDiagram-DXYQGD6D-BcStipzf.js → blockDiagram-DXYQGD6D-wN2o-9_g.js} +1 -1
  8. package/public/assets/{c4Diagram-AHTNJAMY-BwE7ZnCD.js → c4Diagram-AHTNJAMY-BYDCN8H0.js} +1 -1
  9. package/public/assets/channel-DSjdyO61.js +1 -0
  10. package/public/assets/{chunk-4BX2VUAB-CxYOWomN.js → chunk-4BX2VUAB-Cob7CgE_.js} +1 -1
  11. package/public/assets/{chunk-4TB4RGXK-D1SjwnL0.js → chunk-4TB4RGXK-DDonZyK6.js} +1 -1
  12. package/public/assets/{chunk-55IACEB6-CCtV1y23.js → chunk-55IACEB6-BTW1fQoW.js} +1 -1
  13. package/public/assets/{chunk-EDXVE4YY-CwJdMkPT.js → chunk-EDXVE4YY-BgWTXLsq.js} +1 -1
  14. package/public/assets/{chunk-FMBD7UC4-CL6X-Bgf.js → chunk-FMBD7UC4-CxmTHyai.js} +1 -1
  15. package/public/assets/{chunk-OYMX7WX6-Nt-YAKKo.js → chunk-OYMX7WX6-v5mXWXoC.js} +1 -1
  16. package/public/assets/{chunk-QZHKN3VN-JqEPJ-I8.js → chunk-QZHKN3VN-CyNtEZcY.js} +1 -1
  17. package/public/assets/{chunk-YZCP3GAM-B2BkSOHZ.js → chunk-YZCP3GAM-qiJvjghT.js} +1 -1
  18. package/public/assets/classDiagram-6PBFFD2Q-DRtX5Ta8.js +1 -0
  19. package/public/assets/classDiagram-v2-HSJHXN6E-DRtX5Ta8.js +1 -0
  20. package/public/assets/clone-iFtwY3RV.js +1 -0
  21. package/public/assets/{cose-bilkent-S5V4N54A-B2XXKALr.js → cose-bilkent-S5V4N54A-CsbF4Rbc.js} +1 -1
  22. package/public/assets/{dagre-KV5264BT-BbosVmxG.js → dagre-KV5264BT-CiBddJE9.js} +1 -1
  23. package/public/assets/{diagram-5BDNPKRD-DwScs67g.js → diagram-5BDNPKRD-4Km3IxIT.js} +1 -1
  24. package/public/assets/{diagram-G4DWMVQ6--1gv_wcM.js → diagram-G4DWMVQ6-DD5Ucpcn.js} +1 -1
  25. package/public/assets/{diagram-MMDJMWI5-C1yHkOFA.js → diagram-MMDJMWI5-B6-WK_TJ.js} +1 -1
  26. package/public/assets/{diagram-TYMM5635-Dl7dRWkC.js → diagram-TYMM5635-CLYhOm9a.js} +1 -1
  27. package/public/assets/{erDiagram-SMLLAGMA-DLmNKAuD.js → erDiagram-SMLLAGMA-DgukEqTQ.js} +1 -1
  28. package/public/assets/{flowDiagram-DWJPFMVM-CZa_uY2_.js → flowDiagram-DWJPFMVM-DUlTxDrh.js} +1 -1
  29. package/public/assets/{ganttDiagram-T4ZO3ILL-BnT7GCzh.js → ganttDiagram-T4ZO3ILL-D5Ik9clK.js} +1 -1
  30. package/public/assets/{gitGraphDiagram-UUTBAWPF-D0of7G0H.js → gitGraphDiagram-UUTBAWPF-CouNbB0H.js} +1 -1
  31. package/public/assets/{graph-DQMLsVKn.js → graph-DY36UTy7.js} +1 -1
  32. package/public/assets/index-CwjgIG7M.js +463 -0
  33. package/public/assets/index-DWaSRzf6.css +32 -0
  34. package/public/assets/{infoDiagram-42DDH7IO-CCYTG5TW.js → infoDiagram-42DDH7IO-CTZf-XaE.js} +1 -1
  35. package/public/assets/{ishikawaDiagram-UXIWVN3A-6aQrUmM1.js → ishikawaDiagram-UXIWVN3A-DZdSiihk.js} +1 -1
  36. package/public/assets/{journeyDiagram-VCZTEJTY-CJTv8kT4.js → journeyDiagram-VCZTEJTY-Cx-gOesl.js} +1 -1
  37. package/public/assets/{kanban-definition-6JOO6SKY-BcvXQPfh.js → kanban-definition-6JOO6SKY-NjVvkzyg.js} +1 -1
  38. package/public/assets/{layout-ThSqQjtq.js → layout-Bcu4s7Ho.js} +1 -1
  39. package/public/assets/{linear-DCFOEcB6.js → linear-s0Mg7155.js} +1 -1
  40. package/public/assets/{mindmap-definition-QFDTVHPH-Bb4AuZN4.js → mindmap-definition-QFDTVHPH-DQUtHqQ6.js} +1 -1
  41. package/public/assets/{pieDiagram-DEJITSTG-DQqclfI2.js → pieDiagram-DEJITSTG-DlYgVpVr.js} +1 -1
  42. package/public/assets/{quadrantDiagram-34T5L4WZ-pb0aN3QY.js → quadrantDiagram-34T5L4WZ-DloaxY2h.js} +1 -1
  43. package/public/assets/{requirementDiagram-MS252O5E-CkL3sbnK.js → requirementDiagram-MS252O5E-fSM1Pi3V.js} +1 -1
  44. package/public/assets/{sankeyDiagram-XADWPNL6-CP6XoGCk.js → sankeyDiagram-XADWPNL6-BHPnOiHK.js} +1 -1
  45. package/public/assets/{sequenceDiagram-FGHM5R23-CoFyaUFj.js → sequenceDiagram-FGHM5R23-Dnl-W6jS.js} +1 -1
  46. package/public/assets/{stateDiagram-FHFEXIEX-WQkLynRi.js → stateDiagram-FHFEXIEX-X9kal6wR.js} +1 -1
  47. package/public/assets/stateDiagram-v2-QKLJ7IA2-C7M79J7F.js +1 -0
  48. package/public/assets/{timeline-definition-GMOUNBTQ-Dcb9ue8q.js → timeline-definition-GMOUNBTQ-C3o7gZFF.js} +1 -1
  49. package/public/assets/{vennDiagram-DHZGUBPP-KqcKNQ1-.js → vennDiagram-DHZGUBPP-DoHPigKa.js} +1 -1
  50. package/public/assets/{wardley-RL74JXVD-DmgKZSUh.js → wardley-RL74JXVD-BEjx3hAD.js} +1 -1
  51. package/public/assets/{wardleyDiagram-NUSXRM2D-4y-iyT2D.js → wardleyDiagram-NUSXRM2D-Dsy9JWUf.js} +1 -1
  52. package/public/assets/{xychartDiagram-5P7HB3ND-Bdcd_98G.js → xychartDiagram-5P7HB3ND-cd-6HXrN.js} +1 -1
  53. package/public/index.html +3 -3
  54. package/public/sw.js +1 -1
  55. package/src/cli/index.js +62 -31
  56. package/src/cli/service.js +22 -9
  57. package/src/server/routes.js +31 -0
  58. package/src/tunnel/index.js +24 -7
  59. package/src/tunnel/install.js +3 -2
  60. package/src/utils/agents.js +23 -18
  61. package/src/utils/git.js +6 -2
  62. package/src/utils/shells.js +1 -0
  63. package/src/utils/update-executor.js +14 -9
  64. package/src/utils/version.js +1 -0
  65. package/public/assets/channel-Bz1ES3Md.js +0 -1
  66. package/public/assets/classDiagram-6PBFFD2Q-C0Xsg2c2.js +0 -1
  67. package/public/assets/classDiagram-v2-HSJHXN6E-C0Xsg2c2.js +0 -1
  68. package/public/assets/clone-DTHql6BK.js +0 -1
  69. package/public/assets/index-Bp7KnjkK.js +0 -455
  70. package/public/assets/index-KBnPi8DC.css +0 -32
  71. package/public/assets/stateDiagram-v2-QKLJ7IA2-D1F0xws2.js +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,637 @@
1
+ # Changelog
2
+
3
+ ## [1.21.1] - 2026-04-21
4
+
5
+ - fix(windows): service wizard uses getDefaultShell instead of COMSPEC
6
+ - fix(windows): use tasklist fallback when wmic unavailable for shell detection
7
+ - fix(windows): add windowsHide to all child_process calls
8
+ - fix(windows): hide devtunnel console windows and fix DEP0190 deprecation
9
+
10
+ ## [1.21.0] - 2026-04-20
11
+
12
+ - feat(review): add Review Mode to diff viewer + SessionsHub filter chips (#195)
13
+
14
+ ## [1.20.4] - 2026-04-19
15
+
16
+ - fix(tunnel): add network-wait mode for transient DNS outages
17
+
18
+ ## [1.20.3] - 2026-04-19
19
+
20
+ - fix(code-viewer): lazy-load file tree, allow in-root symlinks, auto-refresh git status
21
+
22
+ ## [1.20.2] - 2026-04-14
23
+
24
+ - chore(deps): bump prettier from 3.8.1 to 3.8.2 (#189)
25
+ - chore(deps): bump @github/copilot-sdk from 0.2.1 to 0.2.2 (#190)
26
+ - chore(deps): bump better-sqlite3 from 12.8.0 to 12.9.0 (#188)
27
+ - chore(ci): bump actions/upload-pages-artifact from 4.0.0 to 5.0.0 (#187)
28
+ - chore(ci): bump actions/github-script from 8.0.0 to 9.0.0 (#185)
29
+ - chore(ci): bump softprops/action-gh-release from 2.6.1 to 3.0.0 (#186)
30
+ - chore(ci): bump actions/upload-artifact from 7.0.0 to 7.0.1 (#184)
31
+
32
+ ## [1.20.1] - 2026-04-11
33
+
34
+ - fix(copilot): register companion PTY in session store and hide from UI
35
+ - chore(deps): bump eslint from 10.1.0 to 10.2.0 (#180)
36
+ - chore(ci): bump davelosert/vitest-coverage-report-action from 2.10.0 to 2.11.2 (#178)
37
+ - chore(deps): bump @playwright/test from 1.58.2 to 1.59.1 (#179)
38
+
39
+ ## [1.20.0] - 2026-04-08
40
+
41
+ - feat(copilot): integrate Copilot SDK agent with chat UI, tests, and code review fixes (#183)
42
+ - Revert "docs: add background service section to README"
43
+ - docs: add background service section to README
44
+ - feat(landing): add themes demo, fix video pacing and content
45
+
46
+ ## [1.19.5] - 2026-04-05
47
+
48
+ - feat(landing): add theme switcher to hub video, fix voice to paste not type
49
+
50
+ ## [1.19.4] - 2026-04-05
51
+
52
+ - feat(landing): re-record showcase videos with real UI interactions
53
+ - fix(landing): re-record videos at 2x resolution with high quality
54
+ - fix(landing): re-record videos showing real UI features
55
+ - feat(landing): replace showcase images with autoplay video clips
56
+ - fix(landing): extend noise overlay to prevent edge artifacts
57
+ - fix(landing): remove subtle border lines between feature sections
58
+ - fix(landing): add showcase images to repo
59
+ - feat(landing): section-based showcase redesign with correct logos
60
+ - fix(landing): improve a11y — add main landmark, fix footer contrast
61
+ - docs: update screenshots and landing page features
62
+
63
+ ## [1.19.3] - 2026-04-04
64
+
65
+ - fix(security): prevent path traversal in file endpoints and fix preview redirect loop
66
+
67
+ ## [1.19.2] - 2026-04-04
68
+
69
+ - fix(test): wait for shell options to load in E2E test
70
+
71
+ ## [1.19.1] - 2026-04-04
72
+
73
+ - fix(api): allow OpenCode session IDs in resume-command validation
74
+ - fix(ui): mobile terminal uses full screen width — custom fit bypasses scrollbar
75
+ - fix(ui): stretch xterm screen/rows to full width via JS + MutationObserver
76
+ - fix(ui): eliminate terminal right-edge gap via container background sync
77
+ - fix(ui): override inline width on xterm row divs for full-width terminal
78
+ - fix(ui): stretch xterm-screen to fill full viewport width
79
+ - fix(ui): terminal uses full width on mobile via JS scrollbar override
80
+ - fix(ui): terminal fills full width on mobile + update E2E theme list
81
+ - fix(ui): theme selection highlights immediately on click
82
+ - refactor(ui): remove retro-amber and lavender-dream themes
83
+ - feat(ui): add 10 new themes — dark-teal, blue-mist, cyan-punch, earth-tone, crimson-night, golden-night, red-alert, lavender-dream, espresso, forest-floor
84
+ - feat(agents): add OpenCode session support + fix theme palette colors
85
+ - feat(ui): theme palette preview + PR review process docs
86
+ - fix(security): address remaining review comments — input validation, async safety, a11y
87
+
88
+ ## [1.19.0] - 2026-04-04
89
+
90
+ - feat(agents): add AI agent launch, resume browser, and session detection (#176)
91
+ - chore(ci): bump davelosert/vitest-coverage-report-action from 2.9.3 to 2.10.0 (#173)
92
+ - chore(ci): bump actions/deploy-pages from 4.0.5 to 5.0.0 (#172)
93
+ - chore(ci): bump actions/configure-pages from 5.0.0 to 6.0.0 (#171)
94
+ - chore(ci): bump github/codeql-action from 4.34.1 to 4.35.1 (#175)
95
+ - chore(deps): bump express-rate-limit from 8.3.1 to 8.3.2 (#174)
96
+
97
+ ## [1.18.1] - 2026-03-30
98
+
99
+ - fix(server): track live PTY CWD and remove redundant tunnel renewal UI
100
+
101
+ ## [1.18.0] - 2026-03-30
102
+
103
+ - feat(tunnel): auth expiry detection, in-app renewal, and token monitoring
104
+ - fix(tunnel): handle DevTunnel auth expiry and prefer Entra login
105
+
106
+ ## [1.17.8] - 2026-03-30
107
+
108
+ - fix(frontend): single-click tabs, smart session naming, push reliability (#169)
109
+
110
+ ## [1.17.7] - 2026-03-27
111
+
112
+ - fix(ui): refresh button triggers full reload and update restart auto-recovers (#168)
113
+ - fix(ci): exclude solo-dev checks from scorecard monitor
114
+
115
+ ## [1.17.6] - 2026-03-27
116
+
117
+ - feat(security): improve OpenSSF scorecard score (#163)
118
+
119
+ ## [1.17.5] - 2026-03-26
120
+
121
+ - fix(git): resolve diff/blame paths from repo root and scope CodeViewer state per session
122
+
123
+ ## [1.17.4] - 2026-03-23
124
+
125
+ - fix(tunnel): add watchdog for auto-recovery and keep keyboard on tab switch (#161)
126
+ - chore(deps): bump eslint from 10.0.3 to 10.1.0 (#159)
127
+ - chore(deps): bump ws from 8.19.0 to 8.20.0 (#158)
128
+ - chore(ci): bump github/codeql-action from 4.33.0 to 4.34.1 (#157)
129
+
130
+ ## [1.17.3] - 2026-03-22
131
+
132
+ - fix(test): correct actionLogs spawn opts assertion for cross-platform CI
133
+ - fix(service): Windows and WSL compatibility for PM2 service management
134
+
135
+ ## [1.17.2] - 2026-03-22
136
+
137
+ - fix(update): enable auto-update for source installs running under PM2
138
+
139
+ ## [1.17.1] - 2026-03-22
140
+
141
+ - fix(ui): open code viewer as overlay to preserve terminal connection
142
+
143
+ ## [1.17.0] - 2026-03-22
144
+
145
+ - feat(update): in-app update mechanism with two-tier strategy (#150)
146
+
147
+ ## [1.16.0] - 2026-03-22
148
+
149
+ - feat(viewer,notifications): git changes view and push notifications (#156)
150
+ - fix: restore +New button (desktop only) and fix E2E tests (#155)
151
+ - feat: built-in code viewer with file explorer, syntax highlighting, and markdown preview (#154)
152
+
153
+ ## [1.15.2] - 2026-03-20
154
+
155
+ - fix(focus): tap-to-cursor for TUI apps and mobile focus resilience
156
+
157
+ ## [1.15.1] - 2026-03-20
158
+
159
+ - fix(e2e): update split view test for cycling labels
160
+ - test(split): add unit tests for split mode cycling logic
161
+ - feat(split): cycle split orientation and add pane focus indicator (#149)
162
+ - fix(test): add --test-timeout=60s to prevent Windows CI hangs
163
+ - perf(test): speed up Windows E2E by removing redundant waits
164
+ - fix(test): resolve Windows CI EBUSY errors in routes test cleanup
165
+
166
+ ## [1.15.0] - 2026-03-20
167
+
168
+ - test: add coverage for file endpoint security features
169
+ - fix: address PR review comments — security, a11y, docs
170
+ - feat(download): add confirmation dialog and progress bar
171
+ - fix(markdown): attach pinch listeners to container, read refs lazily
172
+ - perf(markdown): smooth pinch-zoom with RAF, fix center tracking
173
+ - fix(markdown): zoom centers on pinch midpoint
174
+ - fix(markdown): true bitmap-style pinch-to-zoom
175
+ - fix(markdown): use CSS zoom for pinch-to-zoom
176
+ - fix(markdown): true visual zoom with proper scroll panning
177
+ - fix(markdown): clamp zoom min to 100%, fix pan scrolling
178
+ - fix(markdown): implement JS-based pinch-to-zoom
179
+ - feat(markdown): add emoji shortcodes and pinch-to-zoom
180
+ - feat: upgrade markdown viewer with images, mermaid, HTML, and links
181
+ - fix: remove path traversal restriction, enable parent directory navigation
182
+ - feat(ui): split markdown viewer into separate tool in CommandPalette
183
+ - fix(ui): move download button into CommandPalette side toolbar
184
+ - fix(ui): add disabled styling for download toolbar button
185
+ - feat(ui): add download button to top bar toolbar
186
+ - fix: rename button to Download File
187
+ - fix: update docs to match renamed Downloads button
188
+ - fix: rename Files button to Downloads in side panel
189
+ - docs: add file browser, download, and markdown viewer documentation
190
+ - feat: add markdown file viewer in file browser
191
+
192
+ ## [1.14.7] - 2026-03-18
193
+
194
+ - fix(pwa): serve icons from landing page to bypass DevTunnel auth
195
+
196
+ ## [1.14.6] - 2026-03-18
197
+
198
+ - Revert "feat(tunnel): make tunnel public by default for PWA compatibility"
199
+
200
+ ## [1.14.5] - 2026-03-18
201
+
202
+ - feat(tunnel): make tunnel public by default for PWA compatibility
203
+
204
+ ## [1.14.4] - 2026-03-18
205
+
206
+ - fix(pwa): add icon/manifest tags to login page and fix maskable purpose
207
+
208
+ ## [1.14.3] - 2026-03-18
209
+
210
+ - fix(pwa): allow Safari to cache icons for home screen display
211
+
212
+ ## [1.14.2] - 2026-03-18
213
+
214
+ - fix(pwa): add 180x180 apple-touch-icon for Safari iOS home screen
215
+
216
+ ## [1.14.1] - 2026-03-18
217
+
218
+ - fix(wsl): prevent hang on devtunnel device code login and improve node-pty error
219
+
220
+ ## [1.14.0] - 2026-03-18
221
+
222
+ - feat(cli): add --json flag to termbeam list command
223
+
224
+ ## [1.13.6] - 2026-03-18
225
+
226
+ - fix(pwa): prevent stale login page after idle on no-password servers
227
+
228
+ ## [1.13.5] - 2026-03-17
229
+
230
+ - fix(auth): detect tunnel auth expiry and reload PWA
231
+
232
+ ## [1.13.4] - 2026-03-17
233
+
234
+ - fix(auth): simplify auth flow — remove localStorage caching
235
+
236
+ ## [1.13.3] - 2026-03-17
237
+
238
+ - chore(release): v1.13.2 [skip ci]
239
+ - fix(service): boot persistence and SW auth reliability
240
+
241
+ ## [1.13.2] - 2026-03-17
242
+
243
+ - fix(service): boot persistence and SW auth reliability
244
+
245
+ ## [1.13.2] - 2026-03-16
246
+
247
+ - fix(auth): prevent white page in no-password mode after idle
248
+ - chore(deps): bump lint-staged from 16.3.2 to 16.4.0 (#144)
249
+ - chore(ci): bump github/codeql-action from 4.32.6 to 4.33.0 (#145)
250
+ - chore(ci): bump softprops/action-gh-release from 2.5.0 to 2.6.1 (#143)
251
+ - fix(ci): include all transitive deps in pinned requirements
252
+ - fix(ci): improve OpenSSF Scorecard token-permissions and pinned-dependencies
253
+
254
+ ## [1.13.1] - 2026-03-15
255
+
256
+ - fix(security): resolve flatted DoS vulnerability and update publish skill
257
+ - feat(logging): add comprehensive logging across all server and CLI modules (#142)
258
+
259
+ ## [1.13.0] - 2026-03-12
260
+
261
+ - fix(frontend): add safe-area-inset-top to SessionsHub for PWA mode
262
+ - fix(touchbar): float lock hint chevron above mic button
263
+ - feat(touchbar): professional mic icons and lock hint
264
+ - feat(touchbar): bigger circle, swipe-up to lock mic recording
265
+ - fix(touchbar): fix arrow alignment with CSS Grid and simplify mic handler
266
+ - feat(frontend): add speech-to-text mic button to TouchBar
267
+ - fix(frontend): enable touch scrolling in alt-screen mode (TUI apps)
268
+
269
+ ## [1.12.5] - 2026-03-09
270
+
271
+ - chore(ci): bump github/codeql-action from 3.32.5 to 4.32.6 (#137)
272
+ - chore(deps): bump eslint from 10.0.2 to 10.0.3 (#138)
273
+ - chore(deps): bump express-rate-limit from 8.3.0 to 8.3.1 (#136)
274
+ - chore(ci): bump aquasecurity/trivy-action from 0.34.2 to 0.35.0 (#135)
275
+ - fix(frontend): revert scroll-to-bottom focus/tabIndex — prevents mobile keyboard
276
+ - feat(frontend): improve mobile touch scrolling and update PWA icons (#140)
277
+
278
+ ## [1.12.4] - 2026-03-09
279
+
280
+ - fix(deps): patch serialize-javascript vulnerability (GHSA-5c6j-r48x-rmvq) (#134)
281
+
282
+ ## [1.12.3] - 2026-03-09
283
+
284
+ - refactor: reorganize repository file structure (#133)
285
+
286
+ ## [1.12.2] - 2026-03-09
287
+
288
+ - docs: fix inaccuracies across README, docs, and landing page
289
+ - feat(ui): seamless background reconnect and smart notifications (#132)
290
+
291
+ ## [1.12.1] - 2026-03-09
292
+
293
+ - feat(ui): add 18 themes and fix alt-screen reconnection (#130)
294
+
295
+ ## [1.12.0] - 2026-03-08
296
+
297
+ - feat(frontend): rewrite frontend in React + TypeScript (#128)
298
+
299
+ ## [1.11.1] - 2026-03-07
300
+
301
+ - chore: drop Node.js 18 support (EOL April 2025) (#126)
302
+ - refactor(version): combine dev version into single semver-style string
303
+ - fix(resize): activity-aware PTY sizing, better replay, mobile persistence (#124)
304
+ - fix(version): derive version from git tag when running from source (#125)
305
+
306
+ ## [1.11.0] - 2026-03-07
307
+
308
+ - feat: add update notification system
309
+ - fix(ui): redirect to session hub when no sessions exist (#122)
310
+
311
+ ## [1.10.3] - 2026-03-06
312
+
313
+ - perf(ui): pin Nerd Fonts CDN to v3.4.0 for immutable caching
314
+
315
+ ## [1.10.2] - 2026-03-06
316
+
317
+ - feat(cli): add attach alias, improve empty-session messages, add startup hints (#119)
318
+ - fix: add test-results directory to .gitignore
319
+ - delete: remove obsolete .last-run.json file
320
+ - Delete issues directory
321
+ - skill update
322
+
323
+ ## [1.10.1] - 2026-03-06
324
+
325
+ - fix(security): harden error handling, add WS rate limiting, validate CLI args (#117)
326
+ - feat: SEO, discoverability, and content improvements (#115)
327
+
328
+ ## [1.10.0] - 2026-03-06
329
+
330
+ - feat: add file upload to session working directory (#113)
331
+ - chore: add .gitleaks.toml to allowlist doc placeholders
332
+
333
+ ## [1.9.0] - 2026-03-05
334
+
335
+ - docs: restructure README, split getting-started, add troubleshooting and usage guide, fix 15 inaccuracies (#112)
336
+ - docs: add resume and list commands to README
337
+ - feat(resume): add termbeam resume and sessions commands (#109)
338
+ - chore(security): add CODEOWNERS and enable branch protection (#107)
339
+ - chore(security): add CODEOWNERS and enable branch protection
340
+
341
+ ## [1.8.1] - 2026-03-05
342
+
343
+ - fix(security): pin mkdocs-material version in pages workflow (#106)
344
+ - fix(security): harden session creation input validation (#104)
345
+ - fix(security): update demo-video deps to fix GHSA-5c6j-r48x-rmvq (#105)
346
+ - fix: use commit SHA instead of tag object SHA for codeql-action v3
347
+ - fix: prevent path injection and open redirect vulnerabilities (#93)
348
+ - fix: use correct commit SHA for ossf/scorecard-action v2.4.3
349
+ - fix: add rate limiting to file-serving routes (#94)
350
+ - fix: add defense-in-depth shell validation in SessionManager (#91)
351
+ - fix: prevent clear-text logging of passwords (#92)
352
+ - fix: make HTML tag filtering regexp case-insensitive (#95)
353
+ - fix: harden CI/CD workflow permissions and pin dependencies (#96)
354
+ - chore(ci): bump gitleaks/gitleaks-action from dcedce43c6f43de0b836d1fe38946645c9c638dc to ff98106e4c7b2bc287b24eaf42907196329070c7 (#83)
355
+ - chore(ci): bump actions/setup-node from 4.4.0 to 6.3.0 (#82)
356
+ - chore(deps): bump eslint from 9.39.3 to 10.0.2 (#81)
357
+ - chore(ci): bump ossf/scorecard-action from ea651e62978af7915d09fe2e282747c798bf2dab to f49aabe0b5af0936a0987cfb85d86b75731b0186 (#80)
358
+ - chore(deps): bump lint-staged from 16.3.1 to 16.3.2 (#77)
359
+ - fix: unpin all actions in scorecard workflow (webapp verification requires tags)
360
+ - fix: use tag ref for scorecard action (SHA pinning not supported)
361
+ - feat: add SecOps hardening — security scanning, Dependabot, action pinning (#76)
362
+ - feat: add static code analysis with ESLint and CodeQL (#75)
363
+
364
+ ## [1.8.0] - 2026-03-04
365
+
366
+ - feat(cli): add interactive setup wizard (#72)
367
+
368
+ ## [1.7.0] - 2026-03-04
369
+
370
+ - chore: bump version to 1.6.0
371
+ - feat(sessions): show git repo info in session cards (#70)
372
+ - docs: enhance description of touch-optimized UI and features in README
373
+ - docs: restructure README features and fix documentation gaps
374
+ - docs: reorder screenshots — terminal in center
375
+ - docs: update screenshots to consistent dark theme
376
+ - docs: update screenshots for README and landing page
377
+
378
+ ## [1.5.0] - 2026-03-04
379
+
380
+ - feat(ui): add command notifications, terminal search, and command palette (#68)
381
+
382
+ ## [1.4.0] - 2026-03-04
383
+
384
+ - feat(ui): show unread indicator in side panel session cards
385
+ - fix(ui): reuse AudioContext for mobile notification sound
386
+ - feat(ui): add tab title activity indicator for unread output (#66)
387
+ - feat(ui): add pinch-to-zoom font size adjustment (#67)
388
+ - feat: Replace dark/light toggle with 12-theme picker (#60)
389
+ - Create issue: Feature Request: Support Multiple Themes
390
+ - fix(test): replace setTimeout with setImmediate in actionLogs error handler test (#58)
391
+ - docs: add landing page URL to README and package.json homepage
392
+ - fix: add GitHub deployment environment to landing workflow
393
+ - feat: add standalone landing page with Cloudflare Pages deployment
394
+ - docs: center README header and badges
395
+ - docs: add npm downloads and node version badges
396
+ - chore: add smoke test step to publish skill, fix CI double-trigger
397
+
398
+ ## [1.3.0] - 2026-03-03
399
+
400
+ - feat(service): add interactive PM2 service wizard (#57)
401
+ - fix(test): mock os.platform in ps-based shell detection tests
402
+ - test: boost coverage from 80% to 94.81%
403
+ - test: improve coverage and exclude test/ from report
404
+ - docs: update README, API, and configuration docs; add new CLI flags and improve security notes
405
+ - docs: fix security doc inaccuracies found during review
406
+ - Revert "perf: replace qrcode with lean-qr to reduce install size"
407
+ - perf: replace qrcode with lean-qr to reduce install size
408
+
409
+ ## [1.2.10] - 2026-03-02
410
+
411
+ - fix(test): use real PNG magic bytes in upload serve test
412
+ - feat(upload): validate image content by magic bytes (#55)
413
+
414
+ ## [1.2.9] - 2026-03-02
415
+
416
+ - fix(auth): remove share-token identifiers from production logs (#56)
417
+ - fix(paste): send filesystem path for image paste instead of URL
418
+ - fix(upload): return opaque IDs instead of absolute file paths
419
+ - fix(auth): make share tokens one-time use (#52)
420
+ - fix(auth): consistent auth responses for API vs UI routes (#51)
421
+
422
+ ## [1.2.8] - 2026-03-02
423
+
424
+ - fix(server): improve startup banner colors and remove clipboard notice
425
+ - chore(deps): bump lint-staged from 16.2.7 to 16.3.1 (#50)
426
+ - chore(ci): bump actions/upload-artifact from 4 to 7 (#49)
427
+ - feat(cli): change default bind from 0.0.0.0 to 127.0.0.1 (#48)
428
+ - feat(auth): rate-limit failed Bearer auth attempts (#46)
429
+ - feat(auth): set cookie Secure flag dynamically based on HTTPS (#47)
430
+
431
+ ## [1.2.7] - 2026-03-02
432
+
433
+ - docs: note --public requires password in README and docs
434
+ - feat(auth): block --public --no-password unsafe configuration (#45)
435
+
436
+ ## [1.2.6] - 2026-03-02
437
+
438
+ - feat(tunnel): add smoke test workflow and auto-install devtunnel (#33)
439
+
440
+ ## [1.2.5] - 2026-03-02
441
+
442
+ - feat(tunnel): make tunnel access private by default with --public opt-in
443
+ - docs: update mobile UI section to use a table for screenshots
444
+ - Implement code structure updates and remove redundant sections
445
+ - docs: add mobile screenshots to README
446
+ - docs(skill): emphasize waiting for all CI jobs including E2E before release
447
+
448
+ ## [1.2.4] - 2026-03-02
449
+
450
+ - feat(terminal): add scroll-to-bottom button, write coalescer, and E2E test infra (#31)
451
+
452
+ ## [1.2.3] - 2026-03-01
453
+
454
+ - fix(ui): prevent session cards from shrinking in side panel
455
+
456
+ ## [1.2.2] - 2026-03-01
457
+
458
+ - fix(ui): make side panel sessions list scrollable
459
+
460
+ ## [1.2.1] - 2026-03-01
461
+
462
+ - feat(ui): redesign touch key bar with modifier keys and iOS-style layout
463
+
464
+ ## [1.2.0] - 2026-03-01
465
+
466
+ - feat: add preview proxy, Docker support, and UI improvements
467
+
468
+ ## [1.1.1] - 2026-03-01
469
+
470
+ - feat(tunnel): add findDevtunnel function and improve error handling for tunnel mode
471
+
472
+ ## [1.1.0] - 2026-03-01
473
+
474
+ - fix(docs): update terminology from one-time tokens to share tokens for clarity
475
+ - feat(auth): QR code auto-login with one-time tokens (#29)
476
+
477
+ ## [1.0.7] - 2026-03-01
478
+
479
+ - fix(security): allow CDN in connect-src CSP for font loading
480
+
481
+ ## [1.0.6] - 2026-03-01
482
+
483
+ - fix(routes): resolve static file 404 when installed via npx
484
+
485
+ ## [1.0.5] - 2026-03-01
486
+
487
+ - fix: use require.resolve to find hoisted node-pty in postinstall
488
+
489
+ ## [1.0.4] - 2026-03-01
490
+
491
+ - fix: add postinstall to fix node-pty spawn-helper permissions
492
+
493
+ ## [1.0.3] - 2026-03-01
494
+
495
+ - fix(cli): validate detected shell against /etc/shells allowlist
496
+
497
+ ## [1.0.2] - 2026-03-01
498
+
499
+ - fix(cli): skip non-shell parent processes in shell detection
500
+
501
+ ## [1.0.1] - 2026-03-01
502
+
503
+ - fix: detect npx symlink entry point without .js extension
504
+
505
+ ## [1.0.0] - 2026-03-01
506
+
507
+ - fix: prevent spurious 'session not found' warns on session close (#26)
508
+ - feat: v1.0.0 preparation — security, logging, tests, cross-platform CI (#25)
509
+ - docs: add GitHub Copilot instructions for repository context
510
+ - fix: remove unused social plugin from mkdocs configuration
511
+ - feat: update documentation and HTML files for improved clarity and SEO
512
+ - fix: adjust spacing in Copilot terminal screen for better alignment
513
+ - feat: load JetBrainsMono font for improved typography in PhoneScene
514
+ - feat: change video image format to jpeg and set quality to 100
515
+ - feat: enhance animations and UI elements in TitleCard and PhoneScene
516
+ - feat: update TermBeam to use explicit password management and improve security
517
+ - Redesign outro scene with typewriter, particles, and consistent palette (#23)
518
+
519
+ ## [0.2.0] - 2026-02-28
520
+
521
+ ### Changed
522
+
523
+ - **BREAKING:** Tunnel and auto-generated password are now enabled by default
524
+ - Added `--no-tunnel` and `--no-password` flags to opt out of defaults
525
+
526
+ ### Added
527
+
528
+ - Mobile copy/paste: Copy button opens selectable text overlay, Paste button with clipboard API + fallback modal
529
+ - Image paste support — paste images from clipboard, uploaded to server temp directory
530
+ - Content-Security-Policy header (script/style/connect sources)
531
+ - Cache-Control: no-store header
532
+ - WebSocket maxPayload limit (1MB)
533
+ - Necessary operational logging (auth events, uploads, WS auth, session lifecycle)
534
+ - Folder browser defaults to server working directory
535
+
536
+ ### Fixed
537
+
538
+ - Key-bar double-press on touch devices (touchstart + synthetic mousedown)
539
+ - Paste button not responding on iOS Safari (touchend handler)
540
+ - Non-JSON WebSocket messages no longer forwarded to PTY (security)
541
+ - Upload size limit now handled safely without destroying request stream
542
+
543
+ ### Removed
544
+
545
+ - X-XSS-Protection header (deprecated, replaced by CSP)
546
+
547
+ ## [0.1.0] - 2026-02-28
548
+
549
+ - feat: docs accuracy, side panel UX, SW font caching, test coverage (#22)
550
+
551
+ ## [0.0.9] - 2026-02-27
552
+
553
+ - feat: implement process tree traversal for Windows to detect user shell
554
+ - chore(release): v0.0.8
555
+ - Fix/release token (#21)
556
+ - Update token in release workflow to use GITHUB_TOKEN
557
+ - fix: update token in release workflow to use RELEASE_TOKEN (#20)
558
+ - Add dynamic coverage badge from main branch (#19)
559
+ - Add dynamic coverage badge from main branch (#18)
560
+ - docs: replace Codecov badge in README (#17)
561
+ - fix: replace Codecov with instant inline coverage comments (#16)
562
+ - test: add version module tests (#15)
563
+ - docs: rewrite README, update API docs, add coverage to CI (#14)
564
+
565
+ ## [0.0.8] - 2026-02-27
566
+
567
+ - Fix/release token (#21)
568
+ - Update token in release workflow to use GITHUB_TOKEN
569
+ - fix: update token in release workflow to use RELEASE_TOKEN (#20)
570
+ - Add dynamic coverage badge from main branch (#19)
571
+ - Add dynamic coverage badge from main branch (#18)
572
+ - docs: replace Codecov badge in README (#17)
573
+ - fix: replace Codecov with instant inline coverage comments (#16)
574
+ - test: add version module tests (#15)
575
+ - docs: rewrite README, update API docs, add coverage to CI (#14)
576
+
577
+ ## [0.0.7] - 2026-02-27
578
+
579
+ - feat: persist DevTunnel ID for stable URLs across restarts (#13)
580
+ - feat: add PWA support for home screen installation (#12)
581
+ - feat: mobile clipboard integration (copy/paste) (#11)
582
+ - docs: add guide for running TermBeam as a background service
583
+
584
+ ## [0.0.6] - 2026-02-27
585
+
586
+ - Enhance terminal UI with theme support and improved styling
587
+ - docs: restore full README and add acknowledgments section for Tamir Dresher (#7)
588
+ - Update README.md to include acknowledgments section
589
+
590
+ ## [0.0.5] - 2026-02-27
591
+
592
+ - feat: simplify version bump logic in release workflow
593
+ - feat: implement shell detection and initial command execution in sessions
594
+
595
+ ## [0.0.4] - 2026-02-27
596
+
597
+ - feat: add Remotion demo video project (#6)
598
+ - chore(ci): bump actions/checkout from v4 to v6
599
+ - chore(ci): bump actions/setup-node from 4 to 6 (#3)
600
+ - chore(ci): bump actions/setup-python from 5 to 6 (#2)
601
+ - chore(ci): bump actions/upload-pages-artifact from 3 to 4 (#1)
602
+
603
+ ## [0.0.3] - 2026-02-26
604
+
605
+ - fix: rewrite CHANGELOG update to avoid sed/awk failures on Linux
606
+ - fix: pin node-pty to 1.0.0 (1.1.0 has posix_spawnp bug)
607
+
608
+ ## [0.0.2] - 2026-02-26
609
+
610
+ - docs: update README with enhanced features, usage instructions, and screenshot guidelines
611
+ - fix: use Node 24 for npm 11.5.1+ OIDC trusted publishing
612
+ - fix: overwrite .npmrc for OIDC trusted publishing
613
+ - fix: skip tagging when tag already exists
614
+ - fix: clear stale auth token before npm publish for trusted publishing
615
+ - feat: add dry-run option to release workflow
616
+ - feat: add Contributor Covenant Code of Conduct to promote a respectful community
617
+ - fix: use trusted publishing instead of NPM_TOKEN
618
+ - feat: add issue templates for bug reports and feature requests, and enhance security policy documentation
619
+
620
+ All notable changes to this project will be documented in this file.
621
+
622
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
623
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
624
+
625
+ ## [Unreleased]
626
+
627
+ ### Added
628
+
629
+ - Multi-session terminal management
630
+ - Mobile-optimized terminal with touch controls
631
+ - Swipe-to-delete sessions
632
+ - Folder browser for working directory selection
633
+ - Password authentication with token-based sessions
634
+ - DevTunnel support for public access
635
+ - QR code for quick mobile connection
636
+ - Nerd Font support
637
+ - Customizable shell and working directory
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termbeam",
3
- "version": "1.20.4",
3
+ "version": "1.21.1",
4
4
  "description": "Beam your terminal to any device — mobile-optimized web terminal with multi-session support",
5
5
  "main": "src/server/index.js",
6
6
  "bin": {
@@ -58,7 +58,8 @@
58
58
  "src/utils/",
59
59
  "public/",
60
60
  "LICENSE",
61
- "README.md"
61
+ "README.md",
62
+ "CHANGELOG.md"
62
63
  ],
63
64
  "lint-staged": {
64
65
  "*.js": [
@@ -1 +1 @@
1
- import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-DaY_Bc3O.js";import{aU as g,at as $,aV as E,aW as F,aX as M,aY as l,aZ as B,a_ as T,a$ as y,b0 as S}from"./index-Bp7KnjkK.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function U(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,Z=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!Z.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:U(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=D(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,U as j,un as l,gn as m,K as t};
1
+ import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-DnMFuvsx.js";import{aU as g,at as $,aV as E,aW as F,aX as M,aY as l,aZ as B,a_ as T,a$ as y,b0 as S}from"./index-CwjgIG7M.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function U(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,Z=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!Z.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:U(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=D(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,U as j,un as l,gn as m,K as t};