termbeam 1.20.3 → 1.21.0

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