termcast 1.3.53 → 1.4.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 (196) hide show
  1. package/dist/action-utils.d.ts.map +1 -1
  2. package/dist/action-utils.js +17 -132
  3. package/dist/action-utils.js.map +1 -1
  4. package/dist/apis/cache.d.ts +8 -30
  5. package/dist/apis/cache.d.ts.map +1 -1
  6. package/dist/apis/cache.js +9 -271
  7. package/dist/apis/cache.js.map +1 -1
  8. package/dist/apis/clipboard.d.ts +4 -2
  9. package/dist/apis/clipboard.d.ts.map +1 -1
  10. package/dist/apis/clipboard.js +18 -31
  11. package/dist/apis/clipboard.js.map +1 -1
  12. package/dist/apis/environment.d.ts.map +1 -1
  13. package/dist/apis/environment.js +14 -49
  14. package/dist/apis/environment.js.map +1 -1
  15. package/dist/apis/localstorage.d.ts +7 -12
  16. package/dist/apis/localstorage.d.ts.map +1 -1
  17. package/dist/apis/localstorage.js +7 -184
  18. package/dist/apis/localstorage.js.map +1 -1
  19. package/dist/app.d.ts.map +1 -1
  20. package/dist/app.js +46 -20
  21. package/dist/app.js.map +1 -1
  22. package/dist/cli.js +7 -6
  23. package/dist/cli.js.map +1 -1
  24. package/dist/components/actions.d.ts.map +1 -1
  25. package/dist/components/actions.js +13 -2
  26. package/dist/components/actions.js.map +1 -1
  27. package/dist/components/candle-chart.d.ts +110 -0
  28. package/dist/components/candle-chart.d.ts.map +1 -0
  29. package/dist/components/candle-chart.js +295 -0
  30. package/dist/components/candle-chart.js.map +1 -0
  31. package/dist/components/extension-preferences.d.ts.map +1 -1
  32. package/dist/components/extension-preferences.js +7 -8
  33. package/dist/components/extension-preferences.js.map +1 -1
  34. package/dist/components/form/file-autocomplete.js +2 -2
  35. package/dist/components/form/file-autocomplete.js.map +1 -1
  36. package/dist/components/list.d.ts.map +1 -1
  37. package/dist/components/list.js +242 -14
  38. package/dist/components/list.js.map +1 -1
  39. package/dist/components/table.d.ts +2 -0
  40. package/dist/components/table.d.ts.map +1 -1
  41. package/dist/components/table.js +41 -4
  42. package/dist/components/table.js.map +1 -1
  43. package/dist/e2e-node.d.ts.map +1 -1
  44. package/dist/e2e-node.js +5 -4
  45. package/dist/e2e-node.js.map +1 -1
  46. package/dist/examples/simple-candle-chart-data.d.ts +9064 -0
  47. package/dist/examples/simple-candle-chart-data.d.ts.map +1 -0
  48. package/dist/examples/simple-candle-chart-data.js +12683 -0
  49. package/dist/examples/simple-candle-chart-data.js.map +1 -0
  50. package/dist/examples/simple-candle-chart.d.ts +2 -0
  51. package/dist/examples/simple-candle-chart.d.ts.map +1 -0
  52. package/dist/examples/simple-candle-chart.js +125 -0
  53. package/dist/examples/simple-candle-chart.js.map +1 -0
  54. package/dist/extensions/dev.d.ts.map +1 -1
  55. package/dist/extensions/dev.js +5 -2
  56. package/dist/extensions/dev.js.map +1 -1
  57. package/dist/globals.d.ts.map +1 -1
  58. package/dist/globals.js +2 -1
  59. package/dist/globals.js.map +1 -1
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +2 -0
  63. package/dist/index.js.map +1 -1
  64. package/dist/internal/error-handler.d.ts.map +1 -1
  65. package/dist/internal/error-handler.js +21 -19
  66. package/dist/internal/error-handler.js.map +1 -1
  67. package/dist/internal/providers.d.ts.map +1 -1
  68. package/dist/internal/providers.js +41 -1
  69. package/dist/internal/providers.js.map +1 -1
  70. package/dist/logger.d.ts.map +1 -1
  71. package/dist/logger.js +31 -29
  72. package/dist/logger.js.map +1 -1
  73. package/dist/platform/browser/cache.d.ts +41 -0
  74. package/dist/platform/browser/cache.d.ts.map +1 -0
  75. package/dist/platform/browser/cache.js +262 -0
  76. package/dist/platform/browser/cache.js.map +1 -0
  77. package/dist/platform/browser/localstorage.d.ts +20 -0
  78. package/dist/platform/browser/localstorage.d.ts.map +1 -0
  79. package/dist/platform/browser/localstorage.js +102 -0
  80. package/dist/platform/browser/localstorage.js.map +1 -0
  81. package/dist/platform/browser/runtime.d.ts +51 -0
  82. package/dist/platform/browser/runtime.d.ts.map +1 -0
  83. package/dist/platform/browser/runtime.js +164 -0
  84. package/dist/platform/browser/runtime.js.map +1 -0
  85. package/dist/platform/bun/sqlite.d.ts +17 -0
  86. package/dist/platform/bun/sqlite.d.ts.map +1 -0
  87. package/dist/platform/bun/sqlite.js +6 -0
  88. package/dist/platform/bun/sqlite.js.map +1 -0
  89. package/dist/platform/node/cache.d.ts +35 -0
  90. package/dist/platform/node/cache.d.ts.map +1 -0
  91. package/dist/platform/node/cache.js +269 -0
  92. package/dist/platform/node/cache.js.map +1 -0
  93. package/dist/platform/node/localstorage.d.ts +17 -0
  94. package/dist/platform/node/localstorage.d.ts.map +1 -0
  95. package/dist/platform/node/localstorage.js +186 -0
  96. package/dist/platform/node/localstorage.js.map +1 -0
  97. package/dist/platform/node/runtime.d.ts +52 -0
  98. package/dist/platform/node/runtime.d.ts.map +1 -0
  99. package/dist/platform/node/runtime.js +230 -0
  100. package/dist/platform/node/runtime.js.map +1 -0
  101. package/dist/platform/node/sqlite.d.ts +27 -0
  102. package/dist/platform/node/sqlite.d.ts.map +1 -0
  103. package/dist/platform/node/sqlite.js +21 -0
  104. package/dist/platform/node/sqlite.js.map +1 -0
  105. package/dist/state.d.ts +5 -0
  106. package/dist/state.d.ts.map +1 -1
  107. package/dist/state.js +6 -28
  108. package/dist/state.js.map +1 -1
  109. package/dist/utils/file-system.d.ts.map +1 -1
  110. package/dist/utils/file-system.js +17 -22
  111. package/dist/utils/file-system.js.map +1 -1
  112. package/dist/utils.d.ts +1 -1
  113. package/dist/utils.d.ts.map +1 -1
  114. package/dist/utils.js +42 -47
  115. package/dist/utils.js.map +1 -1
  116. package/dist/vim-mode.d.ts +40 -0
  117. package/dist/vim-mode.d.ts.map +1 -0
  118. package/dist/vim-mode.js +135 -0
  119. package/dist/vim-mode.js.map +1 -0
  120. package/fonts/Inconsolata.otf +0 -0
  121. package/fonts/SIL Open Font License.txt +41 -0
  122. package/package.json +60 -8
  123. package/src/action-utils.tsx +27 -124
  124. package/src/apis/cache.test.ts +1 -1
  125. package/src/apis/cache.tsx +9 -373
  126. package/src/apis/clipboard.tsx +29 -38
  127. package/src/apis/environment.tsx +25 -52
  128. package/src/apis/localstorage.tsx +8 -214
  129. package/src/app.tsx +51 -20
  130. package/src/cli.tsx +14 -15
  131. package/src/compile.vitest.tsx +2 -2
  132. package/src/components/actions.tsx +19 -1
  133. package/src/components/candle-chart.tsx +410 -0
  134. package/src/components/extension-preferences.tsx +7 -8
  135. package/src/components/form/file-autocomplete.tsx +2 -2
  136. package/src/components/list.tsx +279 -14
  137. package/src/components/table.tsx +46 -4
  138. package/src/e2e-node.tsx +7 -7
  139. package/src/examples/action-shortcut.vitest.tsx +2 -2
  140. package/src/examples/actions-context.vitest.tsx +1 -1
  141. package/src/examples/bar-graph-weekly.vitest.tsx +10 -36
  142. package/src/examples/detail-metadata-showcase.vitest.tsx +36 -36
  143. package/src/examples/form-basic.vitest.tsx +21 -17
  144. package/src/examples/github.vitest.tsx +4 -4
  145. package/src/examples/graph-bar-chart.vitest.tsx +13 -11
  146. package/src/examples/graph-polymarket.vitest.tsx +2 -2
  147. package/src/examples/graph-row.vitest.tsx +66 -66
  148. package/src/examples/graph-styles.vitest.tsx +12 -12
  149. package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -48
  150. package/src/examples/list-detail-metadata.vitest.tsx +5 -5
  151. package/src/examples/list-fetch-data.vitest.tsx +3 -3
  152. package/src/examples/list-item-accessories.vitest.tsx +2 -2
  153. package/src/examples/list-loading-empty-view.vitest.tsx +1 -1
  154. package/src/examples/list-no-actions.vitest.tsx +2 -2
  155. package/src/examples/list-scrollbox.vitest.tsx +5 -5
  156. package/src/examples/list-spacing-mode.vitest.tsx +3 -3
  157. package/src/examples/list-with-detail.vitest.tsx +68 -68
  158. package/src/examples/list-with-dropdown.vitest.tsx +5 -5
  159. package/src/examples/list-with-sections.vitest.tsx +27 -27
  160. package/src/examples/simple-candle-chart-data.ts +12683 -0
  161. package/src/examples/simple-candle-chart.tsx +363 -0
  162. package/src/examples/simple-candle-chart.vitest.tsx +269 -0
  163. package/src/examples/simple-detail-markdown.vitest.tsx +8 -8
  164. package/src/examples/simple-detail-table.vitest.tsx +10 -10
  165. package/src/examples/simple-graph.vitest.tsx +3 -3
  166. package/src/examples/simple-grid.vitest.tsx +14 -14
  167. package/src/examples/simple-heatmap.vitest.tsx +1 -1
  168. package/src/examples/simple-navigation.vitest.tsx +17 -17
  169. package/src/examples/simple-progress-bar.vitest.tsx +1 -1
  170. package/src/examples/simple-table-wrap.vitest.tsx +19 -19
  171. package/src/examples/store.vitest.tsx +1 -1
  172. package/src/examples/swift-extension.vitest.tsx +2 -2
  173. package/src/examples/table-edge-cases.vitest.tsx +18 -18
  174. package/src/examples/table-flex-grow.vitest.tsx +8 -8
  175. package/src/examples/toast-action.vitest.tsx +2 -2
  176. package/src/extensions/dev.tsx +5 -2
  177. package/src/extensions/dev.vitest.tsx +3 -3
  178. package/src/globals.ts +2 -1
  179. package/src/index.tsx +7 -0
  180. package/src/internal/error-handler.tsx +19 -21
  181. package/src/internal/providers.tsx +39 -0
  182. package/src/logger.tsx +38 -41
  183. package/src/platform/browser/cache.ts +327 -0
  184. package/src/platform/browser/localstorage.ts +119 -0
  185. package/src/platform/browser/runtime.ts +209 -0
  186. package/src/platform/bun/sqlite.ts +19 -0
  187. package/src/platform/node/cache.ts +372 -0
  188. package/src/platform/node/localstorage.ts +214 -0
  189. package/src/platform/node/runtime.ts +264 -0
  190. package/src/platform/node/sqlite.ts +43 -0
  191. package/src/state.tsx +17 -28
  192. package/src/utils/file-system.ts +17 -22
  193. package/src/utils.test.tsx +1 -1
  194. package/src/utils.tsx +56 -47
  195. package/src/vim-mode.tsx +153 -0
  196. package/src/apis/sqlite.ts +0 -14
@@ -41,8 +41,10 @@ test('markdown tables render with borderless layout', async () => {
41
41
 
42
42
  Server Status
43
43
 
44
+
44
45
  Active Services
45
46
 
47
+
46
48
  Service Status Uptime Memory
47
49
  API Gateway Running 14d 3h 256MB
48
50
  Auth Server Running 14d 3h 128MB
@@ -51,6 +53,7 @@ test('markdown tables render with borderless layout', async () => {
51
53
 
52
54
  Configuration
53
55
 
56
+
54
57
  Key Value Description
55
58
  max_connections 1000 Maximum concurrent connections
56
59
  timeout_ms 5000 Request timeout in ms
@@ -60,12 +63,14 @@ test('markdown tables render with borderless layout', async () => {
60
63
 
61
64
  The system is operating normally.
62
65
 
66
+
63
67
  Region Latency Endpoint RPS
64
68
  us-east-1 12ms /api/auth 1200
65
69
  eu-west-1 45ms /api/data 3400
66
70
  ap-south-1 89ms /api/health 500
67
71
 
68
72
 
73
+ esc go back ^k actions powered by termcast.app
69
74
 
70
75
 
71
76
 
@@ -79,11 +84,6 @@ test('markdown tables render with borderless layout', async () => {
79
84
 
80
85
 
81
86
 
82
-
83
-
84
-
85
- esc go back ^k actions powered by termcast.app
86
-
87
87
  "
88
88
  `)
89
89
 
@@ -141,8 +141,10 @@ test('two tables render side by side in a Row', async () => {
141
141
 
142
142
  Server Status
143
143
 
144
+
144
145
  Active Services
145
146
 
147
+
146
148
  Service Status Uptime Memory
147
149
  API Gateway Running 14d 3h 256MB
148
150
  Auth Server Running 14d 3h 128MB
@@ -151,6 +153,7 @@ test('two tables render side by side in a Row', async () => {
151
153
 
152
154
  Configuration
153
155
 
156
+
154
157
  Key Value Description
155
158
  max_connections 1000 Maximum concurrent connections
156
159
  timeout_ms 5000 Request timeout in ms
@@ -160,12 +163,14 @@ test('two tables render side by side in a Row', async () => {
160
163
 
161
164
  The system is operating normally.
162
165
 
166
+
163
167
  Region Latency Endpoint RPS
164
168
  us-east-1 12ms /api/auth 1200
165
169
  eu-west-1 45ms /api/data 3400
166
170
  ap-south-1 89ms /api/health 500
167
171
 
168
172
 
173
+ esc go back ^k actions powered by termcast.app
169
174
 
170
175
 
171
176
 
@@ -179,11 +184,6 @@ test('two tables render side by side in a Row', async () => {
179
184
 
180
185
 
181
186
 
182
-
183
-
184
-
185
- esc go back ^k actions powered by termcast.app
186
-
187
187
  "
188
188
  `)
189
189
 
@@ -33,6 +33,7 @@ test('graph renders with braille characters and axis labels', async () => {
33
33
 
34
34
  AAPL Stock - 30 Day
35
35
 
36
+
36
37
  Price range: $148.70 - $201.40
37
38
  204.0│ ⢀
38
39
  │ ⢀⣴⣾⣿
@@ -55,7 +56,6 @@ test('graph renders with braille characters and axis labels', async () => {
55
56
  esc go back ^k actions powered by termcast.app
56
57
 
57
58
 
58
-
59
59
  "
60
60
  `)
61
61
 
@@ -96,7 +96,8 @@ test('graph renders at different terminal sizes', async () => {
96
96
 
97
97
 
98
98
 
99
- AAPL Stock - 30 Day
99
+ AAPL Stock - 30 Day
100
+
100
101
 
101
102
  Price range: $148.70 - $201.40
102
103
  204.0│ ⢀
@@ -110,7 +111,6 @@ test('graph renders at different terminal sizes', async () => {
110
111
  169.3│ ⢀⣾⣦⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
111
112
  │ ⢀⣦⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
112
113
  │ ⡄ ⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
113
- 157.7│ ⣼⣿⣄ ⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
114
114
 
115
115
 
116
116
  esc go back ^k actions
@@ -54,7 +54,7 @@ test('grid navigation and display', async () => {
54
54
  🚀 Rocket
55
55
 
56
56
 
57
- ↵ show details ↑↓ navigate ^k actions
57
+ ↵ show details ↑↓ navigate ^k actions :vim
58
58
 
59
59
  "
60
60
  `)
@@ -87,7 +87,7 @@ test('grid navigation and display', async () => {
87
87
  🚀 Rocket
88
88
 
89
89
 
90
- ↵ show details ↑↓ navigate ^k actions
90
+ ↵ show details ↑↓ navigate ^k actions :vim
91
91
 
92
92
  "
93
93
  `)
@@ -121,7 +121,7 @@ test('grid navigation and display', async () => {
121
121
  🚀 Rocket
122
122
 
123
123
 
124
- ↵ show details ↑↓ navigate ^k actions
124
+ ↵ show details ↑↓ navigate ^k actions :vim
125
125
 
126
126
  "
127
127
  `)
@@ -148,12 +148,12 @@ test('grid navigation and display', async () => {
148
148
  │ │
149
149
  │ Settings │
150
150
  │ Change Theme... │
151
+ │ Enable Vim Mode │
151
152
  │ Toggle Console Logs │
152
153
  │ │
153
154
  │ │
154
155
  │ │
155
156
  │ │
156
- │ │
157
157
  │ ↵ select ↑↓ navigate │
158
158
  │ │
159
159
  ╰────────────────────────────────────────────────────────────────╯"
@@ -187,7 +187,7 @@ test('grid navigation and display', async () => {
187
187
  🚀 Rocket
188
188
 
189
189
 
190
- ↵ show details ↑↓ navigate ^k actions
190
+ ↵ show details ↑↓ navigate ^k actions :vim
191
191
 
192
192
  "
193
193
  `)
@@ -231,7 +231,7 @@ test('grid search functionality', async () => {
231
231
  ☀ Sun
232
232
 
233
233
 
234
- ↵ show details ↑↓ navigate ^k actions
234
+ ↵ show details ↑↓ navigate ^k actions :vim
235
235
 
236
236
 
237
237
 
@@ -271,7 +271,7 @@ test('grid search functionality', async () => {
271
271
  ☀ Sun
272
272
 
273
273
 
274
- ↵ show details ↑↓ navigate ^k actions
274
+ ↵ show details ↑↓ navigate ^k actions :vim
275
275
 
276
276
 
277
277
 
@@ -310,7 +310,7 @@ test('grid search functionality', async () => {
310
310
  🚀 Rocket
311
311
 
312
312
 
313
- ↵ show details ↑↓ navigate ^k actions
313
+ ↵ show details ↑↓ navigate ^k actions :vim
314
314
 
315
315
  "
316
316
  `)
@@ -345,7 +345,7 @@ test('grid search functionality', async () => {
345
345
  ☀ Sun
346
346
 
347
347
 
348
- ↵ show details ↑↓ navigate ^k actions
348
+ ↵ show details ↑↓ navigate ^k actions :vim
349
349
 
350
350
 
351
351
 
@@ -389,7 +389,7 @@ test('grid item selection and actions', async () => {
389
389
  🚀 Rocket
390
390
 
391
391
 
392
- ↵ show details ↑↓ navigate ^k actions
392
+ ↵ show details ↑↓ navigate ^k actions :vim
393
393
 
394
394
  "
395
395
  `)
@@ -422,7 +422,7 @@ test('grid item selection and actions', async () => {
422
422
  🚀 Rocket
423
423
 
424
424
 
425
- ↵ show details ↑↓ navigate ^k actions
425
+ ↵ show details ↑↓ navigate ^k actions :vim
426
426
 
427
427
  "
428
428
  `)
@@ -455,7 +455,7 @@ test('grid item selection and actions', async () => {
455
455
  🚀 Rocket
456
456
 
457
457
 
458
- ↵ show details ↑↓ navigate ^k actions
458
+ ↵ show details ↑↓ navigate ^k actions :vim
459
459
 
460
460
  "
461
461
  `)
@@ -497,7 +497,7 @@ test('grid mouse interaction', async () => {
497
497
  🚀 Rocket
498
498
 
499
499
 
500
- ↵ show details ↑↓ navigate ^k actions
500
+ ↵ show details ↑↓ navigate ^k actions :vim
501
501
 
502
502
  "
503
503
  `)
@@ -539,7 +539,7 @@ test('grid mouse interaction', async () => {
539
539
 
540
540
 
541
541
 
542
- ↵ show details ↑↓ navigate ^k actions
542
+ ↵ show details ↑↓ navigate ^k actions :vim
543
543
 
544
544
  "
545
545
  `)
@@ -35,6 +35,7 @@ test('renders calendar heatmaps with various color combinations', async () => {
35
35
 
36
36
  Calendar Heatmap Color Showcase
37
37
 
38
+
38
39
  Each heatmap demonstrates a different color combination.
39
40
  Data has a late-fall gap to show that empty weeks are skipped.
40
41
  Last heatmap renders multi-year data to verify width truncation.
@@ -73,7 +74,6 @@ test('renders calendar heatmaps with various color combinations', async () => {
73
74
  ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■
74
75
  ■ ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■ Wed
75
76
  ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■
76
- ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ Fri
77
77
 
78
78
 
79
79
  esc go back ^k actions powered by termcast.app
@@ -46,7 +46,7 @@ test('navigation between main and detail views', async () => {
46
46
 
47
47
 
48
48
 
49
- ↵ open details ↑↓ navigate ^k actions
49
+ ↵ open details ↑↓ navigate ^k actions :vim
50
50
 
51
51
 
52
52
 
@@ -80,7 +80,7 @@ test('navigation between main and detail views', async () => {
80
80
 
81
81
 
82
82
 
83
- ↵ open details ↑↓ navigate ^k actions
83
+ ↵ open details ↑↓ navigate ^k actions :vim
84
84
 
85
85
 
86
86
 
@@ -118,7 +118,7 @@ test('navigation between main and detail views', async () => {
118
118
 
119
119
 
120
120
 
121
- ↵ go back ↑↓ navigate ^k actions
121
+ ↵ go back ↑↓ navigate ^k actions :vim
122
122
 
123
123
 
124
124
 
@@ -160,7 +160,7 @@ test('navigation between main and detail views', async () => {
160
160
 
161
161
 
162
162
 
163
- ↵ open details ↑↓ navigate ^k actions
163
+ ↵ open details ↑↓ navigate ^k actions :vim
164
164
 
165
165
 
166
166
 
@@ -194,7 +194,7 @@ test('navigation between main and detail views', async () => {
194
194
 
195
195
 
196
196
 
197
- ↵ open details ↑↓ navigate ^k actions
197
+ ↵ open details ↑↓ navigate ^k actions :vim
198
198
 
199
199
 
200
200
 
@@ -227,7 +227,7 @@ test('navigation between main and detail views', async () => {
227
227
 
228
228
 
229
229
 
230
- ↵ go back ↑↓ navigate ^k actions
230
+ ↵ go back ↑↓ navigate ^k actions :vim
231
231
 
232
232
 
233
233
 
@@ -266,7 +266,7 @@ test('navigation between main and detail views', async () => {
266
266
 
267
267
 
268
268
 
269
- ↵ open details ↑↓ navigate ^k actions
269
+ ↵ open details ↑↓ navigate ^k actions :vim
270
270
 
271
271
 
272
272
 
@@ -306,12 +306,12 @@ test('navigation with actions panel', async () => {
306
306
  │ │
307
307
  │ Settings │
308
308
  │ Change Theme... │
309
+ │ Enable Vim Mode │
309
310
  │ Toggle Console Logs │
310
311
  │ │
311
312
  │ │
312
313
  │ │
313
314
  │ │
314
- │ │
315
315
  │ ↵ select ↑↓ navigate │
316
316
  │ │
317
317
  ╰────────────────────────────────────────────────────────────────╯
@@ -339,12 +339,12 @@ test('navigation with actions panel', async () => {
339
339
  │ │
340
340
  │ Settings │
341
341
  │ Change Theme... │
342
+ │ Enable Vim Mode │
342
343
  │ Toggle Console Logs │
343
344
  │ │
344
345
  │ │
345
346
  │ │
346
347
  │ │
347
- │ │
348
348
  │ ↵ select ↑↓ navigate │
349
349
  │ │
350
350
  ╰────────────────────────────────────────────────────────────────╯
@@ -419,7 +419,7 @@ test('navigation with actions panel', async () => {
419
419
 
420
420
 
421
421
 
422
- ↵ go back ↑↓ navigate ^k actions
422
+ ↵ go back ↑↓ navigate ^k actions :vim
423
423
 
424
424
 
425
425
 
@@ -450,12 +450,12 @@ test('navigation with actions panel', async () => {
450
450
  │ │
451
451
  │ Settings │
452
452
  │ Change Theme... │
453
+ │ Enable Vim Mode │
453
454
  │ Toggle Console Logs │
454
455
  │ │
455
456
  │ │
456
457
  │ │
457
458
  │ │
458
- │ │
459
459
  │ ↵ select ↑↓ navigate │
460
460
  │ │
461
461
  ╰────────────────────────────────────────────────────────────────╯
@@ -489,7 +489,7 @@ test('navigation with actions panel', async () => {
489
489
 
490
490
 
491
491
 
492
- ↵ open details ↑↓ navigate ^k actions
492
+ ↵ open details ↑↓ navigate ^k actions :vim
493
493
 
494
494
 
495
495
 
@@ -535,7 +535,7 @@ test('search functionality in main and detail views', async () => {
535
535
 
536
536
 
537
537
 
538
- ↵ open details ↑↓ navigate ^k actions
538
+ ↵ open details ↑↓ navigate ^k actions :vim
539
539
 
540
540
 
541
541
 
@@ -573,7 +573,7 @@ test('search functionality in main and detail views', async () => {
573
573
 
574
574
 
575
575
 
576
- ↵ open details ↑↓ navigate ^k actions
576
+ ↵ open details ↑↓ navigate ^k actions :vim
577
577
 
578
578
 
579
579
 
@@ -613,7 +613,7 @@ test('search functionality in main and detail views', async () => {
613
613
 
614
614
 
615
615
 
616
- ↵ go back ↑↓ navigate ^k actions
616
+ ↵ go back ↑↓ navigate ^k actions :vim
617
617
 
618
618
 
619
619
 
@@ -650,7 +650,7 @@ test('search functionality in main and detail views', async () => {
650
650
 
651
651
 
652
652
 
653
- ↵ go back ↑↓ navigate ^k actions
653
+ ↵ go back ↑↓ navigate ^k actions :vim
654
654
 
655
655
 
656
656
 
@@ -687,7 +687,7 @@ test('search functionality in main and detail views', async () => {
687
687
 
688
688
 
689
689
 
690
- ↵ open details ↑↓ navigate ^k actions
690
+ ↵ open details ↑↓ navigate ^k actions :vim
691
691
 
692
692
 
693
693
 
@@ -43,7 +43,7 @@ test('progress bars render in detail metadata and update on selection', async ()
43
43
  │ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ 7% used
44
44
  │ Resets Feb 27, 1pm (Asia/Bangkok)
45
45
 
46
- ↑↓ navigate ^k actions
46
+ ↑↓ navigate ^k actions :vim
47
47
 
48
48
 
49
49
 
@@ -35,25 +35,20 @@ test('wrapText table shows full prose across multiple lines', async () => {
35
35
 
36
36
  Wrapping Table
37
37
 
38
- Feature Description
39
- OAuth Proxy Handles the full OAuth
40
- authorization code flow including
41
- PKCE verification, token exchange,
42
- and refresh. The proxy keeps client
43
- secrets server-side so CLI tools
44
- never need to store them locally.
45
-
46
- Hot Reload Watches source files for changes
47
- and rebuilds the extension bundle
48
- automatically. The TUI updates in
49
- place without losing navigation
50
- state or scroll position.
51
- Compiled Mode Extensions can be compiled into
52
- standalone binaries that embed the
53
- package.json and all command
54
- components. No filesystem paths are
55
- hardcoded, making the binary fully
56
- portable.
38
+ Feature Description
39
+ OAuth Proxy Handles the full OAuth authorization code flow
40
+ including PKCE verification, token exchange, and
41
+ refresh. The proxy keeps client secrets server-
42
+ side so CLI tools never need to store them
43
+ locally.
44
+ Hot Reload Watches source files for changes and rebuilds the
45
+ extension bundle automatically. The TUI updates
46
+ in place without losing navigation state or
47
+ scroll position.
48
+ Compiled Mode Extensions can be compiled into standalone
49
+ binaries that embed the package.json and all
50
+ command components. No filesystem paths are
51
+ hardcoded, making the binary fully portable.
57
52
 
58
53
  Non-wrapping Table (default)
59
54
 
@@ -76,6 +71,11 @@ test('wrapText table shows full prose across multiple lines', async () => {
76
71
 
77
72
 
78
73
 
74
+
75
+
76
+
77
+
78
+
79
79
 
80
80
 
81
81
 
@@ -58,7 +58,7 @@ test('Store extension - searching for spiceblow shows Database', async () => {
58
58
 
59
59
 
60
60
 
61
- ↵ view details ↑↓ navigate ^k actions powered by termcast.app
61
+ ↵ view details ↑↓ navigate ^k actions :vim powered by termcast.app
62
62
 
63
63
 
64
64
 
@@ -102,7 +102,7 @@ test.skipIf(isLinux)('swift extension dev mode shows command list', async () =>
102
102
 
103
103
 
104
104
 
105
- ↵ run command ↑↓ navigate ^k actions
105
+ ↵ run command ↑↓ navigate ^k actions :vim
106
106
 
107
107
 
108
108
 
@@ -153,7 +153,7 @@ test.skipIf(isLinux)('swift extension runs Swift List command and shows items',
153
153
 
154
154
 
155
155
 
156
- ↑↓ navigate ^k actions
156
+ ↑↓ navigate ^k actions :vim
157
157
 
158
158
 
159
159
 
@@ -35,8 +35,10 @@ test('inline formatting table renders all rows', async () => {
35
35
 
36
36
  Table Edge Cases
37
37
 
38
+
38
39
  Inline Formatting
39
40
 
41
+
40
42
  Feature Syntax Result
41
43
  Bold text bold text
42
44
  Italic text italic text
@@ -46,6 +48,7 @@ test('inline formatting table renders all rows', async () => {
46
48
 
47
49
  Single Column
48
50
 
51
+
49
52
  Name
50
53
  Alice
51
54
  Bob
@@ -53,11 +56,13 @@ test('inline formatting table renders all rows', async () => {
53
56
 
54
57
  Single Row
55
58
 
59
+
56
60
  A B C D E
57
61
  1 2 3 4 5
58
62
 
59
63
  Empty Cells
60
64
 
65
+
61
66
  Key Value Notes
62
67
  host localhost
63
68
  8080 default port
@@ -65,12 +70,14 @@ test('inline formatting table renders all rows', async () => {
65
70
 
66
71
  Wide Table
67
72
 
73
+
68
74
  ID Name Email Role Department Location
69
75
  1 Alice Johnson alice@example.com Engineer Engineering SF
70
76
  2 Bob Smith bob@example.com Designer Design NYC
71
77
 
72
78
  Two Columns
73
79
 
80
+
74
81
  Key Value
75
82
  version 2.1.0
76
83
  license MIT
@@ -78,6 +85,7 @@ test('inline formatting table renders all rows', async () => {
78
85
 
79
86
  Numeric Data
80
87
 
88
+
81
89
  Metric Q1 Q2 Q3 Q4
82
90
  Revenue 100 150 200 250
83
91
  Users 1000 1500 2000 3000
@@ -86,16 +94,8 @@ test('inline formatting table renders all rows', async () => {
86
94
  Done.
87
95
 
88
96
 
89
- esc go back ^k actions powered by termcast.app
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
97
 
98
+ esc go back ^k actions powered by termcast.app
99
99
 
100
100
 
101
101
 
@@ -219,8 +219,10 @@ test('all tables render without crash - full page snapshot', async () => {
219
219
 
220
220
  Table Edge Cases
221
221
 
222
+
222
223
  Inline Formatting
223
224
 
225
+
224
226
  Feature Syntax Result
225
227
  Bold text bold text
226
228
  Italic text italic text
@@ -230,6 +232,7 @@ test('all tables render without crash - full page snapshot', async () => {
230
232
 
231
233
  Single Column
232
234
 
235
+
233
236
  Name
234
237
  Alice
235
238
  Bob
@@ -237,11 +240,13 @@ test('all tables render without crash - full page snapshot', async () => {
237
240
 
238
241
  Single Row
239
242
 
243
+
240
244
  A B C D E
241
245
  1 2 3 4 5
242
246
 
243
247
  Empty Cells
244
248
 
249
+
245
250
  Key Value Notes
246
251
  host localhost
247
252
  8080 default port
@@ -249,12 +254,14 @@ test('all tables render without crash - full page snapshot', async () => {
249
254
 
250
255
  Wide Table
251
256
 
257
+
252
258
  ID Name Email Role Department Location
253
259
  1 Alice Johnson alice@example.com Engineer Engineering SF
254
260
  2 Bob Smith bob@example.com Designer Design NYC
255
261
 
256
262
  Two Columns
257
263
 
264
+
258
265
  Key Value
259
266
  version 2.1.0
260
267
  license MIT
@@ -262,6 +269,7 @@ test('all tables render without crash - full page snapshot', async () => {
262
269
 
263
270
  Numeric Data
264
271
 
272
+
265
273
  Metric Q1 Q2 Q3 Q4
266
274
  Revenue 100 150 200 250
267
275
  Users 1000 1500 2000 3000
@@ -270,16 +278,8 @@ test('all tables render without crash - full page snapshot', async () => {
270
278
  Done.
271
279
 
272
280
 
273
- esc go back ^k actions powered by termcast.app
274
-
275
-
276
-
277
-
278
-
279
-
280
-
281
-
282
281
 
282
+ esc go back ^k actions powered by termcast.app
283
283
 
284
284
 
285
285