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
@@ -32,28 +32,28 @@ test('side detail shows two graphs in a row', async () => {
32
32
 
33
33
  > Search...
34
34
 
35
- ›CPU vs Memory Area + Filled side by side │ CPU vs Memory
36
- Disk I/O Read vs Write operations │
37
- Revenue vs Expenses Striped comparison │ Area chart (left) shows CPU with high
38
- Weather Station Temperature + Humidity │ variance.
39
- Mixed Variants Area left, Striped right │ Filled chart (right) shows memory steadily
40
- Sparse Data (Zeros) Filled vs Striped with zer │ climbing.
41
-
42
- 100│ ⡀ 100│
43
- ⣠ ⢠⣾⣷⡀ ▖▖▌▌
44
- 67 ⣰⣿⣧ ⢀⣿⣿⣿⣇ 67 ▖▖▌▌▌▌▌▌▌
45
- ⢠⣷⣿⣿⣿⣆ ⣾⣿⣿⣿⣿⡄ ▖▖▌▌▌▌▌▌▌▌▌▌▌▌
46
- │ │ ⢀⣿⣿⣿⣿⣿⣿⣆⣸⣿⣿⣿⣿⣿⣿⣄ │▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
47
- 33│⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
48
- │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
49
- 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
50
- 0h 6h 12h 18h24h 0h 6h 12h 18h24h
35
+ ›CPU vs Memory Area + Filled side by side │
36
+ Disk I/O Read vs Write operations │
37
+ Revenue vs Expenses Striped comparison │
38
+ Weather Station Temperature + Humidity │
39
+ Mixed Variants Area left, Striped right │
40
+ Sparse Data (Zeros) Filled vs Striped with zer │
41
+
42
+
43
+ 100 100
44
+ ⡄ ⣼⣷⡀ ▖▖▌▌ █
45
+ 67 ⣸⣿⡄ ⣸⣿⣿⣧ 67│ ▖▖▌▌▌▌▌▌▌ █
46
+ │ │ ⣼⣶⣿⣿⣷⡀ ⢰⣿⣿⣿⣿⣧ │ ▖▖▌▌▌▌▌▌▌▌▌▌▌▌
47
+ │ ⢸⣿⣿⣿⣿⣿⣷⣀⣿⣿⣿⣿⣿⣿⣇ │▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
48
+ 33│⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
49
+ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
50
+ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
51
+ │ 0h 6h 12h 18h24h 0h 6h 12h 18h24h
51
52
 
52
- ────────────────────────────────────────────
53
+ ───────────────────────────────────────────
53
54
 
54
55
  │ CPU Peak: 90%
55
-
56
- ↵ open detail ↑↓ navigate ^k actions │ Mem Peak: 86%
56
+ ↵ open detail ↑↓ navigate ^k actions :vi
57
57
 
58
58
  "
59
59
  `)
@@ -88,10 +88,11 @@ test('enter pushes full detail with two graphs', async () => {
88
88
 
89
89
  CPU vs Memory ▀
90
90
 
91
- Area + Filled side by side
92
91
 
92
+ Area + Filled side by side
93
93
  CPU vs Memory
94
94
 
95
+
95
96
  Area chart (left) shows CPU with high variance.
96
97
  Filled chart (right) shows memory steadily climbing.
97
98
 
@@ -106,7 +107,6 @@ test('enter pushes full detail with two graphs', async () => {
106
107
  │⣀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
107
108
  │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
108
109
  │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
109
- 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
110
110
 
111
111
 
112
112
  esc go back ^k actions ↵ Go Back powered by termcast.app
@@ -151,28 +151,28 @@ test('esc returns from detail to list', async () => {
151
151
 
152
152
  > Search...
153
153
 
154
- ›CPU vs Memory Area + Filled side by side │ CPU vs Memory
155
- Disk I/O Read vs Write operations │
156
- Revenue vs Expenses Striped comparison │ Area chart (left) shows CPU with high
157
- Weather Station Temperature + Humidity │ variance.
158
- Mixed Variants Area left, Striped right │ Filled chart (right) shows memory steadily
159
- Sparse Data (Zeros) Filled vs Striped with zer │ climbing.
160
-
161
- 100│ ⡀ 100│
162
- ⣠ ⢠⣾⣷⡀ ▖▖▌▌
163
- 67 ⣰⣿⣧ ⢀⣿⣿⣿⣇ 67 ▖▖▌▌▌▌▌▌▌
164
- ⢠⣷⣿⣿⣿⣆ ⣾⣿⣿⣿⣿⡄ ▖▖▌▌▌▌▌▌▌▌▌▌▌▌
165
- │ │ ⢀⣿⣿⣿⣿⣿⣿⣆⣸⣿⣿⣿⣿⣿⣿⣄ │▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
166
- 33│⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
167
- │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
168
- 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
169
- 0h 6h 12h 18h24h 0h 6h 12h 18h24h
154
+ ›CPU vs Memory Area + Filled side by side │ CPU vs Memory
155
+ Disk I/O Read vs Write operations │
156
+ Revenue vs Expenses Striped comparison │
157
+ Weather Station Temperature + Humidity │ Area chart (left) shows CPU with high █
158
+ Mixed Variants Area left, Striped right │ variance. █
159
+ Sparse Data (Zeros) Filled vs Striped with zer │ Filled chart (right) shows memory steadily █
160
+ climbing. █
161
+
162
+ 100 100
163
+ ⡄ ⣼⣷⡀ ▖▖▌▌ █
164
+ 67 ⣸⣿⡄ ⣸⣿⣿⣧ 67│ ▖▖▌▌▌▌▌▌▌ █
165
+ │ │ ⣼⣶⣿⣿⣷⡀ ⢰⣿⣿⣿⣿⣧ │ ▖▖▌▌▌▌▌▌▌▌▌▌▌▌
166
+ │ ⢸⣿⣿⣿⣿⣿⣷⣀⣿⣿⣿⣿⣿⣿⣇ │▖▖▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
167
+ 33│⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ 33│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
168
+ │⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ │▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
169
+ 0│⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ 0│▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌
170
+ │ 0h 6h 12h 18h24h 0h 6h 12h 18h24h
170
171
 
171
- ────────────────────────────────────────────
172
+ ───────────────────────────────────────────
172
173
 
173
174
  │ CPU Peak: 90%
174
-
175
- ↵ open detail ↑↓ navigate ^k actions │ Mem Peak: 86%
175
+ ↵ open detail ↑↓ navigate ^k actions :vi
176
176
 
177
177
  "
178
178
  `)
@@ -208,28 +208,28 @@ test('sparse data with zeros shows baseline', async () => {
208
208
 
209
209
  > Search...
210
210
 
211
- CPU vs Memory Area + Filled side by side │ Sparse Data
212
- Disk I/O Read vs Write operations │
213
- Revenue vs Expenses Striped comparison │ Data with many zero values should show a
214
- Weather Station Temperature + Humidity │ thin
215
- Mixed Variants Area left, Striped right │ baseline line so bars are visible even at
216
- ›Sparse Data (Zeros) Filled vs Striped with zer │ zero.
217
-
218
- 100│ ▖ 100│ ▖
219
- ▖▌ ▖▌
220
- 67▌ ▌▌ 67 ▌▌
221
- │ │ ▌▌ ▖▌ ▌▌ │ ▌▌ ▖▌ ▌▌
222
- │ │ ▌▌ ▌▌ ▌▌▖ │ ▌▌ ▌▌ ▌▌▖
223
- 33 ▖ ▌▌▌ ▌▌▖▌▌▌▌ 33│ ▖ ▌▌▌ ▌▌▖ ▌▌▌
224
- ▌▌▌▌▌▌ ▌▌▌▌▌▌▌▌ ▌▌▌▌▌▌▌▌▌▌ ▌▌▌
225
- 0│▖▌▌▌▌▌▌▌▖▌▌▌▌▌▌▌▌▖ 0│▖▌▌▌▌▌▌▌▌▌▌▌▖▌▌▌▖
226
- 0h 6h 12h 18h24h 0h 6h 12h 18h24h
211
+ CPU vs Memory Area + Filled side by side │ Sparse Data
212
+ Disk I/O Read vs Write operations │
213
+ Revenue vs Expenses Striped comparison │
214
+ Weather Station Temperature + Humidity │ Data with many zero values should show a █
215
+ Mixed Variants Area left, Striped right │ thin █
216
+ ›Sparse Data (Zeros) Filled vs Striped with zer │ baseline line so bars are visible even at █
217
+ zero. █
218
+
219
+ 100 100
220
+ ▖ ▖▌ ▖▌ █
221
+ 67│ ▌ ▌▌ 67▌▌
222
+ │ │ ▌▌ ▖▌ ▌▌ │ ▌▌ ▖▌ ▌▌
223
+ │ ▌▌ ▌▌ ▌▌▖ ▌▌ ▌▌ ▌▌▖
224
+ 33 ▌▌▌ ▌▌▖ ▌▌▌ 33 ▌▌▌ ▌▌▖ ▌▌▌
225
+ │ ▌▌▌▌▌▌▌▌▌▌ ▌▌▌ │ ▌▌▌▌▌▌▌▌▌▌ ▌▌▌
226
+ 0│▖▌▌▌▌▌▌▌▌▌▌▌▖▌▌▌▖ 0│▖▌▌▌▌▌▌▌▌▌▌▌▖▌▌▌▖
227
+ │ 0h 6h 12h 18h24h 0h 6h 12h 18h24h
227
228
 
228
- ────────────────────────────────────────────
229
+ ───────────────────────────────────────────
229
230
 
230
231
  │ Zeros: 12 of 20
231
-
232
- ↵ open detail ↑↓ navigate ^k actions │ Peak: 90
232
+ ↵ open detail ↑↓ navigate ^k actions :vi
233
233
 
234
234
  "
235
235
  `)
@@ -266,12 +266,11 @@ test('navigate to striped pair', async () => {
266
266
 
267
267
  CPU vs Memory Area + Filled side by side │ Revenue vs Expenses ▲
268
268
  Disk I/O Read vs Write operations │ █
269
- ›Revenue vs Expenses Striped comparison │ Revenue growing faster than expenses.
270
- Weather Station Temperature + Humidity │ Profit margin widening over the year. █
271
- Mixed Variants Area left, Striped right │
272
- Sparse Data (Zeros) Filled vs Striped with zer │ - Revenue: $10k to $75k
273
- │ - Expenses: $8k to $45k
274
-
269
+ ›Revenue vs Expenses Striped comparison │
270
+ Weather Station Temperature + Humidity │ Revenue growing faster than expenses. █
271
+ Mixed Variants Area left, Striped right │ Profit margin widening over the year.
272
+ Sparse Data (Zeros) Filled vs Striped with zer │ - Revenue: $10k** to **$75k
273
+ │ - Expenses: $8k** to **$45k
275
274
 
276
275
  │ 78│ ▖ 47│ ▖
277
276
  │ │ ▖▌▌▌ │ ▖▖▌▌▌
@@ -285,7 +284,8 @@ test('navigate to striped pair', async () => {
285
284
 
286
285
  │ ───────────────────────────────────────────
287
286
 
288
- ↵ open detail ↑↓ navigate ^k actions │ Revenue: $75k
287
+ │ Revenue: $75k
288
+ ↵ open detail ↑↓ navigate ^k actions :vi │ ▼
289
289
 
290
290
  "
291
291
  `)
@@ -86,9 +86,9 @@ test('filled style renders block characters', async () => {
86
86
 
87
87
  Area - Stock Price Orange braille do │ Revenue Growth ▲
88
88
  Area - Multi Series CPU + Memory ove │ █
89
- Area - Waves Purple + Magenta sine/c │ Quarterly revenue from $10k to
90
- Area - Blue Revenue Single series, a │ $75k.
91
- ›Filled - Red Revenue Solid block gro │
89
+ Area - Waves Purple + Magenta sine/c │
90
+ Area - Blue Revenue Single series, a │ Quarterly revenue from $10k** to
91
+ ›Filled - Red Revenue Solid block gro │ **$75k.
92
92
  Filled - Green Temp Daily temperatur │ Q1: $10k → Q2: $25k (+150%)
93
93
  Filled - Yellow CPU High contrast on │ Q2: $25k → Q3: $50k (+100%)
94
94
  Filled - Magenta Waves Smooth curve │ Q3: $50k → Q4: $75k (+50%)
@@ -188,20 +188,20 @@ test('markdown + metadata detail view in list', async () => {
188
188
 
189
189
  Area - Stock Price Orange braille do │ System Metrics ▲
190
190
  ›Area - Multi Series CPU + Memory ove │ ▀
191
- Area - Waves Purple + Magenta sine/c │ CPU usage (blue) vs memory usage (
192
- Area - Blue Revenue Single series, a │ green) over 24 hours.
193
- Filled - Red Revenue Solid block gro │
191
+ Area - Waves Purple + Magenta sine/c │
192
+ Area - Blue Revenue Single series, a │ CPU usage (blue) vs memory usage (
193
+ Filled - Red Revenue Solid block gro │ green) over 24 hours.
194
194
  Filled - Green Temp Daily temperatur │ - Peak CPU at 90% around 15h
195
195
  Filled - Yellow CPU High contrast on │ - Memory steadily climbing to 86%
196
196
  Filled - Magenta Waves Smooth curve │ - CPU has high variance, memory
197
197
  Striped - Purple/Orange Warm alterna │ is monotonic
198
198
  Striped - Blue/Red High contrast str │
199
- Striped - Theme Default primary + ac │
200
- Striped - Green/Yellow Nature-inspir │ 100
201
- Striped - Red/Magenta Warm gradient │ ⣠⣶⣧ ⣀⣠⣤⣶
202
- │ 75│ ⢀⣴⣧ ⢀⣰⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿
199
+ Striped - Theme Default primary + ac │ 100│
200
+ Striped - Green/Yellow Nature-inspir │ ⣠⣶⣧ ⣀⣠⣤⣶
201
+ Striped - Red/Magenta Warm gradient │ 75 ⢀⣴⣧ ⢀⣰⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿
203
202
  │ │ ⢀⣾⣿⣿⣧⢀⣀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
204
- ↵ open detail ↑↓ navigate ^k act │ │ ⢀⣾⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
203
+ │ │ ⢀⣾⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
204
+ ↵ open detail ↑↓ navigate ^k act │ 50│⣀⣀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ▼
205
205
 
206
206
  "
207
207
  `)
@@ -236,8 +236,8 @@ test('enter pushes full detail view with graph', async () => {
236
236
 
237
237
  Area - Stock Price
238
238
 
239
- Orange braille dots
240
239
 
240
+ Orange braille dots
241
241
  Variant: area
242
242
  Data points: 20
243
243
 
@@ -5,6 +5,8 @@ test('simple scrollbox navigation and scrolling', async () => {
5
5
  const session = await launchTerminal({
6
6
  command: 'bun',
7
7
  args: ['src/examples/internal/simple-scrollbox.tsx'],
8
+ cols: 80,
9
+ rows: 20,
8
10
  })
9
11
 
10
12
  // Wait for initial render with Item 1 visible
@@ -23,34 +25,18 @@ test('simple scrollbox navigation and scrolling', async () => {
23
25
 
24
26
 
25
27
  Simple ScrollBox Demo
26
-
27
- Item 1 - This is content for item number 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
28
-
29
-
30
-
31
- Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
32
-
33
-
34
-
35
- Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
36
-
37
-
38
-
39
- Item 4 - This is content for item number 4. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
40
-
41
-
42
-
43
- Item 5 - This is content for item number 5. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
44
-
45
-
28
+
29
+ Item 1 - This is content for item number 1. Lorem ipsum dolor sit amet,
30
+ consectetur adipiscing elit.
46
31
 
47
- Item 6 - This is content for item number 6. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
48
32
 
49
33
 
34
+ Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet,
35
+ consectetur adipiscing elit.
50
36
 
51
- Item 7 - This is content for item number 7. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
52
37
 
53
38
 
39
+ Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet,
54
40
 
55
41
  Use mouse scroll or arrow keys | Press [q] to quit
56
42
 
@@ -71,34 +57,18 @@ test('simple scrollbox navigation and scrolling', async () => {
71
57
 
72
58
 
73
59
  Simple ScrollBox Demo
74
- Item 1 - This is content for item number 1. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
75
-
76
-
77
-
78
- Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
79
-
80
-
81
-
82
- Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
83
-
84
-
85
-
86
- Item 4 - This is content for item number 4. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
87
-
88
-
89
-
90
- Item 5 - This is content for item number 5. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
91
-
92
-
93
-
94
- Item 6 - This is content for item number 6. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
60
+
61
+ Item 2 - This is content for item number 2. Lorem ipsum dolor sit amet,
62
+ consectetur adipiscing elit.
95
63
 
96
64
 
97
65
 
98
- Item 7 - This is content for item number 7. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
66
+ Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet,
67
+ consectetur adipiscing elit.
99
68
 
100
69
 
101
70
 
71
+ Item 4 - This is content for item number 4. Lorem ipsum dolor sit amet,
102
72
 
103
73
  Use mouse scroll or arrow keys | Press [q] to quit
104
74
 
@@ -131,10 +101,6 @@ test('simple scrollbox navigation and scrolling', async () => {
131
101
 
132
102
 
133
103
  Item 3 - This is content for item number 3. Lorem ipsum dolor sit amet,
134
- consectetur adipiscing elit.
135
-
136
-
137
-
138
104
 
139
105
  Use mouse scroll or arrow keys | Press [q] to quit
140
106
 
@@ -48,7 +48,7 @@ test('list detail metadata label renders short values in row layout (key: value)
48
48
 
49
49
  │ Status: Active
50
50
 
51
- ↑↓ navigate ^k actions │ Website: example.com
51
+ ↑↓ navigate ^k actions :vim │ Website: example.com
52
52
 
53
53
 
54
54
 
@@ -113,7 +113,7 @@ test('list detail metadata renders long values in column layout (key on one line
113
113
  │ Short: OK
114
114
 
115
115
  │ URL: example.com/very/
116
- ↑↓ navigate ^k actions │ long/path
116
+ ↑↓ navigate ^k actions :vim │ long/path
117
117
 
118
118
 
119
119
 
@@ -158,7 +158,8 @@ test('list detail metadata renders colored values and tag lists', async () => {
158
158
 
159
159
  Short Values │ Project Status
160
160
  Long Values │
161
- ›Colored & Tags │ Overview of the current project
161
+ ›Colored & Tags │
162
+ │ Overview of the current project
162
163
  │ state.
163
164
 
164
165
  │ Info
@@ -177,8 +178,7 @@ test('list detail metadata renders colored values and tag lists', async () => {
177
178
 
178
179
  │ ──────────────────────────────────
179
180
 
180
- ↑↓ navigate ^k actions │ Repo: github.com/example
181
-
181
+ ↑↓ navigate ^k actions :vim │ Repo: github.com/example
182
182
 
183
183
 
184
184
 
@@ -48,7 +48,7 @@ test('list shows initial items after fetch', async () => {
48
48
 
49
49
 
50
50
 
51
- ↑↓ navigate ^k actions
51
+ ↑↓ navigate ^k actions :vim
52
52
 
53
53
 
54
54
 
@@ -81,7 +81,7 @@ test('list shows initial items after fetch', async () => {
81
81
 
82
82
 
83
83
 
84
- ↑↓ navigate ^k actions
84
+ ↑↓ navigate ^k actions :vim
85
85
 
86
86
 
87
87
 
@@ -113,7 +113,7 @@ test('list shows initial items after fetch', async () => {
113
113
 
114
114
 
115
115
 
116
- ↑↓ navigate ^k actions
116
+ ↑↓ navigate ^k actions :vim
117
117
 
118
118
 
119
119
 
@@ -46,7 +46,7 @@ test('shows all inline item features: icon, title, subtitle, text/tag/date acces
46
46
  ● All Colored red blue 1w
47
47
 
48
48
 
49
- ↑↓ navigate ^k actions powered by termcast.app
49
+ ↑↓ navigate ^k actions :vim powered by termcast.app
50
50
 
51
51
 
52
52
 
@@ -104,7 +104,7 @@ test('navigation through all item types', async () => {
104
104
  ● All Colored red blue 1w
105
105
 
106
106
 
107
- ↑↓ navigate ^k actions powered by termcast.app
107
+ ↑↓ navigate ^k actions :vim powered by termcast.app
108
108
 
109
109
 
110
110
 
@@ -43,7 +43,7 @@ test('empty view shows spinner when list is loading', async () => {
43
43
 
44
44
 
45
45
 
46
- ↑↓ navigate ^k actions"
46
+ ↑↓ navigate ^k actions :vim"
47
47
  `)
48
48
  expect(text).toMatch(/[·• ]\s*loading\.\.\./)
49
49
  }, 10000)
@@ -46,7 +46,7 @@ test('footer does not show stale action title from built-in actions', async () =
46
46
 
47
47
 
48
48
 
49
- ↑↓ navigate ^k actions
49
+ ↑↓ navigate ^k actions :vim
50
50
 
51
51
 
52
52
 
@@ -83,6 +83,7 @@ test('ctrl+k opens built-in actions when item has no actions', async () => {
83
83
  │ │
84
84
  │ Settings │
85
85
  │ ›Change Theme... │
86
+ │ Enable Vim Mode │
86
87
  │ Toggle Console Logs │
87
88
  │ │
88
89
  │ │
@@ -90,7 +91,6 @@ test('ctrl+k opens built-in actions when item has no actions', async () => {
90
91
  │ │
91
92
  │ │
92
93
  │ │
93
- │ │
94
94
  │ ↵ select ↑↓ navigate │
95
95
  │ │"
96
96
  `)
@@ -163,12 +163,12 @@ test('list scrollbox scrolls with mouse wheel', async () => {
163
163
 
164
164
  > Search items...
165
165
 
166
- ★ Item 2 Description for item 2
167
- ◆ Item 3 Description for item 3
168
166
  ↯ Item 4 Description for item 4
169
167
  ▷ Item 5 Description for item 5
170
168
  ▦ Item 6 Description for item 6
171
- ◴ Item 7 Description for item 7"
169
+ ◴ Item 7 Description for item 7
170
+ ▯ Item 8 Description for item 8
171
+ ▤ Item 9 Description for item 9"
172
172
  `)
173
173
 
174
174
  await session.scrollUp(2)
@@ -186,11 +186,11 @@ test('list scrollbox scrolls with mouse wheel', async () => {
186
186
 
187
187
  > Search items...
188
188
 
189
- ›○ Item 1 Description for item 1
190
189
  ★ Item 2 Description for item 2
191
190
  ◆ Item 3 Description for item 3
192
191
  ↯ Item 4 Description for item 4
193
192
  ▷ Item 5 Description for item 5
194
- ▦ Item 6 Description for item 6"
193
+ ▦ Item 6 Description for item 6
194
+ ◴ Item 7 Description for item 7"
195
195
  `)
196
196
  }, 15000)
@@ -49,7 +49,7 @@ describe('spacingMode default', () => {
49
49
  ★ Favorites
50
50
 
51
51
 
52
- ↑↓ navigate ^k actions
52
+ ↑↓ navigate ^k actions :vim
53
53
 
54
54
  "
55
55
  `)
@@ -106,7 +106,7 @@ describe('spacingMode relaxed', () => {
106
106
  No Subtitle
107
107
 
108
108
 
109
- ↑↓ navigate ^k actions
109
+ ↑↓ navigate ^k actions :vim
110
110
 
111
111
  "
112
112
  `)
@@ -147,7 +147,7 @@ describe('spacingMode relaxed', () => {
147
147
  No Subtitle
148
148
 
149
149
 
150
- ↑↓ navigate ^k actions
150
+ ↑↓ navigate ^k actions :vim
151
151
 
152
152
  "
153
153
  `)