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
@@ -48,39 +48,31 @@ test('detail metadata showcase renders markdown and metadata together', async ()
48
48
 
49
49
  Project Update: Q1 2024 Review
50
50
 
51
- This detail view demonstrates markdown content alongside metadata.
52
51
 
52
+ This detail view demonstrates markdown content alongside metadata.
53
53
  ---
54
-
55
54
  Summary
56
55
 
57
- The project has made significant progress this quarter. Key highlights include:
58
56
 
57
+ The project has made significant progress this quarter. Key highlights include:
59
58
  - Completed the new authentication system
60
59
  - Migrated 85% of users to the new platform
61
60
  - Reduced API response time by 40%
62
-
63
-
64
61
  Technical Details
65
62
 
66
- The refactoring effort focused on three main areas:
67
63
 
64
+ The refactoring effort focused on three main areas:
68
65
  1. Database optimization - Indexed frequently queried columns
69
66
  2. Caching layer - Added Redis for session management
70
67
  3. Code cleanup - Removed deprecated endpoints
71
-
72
-
73
68
  Next Steps
74
69
 
75
- We will continue with Phase 2 in the upcoming sprint. The team should prioritize:
76
70
 
71
+ We will continue with Phase 2 in the upcoming sprint. The team should prioritize:
77
72
  - Finishing the remaining user migrations
78
73
  - Implementing the new dashboard
79
74
  - Writing integration tests
80
-
81
-
82
75
  ---
83
-
84
76
  Last updated: January 20, 2024
85
77
 
86
78
  Basic Information
@@ -160,6 +152,14 @@ test('detail metadata showcase renders markdown and metadata together', async ()
160
152
 
161
153
 
162
154
 
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
163
 
164
164
  "
165
165
  `)
@@ -219,39 +219,31 @@ test('detail metadata renders long values in column layout', async () => {
219
219
 
220
220
  Project Update: Q1 2024 Review
221
221
 
222
- This detail view demonstrates markdown content alongside metadata.
223
222
 
223
+ This detail view demonstrates markdown content alongside metadata.
224
224
  ---
225
-
226
225
  Summary
227
226
 
228
- The project has made significant progress this quarter. Key highlights include:
229
227
 
228
+ The project has made significant progress this quarter. Key highlights include:
230
229
  - Completed the new authentication system
231
230
  - Migrated 85% of users to the new platform
232
231
  - Reduced API response time by 40%
233
-
234
-
235
232
  Technical Details
236
233
 
237
- The refactoring effort focused on three main areas:
238
234
 
235
+ The refactoring effort focused on three main areas:
239
236
  1. Database optimization - Indexed frequently queried columns
240
237
  2. Caching layer - Added Redis for session management
241
238
  3. Code cleanup - Removed deprecated endpoints
242
-
243
-
244
239
  Next Steps
245
240
 
246
- We will continue with Phase 2 in the upcoming sprint. The team should prioritize:
247
241
 
242
+ We will continue with Phase 2 in the upcoming sprint. The team should prioritize:
248
243
  - Finishing the remaining user migrations
249
244
  - Implementing the new dashboard
250
245
  - Writing integration tests
251
-
252
-
253
246
  ---
254
-
255
247
  Last updated: January 20, 2024
256
248
 
257
249
  Basic Information
@@ -331,6 +323,14 @@ test('detail metadata renders long values in column layout', async () => {
331
323
 
332
324
 
333
325
 
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
334
 
335
335
  "
336
336
  `)
@@ -400,39 +400,31 @@ test('detail metadata renders tag lists with multiple items', async () => {
400
400
 
401
401
  Project Update: Q1 2024 Review
402
402
 
403
- This detail view demonstrates markdown content alongside metadata.
404
403
 
404
+ This detail view demonstrates markdown content alongside metadata.
405
405
  ---
406
-
407
406
  Summary
408
407
 
409
- The project has made significant progress this quarter. Key highlights include:
410
408
 
409
+ The project has made significant progress this quarter. Key highlights include:
411
410
  - Completed the new authentication system
412
411
  - Migrated 85% of users to the new platform
413
412
  - Reduced API response time by 40%
414
-
415
-
416
413
  Technical Details
417
414
 
418
- The refactoring effort focused on three main areas:
419
415
 
416
+ The refactoring effort focused on three main areas:
420
417
  1. Database optimization - Indexed frequently queried columns
421
418
  2. Caching layer - Added Redis for session management
422
419
  3. Code cleanup - Removed deprecated endpoints
423
-
424
-
425
420
  Next Steps
426
421
 
427
- We will continue with Phase 2 in the upcoming sprint. The team should prioritize:
428
422
 
423
+ We will continue with Phase 2 in the upcoming sprint. The team should prioritize:
429
424
  - Finishing the remaining user migrations
430
425
  - Implementing the new dashboard
431
426
  - Writing integration tests
432
-
433
-
434
427
  ---
435
-
436
428
  Last updated: January 20, 2024
437
429
 
438
430
  Basic Information
@@ -512,6 +504,14 @@ test('detail metadata renders tag lists with multiple items', async () => {
512
504
 
513
505
 
514
506
 
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
515
 
516
516
  "
517
517
  `)
@@ -221,7 +221,7 @@ test('form date picker selection with space and enter', async () => {
221
221
  ◇ Date of Birth
222
222
 
223
223
  │ ← 2026 →
224
- │ ← February
224
+ │ ← April
225
225
 
226
226
 
227
227
  ctrl ↵ submit tab navigate ^k actions
@@ -279,7 +279,7 @@ test('form date picker selection with space and enter', async () => {
279
279
  ◇ Date of Birth
280
280
 
281
281
  │ ← 2026 →
282
- │ ← February
282
+ │ ← April
283
283
 
284
284
 
285
285
  ctrl ↵ submit tab navigate ^k actions
@@ -338,7 +338,7 @@ test('form date picker selection with space and enter', async () => {
338
338
  ◇ Date of Birth
339
339
 
340
340
  │ ← 2026 →
341
- │ ← February
341
+ │ ← April
342
342
 
343
343
 
344
344
  ctrl ↵ submit tab navigate ^k actions
@@ -413,7 +413,7 @@ test('form dropdown navigation', async () => {
413
413
  ◇ Date of Birth
414
414
 
415
415
  │ ← 2026 →
416
- │ ← February
416
+ │ ← April
417
417
 
418
418
 
419
419
  ctrl ↵ submit tab navigate ^k actions
@@ -471,7 +471,7 @@ test('form dropdown navigation', async () => {
471
471
  ◇ Date of Birth
472
472
 
473
473
  │ ← 2026 →
474
- │ ← February
474
+ │ ← April
475
475
 
476
476
 
477
477
  ctrl ↵ submit tab navigate ^k actions
@@ -531,7 +531,7 @@ test('form dropdown navigation', async () => {
531
531
  ◇ Date of Birth
532
532
 
533
533
  │ ← 2026 →
534
- │ ← February
534
+ │ ← April
535
535
 
536
536
 
537
537
  ctrl ↵ submit tab navigate ^k actions
@@ -589,7 +589,7 @@ test('form dropdown navigation', async () => {
589
589
  ◇ Date of Birth
590
590
 
591
591
  │ ← 2026 →
592
- │ ← February
592
+ │ ← April
593
593
 
594
594
 
595
595
  ctrl ↵ submit tab navigate ^k actions
@@ -648,17 +648,17 @@ test('form scrolls with mouse wheel', async () => {
648
648
 
649
649
 
650
650
 
651
- │ This demonstrates all available form input types. Use arrow ▀
652
- │ keys or Tab to navigate between fields.
653
-
654
- ◇ Username
655
651
  │ Enter your username
656
-
652
+
657
653
  │ Required field
658
654
 
659
655
  ◇ Password
660
656
  │ Enter secure password
661
657
 
658
+ │ Must be at least 8 characters
659
+
660
+ ◇ Biography
661
+ │ Tell us about yourself...
662
662
 
663
663
 
664
664
  ctrl ↵ submit tab navigate ^k actions
@@ -676,9 +676,7 @@ test('form scrolls with mouse wheel', async () => {
676
676
 
677
677
 
678
678
 
679
- Form Component Demo ▀
680
- │ This demonstrates all available form input types. Use arrow
681
- │ keys or Tab to navigate between fields.
679
+ keys or Tab to navigate between fields. ▄
682
680
 
683
681
  ◇ Username
684
682
  │ Enter your username
@@ -687,6 +685,8 @@ test('form scrolls with mouse wheel', async () => {
687
685
 
688
686
  ◇ Password
689
687
  │ Enter secure password
688
+
689
+ │ Must be at least 8 characters
690
690
 
691
691
 
692
692
  ctrl ↵ submit tab navigate ^k actions
@@ -763,7 +763,7 @@ test('arrow down from checkbox to dropdown lands on first item', async () => {
763
763
  ◇ Date of Birth
764
764
 
765
765
  │ ← 2026 →
766
- │ ← February
766
+ │ ← April
767
767
 
768
768
 
769
769
  ctrl ↵ submit tab navigate ^k actions
@@ -855,13 +855,17 @@ test('date picker down boundary moves focus to next form field', async () => {
855
855
  const datePickerFocusedSnapshot = await session.text()
856
856
  expect(datePickerFocusedSnapshot).toMatch(/◆\s+Date of Birth/)
857
857
 
858
- await session.type('10')
858
+ // Type day 5: always needs exactly 4 downs to exit the calendar
859
+ // regardless of month length (5→12→19→26→exit works for 28-31 day months).
860
+ // Day 10 is month-dependent: 4 downs in 31-day months, 3 downs in 30-day months.
861
+ await session.type('5')
859
862
  await session.press('down')
860
863
 
861
864
  const nonBoundaryDownSnapshot = await session.text()
862
865
  expect(nonBoundaryDownSnapshot).toMatch(/◆\s+Date of Birth/)
863
866
  expect(nonBoundaryDownSnapshot).not.toMatch(/◆\s+Upload Documents/)
864
867
 
868
+ await session.press('down')
865
869
  await session.press('down')
866
870
  await session.press('down')
867
871
 
@@ -97,7 +97,7 @@ test.skipIf(!extensionExists)('github extension shows command list on launch', a
97
97
 
98
98
 
99
99
 
100
- ↵ run command ↑↓ navigate ^k actions powered by termcast.app
100
+ ↵ run command ↑↓ navigate ^k actions :vim powered by termcast.app
101
101
 
102
102
 
103
103
 
@@ -146,7 +146,7 @@ test.skipIf(!extensionExists)('github extension can navigate commands', async ()
146
146
 
147
147
 
148
148
 
149
- ↵ run command ↑↓ navigate ^k actions powered by termcast.app
149
+ ↵ run command ↑↓ navigate ^k actions :vim powered by termcast.app
150
150
 
151
151
 
152
152
 
@@ -192,10 +192,10 @@ test.skipIf(!extensionExists)('github extension can open actions panel', async (
192
192
  │ Settings │
193
193
  │ Configure GitHub... ⌃⇧, │
194
194
  │ Change Theme... │
195
+ │ Enable Vim Mode │
195
196
  │ Toggle Console Logs │
196
197
  │ │
197
198
  │ │
198
- │ │
199
199
  │ ↵ select ↑↓ navigate │
200
200
  │ │
201
201
  ╰──────────────────────────────────────────────────────────────────────────╯
@@ -239,7 +239,7 @@ test.skipIf(!extensionExists)('github extension can search commands', async () =
239
239
 
240
240
 
241
241
 
242
- ↵ run command ↑↓ navigate ^k actions powered by termcast.app
242
+ ↵ run command ↑↓ navigate ^k actions :vim powered by termcast.app
243
243
 
244
244
 
245
245
 
@@ -17,12 +17,14 @@ afterEach(() => {
17
17
  })
18
18
 
19
19
  test('initial render shows bar chart for Monthly Budget', async () => {
20
- const text = await session.text({
20
+ await session.text({
21
21
  waitFor: (text) => {
22
22
  return text.includes('Monthly Budget') && text.includes('Spent')
23
23
  },
24
24
  timeout: 10000,
25
25
  })
26
+ await session.waitIdle()
27
+ const text = await session.text()
26
28
 
27
29
  expect(text).toMatchInlineSnapshot(`
28
30
  "
@@ -46,7 +48,7 @@ test('initial render shows bar chart for Monthly Budget', async () => {
46
48
  Stress Test (20 items) Many small equal segmen │
47
49
 
48
50
 
49
- ↵ open detail ↑↓ navigate ^k actions
51
+ ↵ open detail ↑↓ navigate ^k actions :vi
50
52
 
51
53
 
52
54
 
@@ -103,7 +105,7 @@ test('navigate to Market Share - dominant + tiny segments', async () => {
103
105
  Stress Test (20 items) Many small equal segmen │
104
106
 
105
107
 
106
- ↵ open detail ↑↓ navigate ^k actions
108
+ ↵ open detail ↑↓ navigate ^k actions :vi
107
109
 
108
110
 
109
111
 
@@ -159,7 +161,7 @@ test('navigate to Equal Distribution - 10 segments', async () => {
159
161
  Stress Test (20 items) Many small equal segmen │
160
162
 
161
163
 
162
- ↵ open detail ↑↓ navigate ^k actions
164
+ ↵ open detail ↑↓ navigate ^k actions :vi
163
165
 
164
166
 
165
167
 
@@ -215,7 +217,7 @@ test('navigate to Stress Test - 20 segments', async () => {
215
217
  ›Stress Test (20 items) Many small equal segmen │
216
218
 
217
219
 
218
- ↵ open detail ↑↓ navigate ^k actions
220
+ ↵ open detail ↑↓ navigate ^k actions :vi
219
221
 
220
222
 
221
223
 
@@ -253,18 +255,16 @@ test('enter pushes full detail view with bar chart', async () => {
253
255
 
254
256
 
255
257
  Monthly Budget █
256
-
257
- Spent / Remaining / Savings
258
-
258
+
259
+
260
+ Spent / Remaining / Savings ▀
259
261
  Monthly Budget
260
262
 
261
- Budget allocation for the current month.
262
263
 
264
+ Budget allocation for the current month.
263
265
  - Spent: $4,850 (78.6%)
264
266
  - Remaining: $707 (11.5%)
265
267
  - Savings: $617 (10.0%)
266
-
267
-
268
268
  Segments: 3
269
269
  Total: 6,174
270
270
 
@@ -273,6 +273,8 @@ test('enter pushes full detail view with bar chart', async () => {
273
273
 
274
274
  ────────────────────────────────────────────────────────────────────────────────────────────
275
275
 
276
+ Total: $6,174
277
+
276
278
 
277
279
 
278
280
  esc go back ^k actions ↵ Go Back powered by termcast.app
@@ -50,7 +50,7 @@ test('polymarket list with graph detail renders correctly', async () => {
50
50
 
51
51
  │ ────────────────────────────────────────────
52
52
 
53
- ↵ buy yes ↑↓ navigate ^k actions │ Probability (30d)
53
+ ↵ buy yes ↑↓ navigate ^k actions :vim │ Probability (30d)
54
54
 
55
55
 
56
56
 
@@ -113,7 +113,7 @@ test('navigating to different market updates the graph', async () => {
113
113
 
114
114
  │ ────────────────────────────────────────────
115
115
 
116
- ↵ buy yes ↑↓ navigate ^k actions │ Probability (30d)
116
+ ↵ buy yes ↑↓ navigate ^k actions :vim │ Probability (30d)
117
117
 
118
118
 
119
119
 
@@ -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
  `)