gloomberb 0.9.9 → 0.10.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 (519) hide show
  1. package/README.md +41 -3
  2. package/README.zh-CN.md +294 -0
  3. package/package.json +10 -4
  4. package/patches/@opentui%2Fcore@0.3.2.patch +26 -69
  5. package/src/api-client/auth.ts +2 -0
  6. package/src/api-client/index.test.ts +4 -0
  7. package/src/api-client/types.ts +3 -0
  8. package/src/app/pane-runtime/pane-settings-runtime.tsx +1 -0
  9. package/src/app/pane-template-dialog-wizard.test.tsx +36 -0
  10. package/src/app/pane-template-dialog-wizard.tsx +10 -3
  11. package/src/app/runtime/desktop-deeplink.test.ts +15 -0
  12. package/src/app/runtime/desktop-deeplink.ts +21 -6
  13. package/src/app.tsx +40 -33
  14. package/src/capabilities/service-capabilities.ts +7 -2
  15. package/src/cli/commands/automation.test.ts +202 -0
  16. package/src/cli/commands/automation.ts +153 -36
  17. package/src/cli/commands/market.ts +1 -14
  18. package/src/cli/commands/system.ts +4 -1
  19. package/src/cli/context.ts +1 -1
  20. package/src/cli/desktop-pane-shot.ts +65 -4
  21. package/src/cli/entry.ts +1 -1
  22. package/src/cli/pane-functions/capabilities.ts +532 -0
  23. package/src/cli/pane-functions/catalog.ts +39 -4
  24. package/src/cli/pane-functions/data.test.ts +17 -0
  25. package/src/cli/pane-functions/data.ts +55 -13
  26. package/src/cli/pane-functions/discovery.ts +36 -9
  27. package/src/cli/pane-functions/index.test.ts +104 -1
  28. package/src/cli/pane-functions/index.ts +64 -5
  29. package/src/cli/pane-functions/options.ts +21 -6
  30. package/src/cli/pane-functions/report.ts +735 -72
  31. package/src/cli/pane-functions/resolver.ts +70 -6
  32. package/src/cli/pane-functions/screenshot.test.ts +431 -0
  33. package/src/cli/pane-functions/screenshot.ts +952 -8
  34. package/src/components/chart/composite/column-layout.ts +215 -0
  35. package/src/components/chart/composite/composite-chart.test.tsx +630 -0
  36. package/src/components/chart/composite/composite-chart.tsx +1148 -0
  37. package/src/components/chart/composite/format.test.ts +137 -0
  38. package/src/components/chart/composite/format.ts +135 -0
  39. package/src/components/chart/composite/index.ts +38 -0
  40. package/src/components/chart/composite/interactions.test.ts +109 -0
  41. package/src/components/chart/composite/interactions.ts +247 -0
  42. package/src/components/chart/composite/price-series.test.ts +39 -0
  43. package/src/components/chart/composite/price-series.ts +78 -0
  44. package/src/components/chart/composite/rasterizer.ts +359 -0
  45. package/src/components/chart/composite/renderers.test.ts +610 -0
  46. package/src/components/chart/composite/scene.test.ts +464 -0
  47. package/src/components/chart/composite/scene.ts +553 -0
  48. package/src/components/chart/composite/text-renderer.ts +285 -0
  49. package/src/components/chart/composite/time-scale.test.ts +88 -0
  50. package/src/components/chart/composite/time-scale.ts +217 -0
  51. package/src/components/chart/composite/types.ts +141 -0
  52. package/src/components/chart/core/data.ts +81 -5
  53. package/src/components/chart/core/index.test.ts +128 -43
  54. package/src/components/chart/core/resolution.ts +0 -6
  55. package/src/components/chart/native/chart-rasterizer.ts +1 -3
  56. package/src/components/chart/native/kitty/index.test.ts +99 -120
  57. package/src/components/chart/native/kitty/manager.ts +3 -0
  58. package/src/components/chart/native/kitty/protocol.ts +4 -1
  59. package/src/components/chart/native/raster/crosshair.ts +79 -46
  60. package/src/components/chart/native/raster/types.ts +2 -11
  61. package/src/components/chart/native/surface/manager.ts +48 -3
  62. package/src/components/chart/price-axis-labels.tsx +18 -4
  63. package/src/components/command-bar/commands/direct/index.ts +25 -0
  64. package/src/components/command-bar/commands/registry.ts +9 -0
  65. package/src/components/command-bar/helpers.test.ts +4 -1
  66. package/src/components/command-bar/list/view.tsx +18 -6
  67. package/src/components/command-bar/multi-select-picker.tsx +6 -5
  68. package/src/components/command-bar/pane-settings.test.ts +141 -0
  69. package/src/components/command-bar/pane-settings.ts +61 -1
  70. package/src/components/command-bar/panel/body.tsx +7 -6
  71. package/src/components/command-bar/routes/root/command-items.ts +4 -4
  72. package/src/components/command-bar/routes/root/results.ts +10 -1
  73. package/src/components/command-bar/routes/root/selection.test.ts +54 -0
  74. package/src/components/command-bar/routes/root/selection.ts +13 -0
  75. package/src/components/command-bar/routing/actions.ts +18 -2
  76. package/src/components/command-bar/routing/list-state.ts +2 -1
  77. package/src/components/command-bar/surface/index.test.tsx +36 -4
  78. package/src/components/command-bar/surface/pane.test.tsx +93 -0
  79. package/src/components/command-bar/theme-picker.tsx +2 -1
  80. package/src/components/command-bar/view-model.ts +19 -20
  81. package/src/components/command-bar/workflow/body.tsx +2 -1
  82. package/src/components/command-bar/workflow/field-row.tsx +3 -2
  83. package/src/components/command-bar/workflow/fields.ts +4 -2
  84. package/src/components/command-bar/workflow/ops.test.ts +161 -0
  85. package/src/components/command-bar/workflow/ops.ts +20 -50
  86. package/src/components/command-bar/workflow/route-actions.test.ts +34 -0
  87. package/src/components/command-bar/workflow/route-actions.ts +4 -0
  88. package/src/components/command-bar/workflow/types.ts +1 -0
  89. package/src/components/feed-data-table/stack-view.tsx +6 -5
  90. package/src/components/index.ts +13 -1
  91. package/src/components/layout/detached-pane-shell.tsx +2 -1
  92. package/src/components/layout/floating-pane.tsx +3 -0
  93. package/src/components/layout/header.tsx +15 -8
  94. package/src/components/layout/pane/footer/index.test.tsx +22 -3
  95. package/src/components/layout/pane/footer/index.tsx +3 -1
  96. package/src/components/layout/pane/footer/model.ts +9 -2
  97. package/src/components/layout/pane/header.tsx +4 -6
  98. package/src/components/layout/pane/index.tsx +3 -0
  99. package/src/components/layout/pane/sidebar.test.tsx +100 -0
  100. package/src/components/layout/pane/sidebar.tsx +239 -0
  101. package/src/components/layout/pane/title.ts +4 -3
  102. package/src/components/layout/shell/action-menu-overlay.tsx +5 -3
  103. package/src/components/layout/shell/drag/runtime.ts +2 -0
  104. package/src/components/layout/shell/menu.test.ts +19 -0
  105. package/src/components/layout/shell/menu.ts +8 -5
  106. package/src/components/layout/shell/native/pointer-runtime.ts +4 -1
  107. package/src/components/layout/shell/pane/layers.tsx +2 -2
  108. package/src/components/layout/status-bar.tsx +8 -7
  109. package/src/components/layout/window-controls.tsx +4 -3
  110. package/src/components/metric-treemap/index.tsx +3 -2
  111. package/src/components/onboarding/onboarding-steps.tsx +30 -29
  112. package/src/components/onboarding/onboarding-wizard.tsx +5 -4
  113. package/src/components/onboarding/portfolio-step/broker-fields-panel.tsx +15 -12
  114. package/src/components/onboarding/portfolio-step/broker-setup-panel.tsx +17 -16
  115. package/src/components/onboarding/portfolio-step/broker-sync-panel.tsx +6 -5
  116. package/src/components/onboarding/portfolio-step/choose-panel.tsx +5 -4
  117. package/src/components/pane-settings-dialog/desktop.tsx +25 -3
  118. package/src/components/pane-settings-dialog/field-dialogs.tsx +5 -4
  119. package/src/components/pane-settings-dialog/tui.tsx +11 -9
  120. package/src/components/pane-settings-dialog/value.ts +8 -5
  121. package/src/components/pane-settings-dialog.test.tsx +235 -0
  122. package/src/components/pane-settings-dialog.tsx +24 -0
  123. package/src/components/pane-template-wizard.tsx +6 -2
  124. package/src/components/ticker/list-table-view.tsx +3 -2
  125. package/src/components/ui/button.tsx +3 -1
  126. package/src/components/ui/choice-dialog.tsx +6 -1
  127. package/src/components/ui/confirm-dialog.tsx +3 -2
  128. package/src/components/ui/fields.tsx +10 -1
  129. package/src/components/ui/frame.tsx +4 -1
  130. package/src/components/ui/index.ts +5 -0
  131. package/src/components/ui/inline-quick-add.tsx +104 -0
  132. package/src/components/ui/list-view.tsx +5 -4
  133. package/src/components/ui/loading.tsx +2 -1
  134. package/src/components/ui/multi-select/dialog.tsx +188 -44
  135. package/src/components/ui/popover.tsx +10 -0
  136. package/src/components/ui/shortcut-hint.tsx +2 -0
  137. package/src/components/ui/status.tsx +4 -3
  138. package/src/components/ui/tabs.tsx +19 -8
  139. package/src/components/ui/toggle.tsx +44 -3
  140. package/src/components/ui/ui.test.tsx +67 -5
  141. package/src/core/app-services.ts +4 -6
  142. package/src/core/state/session-persistence.ts +3 -2
  143. package/src/data/config/chart-settings.ts +712 -0
  144. package/src/data/config/layout.ts +24 -5
  145. package/src/data/config/store/index.test.ts +377 -14
  146. package/src/data/config/store/normalize.ts +79 -65
  147. package/src/data/fred-series.ts +137 -0
  148. package/src/i18n/index.test.ts +114 -0
  149. package/src/i18n/index.ts +147 -0
  150. package/src/i18n/ja.ts +1013 -0
  151. package/src/i18n/ko.ts +1011 -0
  152. package/src/i18n/languages.test.ts +31 -0
  153. package/src/i18n/languages.ts +72 -0
  154. package/src/i18n/zh-cn.ts +1013 -0
  155. package/src/i18n/zh-tw.ts +1013 -0
  156. package/src/plugins/builtin/account-management/footer.ts +3 -2
  157. package/src/plugins/builtin/account-management/form-components.tsx +3 -2
  158. package/src/plugins/builtin/account-management/keyboard.ts +6 -0
  159. package/src/plugins/builtin/account-management/model.ts +25 -21
  160. package/src/plugins/builtin/account-management/navigation.test.ts +27 -0
  161. package/src/plugins/builtin/account-management/navigation.ts +24 -0
  162. package/src/plugins/builtin/account-management/pane.tsx +120 -85
  163. package/src/plugins/builtin/account-management/password-dialog.tsx +10 -9
  164. package/src/plugins/builtin/ai/agent-history.ts +139 -0
  165. package/src/plugins/builtin/ai/ask-ai-detail-tab.tsx +133 -51
  166. package/src/plugins/builtin/ai/ask-ai.test.tsx +83 -22
  167. package/src/plugins/builtin/ai/index.test.ts +302 -0
  168. package/src/plugins/builtin/ai/index.tsx +374 -40
  169. package/src/plugins/builtin/ai/pane-settings.test.ts +155 -0
  170. package/src/plugins/builtin/ai/pane-settings.ts +319 -0
  171. package/src/plugins/builtin/ai/pi/credential-store.test.ts +80 -0
  172. package/src/plugins/builtin/ai/pi/credential-store.ts +138 -0
  173. package/src/plugins/builtin/ai/pi/file-store.ts +138 -0
  174. package/src/plugins/builtin/ai/pi/host.test.ts +500 -0
  175. package/src/plugins/builtin/ai/pi/host.ts +564 -0
  176. package/src/plugins/builtin/ai/pi/index.ts +5 -0
  177. package/src/plugins/builtin/ai/pi/models-store.test.ts +44 -0
  178. package/src/plugins/builtin/ai/pi/models-store.ts +141 -0
  179. package/src/plugins/builtin/ai/pi/providers.ts +68 -0
  180. package/src/plugins/builtin/ai/pi/runtime.test.ts +240 -0
  181. package/src/plugins/builtin/ai/pi/runtime.ts +635 -0
  182. package/src/plugins/builtin/ai/providers.test.ts +68 -0
  183. package/src/plugins/builtin/ai/providers.ts +163 -38
  184. package/src/plugins/builtin/ai/runner-selection.test.ts +174 -0
  185. package/src/plugins/builtin/ai/runner-selection.ts +193 -0
  186. package/src/plugins/builtin/ai/runner-selector.tsx +153 -0
  187. package/src/plugins/builtin/ai/runner.test.ts +198 -0
  188. package/src/plugins/builtin/ai/runner.ts +276 -73
  189. package/src/plugins/builtin/ai/screener/contract.test.ts +26 -73
  190. package/src/plugins/builtin/ai/screener/contract.ts +14 -52
  191. package/src/plugins/builtin/ai/screener/editor-runtime.ts +55 -5
  192. package/src/plugins/builtin/ai/screener/editor.tsx +42 -36
  193. package/src/plugins/builtin/ai/screener/footer.ts +82 -67
  194. package/src/plugins/builtin/ai/screener/keyboard.ts +27 -11
  195. package/src/plugins/builtin/ai/screener/model.test.ts +24 -0
  196. package/src/plugins/builtin/ai/screener/model.ts +9 -3
  197. package/src/plugins/builtin/ai/screener/pane.test.tsx +142 -55
  198. package/src/plugins/builtin/ai/screener/pane.tsx +95 -97
  199. package/src/plugins/builtin/ai/screener/results-view.tsx +8 -41
  200. package/src/plugins/builtin/ai/screener/runner.ts +41 -25
  201. package/src/plugins/builtin/ai/screener/tabs-bar.tsx +2 -2
  202. package/src/plugins/builtin/ai/use-runtime-providers.ts +28 -0
  203. package/src/plugins/builtin/ai/workspace/model.test.ts +227 -0
  204. package/src/plugins/builtin/ai/workspace/model.ts +308 -0
  205. package/src/plugins/builtin/ai/workspace/pane.test.tsx +197 -0
  206. package/src/plugins/builtin/ai/workspace/pane.tsx +896 -0
  207. package/src/plugins/builtin/analytics/index.test.tsx +3 -3
  208. package/src/plugins/builtin/analytics/index.tsx +3 -8
  209. package/src/plugins/builtin/broker-manager/detail.tsx +25 -24
  210. package/src/plugins/builtin/broker-manager/index.test.tsx +1 -1
  211. package/src/plugins/builtin/broker-manager/index.tsx +9 -11
  212. package/src/plugins/builtin/broker-manager/model.ts +11 -10
  213. package/src/plugins/builtin/broker-manager/pane-actions.tsx +22 -21
  214. package/src/plugins/builtin/broker-manager/table.ts +9 -8
  215. package/src/plugins/builtin/changelog/index.tsx +3 -8
  216. package/src/plugins/builtin/chart-composer/chart-spec.ts +89 -0
  217. package/src/plugins/builtin/chart-composer/cli-options.ts +98 -0
  218. package/src/plugins/builtin/chart-composer/date-window-dialog.tsx +120 -0
  219. package/src/plugins/builtin/chart-composer/editor.test.tsx +332 -0
  220. package/src/plugins/builtin/chart-composer/editor.tsx +1107 -0
  221. package/src/plugins/builtin/chart-composer/index.tsx +228 -0
  222. package/src/plugins/builtin/chart-composer/pane.tsx +645 -0
  223. package/src/plugins/builtin/chart-composer/presets.test.ts +561 -0
  224. package/src/plugins/builtin/chart-composer/presets.ts +759 -0
  225. package/src/plugins/builtin/chart-composer/quick-add.test.tsx +245 -0
  226. package/src/plugins/builtin/chart-composer/quick-add.tsx +409 -0
  227. package/src/plugins/builtin/chart-composer/semantic.ts +86 -0
  228. package/src/plugins/builtin/chart-composer/series-catalog.test.ts +65 -0
  229. package/src/plugins/builtin/chart-composer/series-catalog.ts +295 -0
  230. package/src/plugins/builtin/chart-composer/settings.test.ts +163 -0
  231. package/src/plugins/builtin/chart-composer/settings.ts +397 -0
  232. package/src/plugins/builtin/chart-composer/shortcuts.test.ts +44 -0
  233. package/src/plugins/builtin/chart-composer/shortcuts.ts +35 -0
  234. package/src/plugins/builtin/chart-composer/use-series-catalog.ts +103 -0
  235. package/src/plugins/builtin/chat/channel-labels.ts +5 -4
  236. package/src/plugins/builtin/chat/channels.ts +12 -11
  237. package/src/plugins/builtin/chat/chat.test.tsx +32 -0
  238. package/src/plugins/builtin/chat/content/composer-runtime.ts +6 -1
  239. package/src/plugins/builtin/chat/content/composer.tsx +9 -8
  240. package/src/plugins/builtin/chat/content/index.tsx +36 -1
  241. package/src/plugins/builtin/chat/content/new-dm-dialog.tsx +8 -7
  242. package/src/plugins/builtin/chat/content/transcript.tsx +9 -3
  243. package/src/plugins/builtin/chat/controller/utils.ts +10 -9
  244. package/src/plugins/builtin/chat/message/desktop.tsx +17 -10
  245. package/src/plugins/builtin/chat/message/profile-popover.test.tsx +122 -3
  246. package/src/plugins/builtin/chat/message/profile-popover.tsx +38 -1
  247. package/src/plugins/builtin/chat/message/terminal.tsx +19 -10
  248. package/src/plugins/builtin/chat/pane-state.test.ts +31 -0
  249. package/src/plugins/builtin/chat/pane-state.ts +30 -0
  250. package/src/plugins/builtin/chat/pane.tsx +27 -4
  251. package/src/plugins/builtin/chat/profile-popover.ts +62 -5
  252. package/src/plugins/builtin/chat/sidebar.test.tsx +4 -7
  253. package/src/plugins/builtin/chat/sidebar.tsx +107 -168
  254. package/src/plugins/builtin/chat/test-harness.tsx +6 -0
  255. package/src/plugins/builtin/cloud/auth-actions.tsx +5 -4
  256. package/src/plugins/builtin/cloud/plugin.tsx +150 -127
  257. package/src/plugins/builtin/composite-plugins.ts +71 -0
  258. package/src/plugins/builtin/correlation/index.test.tsx +4 -4
  259. package/src/plugins/builtin/correlation/index.tsx +3 -8
  260. package/src/plugins/builtin/earnings/index.tsx +37 -21
  261. package/src/plugins/builtin/earnings/model.test.ts +52 -0
  262. package/src/plugins/builtin/earnings/model.ts +32 -0
  263. package/src/plugins/builtin/econ/detail-view.tsx +17 -4
  264. package/src/plugins/builtin/econ/fred-cache.test.ts +57 -11
  265. package/src/plugins/builtin/econ/index.tsx +16 -20
  266. package/src/plugins/builtin/fear-greed/index.tsx +2 -8
  267. package/src/plugins/builtin/fx-matrix/index.tsx +3 -8
  268. package/src/plugins/builtin/help/components.tsx +5 -4
  269. package/src/plugins/builtin/help/index.tsx +14 -17
  270. package/src/plugins/builtin/holders/index.tsx +2 -8
  271. package/src/plugins/builtin/insider/index.tsx +2 -7
  272. package/src/plugins/builtin/kelly-sizer/index.test.tsx +2 -2
  273. package/src/plugins/builtin/kelly-sizer/index.tsx +3 -7
  274. package/src/plugins/builtin/kelly-sizer/test-support.tsx +3 -3
  275. package/src/plugins/builtin/layout-manager/index.tsx +3 -7
  276. package/src/plugins/builtin/market-heatmap/index.tsx +3 -8
  277. package/src/plugins/builtin/market-movers/index.tsx +3 -8
  278. package/src/plugins/builtin/news/index.tsx +12 -16
  279. package/src/plugins/builtin/news/wire/breaking/pane.test.tsx +3 -3
  280. package/src/plugins/builtin/news/wire/index.tsx +83 -73
  281. package/src/plugins/builtin/options/index.tsx +2 -8
  282. package/src/plugins/builtin/plugin-module.test.ts +89 -0
  283. package/src/plugins/builtin/plugin-module.ts +116 -0
  284. package/src/plugins/builtin/portfolio-list/header.tsx +4 -3
  285. package/src/plugins/builtin/portfolio-list/index.test.ts +17 -0
  286. package/src/plugins/builtin/portfolio-list/index.tsx +3 -5
  287. package/src/plugins/builtin/portfolio-list/pane/index.test.tsx +3 -3
  288. package/src/plugins/builtin/portfolio-list/quick-add/index.tsx +53 -53
  289. package/src/plugins/builtin/portfolio-list/settings.ts +5 -3
  290. package/src/plugins/builtin/portfolio-list/summary/index.tsx +4 -3
  291. package/src/plugins/builtin/research/index.tsx +2 -8
  292. package/src/plugins/builtin/sec/index.tsx +2 -8
  293. package/src/plugins/builtin/sectors/index.tsx +3 -8
  294. package/src/plugins/builtin/thirteenf/index.tsx +3 -8
  295. package/src/plugins/builtin/thirteenf/pane.test.tsx +1 -1
  296. package/src/plugins/builtin/ticker-detail/chart-tab-switch.test.tsx +49 -23
  297. package/src/plugins/builtin/ticker-detail/index.test.tsx +15 -136
  298. package/src/plugins/builtin/ticker-detail/index.tsx +2 -93
  299. package/src/plugins/builtin/ticker-detail/overview/components.tsx +6 -5
  300. package/src/plugins/builtin/ticker-detail/overview-tab.tsx +41 -17
  301. package/src/plugins/builtin/ticker-detail/pane.tsx +4 -3
  302. package/src/plugins/builtin/ticker-detail/quote-monitor/index.test.tsx +1 -1
  303. package/src/plugins/builtin/ticker-detail/settings.ts +3 -50
  304. package/src/plugins/builtin/ticker-research-backend-plugin.ts +17 -0
  305. package/src/plugins/builtin/ticker-research-plugin.ts +27 -0
  306. package/src/plugins/builtin/tv/channels.ts +27 -0
  307. package/src/plugins/builtin/tv/index.tsx +40 -0
  308. package/src/plugins/builtin/tv/pane.tsx +286 -0
  309. package/src/plugins/builtin/tv/youtube-stream.ts +100 -0
  310. package/src/plugins/builtin/world-indices/index.tsx +3 -8
  311. package/src/plugins/builtin/yield-curve/index.tsx +8 -8
  312. package/src/plugins/catalog-backend.test.ts +21 -0
  313. package/src/plugins/catalog-backend.ts +42 -0
  314. package/src/plugins/catalog-ui.ts +6 -14
  315. package/src/plugins/ibkr/instance-selection.test.ts +0 -1
  316. package/src/plugins/ownership.ts +143 -0
  317. package/src/plugins/prediction-markets/backend-plugin.ts +19 -0
  318. package/src/plugins/prediction-markets/chart.test.tsx +7 -5
  319. package/src/plugins/prediction-markets/chart.tsx +25 -7
  320. package/src/plugins/registry/index.test.ts +51 -0
  321. package/src/plugins/registry/index.ts +8 -0
  322. package/src/plugins/registry/pane-settings.ts +1 -1
  323. package/src/plugins/runtime/index.test.tsx +2 -2
  324. package/src/remote/app-host.tsx +16 -3
  325. package/src/remote/controller.test.ts +102 -1
  326. package/src/remote/controller.ts +122 -0
  327. package/src/remote/types.ts +11 -0
  328. package/src/renderers/electrobun/bun/core-capabilities.ts +123 -27
  329. package/src/renderers/electrobun/bun/desktop/backend-requests.ts +5 -1
  330. package/src/renderers/electrobun/bun/desktop/initialization.ts +5 -1
  331. package/src/renderers/electrobun/bun/desktop/media.ts +15 -0
  332. package/src/renderers/electrobun/bun/desktop/window-style.ts +4 -1
  333. package/src/renderers/electrobun/bun/desktop/workspace/index.test.ts +32 -1
  334. package/src/renderers/electrobun/bun/desktop/workspace/index.ts +10 -0
  335. package/src/renderers/electrobun/bun/index.ts +5 -0
  336. package/src/renderers/electrobun/bun/tui-entry.ts +1 -6
  337. package/src/renderers/electrobun/view/ai-host.ts +124 -19
  338. package/src/renderers/electrobun/view/backend-rpc.ts +4 -0
  339. package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +151 -39
  340. package/src/renderers/electrobun/view/desktop/popover.tsx +166 -0
  341. package/src/renderers/electrobun/view/dialog-host.test.ts +25 -0
  342. package/src/renderers/electrobun/view/dialog-host.tsx +75 -12
  343. package/src/renderers/electrobun/view/host/box.tsx +5 -0
  344. package/src/renderers/electrobun/view/host/chart-surface.tsx +10 -9
  345. package/src/renderers/electrobun/view/host/input.tsx +9 -19
  346. package/src/renderers/electrobun/view/host/media-surface.tsx +170 -0
  347. package/src/renderers/electrobun/view/host/mouse.ts +1 -0
  348. package/src/renderers/electrobun/view/host/style.ts +1 -1
  349. package/src/renderers/electrobun/view/host/tabs.tsx +4 -3
  350. package/src/renderers/electrobun/view/main.tsx +10 -3
  351. package/src/renderers/electrobun/view/styles.css +17 -0
  352. package/src/renderers/electrobun/view/ui-host.tsx +7 -0
  353. package/src/renderers/opentui/chart-surface.test.tsx +52 -6
  354. package/src/renderers/opentui/chart-surface.tsx +95 -11
  355. package/src/renderers/opentui/dialog-host.tsx +36 -5
  356. package/src/renderers/opentui/host.tsx +39 -0
  357. package/src/renderers/opentui/start.tsx +30 -0
  358. package/src/renderers/opentui/ui-host.tsx +2 -0
  359. package/src/sources/provider-router/index.test.ts +43 -0
  360. package/src/sources/provider-router/index.ts +4 -0
  361. package/src/sources/provider-router/supplemental.ts +46 -0
  362. package/src/sources/sec-edgar.test.ts +203 -2
  363. package/src/sources/sec-edgar.ts +70 -15
  364. package/src/state/app/context/index.tsx +13 -1
  365. package/src/state/app/context/selector.test.tsx +62 -1
  366. package/src/state/session-persistence.test.ts +13 -2
  367. package/src/sync/controller.test.ts +190 -3
  368. package/src/sync/controller.ts +76 -45
  369. package/src/sync/core-contributors.test.ts +121 -0
  370. package/src/sync/core-contributors.ts +104 -27
  371. package/src/sync/react.ts +6 -8
  372. package/src/sync/types.ts +3 -0
  373. package/src/time-series/alignment.ts +158 -0
  374. package/src/time-series/economic.ts +49 -0
  375. package/src/time-series/field-catalog.ts +306 -0
  376. package/src/time-series/fundamentals.test.ts +505 -0
  377. package/src/time-series/fundamentals.ts +842 -0
  378. package/src/time-series/hooks.ts +45 -0
  379. package/src/time-series/index.ts +14 -0
  380. package/src/time-series/live-quotes.test.ts +219 -0
  381. package/src/time-series/live-quotes.ts +203 -0
  382. package/src/time-series/market-resolution.ts +53 -0
  383. package/src/time-series/market.ts +125 -0
  384. package/src/time-series/reporting.ts +98 -0
  385. package/src/time-series/resolve.test.ts +1281 -0
  386. package/src/time-series/resolve.ts +783 -0
  387. package/src/time-series/spec-studies.test.ts +400 -0
  388. package/src/time-series/spec.ts +487 -0
  389. package/src/time-series/studies.ts +563 -0
  390. package/src/time-series/transforms.test.ts +105 -0
  391. package/src/time-series/transforms.ts +152 -0
  392. package/src/time-series/types.ts +162 -0
  393. package/src/time-series/use-chart-resolution.ts +166 -0
  394. package/src/types/config.ts +9 -11
  395. package/src/types/desktop-window.ts +1 -0
  396. package/src/types/financials.ts +4 -0
  397. package/src/types/media.ts +17 -0
  398. package/src/types/plugin.ts +32 -1
  399. package/src/ui/context-menu.tsx +15 -3
  400. package/src/ui/dialog.tsx +14 -2
  401. package/src/ui/host.tsx +40 -1
  402. package/src/ui/index.tsx +9 -0
  403. package/src/utils/exchanges.test.ts +13 -1
  404. package/src/utils/exchanges.ts +10 -0
  405. package/src/utils/financial-statements.test.ts +138 -0
  406. package/src/utils/financial-statements.ts +115 -8
  407. package/src/utils/format.test.ts +11 -1
  408. package/src/utils/format.ts +7 -0
  409. package/src/version.ts +1 -1
  410. package/src/components/chart/bar-chart-renderer.test.ts +0 -233
  411. package/src/components/chart/bar-chart-renderer.ts +0 -445
  412. package/src/components/chart/comparison/data.test.ts +0 -159
  413. package/src/components/chart/comparison/data.ts +0 -302
  414. package/src/components/chart/comparison/renderer.test.ts +0 -187
  415. package/src/components/chart/comparison/renderer.ts +0 -282
  416. package/src/components/chart/comparison/scene.ts +0 -178
  417. package/src/components/chart/comparison-stock-chart/axis-width.ts +0 -99
  418. package/src/components/chart/comparison-stock-chart/canvas.ts +0 -148
  419. package/src/components/chart/comparison-stock-chart/controls.ts +0 -252
  420. package/src/components/chart/comparison-stock-chart/helpers.ts +0 -101
  421. package/src/components/chart/comparison-stock-chart/interactions.ts +0 -208
  422. package/src/components/chart/comparison-stock-chart/layout-metrics.ts +0 -62
  423. package/src/components/chart/comparison-stock-chart/layout.tsx +0 -155
  424. package/src/components/chart/comparison-stock-chart/legend.tsx +0 -74
  425. package/src/components/chart/comparison-stock-chart/native-surfaces.ts +0 -89
  426. package/src/components/chart/comparison-stock-chart/render-data.ts +0 -227
  427. package/src/components/chart/comparison-stock-chart/render-output.ts +0 -140
  428. package/src/components/chart/comparison-stock-chart/selection-runtime.ts +0 -128
  429. package/src/components/chart/comparison-stock-chart/sources.ts +0 -51
  430. package/src/components/chart/comparison-stock-chart/surface-runtime.ts +0 -159
  431. package/src/components/chart/comparison-stock-chart/toolbar.tsx +0 -117
  432. package/src/components/chart/comparison-stock-chart/types.ts +0 -22
  433. package/src/components/chart/comparison-stock-chart/view.tsx +0 -572
  434. package/src/components/chart/comparison-stock-chart/viewport-runtime.ts +0 -239
  435. package/src/components/chart/comparison-stock-chart.tsx +0 -24
  436. package/src/components/chart/core/axis-measure.ts +0 -33
  437. package/src/components/chart/core/controller.test.ts +0 -157
  438. package/src/components/chart/core/controller.ts +0 -349
  439. package/src/components/chart/core/indicator-selector.tsx +0 -75
  440. package/src/components/chart/core/keyboard.ts +0 -24
  441. package/src/components/chart/core/pane-settings.test.ts +0 -52
  442. package/src/components/chart/core/pane-settings.ts +0 -141
  443. package/src/components/chart/core/scroll.test.ts +0 -64
  444. package/src/components/chart/core/scroll.ts +0 -82
  445. package/src/components/chart/core/window-viewport.test.ts +0 -69
  446. package/src/components/chart/core/window-viewport.ts +0 -162
  447. package/src/components/chart/display-cursor.ts +0 -153
  448. package/src/components/chart/indicators/bands.test.ts +0 -36
  449. package/src/components/chart/indicators/bands.ts +0 -29
  450. package/src/components/chart/indicators/moving-averages.test.ts +0 -39
  451. package/src/components/chart/indicators/moving-averages.ts +0 -42
  452. package/src/components/chart/indicators/options.test.ts +0 -32
  453. package/src/components/chart/indicators/options.ts +0 -107
  454. package/src/components/chart/indicators/oscillators.test.ts +0 -58
  455. package/src/components/chart/indicators/oscillators.ts +0 -92
  456. package/src/components/chart/native/canvas-bitmaps.ts +0 -140
  457. package/src/components/chart/native/raster/comparison-chart.ts +0 -162
  458. package/src/components/chart/native/surface/hooks.ts +0 -144
  459. package/src/components/chart/native/surface/rendering.ts +0 -211
  460. package/src/components/chart/static/bar-chart-surface.test.tsx +0 -101
  461. package/src/components/chart/static/bar-chart-surface.tsx +0 -292
  462. package/src/components/chart/stock-chart/auto.ts +0 -216
  463. package/src/components/chart/stock-chart/axis-width.ts +0 -146
  464. package/src/components/chart/stock-chart/bitmaps.ts +0 -22
  465. package/src/components/chart/stock-chart/canvas.ts +0 -202
  466. package/src/components/chart/stock-chart/controls.tsx +0 -149
  467. package/src/components/chart/stock-chart/cursor.ts +0 -60
  468. package/src/components/chart/stock-chart/data-runtime.ts +0 -128
  469. package/src/components/chart/stock-chart/footer.test.ts +0 -65
  470. package/src/components/chart/stock-chart/footer.ts +0 -303
  471. package/src/components/chart/stock-chart/geometry.ts +0 -160
  472. package/src/components/chart/stock-chart/index.test.ts +0 -532
  473. package/src/components/chart/stock-chart/index.tsx +0 -29
  474. package/src/components/chart/stock-chart/indicators.ts +0 -226
  475. package/src/components/chart/stock-chart/interaction-runtime.ts +0 -44
  476. package/src/components/chart/stock-chart/interactions.ts +0 -300
  477. package/src/components/chart/stock-chart/keyboard.ts +0 -373
  478. package/src/components/chart/stock-chart/layout-metrics.ts +0 -62
  479. package/src/components/chart/stock-chart/layout.tsx +0 -177
  480. package/src/components/chart/stock-chart/native-surfaces.ts +0 -121
  481. package/src/components/chart/stock-chart/presentation.ts +0 -67
  482. package/src/components/chart/stock-chart/renderer-switch.test.tsx +0 -263
  483. package/src/components/chart/stock-chart/rendering/bounds.ts +0 -116
  484. package/src/components/chart/stock-chart/rendering/candidates.ts +0 -145
  485. package/src/components/chart/stock-chart/rendering/data.ts +0 -370
  486. package/src/components/chart/stock-chart/rendering/invalidation.ts +0 -68
  487. package/src/components/chart/stock-chart/rendering/output.ts +0 -304
  488. package/src/components/chart/stock-chart/rendering/planning.ts +0 -122
  489. package/src/components/chart/stock-chart/rendering/projection.test.tsx +0 -98
  490. package/src/components/chart/stock-chart/rendering/projection.ts +0 -112
  491. package/src/components/chart/stock-chart/rendering/state.test.ts +0 -70
  492. package/src/components/chart/stock-chart/rendering/state.ts +0 -283
  493. package/src/components/chart/stock-chart/requests.ts +0 -337
  494. package/src/components/chart/stock-chart/resolution-support.ts +0 -96
  495. package/src/components/chart/stock-chart/resolved/runtime.ts +0 -289
  496. package/src/components/chart/stock-chart/resolved.tsx +0 -359
  497. package/src/components/chart/stock-chart/settings.ts +0 -81
  498. package/src/components/chart/stock-chart/surface-runtime.ts +0 -62
  499. package/src/components/chart/stock-chart/types.ts +0 -25
  500. package/src/components/chart/stock-chart/view.tsx +0 -155
  501. package/src/components/chart/stock-chart/viewport/effects.ts +0 -293
  502. package/src/components/chart/stock-chart/viewport/index.ts +0 -144
  503. package/src/components/chart/stock-chart/viewport/runtime.ts +0 -375
  504. package/src/components/chart/time-axis-label.tsx +0 -175
  505. package/src/plugins/builtin/ai/gloomberb-cli.ts +0 -71
  506. package/src/plugins/builtin/ai/screener/action-bar.tsx +0 -58
  507. package/src/plugins/builtin/comparison-chart/index.test.tsx +0 -848
  508. package/src/plugins/builtin/comparison-chart/index.tsx +0 -194
  509. package/src/plugins/builtin/econ/fred-cache.ts +0 -106
  510. package/src/plugins/builtin/plugin-groups.ts +0 -130
  511. package/src/plugins/builtin/ticker-detail/chart-pane.tsx +0 -91
  512. package/src/plugins/builtin/ticker-detail/chart-tab.tsx +0 -100
  513. package/src/plugins/builtin/ticker-detail/data-panes/fundamental-graph/content.tsx +0 -296
  514. package/src/plugins/builtin/ticker-detail/data-panes/fundamental-graph/data.ts +0 -62
  515. package/src/plugins/builtin/ticker-detail/data-panes/fundamental-graph/model.ts +0 -608
  516. package/src/plugins/builtin/ticker-detail/data-panes/fundamental-graph/settings.ts +0 -65
  517. package/src/plugins/builtin/ticker-detail/data-panes/fundamental-graph/types.ts +0 -58
  518. package/src/plugins/builtin/ticker-detail/data-panes/fundamental-graph.tsx +0 -138
  519. package/src/plugins/builtin/ticker-detail/data-panes.test.ts +0 -220
package/README.md CHANGED
@@ -11,6 +11,8 @@ Desktop app for macOS and Windows. Terminal UI for macOS, Linux, and Windows.
11
11
  <a href="https://gloomberb.com/download/desktop"><strong>Download desktop</strong></a>
12
12
  &nbsp;&middot;&nbsp;
13
13
  <a href="#install"><strong>Install the TUI</strong></a>
14
+ &nbsp;&middot;&nbsp;
15
+ <a href="README.zh-CN.md">简体中文</a>
14
16
 
15
17
  <br />
16
18
  <br />
@@ -62,9 +64,11 @@ This installs `gloomberb` to `~/.local/bin` by default. A Linux desktop package
62
64
 
63
65
  Install the desktop app:
64
66
 
65
- - [Download GloomberbSetup.exe for Windows x64](https://github.com/vincelwt/gloomberb/releases/latest/download/stable-win-x64-GloomberbSetup.exe)
67
+ - [Download GloomberbSetup.exe for Windows](https://github.com/vincelwt/gloomberb/releases/latest/download/stable-win-x64-GloomberbSetup.exe)
68
+
69
+ The installer supports Windows 11 on x64 and ARM64. On ARM64, the desktop app and its bundled `gloomberb` terminal command use Windows' built-in x64 emulation.
66
70
 
67
- The installer adds the app and a `gloomberb` terminal command. For a terminal-only setup, install Bun and use the package:
71
+ For a terminal-only setup on x64, install Bun and use the package:
68
72
 
69
73
  ```powershell
70
74
  bun install -g gloomberb
@@ -88,6 +92,8 @@ On macOS and Windows, desktop updates replace the installed app in place and kee
88
92
 
89
93
  For the best terminal experience, use a [Kitty](https://sw.kovidgoyal.net/kitty/)-compatible terminal such as Ghostty, Kitty, or WezTerm.
90
94
 
95
+ Live TV in the terminal also requires `mpv` with Kitty video output. Gloomberb resolves the stream in JavaScript and runs `mpv` with its `yt-dlp` integration disabled, so `yt-dlp` is not required.
96
+
91
97
  ## Start
92
98
 
93
99
  Open command mode with `Ctrl+P`, then type a command. Press `` ` `` to open ticker search directly.
@@ -96,6 +102,7 @@ Open command mode with `Ctrl+P`, then type a command. Press `` ` `` to open tick
96
102
  |-----|-------|
97
103
  | `DES AAPL` | Security details |
98
104
  | `GP NVDA` | Price chart |
105
+ | `G AAPL:price, MSFT:revenue` | Mixed-series chart |
99
106
  | `TOP` | Ranked market stories |
100
107
  | `HM` | Market heatmap |
101
108
  | `MOST` | Market movers |
@@ -191,6 +198,7 @@ Use `HELP` inside Gloomberb for the live shortcut list. The common command-bar p
191
198
  |----------|----------|
192
199
  | `DES <ticker>` / `T <ticker>` | Security details for a ticker |
193
200
  | `FA <ticker>` | Financial statement view |
201
+ | `G <series>` | Custom chart composer |
194
202
  | `GP <ticker>` | Price chart |
195
203
  | `GIP <ticker>` | Intraday price chart |
196
204
  | `HP <ticker>` | Historical OHLCV prices |
@@ -201,7 +209,7 @@ Use `HELP` inside Gloomberb for the live shortcut list. The common command-bar p
201
209
  | `EM [tickers]` | Earnings monitor |
202
210
  | `SRCH <query>` | Provider symbol search |
203
211
  | `QQ <tickers>` | Ticker quote monitor |
204
- | `CMP <tickers>` | Ticker charts |
212
+ | `CMP <tickers>` | Normalized price comparison |
205
213
  | `CORR <tickers>` | Ticker return correlations |
206
214
  | `ANR <ticker>` | Analyst targets and ratings |
207
215
  | `SEC <ticker>` | SEC filings and company disclosures |
@@ -212,6 +220,18 @@ Use `HELP` inside Gloomberb for the live shortcut list. The common command-bar p
212
220
  | `EVT <ticker>` | Corporate actions, earnings, and estimates |
213
221
  | `RV <tickers>` | Relative valuation |
214
222
 
223
+ ### Chart Composer
224
+
225
+ `G`, `GP`, `GIP`, `CMP`, `GF`, and `GE` all open the same chart composer with different starting presets. A custom expression can mix unrelated data sources on one synchronized timeline:
226
+
227
+ ```text
228
+ G AAPL:price, MSFT:revenue, FRED:CPIAUCSL
229
+ ```
230
+
231
+ Open **Series** to add, remove, reorder, or hide series and choose each series' field, chart style, transform, axis, panel, period, and panel scale. Price data supports candles, OHLC, HLC, line, and area; scalar data supports its compatible line, area, step, column, and point modes. Panels can use independent left/right axes and linear or logarithmic scales.
232
+
233
+ The toolbar controls preset or exact date ranges, intervals from one minute through monthly, the primary chart mode, technical indicators, and pair formulas. Indicators include volume, SMA, EMA, Bollinger Bands, RSI, and MACD; formulas include ratio, spread, and rolling correlation. Mixed-frequency values use as-of alignment: fundamentals use filing dates when available, sparse series carry forward only after becoming available, and missing publication dates are called out in the chart status.
234
+
215
235
  ### Markets, News, and Macro
216
236
 
217
237
  | Shortcut | Function |
@@ -232,6 +252,7 @@ Use `HELP` inside Gloomberb for the live shortcut list. The common command-bar p
232
252
  | `ECON` | Economic events and releases |
233
253
  | `GC` | Yield curve |
234
254
  | `ERN` | Earnings calendar |
255
+ | `TV` | Live Bloomberg, CNBC, and Yahoo Finance television |
235
256
  | `BI` / `SP` | S&P 500 sector performance |
236
257
  | `FXC` | Major FX cross rates |
237
258
  | `FNG` | Fear and greed market gauge |
@@ -245,6 +266,7 @@ Use `HELP` inside Gloomberb for the live shortcut list. The common command-bar p
245
266
  | `ALRT` | Price alerts |
246
267
  | `SA <symbol condition price>` | Create a price alert |
247
268
  | `AI <prompt>` | AI screener |
269
+ | `AGENT` | Local AI research workspace |
248
270
  | `CHAT [channel]` | Gloom Cloud chat |
249
271
  | `DM @user [@user...]` | Open or start a direct or group chat |
250
272
  | `ACM` | Gloom Cloud account settings |
@@ -263,8 +285,24 @@ Use `HELP` inside Gloomberb for the live shortcut list. The common command-bar p
263
285
  | `VF` | Toggle quote value flashing |
264
286
  | `TH <theme>` | Change color theme |
265
287
  | `CR` | Cycle chart renderer |
288
+ | `LANG <locale>` | Change interface language (`auto`, `en`, `zh-CN`, `zh-TW`, `ja`, or `ko`) |
266
289
  | `PL <plugin>` | Manage plugins |
267
290
 
291
+ ## Localized interface
292
+
293
+ Gloomberb includes English, Simplified Chinese, Traditional Chinese, Japanese, and Korean UI support. English remains the default fallback language.
294
+
295
+ - **Automatic detection:** supported `LANG` / `LC_ALL` and desktop system locales select the matching interface automatically.
296
+ - **Command switching:** enter `LANG` in the command bar (Ctrl+P) to cycle languages, or use `LANG auto`, `LANG en`, `LANG zh-CN`, `LANG zh-TW`, `LANG ja`, or `LANG ko`. The choice is persisted in `config.json`.
297
+ - **One-run override:** `GLOOMBERB_LANG=ja gloomberb` (or another supported locale) takes highest priority in environments that expose process locale variables.
298
+
299
+ Implementation notes:
300
+
301
+ - Locale dictionaries live in [src/i18n](src/i18n), keyed by the original English UI text. Missing entries safely fall back to English.
302
+ - Shared render sinks call `t()` / `tf()` / `tc()` for pane titles, the command bar, menus, settings, tabs, help, and onboarding.
303
+ - Finance abbreviations such as BID, ASK, and CHG% intentionally remain in English for terminal conventions and fixed-width alignment.
304
+ - CJK wide characters and grapheme clusters are measured by [src/utils/format.ts](src/utils/format.ts) using terminal display-cell widths.
305
+
268
306
  ## License
269
307
 
270
308
  MIT
@@ -0,0 +1,294 @@
1
+ <div align="center">
2
+
3
+ <img src="https://gloomberb.com/gloomberb-logo-grayscale.svg" alt="Gloomberb logo" width="76" />
4
+
5
+ # Gloomberb
6
+
7
+ **开源金融终端。快速、键盘驱动、可扩展。**
8
+
9
+ 桌面应用支持 macOS 和 Windows。终端界面(TUI)支持 macOS、Linux 和 Windows。
10
+
11
+ <a href="https://gloomberb.com/download/desktop"><strong>下载桌面版</strong></a>
12
+ &nbsp;&middot;&nbsp;
13
+ <a href="#安装">安装 TUI</a>
14
+ &nbsp;&middot;&nbsp;
15
+ <a href="README.md"><strong>English</strong></a>
16
+
17
+ <br />
18
+ <br />
19
+
20
+ <img src="https://gloomberb.com/landing-terminal.png" alt="Gloomberb 终端界面,显示投资组合、自选列表、市场数据和图表面板。" width="720" />
21
+
22
+ </div>
23
+
24
+ > 本文档为社区维护的简体中文翻译。若与 [英文原版 README](README.md) 有出入,以英文版为准。
25
+
26
+ ## 桌面版还是 TUI?
27
+
28
+ Gloomberb 有两种使用方式:
29
+
30
+ | 形态 | 适合场景 | 运行方式 |
31
+ |---------|----------|-------------|
32
+ | 桌面应用 | 精美的应用窗口、可弹出面板、系统级快捷键、内置更新 | 发布支持 macOS 和 Windows,同时会安装 `gloomberb` 终端命令用于运行 TUI |
33
+ | 终端界面 (TUI) | 终端内的高速键盘操作、SSH/开发机、Linux 主机、脚本友好的场景 | 在 macOS、Linux、Windows 上通过 `gloomberb` 运行 |
34
+
35
+ 两者共享同一套命令语言、插件系统、市场数据界面、投资组合、自选列表、提醒、笔记与 AI 工具。
36
+
37
+ ## 安装
38
+
39
+ ### macOS
40
+
41
+ 安装桌面应用和 `gloomberb` 终端命令:
42
+
43
+ ```bash
44
+ brew install --cask vincelwt/tap/gloomberb
45
+ # 或
46
+ curl -fsSL gloomberb.com/install | bash
47
+ ```
48
+
49
+ 两种方式都会安装 `Gloomberb.app`,以及一个通过应用内置运行时执行 TUI 的 `gloomberb` 命令,运行时只会存储一份。
50
+
51
+ 想直接下载?
52
+
53
+ - [下载 Gloomberb(Mac 版)](https://gloomberb.com/download/desktop)
54
+
55
+ ### Linux
56
+
57
+ 安装独立的 TUI 可执行文件:
58
+
59
+ ```bash
60
+ curl -fsSL gloomberb.com/install | bash
61
+ ```
62
+
63
+ 默认会将 `gloomberb` 安装到 `~/.local/bin`。Linux 桌面安装包暂未发布。
64
+
65
+ ### Windows
66
+
67
+ 安装桌面应用:
68
+
69
+ - [下载 GloomberbSetup.exe(Windows x64)](https://github.com/vincelwt/gloomberb/releases/latest/download/stable-win-x64-GloomberbSetup.exe)
70
+
71
+ 安装程序会添加应用本体和 `gloomberb` 终端命令。如果只需要终端版本,安装 Bun 后使用该包即可:
72
+
73
+ ```powershell
74
+ bun install -g gloomberb
75
+ ```
76
+
77
+ ### 终端安装包
78
+
79
+ 已经装好 Bun?在任意受支持的系统上执行:
80
+
81
+ ```bash
82
+ bun install -g gloomberb
83
+ ```
84
+
85
+ 然后运行:
86
+
87
+ ```bash
88
+ gloomberb
89
+ ```
90
+
91
+ 在 macOS 和 Windows 上,桌面版更新会原地替换已安装的应用,并让终端命令继续指向更新后的运行时。Homebrew 用户也可以通过 `brew upgrade --cask gloomberb` 更新。
92
+
93
+ 为获得最佳终端体验,请使用兼容 [Kitty](https://sw.kovidgoyal.net/kitty/) 图形协议的终端,例如 Ghostty、Kitty 或 WezTerm。
94
+
95
+ ## 开始使用
96
+
97
+ 按 `Ctrl+P` 打开命令模式,然后输入命令。按 `` ` `` 可直接打开股票搜索。
98
+
99
+ | 试试 | 打开 |
100
+ |-----|-------|
101
+ | `DES AAPL` | 证券详情 |
102
+ | `GP NVDA` | 价格图表 |
103
+ | `TOP` | 排名市场头条 |
104
+ | `HM` | 市场热力图 |
105
+ | `MOST` | 市场异动 |
106
+ | `PF` | 投资组合与自选列表 |
107
+ | `KELLY AAPL` | 仓位计算 |
108
+ | `HELP` | 完整的应用内快捷键列表 |
109
+
110
+ ## 功能概览
111
+
112
+ - **公司研究**:行情、图表、财务报表、监管文件、股东、内部人交易、期权、分析师评级、事件与相对估值。
113
+ - **市场追踪**:头条新闻、突发新闻、板块新闻、Substack 订阅、全球股指、外汇、宏观事件、收益率曲线、市场异动与恐惧贪婪指数。
114
+ - **组合管理**:跟踪投资组合与自选列表、连接券商、设置提醒、记笔记、运行 AI 选股、浏览预测市场,并使用 Gloom Cloud 聊天。
115
+
116
+ ## 命令行 (CLI)
117
+
118
+ 不带参数运行 `gloomberb` 会启动终端界面。普通命令走无界面(headless)的 CLI 路径;脚本若需要显式打开 UI,使用 `gloomberb launch-ui`。
119
+
120
+ 默认输出为易读的人类可读格式。自动化场景可通过 `--json`、`--csv` 或 `--ndjson` 选择结构化输出。JSON 输出会使用能获取到的最丰富的数据模型,并在命令带有表格列时附带列元数据;CSV 和 NDJSON 则使用命令的表格行视图。常用全局参数包括 `--limit`、`--refresh`、`--quiet`、`--no-color`、`--dry-run` 和 `--yes`。
121
+
122
+ | 命令 | 用途 |
123
+ |---------|-----|
124
+ | `gloomberb` | 启动终端界面 |
125
+ | `gloomberb launch-ui` | 显式启动终端界面 |
126
+ | `gloomberb help` | 显示全部 CLI 命令 |
127
+ | `gloomberb api list\|get\|invoke\|subscribe` | 直接查看和调用插件能力 |
128
+ | `gloomberb quote <symbols>` | 获取实时行情 |
129
+ | `gloomberb search <query>` / `provider-search <query>` | 搜索股票代码与数据源符号 |
130
+ | `gloomberb ticker <symbol>` | 显示行情、持股结构与财务数据 |
131
+ | `gloomberb history\|financials\|fundamentals\|options <symbol>` | 获取研究数据 |
132
+ | `gloomberb news\|filings\|holders\|insider\|13f\|analyst\|events\|valuation <symbol>` | 获取公司研究信息流 |
133
+ | `gloomberb movers\|indices\|sectors\|fx\|fear-greed\|earnings` | 获取市场概览数据 |
134
+ | `gloomberb econ\|fred\|yield-curve` | 获取宏观数据 |
135
+ | `gloomberb compare\|correlation\|relationship <symbols>` | 对比证券 |
136
+ | `gloomberb portfolio [action]` | 管理手动投资组合 |
137
+ | `gloomberb watchlist [action]` | 管理自选列表 |
138
+ | `gloomberb notes\|alerts [action]` | 管理本地笔记与提醒 |
139
+ | `gloomberb broker\|ibkr [action]` | 查看券商集成状态;交易操作需要显式指定账户/配置并加 `--yes` |
140
+ | `gloomberb ai providers\|ask\|screen` | 使用已配置的 AI 服务商与选股器 |
141
+ | `gloomberb rss fetch <url>` | 抓取 RSS 订阅源 |
142
+ | `gloomberb buildout\|congress\|substack\|x-feed\|tweets` | 在已有会话可用时访问云端与社交数据源 |
143
+ | `gloomberb provider status` | 查看已启用的数据源 |
144
+ | `gloomberb config\|cache\|plugin\|layout\|pane\|debug\|doctor\|version\|changelog` | 查看和管理本地应用状态 |
145
+ | `gloomberb fn [...]` | 运行基于面板的报告命令 |
146
+ | `gloomberb shot [...]` | 捕获基于面板的截图 |
147
+ | `gloomberb predictions [...]` | 启动预测市场 |
148
+ | `gloomberb plugins` | 列出已安装插件 |
149
+ | `gloomberb install <user/repo>` | 从 GitHub 安装插件 |
150
+ | `gloomberb remove <name>` | 移除已安装插件 |
151
+ | `gloomberb update [name]` | 更新插件 |
152
+
153
+ 需要已登录云端会话的命令可能返回 `auth_required`;登录、账户管理与聊天相关操作目前仍需在应用界面中完成。
154
+
155
+ ## 插件
156
+
157
+ 从投资组合列表到券商集成,一切皆为插件。插件可以添加面板、页签、列、命令栏命令、CLI 命令、状态栏组件与数据源。
158
+
159
+ 核心插件领域包括:
160
+
161
+ - 投资组合、自选列表、手动录入与券商连接
162
+ - 股票详情、行情、图表、期权、监管文件、股东、内部人交易与研究
163
+ - 新闻、Substack 阅读订阅、市场异动、全球股指、板块、外汇、财报、宏观数据与收益率曲线
164
+ - 预测市场、提醒、笔记、聊天、AI 选股器与外部插件
165
+
166
+ 插件 API 以及通过 `gloomberb/components` 提供的共享 UI 界面,详见 [PLUGINS.md](PLUGINS.md)。
167
+
168
+ ## 键盘快捷键
169
+
170
+ | 按键 | 操作 |
171
+ |-----|--------|
172
+ | `Ctrl+P` | 打开命令模式 |
173
+ | `` ` `` | 打开股票搜索 |
174
+ | `Ctrl+,` | 打开聚焦面板的设置 |
175
+ | `Ctrl+W` | 关闭聚焦面板 |
176
+ | `Ctrl+Shift+M` | 移动聚焦窗口(`WIN resize` 进入缩放模式) |
177
+ | `Ctrl+Shift+D` | 停靠或浮动聚焦面板 |
178
+ | `Ctrl+Shift+L` | 布局操作 |
179
+ | `Ctrl+Shift+G` | 所有窗口网格对齐 |
180
+ | `Tab` | 切换面板 |
181
+ | `j` / `k` | 列表导航 |
182
+ | `h` / `l` | 切换页签 |
183
+ | `m` | 循环切换图表模式 |
184
+ | `q` | 退出 |
185
+
186
+ 桌面版还支持 `Cmd/Ctrl+K` 打开命令栏、macOS 上对应的 `Cmd` 快捷键、`Cmd/Ctrl+Shift+O` 弹出面板为独立窗口,以及 `Cmd/Ctrl+Shift+C` 复制聚焦面板截图。
187
+
188
+ ## 命令参考
189
+
190
+ 在 Gloomberb 内输入 `HELP` 可查看实时快捷键列表。以下列出常用命令栏前缀,方便快速查阅。
191
+
192
+ ### 公司研究
193
+
194
+ | 快捷指令 | 功能 |
195
+ |----------|----------|
196
+ | `DES <ticker>` / `T <ticker>` | 股票的证券详情 |
197
+ | `FA <ticker>` | 财务报表视图 |
198
+ | `GP <ticker>` | 价格图表 |
199
+ | `GIP <ticker>` | 盘中价格图表 |
200
+ | `HP <ticker>` | 历史 OHLCV 价格 |
201
+ | `GF <tickers>` | 基本面报表图表 |
202
+ | `GE <tickers>` | 估值倍数图表 |
203
+ | `GR <tickers>` | 证券关系图 |
204
+ | `EE <ticker>` | 含 EPS 与营收预估的事件视图 |
205
+ | `EM [tickers]` | 财报监控 |
206
+ | `SRCH <query>` | 数据源符号搜索 |
207
+ | `QQ <tickers>` | 股票行情监控 |
208
+ | `CMP <tickers>` | 股票图表对比 |
209
+ | `CORR <tickers>` | 股票收益率相关性 |
210
+ | `ANR <ticker>` | 分析师目标价与评级 |
211
+ | `SEC <ticker>` | SEC 申报文件与公司披露 |
212
+ | `OMON <ticker>` | 期权监控 |
213
+ | `HDS <ticker>` | 机构股东 |
214
+ | `13F [fund/ticker/CIK]` | 13F 基金申报与持仓 |
215
+ | `INS <ticker>` | 内部人交易动态 |
216
+ | `EVT <ticker>` | 公司行动、财报与预估 |
217
+ | `RV <tickers>` | 相对估值 |
218
+
219
+ ### 市场、新闻与宏观
220
+
221
+ | 快捷指令 | 功能 |
222
+ |----------|----------|
223
+ | `TOP` | 排名市场头条 |
224
+ | `HM` | 美股大盘股与 ETF 市场热力图 |
225
+ | `MOST` | 涨幅榜、跌幅榜、成交活跃与热门股票 |
226
+ | `PM <query>` | Polymarket 与 Kalshi 预测数据 |
227
+ | `N` | 新闻源 |
228
+ | `CN <ticker>` | 个股新闻 |
229
+ | `NI` | 板块新闻 |
230
+ | `SUB` | 已登录的 Substack 阅读订阅源 |
231
+ | `FIRST` | 突发新闻 |
232
+ | `TWIT <query>` | 与股票相关的市场动态帖子 |
233
+ | `TBO` | TheBuildout 基础设施情报 |
234
+ | `CG` | 国会交易披露 |
235
+ | `WEI` | 全球股指 |
236
+ | `ECON` | 经济事件与数据发布 |
237
+ | `GC` | 收益率曲线 |
238
+ | `ERN` | 财报日历 |
239
+ | `BI` / `SP` | 标普 500 板块表现 |
240
+ | `FXC` | 主要外汇交叉汇率 |
241
+ | `FNG` | 恐惧与贪婪市场指数 |
242
+
243
+ ### 工作区与应用控制
244
+
245
+ | 快捷指令 | 功能 |
246
+ |----------|----------|
247
+ | `PF` | 投资组合与自选列表工作区 |
248
+ | `PORT` | 投资组合风险与板块敞口 |
249
+ | `ALRT` | 价格提醒 |
250
+ | `SA <symbol condition price>` | 创建价格提醒 |
251
+ | `AI <prompt>` | AI 选股器 |
252
+ | `CHAT [channel]` | Gloom Cloud 聊天 |
253
+ | `DM @user [@user...]` | 打开或发起私信/群聊 |
254
+ | `ACM` | Gloom Cloud 账户设置 |
255
+ | `NOTE` | 笔记 |
256
+ | `IBKR` | IBKR 交易面板 |
257
+ | `BR` | 券商连接 |
258
+ | `CHG` | 更新日志 |
259
+ | `HELP` | 打开快捷键与布局帮助 |
260
+ | `AW` / `AP <ticker>` | 将股票添加到活动自选列表或投资组合 |
261
+ | `RW` / `RP <ticker>` | 从活动自选列表或投资组合中移除股票 |
262
+ | `PS` | 打开聚焦面板的设置 |
263
+ | `LAY <action>` | 打开布局操作 |
264
+ | `WIN move\|resize` | 移动或缩放聚焦窗口 |
265
+ | `GL` | 所有可见面板网格对齐 |
266
+ | `SB` | 切换状态栏 |
267
+ | `VF` | 切换行情数值闪烁 |
268
+ | `TH <theme>` | 更换配色主题 |
269
+ | `CR` | 切换图表渲染器 |
270
+ | `LANG <locale>` | 切换界面语言(`auto`、`en`、`zh-CN`、`zh-TW`、`ja` 或 `ko`) |
271
+ | `PL <plugin>` | 管理插件 |
272
+
273
+ ## 本地化界面
274
+
275
+ Gloomberb 内置 English、简体中文、繁體中文、日本語和한국어界面支持;英文仍是默认回退语言。
276
+
277
+ - **自动检测**:终端 `LANG` / `LC_ALL` 与桌面系统语言会自动选择受支持的界面语言。
278
+ - **命令切换**:在命令栏(Ctrl+P)输入 `LANG` 可循环切换,也可直接输入 `LANG auto`、`LANG en`、`LANG zh-CN`、`LANG zh-TW`、`LANG ja` 或 `LANG ko`。选择会保存到 `config.json`。
279
+ - **单次覆盖**:在可读取进程语言变量的环境中,可用 `GLOOMBERB_LANG=ja gloomberb`(或其他受支持的语言代码)进行最高优先级覆盖。
280
+
281
+ 实现说明:
282
+
283
+ - 各语言词典位于 [src/i18n](src/i18n),以英文原文为键;查不到的词条自动回退英文,因此可以增量补充翻译,不影响任何功能。
284
+ - 渲染出口统一经过 `t()`([src/i18n/index.ts](src/i18n/index.ts)),面板标题、命令栏、右键菜单、设置对话框、页签、帮助与引导页均已接入。
285
+ - 表格列头(BID/ASK/CHG% 等金融缩写)刻意保留英文,符合行情终端惯例并保证定宽列对齐。
286
+ - 中日韩宽字符和字素簇的截断与排版由 [src/utils/format.ts](src/utils/format.ts) 按终端单元格宽度处理。
287
+
288
+ ## 许可证
289
+
290
+ MIT
291
+
292
+ ## 致谢
293
+
294
+ - [OpenTUI](https://opentui.com/) 提供布局引擎
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gloomberb",
3
- "version": "0.9.9",
3
+ "version": "0.10.0",
4
4
  "description": "Market research and portfolio tracker for the terminal",
5
5
  "module": "src/index.tsx",
6
6
  "type": "module",
@@ -22,6 +22,7 @@
22
22
  "desktop:build": "electrobun build",
23
23
  "desktop:release": "electrobun build --env=stable",
24
24
  "desktop:release:windows": "electrobun build --env=stable --targets=win-x64",
25
+ "i18n:audit": "bun run scripts/i18n-audit.ts",
25
26
  "test": "bun test",
26
27
  "release": "./scripts/release.sh"
27
28
  },
@@ -42,24 +43,29 @@
42
43
  "@types/react-dom": "^19.2.3",
43
44
  "electrobun": "^1.18.1",
44
45
  "png-to-ico": "^2.1.8",
45
- "rcedit": "^4.0.1",
46
- "react-dom": "19.2.7"
46
+ "rcedit": "^4.0.1"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "typescript": "^5.9.2"
50
50
  },
51
51
  "dependencies": {
52
+ "@earendil-works/pi-agent-core": "0.81.1",
53
+ "@earendil-works/pi-ai": "0.81.1",
52
54
  "@opentui-ui/dialog": "^0.1.2",
53
55
  "@opentui-ui/toast": "^0.0.5",
54
56
  "@opentui/core": "^0.3.2",
55
57
  "@opentui/react": "^0.3.2",
56
58
  "@stoqey/ib": "^1.5.6",
57
59
  "@tanstack/react-virtual": "^3.14.2",
60
+ "hls.js": "1.6.13",
58
61
  "jimp": "1.6.1",
59
62
  "opentui-spinner": "^0.0.6",
60
63
  "react": "19.2.7",
64
+ "react-dom": "19.2.7",
61
65
  "rxjs": "^7.8.2",
62
- "web-tree-sitter": "0.25.10"
66
+ "typebox": "1.1.38",
67
+ "web-tree-sitter": "0.25.10",
68
+ "youtubei.js": "17.0.1"
63
69
  },
64
70
  "patchedDependencies": {
65
71
  "@opentui/core@0.3.2": "patches/@opentui%2Fcore@0.3.2.patch",