termcast 1.3.54 → 1.4.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 (170) 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 +16 -15
  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/extension-preferences.d.ts.map +1 -1
  28. package/dist/components/extension-preferences.js +7 -8
  29. package/dist/components/extension-preferences.js.map +1 -1
  30. package/dist/components/form/file-autocomplete.js +2 -2
  31. package/dist/components/form/file-autocomplete.js.map +1 -1
  32. package/dist/components/list.d.ts.map +1 -1
  33. package/dist/components/list.js +242 -14
  34. package/dist/components/list.js.map +1 -1
  35. package/dist/e2e-node.d.ts.map +1 -1
  36. package/dist/e2e-node.js +5 -4
  37. package/dist/e2e-node.js.map +1 -1
  38. package/dist/extensions/dev.d.ts.map +1 -1
  39. package/dist/extensions/dev.js +5 -2
  40. package/dist/extensions/dev.js.map +1 -1
  41. package/dist/globals.d.ts.map +1 -1
  42. package/dist/globals.js +2 -1
  43. package/dist/globals.js.map +1 -1
  44. package/dist/internal/error-handler.d.ts.map +1 -1
  45. package/dist/internal/error-handler.js +21 -19
  46. package/dist/internal/error-handler.js.map +1 -1
  47. package/dist/internal/providers.d.ts.map +1 -1
  48. package/dist/internal/providers.js +41 -1
  49. package/dist/internal/providers.js.map +1 -1
  50. package/dist/logger.d.ts.map +1 -1
  51. package/dist/logger.js +40 -29
  52. package/dist/logger.js.map +1 -1
  53. package/dist/platform/browser/cache.d.ts +41 -0
  54. package/dist/platform/browser/cache.d.ts.map +1 -0
  55. package/dist/platform/browser/cache.js +262 -0
  56. package/dist/platform/browser/cache.js.map +1 -0
  57. package/dist/platform/browser/localstorage.d.ts +20 -0
  58. package/dist/platform/browser/localstorage.d.ts.map +1 -0
  59. package/dist/platform/browser/localstorage.js +102 -0
  60. package/dist/platform/browser/localstorage.js.map +1 -0
  61. package/dist/platform/browser/runtime.d.ts +51 -0
  62. package/dist/platform/browser/runtime.d.ts.map +1 -0
  63. package/dist/platform/browser/runtime.js +164 -0
  64. package/dist/platform/browser/runtime.js.map +1 -0
  65. package/dist/platform/bun/sqlite.d.ts +17 -0
  66. package/dist/platform/bun/sqlite.d.ts.map +1 -0
  67. package/dist/platform/bun/sqlite.js +6 -0
  68. package/dist/platform/bun/sqlite.js.map +1 -0
  69. package/dist/platform/node/cache.d.ts +35 -0
  70. package/dist/platform/node/cache.d.ts.map +1 -0
  71. package/dist/platform/node/cache.js +269 -0
  72. package/dist/platform/node/cache.js.map +1 -0
  73. package/dist/platform/node/localstorage.d.ts +17 -0
  74. package/dist/platform/node/localstorage.d.ts.map +1 -0
  75. package/dist/platform/node/localstorage.js +186 -0
  76. package/dist/platform/node/localstorage.js.map +1 -0
  77. package/dist/platform/node/runtime.d.ts +52 -0
  78. package/dist/platform/node/runtime.d.ts.map +1 -0
  79. package/dist/platform/node/runtime.js +230 -0
  80. package/dist/platform/node/runtime.js.map +1 -0
  81. package/dist/platform/node/sqlite.d.ts +27 -0
  82. package/dist/platform/node/sqlite.d.ts.map +1 -0
  83. package/dist/platform/node/sqlite.js +21 -0
  84. package/dist/platform/node/sqlite.js.map +1 -0
  85. package/dist/state.d.ts +5 -0
  86. package/dist/state.d.ts.map +1 -1
  87. package/dist/state.js +6 -28
  88. package/dist/state.js.map +1 -1
  89. package/dist/utils/file-system.d.ts.map +1 -1
  90. package/dist/utils/file-system.js +17 -22
  91. package/dist/utils/file-system.js.map +1 -1
  92. package/dist/utils.d.ts +1 -1
  93. package/dist/utils.d.ts.map +1 -1
  94. package/dist/utils.js +42 -47
  95. package/dist/utils.js.map +1 -1
  96. package/dist/vim-mode.d.ts +40 -0
  97. package/dist/vim-mode.d.ts.map +1 -0
  98. package/dist/vim-mode.js +135 -0
  99. package/dist/vim-mode.js.map +1 -0
  100. package/fonts/Inconsolata.otf +0 -0
  101. package/fonts/SIL Open Font License.txt +41 -0
  102. package/package.json +62 -10
  103. package/src/action-utils.tsx +27 -124
  104. package/src/apis/cache.test.ts +1 -1
  105. package/src/apis/cache.tsx +9 -373
  106. package/src/apis/clipboard.tsx +29 -38
  107. package/src/apis/environment.tsx +25 -52
  108. package/src/apis/localstorage.tsx +8 -214
  109. package/src/app.tsx +16 -15
  110. package/src/cli.tsx +14 -15
  111. package/src/compile.vitest.tsx +2 -2
  112. package/src/components/actions.tsx +19 -1
  113. package/src/components/extension-preferences.tsx +7 -8
  114. package/src/components/form/file-autocomplete.tsx +2 -2
  115. package/src/components/list.tsx +279 -14
  116. package/src/e2e-node.tsx +7 -7
  117. package/src/examples/action-shortcut.vitest.tsx +2 -2
  118. package/src/examples/actions-context.vitest.tsx +1 -1
  119. package/src/examples/bar-graph-weekly.vitest.tsx +10 -36
  120. package/src/examples/detail-metadata-showcase.vitest.tsx +37 -42
  121. package/src/examples/form-basic.vitest.tsx +45 -41
  122. package/src/examples/github.vitest.tsx +4 -4
  123. package/src/examples/graph-bar-chart.vitest.tsx +13 -11
  124. package/src/examples/graph-polymarket.vitest.tsx +2 -2
  125. package/src/examples/graph-row.vitest.tsx +66 -66
  126. package/src/examples/graph-styles.vitest.tsx +12 -12
  127. package/src/examples/internal/simple-scrollbox.vitest.tsx +14 -48
  128. package/src/examples/list-detail-metadata.vitest.tsx +5 -5
  129. package/src/examples/list-fetch-data.vitest.tsx +3 -3
  130. package/src/examples/list-item-accessories.vitest.tsx +2 -2
  131. package/src/examples/list-loading-empty-view.vitest.tsx +1 -1
  132. package/src/examples/list-no-actions.vitest.tsx +2 -2
  133. package/src/examples/list-scrollbox.vitest.tsx +5 -5
  134. package/src/examples/list-spacing-mode.vitest.tsx +3 -3
  135. package/src/examples/list-with-detail.vitest.tsx +68 -68
  136. package/src/examples/list-with-dropdown.vitest.tsx +5 -5
  137. package/src/examples/list-with-sections.vitest.tsx +27 -27
  138. package/src/examples/simple-candle-chart.vitest.tsx +7 -7
  139. package/src/examples/simple-detail-markdown.vitest.tsx +8 -8
  140. package/src/examples/simple-detail-table.vitest.tsx +8 -8
  141. package/src/examples/simple-graph.vitest.tsx +3 -3
  142. package/src/examples/simple-grid.vitest.tsx +14 -14
  143. package/src/examples/simple-heatmap.vitest.tsx +10 -10
  144. package/src/examples/simple-navigation.vitest.tsx +17 -17
  145. package/src/examples/simple-progress-bar.vitest.tsx +1 -1
  146. package/src/examples/store.vitest.tsx +1 -1
  147. package/src/examples/swift-extension.vitest.tsx +2 -2
  148. package/src/examples/table-edge-cases.vitest.tsx +18 -18
  149. package/src/examples/toast-action.vitest.tsx +2 -2
  150. package/src/examples/toast-variations.vitest.tsx +5 -5
  151. package/src/extensions/dev.tsx +5 -2
  152. package/src/extensions/dev.vitest.tsx +3 -3
  153. package/src/globals.ts +2 -1
  154. package/src/internal/error-handler.tsx +19 -21
  155. package/src/internal/providers.tsx +39 -0
  156. package/src/logger.tsx +48 -41
  157. package/src/platform/browser/cache.ts +327 -0
  158. package/src/platform/browser/localstorage.ts +119 -0
  159. package/src/platform/browser/runtime.ts +209 -0
  160. package/src/platform/bun/sqlite.ts +19 -0
  161. package/src/platform/node/cache.ts +372 -0
  162. package/src/platform/node/localstorage.ts +214 -0
  163. package/src/platform/node/runtime.ts +264 -0
  164. package/src/platform/node/sqlite.ts +43 -0
  165. package/src/state.tsx +17 -28
  166. package/src/utils/file-system.ts +17 -22
  167. package/src/utils.test.tsx +1 -1
  168. package/src/utils.tsx +56 -47
  169. package/src/vim-mode.tsx +153 -0
  170. package/src/apis/sqlite.ts +0 -14
@@ -59,7 +59,7 @@ test('list with sections navigation', async () => {
59
59
 
60
60
 
61
61
 
62
- ↵ view details ↑↓ navigate ^k actions
62
+ ↵ view details ↑↓ navigate ^k actions :vim
63
63
 
64
64
  "
65
65
  `)
@@ -92,7 +92,7 @@ test('list with sections navigation', async () => {
92
92
 
93
93
 
94
94
 
95
- ↵ view details ↑↓ navigate ^k actions
95
+ ↵ view details ↑↓ navigate ^k actions :vim
96
96
 
97
97
  "
98
98
  `)
@@ -119,7 +119,7 @@ test('list with sections navigation', async () => {
119
119
 
120
120
 
121
121
 
122
- ↑↓ navigate ^k actions
122
+ ↑↓ navigate ^k actions :vim
123
123
 
124
124
  "
125
125
  `)
@@ -150,7 +150,7 @@ test('list with sections navigation', async () => {
150
150
 
151
151
 
152
152
 
153
- ↑↓ navigate ^k actions
153
+ ↑↓ navigate ^k actions :vim
154
154
 
155
155
  "
156
156
  `)
@@ -191,7 +191,7 @@ test('list with sections search functionality', async () => {
191
191
 
192
192
 
193
193
 
194
- ↵ view details ↑↓ navigate ^k actions
194
+ ↵ view details ↑↓ navigate ^k actions :vim
195
195
 
196
196
 
197
197
 
@@ -227,7 +227,7 @@ test('list with sections search functionality', async () => {
227
227
 
228
228
 
229
229
 
230
- ↵ view details ↑↓ navigate ^k actions
230
+ ↵ view details ↑↓ navigate ^k actions :vim
231
231
 
232
232
 
233
233
 
@@ -260,7 +260,7 @@ test('list with sections search functionality', async () => {
260
260
 
261
261
 
262
262
 
263
- ↵ view details ↑↓ navigate ^k actions
263
+ ↵ view details ↑↓ navigate ^k actions :vim
264
264
 
265
265
  "
266
266
  `)
@@ -290,7 +290,7 @@ test('list with sections search functionality', async () => {
290
290
 
291
291
 
292
292
 
293
- ↵ view details ↑↓ navigate ^k actions
293
+ ↵ view details ↑↓ navigate ^k actions :vim
294
294
 
295
295
 
296
296
 
@@ -310,8 +310,8 @@ test('list with sections search functionality', async () => {
310
310
 
311
311
  Bread
312
312
 
313
- Freshly baked bread from our bakery.
314
313
 
314
+ Freshly baked bread from our bakery.
315
315
  Product Details
316
316
 
317
317
  - Baked fresh daily
@@ -320,9 +320,9 @@ test('list with sections search functionality', async () => {
320
320
  - Perfect for sandwiches or toast
321
321
 
322
322
 
323
-
324
323
  esc go back ^k actions
325
324
 
325
+
326
326
  "
327
327
  `)
328
328
  }, 10000)
@@ -346,8 +346,8 @@ test('list click functionality', async () => {
346
346
 
347
347
  Banana
348
348
 
349
- A yellow tropical fruit that's nutritious and energy-rich.
350
349
 
350
+ A yellow tropical fruit that's nutritious and energy-rich.
351
351
  Benefits
352
352
 
353
353
  - High in potassium
@@ -355,10 +355,10 @@ test('list click functionality', async () => {
355
355
  - Aids digestion
356
356
 
357
357
 
358
-
359
358
  esc go back ^k actions
360
359
 
361
360
 
361
+
362
362
  "
363
363
  `)
364
364
  expect(afterClickBanana).toContain('Banana')
@@ -380,8 +380,8 @@ test('list click functionality', async () => {
380
380
 
381
381
  Apple
382
382
 
383
- A delicious red fruit that's sweet and crunchy.
384
383
 
384
+ A delicious red fruit that's sweet and crunchy.
385
385
  Nutrition Facts
386
386
 
387
387
  - High in fiber
@@ -389,10 +389,10 @@ test('list click functionality', async () => {
389
389
  - Good source of vitamin C
390
390
 
391
391
 
392
-
393
392
  esc go back ^k actions
394
393
 
395
394
 
395
+
396
396
  "
397
397
  `)
398
398
  expect(afterClickApple).toContain('Apple')
@@ -425,7 +425,7 @@ test('list click functionality', async () => {
425
425
 
426
426
 
427
427
 
428
- ↑↓ navigate ^k actions
428
+ ↑↓ navigate ^k actions :vim
429
429
 
430
430
  "
431
431
  `)
@@ -469,12 +469,12 @@ test('list actions panel with ctrl+k', async () => {
469
469
  │ │
470
470
  │ Settings │
471
471
  │ Change Theme... │
472
+ │ Enable Vim Mode │
472
473
  │ Toggle Console Logs │
473
474
  │ │
474
475
  │ │
475
476
  │ │
476
477
  │ │
477
- │ │
478
478
  │ ↵ select ↑↓ navigate │"
479
479
  `)
480
480
 
@@ -497,12 +497,12 @@ test('list actions panel with ctrl+k', async () => {
497
497
  │ │
498
498
  │ Settings │
499
499
  │ Change Theme... │
500
+ │ Enable Vim Mode │
500
501
  │ Toggle Console Logs │
501
502
  │ │
502
503
  │ │
503
504
  │ │
504
505
  │ │
505
- │ │
506
506
  │ ↵ select ↑↓ navigate │"
507
507
  `)
508
508
 
@@ -579,7 +579,7 @@ test('filtering selects first visible item and navigation works', async () => {
579
579
 
580
580
 
581
581
 
582
- ↑↓ navigate ^k actions
582
+ ↑↓ navigate ^k actions :vim
583
583
 
584
584
 
585
585
 
@@ -607,7 +607,7 @@ test('filtering selects first visible item and navigation works', async () => {
607
607
 
608
608
 
609
609
 
610
- ↵ view details ↑↓ navigate ^k actions
610
+ ↵ view details ↑↓ navigate ^k actions :vim
611
611
 
612
612
 
613
613
 
@@ -635,7 +635,7 @@ test('filtering selects first visible item and navigation works', async () => {
635
635
 
636
636
 
637
637
 
638
- ↵ view details ↑↓ navigate ^k actions
638
+ ↵ view details ↑↓ navigate ^k actions :vim
639
639
 
640
640
 
641
641
 
@@ -663,7 +663,7 @@ test('filtering selects first visible item and navigation works', async () => {
663
663
 
664
664
 
665
665
 
666
- ↵ view details ↑↓ navigate ^k actions
666
+ ↵ view details ↑↓ navigate ^k actions :vim
667
667
 
668
668
 
669
669
 
@@ -702,7 +702,7 @@ test('list scrollbox scrolling with sections', async () => {
702
702
 
703
703
 
704
704
 
705
- ↵ view details ↑↓ navigate ^k actions
705
+ ↵ view details ↑↓ navigate ^k actions :vim
706
706
 
707
707
  "
708
708
  `)
@@ -735,7 +735,7 @@ test('list scrollbox scrolling with sections', async () => {
735
735
 
736
736
 
737
737
 
738
- ↑↓ navigate ^k actions
738
+ ↑↓ navigate ^k actions :vim
739
739
 
740
740
  "
741
741
  `)
@@ -765,7 +765,7 @@ test('list scrollbox scrolling with sections', async () => {
765
765
  Bread Freshly baked Today New
766
766
 
767
767
 
768
- ↑↓ navigate ^k actions
768
+ ↑↓ navigate ^k actions :vim
769
769
 
770
770
  "
771
771
  `)
@@ -797,7 +797,7 @@ test('list scrollbox scrolling with sections', async () => {
797
797
  ›Bread Freshly baked Today New
798
798
 
799
799
 
800
- ↵ view details ↑↓ navigate ^k actions
800
+ ↵ view details ↑↓ navigate ^k actions :vim
801
801
 
802
802
  "
803
803
  `)
@@ -827,7 +827,7 @@ test('list scrollbox scrolling with sections', async () => {
827
827
 
828
828
 
829
829
 
830
- ↵ view details ↑↓ navigate ^k actions
830
+ ↵ view details ↑↓ navigate ^k actions :vim
831
831
 
832
832
  "
833
833
  `)
@@ -901,7 +901,7 @@ test('list does not wrap at top boundary', async () => {
901
901
 
902
902
 
903
903
 
904
- ↵ view details ↑↓ navigate ^k actions
904
+ ↵ view details ↑↓ navigate ^k actions :vim
905
905
 
906
906
  "
907
907
  `)
@@ -58,7 +58,7 @@ test('candle chart renders in list detail with axes', async () => {
58
58
 
59
59
  │ ────────────────────────────────────────────
60
60
 
61
- ↵ open detail ↑↓ navigate ^k actions │ BTC-USD Hourly OHLC
61
+ ↵ open detail ↑↓ navigate ^k actions :vi │ BTC-USD Hourly OHLC
62
62
 
63
63
 
64
64
  "
@@ -88,13 +88,11 @@ test('push to full-page detail view on Enter', async () => {
88
88
 
89
89
  BTC - Bitcoin
90
90
 
91
- Category: Store of Value
92
91
 
92
+ Category: Store of Value
93
93
  Price: $67,641
94
94
  24h change: -0.2%
95
-
96
95
  Mode: candle-only
97
-
98
96
  300 hourly candles from Coinbase Exchange, frozen so the example stays deterministic.
99
97
 
100
98
  $74,678│ │
@@ -107,6 +105,8 @@ test('push to full-page detail view on Enter', async () => {
107
105
  │ ▌▘▌▌▘▌▖│ ││ │ ▌││▘▌▖│▌▌▖▖▌ ▌▖▖▖▖▖▖▖
108
106
  │ ▖▌ │││ ▌▌▘▌▌▌ │▖▖▖ ││ ││ ▌ │▌│▌││▘▘ ││ ▘▘│▘
109
107
  $66,197│▖▖▖ │ ▌ ▘▘ │ ▘▌▖ │▌▘ ▘▌▌▌│▖▌▌▖▌ ▘▌▌
108
+ │▘│▌▖ ▖▖▖▌ │▘▌▌▘▌ │▌▘│ ▘▌▌││▌▌
109
+ │ │▌▖▖ ││ ▌││ │││ ▌ ▖▌ ││
110
110
 
111
111
 
112
112
  esc go back ^k actions ↵ Go Back powered by termcast.app
@@ -161,7 +161,7 @@ test('candle + line overlay (mixed components)', async () => {
161
161
 
162
162
  │ Price: $1,971
163
163
 
164
- ↵ open detail ↑↓ navigate ^k actions │ Change: -0.3%
164
+ ↵ open detail ↑↓ navigate ^k actions :vi │ Change: -0.3%
165
165
 
166
166
  "
167
167
  `)
@@ -206,7 +206,7 @@ test('candle + volume bar chart (mixed components)', async () => {
206
206
 
207
207
  │ Price: $83.31
208
208
 
209
- ↵ open detail ↑↓ navigate ^k actions │ Change: -0.4%
209
+ ↵ open detail ↑↓ navigate ^k actions :vi │ Change: -0.4%
210
210
 
211
211
 
212
212
 
@@ -255,7 +255,7 @@ test('side-by-side candle charts in Row', async () => {
255
255
  │ Change: -0.2%
256
256
 
257
257
 
258
- ↵ open detail ↑↓ navigate ^k actions
258
+ ↵ open detail ↑↓ navigate ^k actions :vi
259
259
 
260
260
 
261
261
 
@@ -34,21 +34,20 @@ test('detail renders markdown with headings, lists, links, tables, code and diag
34
34
 
35
35
 
36
36
 
37
- Architecture Overview
37
+ Architecture Overview
38
38
 
39
- This document describes the system architecture.
40
39
 
40
+ This document describes the system architecture.
41
41
  Components
42
42
 
43
- The system has three main components:
44
43
 
44
+ The system has three main components:
45
45
  - Client - handles user interaction
46
46
  - Server - processes requests
47
47
  - Database - stores data
48
-
49
-
50
48
  Links
51
49
 
50
+
52
51
  Check out the GitHub repository for the source code.
53
52
 
54
53
  See the API documentation for more details.
@@ -59,6 +58,7 @@ test('detail renders markdown with headings, lists, links, tables, code and diag
59
58
 
60
59
  Configuration Table
61
60
 
61
+
62
62
  Setting Default Description
63
63
  Host localhost Database host address
64
64
  Port 5432 Database port number
@@ -67,12 +67,14 @@ test('detail renders markdown with headings, lists, links, tables, code and diag
67
67
 
68
68
  Flow Diagram
69
69
 
70
+
70
71
  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
71
72
  │ Client │────▶│ Server │────▶│ Database │
72
73
  └─────────────┘ └─────────────┘ └─────────────┘
73
74
 
74
75
  Vertical Flow
75
76
 
77
+
76
78
  ┌─────────┐
77
79
  │ Start │
78
80
  └────┬────┘
@@ -89,12 +91,10 @@ test('detail renders markdown with headings, lists, links, tables, code and diag
89
91
 
90
92
  Code Example
91
93
 
94
+
92
95
  interface Config {
93
96
  host: string
94
97
  port: number
95
- ssl: boolean
96
- }
97
-
98
98
 
99
99
 
100
100
  esc go back ^k actions powered by termcast.app
@@ -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,6 +63,7 @@ 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
@@ -80,10 +84,6 @@ test('markdown tables render with borderless layout', async () => {
80
84
 
81
85
 
82
86
 
83
-
84
-
85
-
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,6 +163,7 @@ 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
@@ -180,10 +184,6 @@ test('two tables render side by side in a Row', async () => {
180
184
 
181
185
 
182
186
 
183
-
184
-
185
-
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,12 +35,13 @@ test('renders calendar heatmaps with various color combinations', async () => {
35
35
 
36
36
  Calendar Heatmap Color Showcase
37
37
 
38
- Each heatmap demonstrates a different color combination.
39
- Data has a late-fall gap to show that empty weeks are skipped.
40
- Last heatmap renders multi-year data to verify width truncation.
41
38
 
42
- Long history — 5 years of daily data in purple. Months that don't fit the
43
- terminal width are truncated from the left.
39
+
40
+
41
+
42
+
43
+
44
+
44
45
 
45
46
  May Jun Jul Aug Sep Oct Nov
46
47
  ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼
@@ -52,8 +53,8 @@ test('renders calendar heatmaps with various color combinations', async () => {
52
53
  ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼
53
54
  Less ◼ ◼ ■ ■ More
54
55
 
55
- Journal — summer + winter entries in green, with a fall gap between the two
56
- ranges.
56
+
57
+
57
58
 
58
59
  Jun Jul Aug Sep Jan Feb
59
60
  ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼
@@ -65,15 +66,14 @@ test('renders calendar heatmaps with various color combinations', async () => {
65
66
  ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼
66
67
  Less ◼ ◼ ■ ■ More
67
68
 
68
- Recent activity — last 150 days in red, showing the sine-wave pattern clearly.
69
+
70
+
69
71
 
70
72
  Se Oct Nov Dec Jan Feb
71
73
  ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼
72
74
  ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ■ Mon
73
75
  ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■
74
76
  ■ ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■ Wed
75
- ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■
76
- ■ ■ ◼ ◼ ◼ ■ ■ ◼ ◼ ◼ ■ ■ ■ ◼ ◼ ■ ■ ■ ◼ ◼ ◼ ■ Fri
77
77
 
78
78
 
79
79
  esc go back ^k actions powered by termcast.app