gloomberb 0.18.3 → 0.18.4

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 (886) hide show
  1. package/README.md +8 -8
  2. package/README.zh-CN.md +11 -11
  3. package/bin/{gloomberb → gloom} +3 -1
  4. package/package.json +6 -2
  5. package/src/account/checkout-handoff.tsx +225 -0
  6. package/src/account/device-signin-dialog.tsx +2 -2
  7. package/src/account/device-signin.ts +2 -2
  8. package/src/account/upgrade-dialog.tsx +1 -1
  9. package/src/api-client/askg.ts +2 -2
  10. package/src/api-client/auth.ts +2 -2
  11. package/src/api-client/central-bank-rates.ts +6 -0
  12. package/src/api-client/collections.ts +5 -1
  13. package/src/api-client/cot.ts +2 -0
  14. package/src/api-client/crypto-etf-flows.ts +37 -0
  15. package/src/api-client/crypto-markets.ts +60 -0
  16. package/src/api-client/data.ts +84 -5
  17. package/src/api-client/doe.ts +15 -0
  18. package/src/api-client/equity-screener.ts +28 -0
  19. package/src/api-client/exchange-announcements.ts +38 -0
  20. package/src/api-client/fund-facts.ts +39 -0
  21. package/src/api-client/futures-curve.ts +9 -1
  22. package/src/api-client/hiring.ts +301 -0
  23. package/src/api-client/index.ts +22 -5
  24. package/src/api-client/market-discovery.ts +14 -0
  25. package/src/api-client/members.ts +6 -0
  26. package/src/api-client/mna.ts +6 -0
  27. package/src/api-client/paths.ts +18 -1
  28. package/src/api-client/request.ts +21 -4
  29. package/src/api-client/short-side-publications.ts +37 -0
  30. package/src/api-client/socket.ts +64 -4
  31. package/src/api-client/swap-curve.ts +35 -0
  32. package/src/api-client/themes.ts +7 -1
  33. package/src/api-client/types.ts +90 -2
  34. package/src/app/pane-runtime/plugin-bindings.ts +9 -2
  35. package/src/app/runtime/desktop-deeplink.ts +5 -5
  36. package/src/app/runtime/plugin-bindings.ts +2 -2
  37. package/src/app/runtime/startup.ts +13 -0
  38. package/src/app/star-prompt/status-line.tsx +2 -2
  39. package/src/architecture/core-builtin-allowlist.json +5 -2
  40. package/src/architecture/ui-literals-allowlist.json +3 -3
  41. package/src/architecture/ui-tokens-allowlist.json +1 -1
  42. package/src/brokers/broker-portfolio-sync.ts +37 -0
  43. package/src/brokers/directory.ts +11 -0
  44. package/src/brokers/logos.ts +3 -1
  45. package/src/brokers/signed-in/adapter.ts +304 -26
  46. package/src/brokers/signed-in/client.ts +14 -2
  47. package/src/brokers/signed-in/connect.ts +10 -2
  48. package/src/brokers/sync-broker-instance.ts +9 -1
  49. package/src/capabilities/chart-series.ts +22 -6
  50. package/src/cli/bank-section.ts +1 -1
  51. package/src/cli/base-converter.ts +23 -14
  52. package/src/cli/central-bank-events.ts +1 -1
  53. package/src/cli/command-options.ts +59 -4
  54. package/src/cli/commands/api.ts +9 -6
  55. package/src/cli/commands/broker.ts +2 -2
  56. package/src/cli/commands/command-utils.ts +2 -2
  57. package/src/cli/commands/crypto-hints.ts +7 -20
  58. package/src/cli/commands/fred-series.ts +4 -2
  59. package/src/cli/commands/keybindings.ts +2 -2
  60. package/src/cli/commands/market.ts +1117 -264
  61. package/src/cli/commands/news-hints.ts +2 -2
  62. package/src/cli/commands/news-search.ts +59 -6
  63. package/src/cli/commands/options-leaps.ts +41 -26
  64. package/src/cli/commands/overview.ts +121 -48
  65. package/src/cli/commands/plugins.ts +9 -9
  66. package/src/cli/commands/remote.ts +13 -10
  67. package/src/cli/commands/search.ts +64 -44
  68. package/src/cli/commands/system.ts +27 -19
  69. package/src/cli/commands/themes.ts +1 -1
  70. package/src/cli/commands/ticker.ts +192 -47
  71. package/src/cli/context.ts +3 -2
  72. package/src/cli/desktop-pane-shot-view.ts +2 -2
  73. package/src/cli/desktop-pane-shot.ts +1 -1
  74. package/src/cli/earnings-calendar.ts +4 -4
  75. package/src/cli/entry.ts +18 -1
  76. package/src/cli/errors.ts +20 -2
  77. package/src/cli/exit-codes.ts +1 -1
  78. package/src/cli/export-source.ts +10 -4
  79. package/src/cli/freshness.ts +2 -8
  80. package/src/cli/fx-forward.ts +130 -0
  81. package/src/cli/fx-pair.ts +10 -9
  82. package/src/cli/glossary.ts +64 -20
  83. package/src/cli/help.ts +19 -13
  84. package/src/cli/history-export.ts +126 -0
  85. package/src/cli/history-rows.ts +196 -43
  86. package/src/cli/index-roots.ts +5 -45
  87. package/src/cli/index.ts +24 -18
  88. package/src/cli/known-gaps.ts +118 -25
  89. package/src/cli/listing-arg.ts +300 -41
  90. package/src/cli/name-entries.ts +30 -18
  91. package/src/cli/native-smoke.ts +2 -0
  92. package/src/cli/not-a-ticker.ts +19 -9
  93. package/src/cli/opentui-libc.ts +5 -0
  94. package/src/cli/options.ts +12 -0
  95. package/src/cli/pane-functions/capabilities.ts +75 -20
  96. package/src/cli/pane-functions/catalog.ts +24 -23
  97. package/src/cli/pane-functions/discovery.ts +1 -1
  98. package/src/cli/pane-functions/dom.ts +10 -7
  99. package/src/cli/pane-functions/financial-ratio-shot.ts +2 -2
  100. package/src/cli/pane-functions/freshness.ts +174 -23
  101. package/src/cli/pane-functions/function-help.ts +66 -27
  102. package/src/cli/pane-functions/headless.ts +24 -11
  103. package/src/cli/pane-functions/index.ts +18 -16
  104. package/src/cli/pane-functions/options.ts +22 -2
  105. package/src/cli/pane-functions/report-notices.ts +12 -4
  106. package/src/cli/pane-functions/report.ts +5 -5
  107. package/src/cli/pane-functions/resolver.ts +47 -10
  108. package/src/cli/pane-functions/screenshot-assessment.ts +322 -0
  109. package/src/cli/pane-functions/screenshot-bridge.ts +152 -0
  110. package/src/cli/pane-functions/screenshot-chart-evidence.ts +396 -0
  111. package/src/cli/pane-functions/screenshot-data-evidence.ts +383 -0
  112. package/src/cli/pane-functions/screenshot-evidence.ts +1 -1
  113. package/src/cli/pane-functions/screenshot-payload.ts +453 -0
  114. package/src/cli/pane-functions/screenshot-render.ts +316 -0
  115. package/src/cli/pane-functions/screenshot-types.ts +162 -0
  116. package/src/cli/pane-functions/shot-options.ts +8 -3
  117. package/src/cli/peso-dollar-rates.ts +79 -0
  118. package/src/cli/quote-answer.ts +38 -3
  119. package/src/cli/report-tables.ts +61 -16
  120. package/src/cli/restore-plugins.ts +29 -14
  121. package/src/cli/result.ts +111 -22
  122. package/src/cli/series-search.ts +5 -5
  123. package/src/cli/statement-filings.ts +19 -0
  124. package/src/cli/suffixed-listing-rows.ts +49 -0
  125. package/src/cli/symbol-args.ts +50 -15
  126. package/src/cli/symbol-cells.ts +120 -0
  127. package/src/cli/symbol-list.ts +198 -68
  128. package/src/cli/symbol-rows.ts +131 -25
  129. package/src/cli/ticker-resolution.ts +108 -11
  130. package/src/cli/treasury-yields.ts +5 -5
  131. package/src/cli/types.ts +2 -0
  132. package/src/cli/uncovered-instrument.ts +3 -3
  133. package/src/cli/unknown-command.ts +6 -6
  134. package/src/components/chart/composite/chart-layout.ts +131 -0
  135. package/src/components/chart/composite/composite-chart.tsx +373 -16
  136. package/src/components/chart/composite/interactions.ts +7 -2
  137. package/src/components/chart/composite/legend.tsx +75 -3
  138. package/src/components/chart/composite/levels.ts +5 -0
  139. package/src/components/chart/composite/panel-gestures.ts +41 -0
  140. package/src/components/chart/composite/panel-labels.ts +2 -1
  141. package/src/components/chart/composite/panel-surface.tsx +305 -11
  142. package/src/components/chart/composite/price-axis-labels.tsx +27 -3
  143. package/src/components/chart/composite/rasterizer.ts +44 -19
  144. package/src/components/chart/composite/scene.ts +16 -4
  145. package/src/components/chart/composite/text-renderer.ts +48 -21
  146. package/src/components/chart/composite/toolbar.tsx +52 -5
  147. package/src/components/chart/composite/types.ts +13 -0
  148. package/src/components/chart/composite/use-composite-chart-keyboard.ts +120 -13
  149. package/src/components/chart/composite/use-composite-value-scales.ts +44 -0
  150. package/src/components/chart/composite/use-composite-viewport.ts +12 -3
  151. package/src/components/chart/composite/value-scale.ts +149 -0
  152. package/src/components/chart/composite/volume-profile-paint.ts +6 -3
  153. package/src/components/chart/core/pointer.ts +2 -0
  154. package/src/components/chart-table/index.ts +2 -0
  155. package/src/components/chart-table/read.tsx +74 -0
  156. package/src/components/command-bar/commands/collection-list.ts +41 -19
  157. package/src/components/command-bar/commands/collection.ts +9 -3
  158. package/src/components/command-bar/commands/direct/index.ts +1 -1
  159. package/src/components/command-bar/commands/direct/runtime.ts +3 -2
  160. package/src/components/command-bar/pane-templates/items.ts +59 -6
  161. package/src/components/command-bar/pane-templates/workflow.ts +10 -1
  162. package/src/components/command-bar/routes/root/plugin-install.ts +1 -1
  163. package/src/components/command-bar/routes/root/provider-search.ts +42 -11
  164. package/src/components/command-bar/routes/root/results.ts +18 -4
  165. package/src/components/command-bar/routes/root/runtime.ts +15 -3
  166. package/src/components/command-bar/routes/root/search-providers.ts +25 -2
  167. package/src/components/command-bar/routes/root/selection.ts +6 -1
  168. package/src/components/command-bar/routes/root/shortcut-feedback.ts +4 -1
  169. package/src/components/command-bar/routes/root/shortcuts.ts +30 -3
  170. package/src/components/command-bar/routes/ticker-search/results.ts +73 -4
  171. package/src/components/command-bar/selection-runtime.ts +50 -10
  172. package/src/components/command-bar/surface/index.tsx +24 -2
  173. package/src/components/command-bar/view-model.ts +7 -0
  174. package/src/components/command-bar/workflow/broker.ts +2 -2
  175. package/src/components/command-bar/workflow/collection-actions.ts +46 -7
  176. package/src/components/command-bar/workflow/collection-ticker.ts +32 -4
  177. package/src/components/command-bar/workflow/fields.ts +8 -2
  178. package/src/components/command-bar/workflow/ops.ts +18 -4
  179. package/src/components/command-bar/workflow/portfolio-position.ts +53 -4
  180. package/src/components/command-bar/workflow/submit.ts +3 -2
  181. package/src/components/command-bar/workflow/tickers.ts +5 -1
  182. package/src/components/company-logo.tsx +39 -0
  183. package/src/components/data-table/sections.ts +4 -2
  184. package/src/components/form-modal/confirm.tsx +2 -1
  185. package/src/components/form-modal/request.ts +5 -0
  186. package/src/components/form-modal/routes.ts +4 -1
  187. package/src/components/index.ts +12 -6
  188. package/src/components/layout/header.tsx +7 -6
  189. package/src/components/layout/market-summary.ts +9 -6
  190. package/src/components/layout/pane/capture-status.ts +1 -1
  191. package/src/components/layout/pane/footer/model.ts +11 -5
  192. package/src/components/layout/shell/chrome.ts +19 -6
  193. package/src/components/layout/shell/index.tsx +2 -1
  194. package/src/components/layout/shell/pane/layers.tsx +19 -1
  195. package/src/components/layout/status-bar.tsx +2 -2
  196. package/src/components/market-board/index.tsx +11 -3
  197. package/src/components/onboarding/onboarding-wizard.tsx +1 -0
  198. package/src/components/onboarding/portfolio-step/broker-setup-panel.tsx +2 -2
  199. package/src/components/onboarding/wizard-broker-sync.ts +4 -1
  200. package/src/components/pane-settings-dialog/desktop.tsx +20 -7
  201. package/src/components/pane-settings-dialog/tui.tsx +17 -9
  202. package/src/components/pane-settings-dialog/value.ts +8 -1
  203. package/src/components/pane-settings-dialog.tsx +44 -13
  204. package/src/components/sign-in-code-panel.tsx +27 -19
  205. package/src/components/ui/column-grid.tsx +48 -4
  206. package/src/components/ui/country-flag-art.tsx +180 -0
  207. package/src/components/ui/country-flag.tsx +118 -12
  208. package/src/components/ui/data-table/opentui/index.tsx +61 -2
  209. package/src/components/ui/data-table/opentui/model.ts +109 -2
  210. package/src/components/ui/data-table/types.ts +1 -1
  211. package/src/components/ui/display.tsx +5 -1
  212. package/src/components/ui/index.ts +3 -1
  213. package/src/components/ui/logo-mark.tsx +11 -2
  214. package/src/components/ui/query-bar.tsx +1 -1
  215. package/src/components/ui/row-notes.ts +79 -0
  216. package/src/core/state/app/layout.ts +4 -4
  217. package/src/data/cached-query.ts +8 -1
  218. package/src/data/config/chart-settings.ts +3 -3
  219. package/src/data/config/home.ts +10 -2
  220. package/src/data/config/layout.ts +4 -1
  221. package/src/data/config/store/node.ts +4 -0
  222. package/src/data/config/store/normalize.ts +13 -3
  223. package/src/data/config/store/portfolio-as-of-column.ts +2 -2
  224. package/src/data/json-storage.ts +2 -0
  225. package/src/data/saved-copies.ts +84 -0
  226. package/src/docs/snapshot.json +65 -32
  227. package/src/i18n/es.ts +29 -12
  228. package/src/i18n/ja.ts +29 -12
  229. package/src/i18n/ko.ts +29 -12
  230. package/src/i18n/zh-cn.ts +29 -12
  231. package/src/i18n/zh-tw.ts +29 -12
  232. package/src/layout/desks.ts +1 -1
  233. package/src/layout/launch-layout.ts +1 -1
  234. package/src/layout/pane-manager/floating-actions.ts +5 -3
  235. package/src/layout/pane-manager/floating.ts +43 -1
  236. package/src/layout/pane-manager/index.ts +2 -0
  237. package/src/layout/selected-ticker.ts +74 -0
  238. package/src/market-data/depositary-pair.ts +251 -0
  239. package/src/market-data/futures-board.ts +1 -1
  240. package/src/market-data/futures-contract.ts +124 -40
  241. package/src/market-data/fx-closes.ts +17 -2
  242. package/src/market-data/hooks.tsx +19 -11
  243. package/src/market-data/market/change-basis.ts +49 -7
  244. package/src/market-data/market/freshness.ts +34 -5
  245. package/src/market-data/market/period-return.ts +163 -0
  246. package/src/market-data/market/trading-sessions.ts +13 -0
  247. package/src/market-data/market/year-to-date.ts +8 -13
  248. package/src/market-data/performance.ts +20 -14
  249. package/src/market-data/perpetual-premium.ts +32 -0
  250. package/src/market-data/published-apac-sessions.ts +2 -1
  251. package/src/market-data/published-futures-sessions.ts +69 -0
  252. package/src/market-data/quotes/contributions.ts +5 -1
  253. package/src/market-data/quotes/freshness.ts +42 -0
  254. package/src/market-data/quotes/intraday-bar.ts +37 -0
  255. package/src/market-data/quotes/regular-session-valuation.ts +13 -8
  256. package/src/market-data/quotes/resolution.ts +4 -2
  257. package/src/market-data/tax-equivalent.ts +1 -1
  258. package/src/market-data/ticker-price-returns.ts +3 -1
  259. package/src/news/aggregator.ts +5 -1
  260. package/src/news/news-model.ts +4 -0
  261. package/src/news/types.ts +11 -0
  262. package/src/notifications/app-notifier.ts +1 -1
  263. package/src/plugins/auto-update.ts +2 -2
  264. package/src/plugins/builtin/account-management/index.tsx +1 -0
  265. package/src/plugins/builtin/account-management/pane.tsx +9 -8
  266. package/src/plugins/builtin/alerts/alert-engine.ts +29 -19
  267. package/src/plugins/builtin/alerts/calendar-events.ts +378 -0
  268. package/src/plugins/builtin/alerts/cli.ts +485 -76
  269. package/src/plugins/builtin/alerts/command.ts +5 -10
  270. package/src/plugins/builtin/alerts/event-rows.ts +9 -5
  271. package/src/plugins/builtin/alerts/events-pane.tsx +71 -56
  272. package/src/plugins/builtin/alerts/events.ts +107 -5
  273. package/src/plugins/builtin/alerts/fired-log.ts +78 -0
  274. package/src/plugins/builtin/alerts/format.ts +2 -1
  275. package/src/plugins/builtin/alerts/headless.ts +100 -39
  276. package/src/plugins/builtin/alerts/history-pane.tsx +105 -62
  277. package/src/plugins/builtin/alerts/history-rows.ts +89 -0
  278. package/src/plugins/builtin/alerts/index.tsx +45 -18
  279. package/src/plugins/builtin/alerts/iv-level.ts +365 -0
  280. package/src/plugins/builtin/alerts/levels.ts +3 -3
  281. package/src/plugins/builtin/alerts/pane.tsx +97 -29
  282. package/src/plugins/builtin/alerts/price.ts +35 -0
  283. package/src/plugins/builtin/alerts/quotes.ts +24 -0
  284. package/src/plugins/builtin/alerts/research-builder.ts +84 -11
  285. package/src/plugins/builtin/alerts/research-rules.ts +76 -3
  286. package/src/plugins/builtin/alerts/scheduled-check.ts +206 -32
  287. package/src/plugins/builtin/alerts/scheduled-sources.ts +26 -3
  288. package/src/plugins/builtin/alerts/scheduled.ts +188 -29
  289. package/src/plugins/builtin/alerts/storage.ts +13 -10
  290. package/src/plugins/builtin/alerts/targets.ts +12 -3
  291. package/src/plugins/builtin/analytics/index.tsx +8 -2
  292. package/src/plugins/builtin/analytics/metrics.ts +1 -1
  293. package/src/plugins/builtin/analytics/risk-book.ts +215 -0
  294. package/src/plugins/builtin/analytics/risk-client.ts +13 -6
  295. package/src/plugins/builtin/analytics/risk-headless.ts +55 -21
  296. package/src/plugins/builtin/analytics/risk-math.ts +6 -3
  297. package/src/plugins/builtin/analytics/risk-model.ts +297 -104
  298. package/src/plugins/builtin/analytics/risk-options.ts +17 -2
  299. package/src/plugins/builtin/analytics/risk-pane.tsx +97 -36
  300. package/src/plugins/builtin/attention/pane.tsx +6 -2
  301. package/src/plugins/builtin/awards/headless.ts +7 -3
  302. package/src/plugins/builtin/awards/model.ts +18 -0
  303. package/src/plugins/builtin/awards/pane.tsx +6 -3
  304. package/src/plugins/builtin/backtest/headless.ts +3 -3
  305. package/src/plugins/builtin/backtest/rules.ts +41 -5
  306. package/src/plugins/builtin/broker-manager/add-flow.tsx +12 -7
  307. package/src/plugins/builtin/broker-manager/detail.tsx +47 -19
  308. package/src/plugins/builtin/broker-manager/footer.ts +27 -11
  309. package/src/plugins/builtin/broker-manager/index.tsx +21 -12
  310. package/src/plugins/builtin/broker-manager/keyboard.ts +1 -1
  311. package/src/plugins/builtin/broker-manager/model.ts +12 -2
  312. package/src/plugins/builtin/broker-manager/pane-actions.tsx +183 -57
  313. package/src/plugins/builtin/broker-manager/table.ts +28 -12
  314. package/src/plugins/builtin/broker-trading/account-picker.tsx +2 -1
  315. package/src/plugins/builtin/broker-trading/chart-levels.ts +82 -13
  316. package/src/plugins/builtin/broker-trading/controller.ts +45 -13
  317. package/src/plugins/builtin/broker-trading/dock.tsx +22 -4
  318. package/src/plugins/builtin/broker-trading/headless.ts +2 -1
  319. package/src/plugins/builtin/broker-trading/index.tsx +7 -1
  320. package/src/plugins/builtin/broker-trading/linked-orders.ts +148 -0
  321. package/src/plugins/builtin/broker-trading/order-feed.ts +75 -7
  322. package/src/plugins/builtin/broker-trading/orders.tsx +109 -31
  323. package/src/plugins/builtin/broker-trading/overview-orders.tsx +9 -3
  324. package/src/plugins/builtin/broker-trading/pane-model.ts +30 -2
  325. package/src/plugins/builtin/broker-trading/pane.tsx +110 -23
  326. package/src/plugins/builtin/broker-trading/ticket-parts.tsx +36 -7
  327. package/src/plugins/builtin/broker-trading/ticket.tsx +112 -31
  328. package/src/plugins/builtin/buildout/cells.tsx +4 -0
  329. package/src/plugins/builtin/buildout/detail/index.tsx +5 -1
  330. package/src/plugins/builtin/buildout/detail/ui.tsx +7 -4
  331. package/src/plugins/builtin/buildout/pane/index.tsx +25 -12
  332. package/src/plugins/builtin/buildout/pane/status.tsx +0 -4
  333. package/src/plugins/builtin/builtin-plugin-meta.ts +1 -1
  334. package/src/plugins/builtin/catalysts/detail.tsx +3 -2
  335. package/src/plugins/builtin/catalysts/index.tsx +1 -1
  336. package/src/plugins/builtin/catalysts/model.ts +49 -4
  337. package/src/plugins/builtin/catalysts/pane.tsx +6 -8
  338. package/src/plugins/builtin/central-bank-rates/client.ts +5 -0
  339. package/src/plugins/builtin/central-bank-rates/headless.ts +36 -10
  340. package/src/plugins/builtin/central-bank-rates/model.ts +33 -8
  341. package/src/plugins/builtin/changelog/index.tsx +1 -0
  342. package/src/plugins/builtin/chart-composer/catalog-inventory.ts +1 -0
  343. package/src/plugins/builtin/chart-composer/chart-spec-edit.ts +2 -1
  344. package/src/plugins/builtin/chart-composer/chart-spec.ts +7 -0
  345. package/src/plugins/builtin/chart-composer/cli-options.ts +2 -5
  346. package/src/plugins/builtin/chart-composer/data-catalog-pane.tsx +2 -1
  347. package/src/plugins/builtin/chart-composer/editor/controller.ts +2 -0
  348. package/src/plugins/builtin/chart-composer/editor.tsx +4 -1
  349. package/src/plugins/builtin/chart-composer/headless-schema.ts +28 -26
  350. package/src/plugins/builtin/chart-composer/headless.ts +253 -35
  351. package/src/plugins/builtin/chart-composer/index.tsx +12 -2
  352. package/src/plugins/builtin/chart-composer/leverage-overlay.ts +142 -0
  353. package/src/plugins/builtin/chart-composer/pane.tsx +127 -28
  354. package/src/plugins/builtin/chart-composer/series-catalog.ts +1 -0
  355. package/src/plugins/builtin/chart-composer/series-expression.ts +65 -6
  356. package/src/plugins/builtin/chart-composer/session-history.ts +15 -21
  357. package/src/plugins/builtin/chart-composer/session-range.ts +4 -2
  358. package/src/plugins/builtin/chart-composer/settings.ts +31 -19
  359. package/src/plugins/builtin/chart-composer/use-series-catalog.ts +5 -6
  360. package/src/plugins/builtin/chart-composer/viewport-labels.ts +18 -8
  361. package/src/plugins/builtin/chat/attachments/model.ts +3 -1
  362. package/src/plugins/builtin/chat/content/index.tsx +1 -1
  363. package/src/plugins/builtin/chat/pane-links/open.ts +1 -1
  364. package/src/plugins/builtin/chat/people.ts +1 -1
  365. package/src/plugins/builtin/clinical-trials/client.ts +5 -2
  366. package/src/plugins/builtin/clinical-trials/model.ts +13 -4
  367. package/src/plugins/builtin/clinical-trials/pane.tsx +32 -12
  368. package/src/plugins/builtin/clinical-trials/ticker-sponsor.ts +17 -0
  369. package/src/plugins/builtin/cloud/askg/controller.ts +1 -1
  370. package/src/plugins/builtin/cloud/askg/lock-note.ts +1 -1
  371. package/src/plugins/builtin/cloud/askg/tool-display.ts +1 -1
  372. package/src/plugins/builtin/cloud/auth-commands.ts +3 -3
  373. package/src/plugins/builtin/cloud/team/pane-sections.tsx +105 -47
  374. package/src/plugins/builtin/cloud/team/pane-ui.tsx +42 -4
  375. package/src/plugins/builtin/cloud/team/pane.tsx +204 -64
  376. package/src/plugins/builtin/cloud/thesis/store.ts +45 -22
  377. package/src/plugins/builtin/cloud-tweets/registration.ts +1 -0
  378. package/src/plugins/builtin/commodities-energy/index.tsx +29 -2
  379. package/src/plugins/builtin/commodities-energy/view-state.ts +2 -0
  380. package/src/plugins/builtin/commodity-balances/pane.tsx +11 -4
  381. package/src/plugins/builtin/company-attention/app-rank.tsx +7 -5
  382. package/src/plugins/builtin/company-attention/building-model.ts +222 -0
  383. package/src/plugins/builtin/company-attention/building.tsx +172 -0
  384. package/src/plugins/builtin/company-attention/client.ts +117 -1
  385. package/src/plugins/builtin/company-attention/evidence.ts +16 -3
  386. package/src/plugins/builtin/company-attention/headless.ts +101 -5
  387. package/src/plugins/builtin/company-attention/index.tsx +6 -3
  388. package/src/plugins/builtin/company-attention/model.ts +33 -7
  389. package/src/plugins/builtin/company-attention/moves-model.ts +253 -0
  390. package/src/plugins/builtin/company-attention/moves.tsx +159 -0
  391. package/src/plugins/builtin/company-attention/pane.tsx +79 -23
  392. package/src/plugins/builtin/company-attention/signals-model.ts +229 -0
  393. package/src/plugins/builtin/company-attention/signals.tsx +160 -0
  394. package/src/plugins/builtin/company-kpis/headless.ts +3 -2
  395. package/src/plugins/builtin/company-kpis/model.ts +2 -2
  396. package/src/plugins/builtin/company-kpis/pane.tsx +1 -1
  397. package/src/plugins/builtin/composite-plugins.ts +2 -1
  398. package/src/plugins/builtin/congress-trades/headless.ts +1 -1
  399. package/src/plugins/builtin/connections/index.ts +1 -0
  400. package/src/plugins/builtin/correlation/headless-schema.ts +3 -2
  401. package/src/plugins/builtin/correlation/headless.ts +5 -3
  402. package/src/plugins/builtin/cot/headless.ts +28 -6
  403. package/src/plugins/builtin/cot/model.ts +12 -0
  404. package/src/plugins/builtin/cot/pane.tsx +3 -2
  405. package/src/plugins/builtin/cpi/headless.ts +5 -1
  406. package/src/plugins/builtin/cpi/pane.tsx +11 -9
  407. package/src/plugins/builtin/credit-boards/model.ts +2 -0
  408. package/src/plugins/builtin/credit-documents/headless.ts +1 -1
  409. package/src/plugins/builtin/crypto-board/client.ts +86 -0
  410. package/src/plugins/builtin/crypto-board/defi-view.tsx +218 -0
  411. package/src/plugins/builtin/crypto-board/defi.ts +239 -0
  412. package/src/plugins/builtin/crypto-board/headless.ts +117 -6
  413. package/src/plugins/builtin/crypto-board/index.tsx +8 -3
  414. package/src/plugins/builtin/crypto-board/model.ts +40 -8
  415. package/src/plugins/builtin/crypto-board/pane.tsx +55 -21
  416. package/src/plugins/builtin/crypto-board/series.ts +19 -1
  417. package/src/plugins/builtin/crypto-etf-flows/client.ts +60 -0
  418. package/src/plugins/builtin/crypto-etf-flows/headless.ts +132 -0
  419. package/src/plugins/builtin/crypto-etf-flows/index.tsx +44 -0
  420. package/src/plugins/builtin/crypto-etf-flows/model.ts +121 -0
  421. package/src/plugins/builtin/crypto-etf-flows/pane.tsx +193 -0
  422. package/src/plugins/builtin/debug/index.tsx +1 -0
  423. package/src/plugins/builtin/dividend-yield/index.tsx +1 -1
  424. package/src/plugins/builtin/docs/index.tsx +1 -1
  425. package/src/plugins/builtin/docs/pane.tsx +2 -2
  426. package/src/plugins/builtin/docs/targets.ts +1 -1
  427. package/src/plugins/builtin/doe/client.ts +5 -1
  428. package/src/plugins/builtin/doe/headless.ts +12 -6
  429. package/src/plugins/builtin/doe/model.ts +43 -6
  430. package/src/plugins/builtin/doe/pane.tsx +18 -11
  431. package/src/plugins/builtin/earnings/board-model.ts +13 -6
  432. package/src/plugins/builtin/earnings/board-table.ts +4 -1
  433. package/src/plugins/builtin/earnings/board.tsx +253 -50
  434. package/src/plugins/builtin/earnings/calendar-model.ts +188 -0
  435. package/src/plugins/builtin/earnings/calendar.tsx +338 -0
  436. package/src/plugins/builtin/earnings/client.ts +4 -3
  437. package/src/plugins/builtin/earnings/headless.ts +53 -15
  438. package/src/plugins/builtin/earnings/history-model.ts +53 -36
  439. package/src/plugins/builtin/earnings/index.tsx +15 -22
  440. package/src/plugins/builtin/earnings/model.ts +17 -12
  441. package/src/plugins/builtin/earnings/scope.ts +89 -0
  442. package/src/plugins/builtin/earnings-calls/calendar.tsx +310 -0
  443. package/src/plugins/builtin/earnings-calls/data.ts +146 -2
  444. package/src/plugins/builtin/earnings-calls/headless.ts +151 -9
  445. package/src/plugins/builtin/earnings-calls/index.tsx +3 -3
  446. package/src/plugins/builtin/earnings-calls/lock-note.ts +1 -1
  447. package/src/plugins/builtin/earnings-calls/pane.tsx +149 -31
  448. package/src/plugins/builtin/earnings-calls/upcoming.ts +195 -0
  449. package/src/plugins/builtin/earnings-ripple/pane.tsx +10 -5
  450. package/src/plugins/builtin/econ/calendar-model.ts +132 -20
  451. package/src/plugins/builtin/econ/detail-view.tsx +48 -10
  452. package/src/plugins/builtin/econ/fred-catalog.ts +23 -6
  453. package/src/plugins/builtin/econ/fred-series-map.ts +4 -0
  454. package/src/plugins/builtin/econ/index.tsx +112 -25
  455. package/src/plugins/builtin/econ/print-watch.ts +2 -1
  456. package/src/plugins/builtin/econ/types.ts +32 -1
  457. package/src/plugins/builtin/econ-statistics/client.ts +16 -3
  458. package/src/plugins/builtin/econ-statistics/defs.ts +4 -0
  459. package/src/plugins/builtin/econ-statistics/detail.tsx +2 -2
  460. package/src/plugins/builtin/econ-statistics/headless.ts +13 -2
  461. package/src/plugins/builtin/econ-statistics/index.tsx +3 -3
  462. package/src/plugins/builtin/econ-statistics/pane.tsx +2 -1
  463. package/src/plugins/builtin/econ-statistics/stats.ts +103 -0
  464. package/src/plugins/builtin/econ-statistics/view.ts +16 -1
  465. package/src/plugins/builtin/equity-screener/client.ts +21 -3
  466. package/src/plugins/builtin/equity-screener/headless.ts +68 -6
  467. package/src/plugins/builtin/equity-screener/live.ts +1 -1
  468. package/src/plugins/builtin/equity-screener/model.ts +6 -0
  469. package/src/plugins/builtin/equity-screener/pane.tsx +45 -10
  470. package/src/plugins/builtin/equity-screener/screen-check.ts +90 -0
  471. package/src/plugins/builtin/equity-screener/ticker-check.tsx +148 -0
  472. package/src/plugins/builtin/estimate-revisions/headless.ts +3 -1
  473. package/src/plugins/builtin/estimate-revisions/lock-note.ts +3 -3
  474. package/src/plugins/builtin/estimate-revisions/model.ts +8 -10
  475. package/src/plugins/builtin/exposure/headless.ts +51 -6
  476. package/src/plugins/builtin/exposure/index.tsx +28 -2
  477. package/src/plugins/builtin/exposure/model.ts +7 -0
  478. package/src/plugins/builtin/exposure/pane.tsx +6 -1
  479. package/src/plugins/builtin/fear-greed/index.tsx +1 -1
  480. package/src/plugins/builtin/filing-events/index.tsx +1 -1
  481. package/src/plugins/builtin/futures/model.ts +10 -9
  482. package/src/plugins/builtin/futures/returns.ts +8 -36
  483. package/src/plugins/builtin/futures/table.tsx +1 -1
  484. package/src/plugins/builtin/futures-curve/client.ts +40 -9
  485. package/src/plugins/builtin/futures-curve/headless.ts +39 -17
  486. package/src/plugins/builtin/futures-curve/model.ts +258 -69
  487. package/src/plugins/builtin/futures-curve/pane.tsx +46 -17
  488. package/src/plugins/builtin/fx-matrix/client.ts +15 -8
  489. package/src/plugins/builtin/fx-matrix/headless.ts +32 -14
  490. package/src/plugins/builtin/fx-matrix/index.tsx +13 -11
  491. package/src/plugins/builtin/fx-matrix/live-legs.ts +22 -0
  492. package/src/plugins/builtin/fx-matrix/settings.ts +2 -1
  493. package/src/plugins/builtin/gpu/headless.ts +9 -4
  494. package/src/plugins/builtin/help/index.tsx +13 -3
  495. package/src/plugins/builtin/holders/beneficial-model.ts +8 -11
  496. package/src/plugins/builtin/holders/beneficial-report.ts +6 -5
  497. package/src/plugins/builtin/holders/beneficial-view.tsx +7 -3
  498. package/src/plugins/builtin/holders/client.ts +13 -1
  499. package/src/plugins/builtin/holders/format.ts +28 -17
  500. package/src/plugins/builtin/holders/headless.ts +46 -7
  501. package/src/plugins/builtin/holders/index-holders.ts +264 -0
  502. package/src/plugins/builtin/holders/pane.tsx +79 -15
  503. package/src/plugins/builtin/holders/report-rows.ts +35 -7
  504. package/src/plugins/builtin/holders/table-model.ts +2 -1
  505. package/src/plugins/builtin/holders/treemap.tsx +2 -2
  506. package/src/plugins/builtin/insider/headless.ts +1 -1
  507. package/src/plugins/builtin/insider/signals-client.ts +1 -1
  508. package/src/plugins/builtin/insider/signals.tsx +1 -1
  509. package/src/plugins/builtin/ipo-calendar/pane.tsx +7 -4
  510. package/src/plugins/builtin/iv-history/client.ts +20 -0
  511. package/src/plugins/builtin/iv-history/headless.ts +4 -4
  512. package/src/plugins/builtin/iv-history/index.tsx +1 -1
  513. package/src/plugins/builtin/iv-history/model.ts +13 -4
  514. package/src/plugins/builtin/iv-history/series.ts +3 -1
  515. package/src/plugins/builtin/jobs/lock-note.ts +1 -1
  516. package/src/plugins/builtin/jobs/model.ts +4 -15
  517. package/src/plugins/builtin/jobs/pane.tsx +7 -5
  518. package/src/plugins/builtin/jobs/share-bars.tsx +11 -5
  519. package/src/plugins/builtin/jodi/pane.tsx +10 -4
  520. package/src/plugins/builtin/layout-manager/index.tsx +1 -0
  521. package/src/plugins/builtin/macro-day/headless.ts +20 -7
  522. package/src/plugins/builtin/macro-day/index.tsx +3 -2
  523. package/src/plugins/builtin/macro-day/model.ts +29 -8
  524. package/src/plugins/builtin/macro-day/pane.tsx +46 -10
  525. package/src/plugins/builtin/macro-day/releases.ts +55 -13
  526. package/src/plugins/builtin/market-heatmap/data.ts +9 -2
  527. package/src/plugins/builtin/market-heatmap/evidence.ts +1 -1
  528. package/src/plugins/builtin/market-heatmap/headless.ts +9 -6
  529. package/src/plugins/builtin/market-heatmap/index.tsx +3 -3
  530. package/src/plugins/builtin/market-heatmap/model.ts +10 -7
  531. package/src/plugins/builtin/market-movers/client.ts +33 -19
  532. package/src/plugins/builtin/market-movers/headless.ts +8 -2
  533. package/src/plugins/builtin/market-movers/index.tsx +16 -10
  534. package/src/plugins/builtin/market-movers/screener.ts +29 -8
  535. package/src/plugins/builtin/market-movers/session-body.tsx +4 -2
  536. package/src/plugins/builtin/market-movers/session-table.ts +4 -2
  537. package/src/plugins/builtin/market-movers/table.ts +4 -1
  538. package/src/plugins/builtin/market-valuation/headless.ts +2 -0
  539. package/src/plugins/builtin/market-valuation/view.ts +5 -0
  540. package/src/plugins/builtin/members/headless.ts +6 -5
  541. package/src/plugins/builtin/members/pane.tsx +11 -4
  542. package/src/plugins/builtin/mna/client.ts +1 -0
  543. package/src/plugins/builtin/mna/detail.tsx +20 -32
  544. package/src/plugins/builtin/mna/distress/detail.tsx +16 -4
  545. package/src/plugins/builtin/mna/distress/model.ts +3 -2
  546. package/src/plugins/builtin/mna/distress/pane.tsx +7 -4
  547. package/src/plugins/builtin/mna/headless.ts +6 -13
  548. package/src/plugins/builtin/mna/model.ts +93 -15
  549. package/src/plugins/builtin/mna/pane.tsx +5 -4
  550. package/src/plugins/builtin/news/headless.ts +12 -6
  551. package/src/plugins/builtin/news/index.tsx +10 -1
  552. package/src/plugins/builtin/news/wire/index.tsx +3 -2
  553. package/src/plugins/builtin/news/wire/news/command-bar-search.ts +26 -10
  554. package/src/plugins/builtin/news/wire/news/query-presets.ts +6 -2
  555. package/src/plugins/builtin/news/wire/rss/cli.ts +3 -3
  556. package/src/plugins/builtin/notes/cli.ts +49 -14
  557. package/src/plugins/builtin/openfda/pane.tsx +1 -1
  558. package/src/plugins/builtin/options/carry.ts +2 -2
  559. package/src/plugins/builtin/options/index.tsx +1 -1
  560. package/src/plugins/builtin/options/view.tsx +10 -10
  561. package/src/plugins/builtin/options-calculator/headless.ts +46 -7
  562. package/src/plugins/builtin/options-scenario/client.ts +123 -28
  563. package/src/plugins/builtin/options-scenario/collar.ts +8 -6
  564. package/src/plugins/builtin/options-scenario/csp-screen-headless.ts +127 -0
  565. package/src/plugins/builtin/options-scenario/csp-screen-pane.tsx +165 -0
  566. package/src/plugins/builtin/options-scenario/csp-screen.ts +258 -0
  567. package/src/plugins/builtin/options-scenario/csp.ts +101 -21
  568. package/src/plugins/builtin/options-scenario/headless.ts +36 -15
  569. package/src/plugins/builtin/options-scenario/hedge.ts +20 -14
  570. package/src/plugins/builtin/options-scenario/index.tsx +28 -3
  571. package/src/plugins/builtin/options-scenario/model.ts +13 -0
  572. package/src/plugins/builtin/options-scenario/pane.tsx +9 -5
  573. package/src/plugins/builtin/perps/equity-row.tsx +11 -3
  574. package/src/plugins/builtin/perps/freshness.ts +8 -5
  575. package/src/plugins/builtin/perps/headless.ts +3 -1
  576. package/src/plugins/builtin/perps/list-perpetuals.ts +25 -4
  577. package/src/plugins/builtin/perps/live-rows.ts +161 -0
  578. package/src/plugins/builtin/perps/markets-section.tsx +154 -0
  579. package/src/plugins/builtin/perps/pane.tsx +36 -17
  580. package/src/plugins/builtin/perps/venue-markets.ts +96 -0
  581. package/src/plugins/builtin/plugin-marketplace/index.tsx +2 -1
  582. package/src/plugins/builtin/plugin-marketplace/pane.tsx +143 -59
  583. package/src/plugins/builtin/portfolio-list/cli/bulk-symbols.ts +72 -24
  584. package/src/plugins/builtin/portfolio-list/cli/portfolio-command.ts +158 -141
  585. package/src/plugins/builtin/portfolio-list/cli/render.ts +49 -20
  586. package/src/plugins/builtin/portfolio-list/cli/shared.ts +3 -3
  587. package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +29 -24
  588. package/src/plugins/builtin/portfolio-list/headless.ts +6 -3
  589. package/src/plugins/builtin/portfolio-list/income.ts +13 -2
  590. package/src/plugins/builtin/portfolio-list/index.tsx +9 -2
  591. package/src/plugins/builtin/portfolio-list/pane/index.tsx +21 -8
  592. package/src/plugins/builtin/portfolio-list/pane/purchase-date-fx.ts +46 -0
  593. package/src/plugins/builtin/portfolio-list/summary/live-accounts.ts +16 -9
  594. package/src/plugins/builtin/portfolio-list/summary/totals.ts +2 -15
  595. package/src/plugins/builtin/power/client.ts +4 -1
  596. package/src/plugins/builtin/power/evidence.ts +22 -7
  597. package/src/plugins/builtin/power/gas.tsx +5 -1
  598. package/src/plugins/builtin/power/pane.tsx +8 -1
  599. package/src/plugins/builtin/power/prices.tsx +10 -3
  600. package/src/plugins/builtin/research/analyst-headless.ts +25 -8
  601. package/src/plugins/builtin/research/analyst-model.ts +68 -3
  602. package/src/plugins/builtin/research/corporate-actions-pane.tsx +63 -14
  603. package/src/plugins/builtin/research/event-model.ts +3 -1
  604. package/src/plugins/builtin/research/event-sources.ts +12 -4
  605. package/src/plugins/builtin/research/index.tsx +2 -1
  606. package/src/plugins/builtin/research/relative-valuation-basis.ts +58 -0
  607. package/src/plugins/builtin/research/relative-valuation-columns.ts +31 -2
  608. package/src/plugins/builtin/research/relative-valuation-currency.ts +12 -5
  609. package/src/plugins/builtin/research/relative-valuation-headless.ts +84 -26
  610. package/src/plugins/builtin/research/relative-valuation-model.ts +88 -19
  611. package/src/plugins/builtin/research/relative-valuation-pane.tsx +76 -9
  612. package/src/plugins/builtin/research/relative-valuation-peers.ts +1 -1
  613. package/src/plugins/builtin/reverse-dcf/model.ts +6 -2
  614. package/src/plugins/builtin/risk-factors/index.tsx +2 -2
  615. package/src/plugins/builtin/scanner/lock-note.ts +1 -1
  616. package/src/plugins/builtin/sec/forms.ts +13 -0
  617. package/src/plugins/builtin/sec/fund-abroad.ts +32 -0
  618. package/src/plugins/builtin/sec/fund-facts.ts +68 -8
  619. package/src/plugins/builtin/sec/headless.ts +85 -8
  620. package/src/plugins/builtin/sec/index.tsx +58 -12
  621. package/src/plugins/builtin/sectors/client.ts +2 -1
  622. package/src/plugins/builtin/sectors/sector-model.ts +11 -15
  623. package/src/plugins/builtin/series-inventory.ts +2 -0
  624. package/src/plugins/builtin/shared/broker-reconnect.ts +107 -22
  625. package/src/plugins/builtin/shared/cloud-upgrade.ts +34 -6
  626. package/src/plugins/builtin/shared/earnings-calendar.ts +375 -0
  627. package/src/plugins/builtin/{earnings/estimate-basis.ts → shared/earnings-estimate-basis.ts} +1 -1
  628. package/src/plugins/builtin/shared/earnings-report.ts +3 -3
  629. package/src/plugins/builtin/shared/fx-rate-freshness.ts +23 -1
  630. package/src/plugins/builtin/shared/job-posting.ts +129 -0
  631. package/src/plugins/builtin/shared/pro-lock-note.ts +3 -3
  632. package/src/plugins/builtin/shared/report-freshness.ts +3 -0
  633. package/src/plugins/builtin/shared/research-trading.tsx +21 -0
  634. package/src/plugins/builtin/shared/series-cache.ts +2 -0
  635. package/src/plugins/builtin/shared/ticker-surface.ts +2 -1
  636. package/src/plugins/builtin/short-interest/client.ts +2 -0
  637. package/src/plugins/builtin/short-interest/headless.ts +41 -12
  638. package/src/plugins/builtin/short-interest/index.tsx +23 -1
  639. package/src/plugins/builtin/short-interest/model.ts +70 -19
  640. package/src/plugins/builtin/short-interest/pane.tsx +19 -2
  641. package/src/plugins/builtin/short-interest/publications-client.ts +82 -0
  642. package/src/plugins/builtin/short-interest/publications-headless.ts +29 -0
  643. package/src/plugins/builtin/short-interest/publications-model.ts +50 -0
  644. package/src/plugins/builtin/short-interest/publications-pane.tsx +66 -0
  645. package/src/plugins/builtin/short-interest/schedule.ts +35 -2
  646. package/src/plugins/builtin/short-interest/surface.tsx +11 -4
  647. package/src/plugins/builtin/short-interest/types.ts +9 -0
  648. package/src/plugins/builtin/short-interest/watch-client.ts +14 -8
  649. package/src/plugins/builtin/short-interest/watch-model.ts +12 -25
  650. package/src/plugins/builtin/short-interest/watch-pane.tsx +5 -1
  651. package/src/plugins/builtin/supply-chain/flow.tsx +33 -9
  652. package/src/plugins/builtin/supply-chain/model.ts +51 -3
  653. package/src/plugins/builtin/supply-chain/pane.tsx +78 -39
  654. package/src/plugins/builtin/supply-chain/row-evidence.tsx +1 -1
  655. package/src/plugins/builtin/themes/headless.ts +8 -5
  656. package/src/plugins/builtin/themes/model.ts +14 -4
  657. package/src/plugins/builtin/themes/pane.tsx +24 -5
  658. package/src/plugins/builtin/thirteenf/headless.ts +5 -5
  659. package/src/plugins/builtin/thirteenf/signals.ts +3 -1
  660. package/src/plugins/builtin/ticker-detail/adr-pair/headless.ts +123 -0
  661. package/src/plugins/builtin/ticker-detail/adr-pair/model.ts +132 -0
  662. package/src/plugins/builtin/ticker-detail/adr-pair/tab.tsx +87 -0
  663. package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +40 -26
  664. package/src/plugins/builtin/ticker-detail/data-panes/history-bars.ts +8 -4
  665. package/src/plugins/builtin/ticker-detail/data-panes/returns-history.ts +67 -3
  666. package/src/plugins/builtin/ticker-detail/data-panes/returns-model.ts +112 -5
  667. package/src/plugins/builtin/ticker-detail/data-panes/returns-pane.tsx +17 -2
  668. package/src/plugins/builtin/ticker-detail/financials/aggregation.ts +21 -7
  669. package/src/plugins/builtin/ticker-detail/financials/model.ts +36 -1
  670. package/src/plugins/builtin/ticker-detail/financials/offerings.ts +56 -0
  671. package/src/plugins/builtin/ticker-detail/financials/ratios.ts +62 -13
  672. package/src/plugins/builtin/ticker-detail/financials/tab.tsx +30 -4
  673. package/src/plugins/builtin/ticker-detail/headless-schema.ts +14 -2
  674. package/src/plugins/builtin/ticker-detail/headless.ts +148 -35
  675. package/src/plugins/builtin/ticker-detail/index.tsx +37 -5
  676. package/src/plugins/builtin/ticker-detail/overview/model.ts +65 -10
  677. package/src/plugins/builtin/ticker-detail/overview/pane.tsx +9 -1
  678. package/src/plugins/builtin/ticker-detail/overview-tab.tsx +68 -11
  679. package/src/plugins/builtin/ticker-detail/pane.tsx +11 -0
  680. package/src/plugins/builtin/ticker-detail/quote-footer.ts +8 -3
  681. package/src/plugins/builtin/ticker-detail/research-tabs.ts +11 -0
  682. package/src/plugins/builtin/vol-surface/client.ts +5 -4
  683. package/src/plugins/builtin/vol-surface/headless.ts +12 -3
  684. package/src/plugins/builtin/vol-surface/model.ts +4 -2
  685. package/src/plugins/builtin/volatility/model.ts +5 -10
  686. package/src/plugins/builtin/world-venue-map/basemap-layer.tsx +4 -3
  687. package/src/plugins/builtin/world-venue-map/basemap.ts +3 -1
  688. package/src/plugins/builtin/world-venue-map/chokepoint-chart.ts +40 -0
  689. package/src/plugins/builtin/world-venue-map/evidence.ts +1 -1
  690. package/src/plugins/builtin/world-venue-map/geo-series.ts +90 -11
  691. package/src/plugins/builtin/world-venue-map/headless.ts +1 -1
  692. package/src/plugins/builtin/world-venue-map/index.ts +3 -26
  693. package/src/plugins/builtin/world-venue-map/layers.ts +1 -1
  694. package/src/plugins/builtin/world-venue-map/map.tsx +2 -1
  695. package/src/plugins/builtin/world-venue-map/pane.tsx +4 -2
  696. package/src/plugins/builtin/world-venue-map/venue-header.tsx +15 -4
  697. package/src/plugins/builtin/yield-curve/client.ts +25 -0
  698. package/src/plugins/builtin/yield-curve/curves.ts +7 -4
  699. package/src/plugins/builtin/yield-curve/headless.ts +38 -4
  700. package/src/plugins/builtin/yield-curve/history.ts +4 -3
  701. package/src/plugins/builtin/yield-curve/index.tsx +12 -6
  702. package/src/plugins/builtin/yield-curve/swaps-model.ts +93 -0
  703. package/src/plugins/builtin/yield-curve/swaps.tsx +99 -0
  704. package/src/plugins/bundle.ts +1 -1
  705. package/src/plugins/catalog-browser.ts +2 -1
  706. package/src/plugins/compat.ts +3 -3
  707. package/src/plugins/dependencies.ts +75 -14
  708. package/src/plugins/extracted-plugins.ts +132 -34
  709. package/src/plugins/host-link.ts +149 -34
  710. package/src/plugins/installer.ts +35 -10
  711. package/src/plugins/loader.ts +206 -38
  712. package/src/plugins/manager-node.ts +2 -2
  713. package/src/plugins/marketplace/deactivation.ts +22 -0
  714. package/src/plugins/marketplace/model.ts +2 -2
  715. package/src/plugins/marketplace/packs.ts +1 -1
  716. package/src/plugins/ownership.ts +1 -1
  717. package/src/plugins/peer-retry.ts +155 -0
  718. package/src/plugins/registry/contributions.ts +3 -1
  719. package/src/plugins/registry/index.ts +4 -3
  720. package/src/plugins/registry/plugin-state.ts +3 -0
  721. package/src/plugins/seed-notice.ts +20 -0
  722. package/src/plugins/shortcut-argument.ts +39 -0
  723. package/src/portfolio/allocation.ts +1 -1
  724. package/src/portfolio/collection-name.ts +31 -0
  725. package/src/portfolio/column-values.ts +10 -8
  726. package/src/portfolio/cost-fx.ts +296 -19
  727. package/src/portfolio/manual-lots.ts +75 -0
  728. package/src/portfolio/mutations.ts +60 -22
  729. package/src/portfolio/suffixed-listings.ts +209 -0
  730. package/src/portfolio/totals-currency.ts +24 -0
  731. package/src/public/__snapshots__/public-api.test.ts.snap +14 -0
  732. package/src/public/time-series.ts +11 -8
  733. package/src/remote/schema.ts +1 -1
  734. package/src/renderers/browser/config-host.ts +3 -0
  735. package/src/renderers/browser/main.tsx +23 -3
  736. package/src/renderers/dom/boot-frame-page.ts +187 -0
  737. package/src/renderers/dom/boot-frame.ts +237 -0
  738. package/src/renderers/dom/build-assets.ts +46 -8
  739. package/src/renderers/dom/dom-ui-host.tsx +4 -29
  740. package/src/renderers/dom/host/ascii-text.ts +16 -2
  741. package/src/renderers/dom/host/box.tsx +43 -2
  742. package/src/renderers/dom/host/chart-surface.tsx +2 -0
  743. package/src/renderers/dom/host/hls.chunk.ts +3 -0
  744. package/src/renderers/dom/host/image-surface.tsx +49 -0
  745. package/src/renderers/dom/host/media-surface.tsx +24 -18
  746. package/src/renderers/dom/host/mouse.ts +30 -0
  747. package/src/renderers/dom/host/size-observer.ts +1 -1
  748. package/src/renderers/dom/host/style.ts +1 -1
  749. package/src/renderers/dom/styles.css +76 -0
  750. package/src/renderers/dom/test-utils.tsx +2 -1
  751. package/src/renderers/electrobun/bun/application-menu/index.ts +3 -3
  752. package/src/renderers/electrobun/bun/desktop/backend-requests.ts +3 -0
  753. package/src/renderers/electrobun/bun/desktop/backend.ts +46 -3
  754. package/src/renderers/electrobun/bun/desktop/detached-windows.ts +1 -1
  755. package/src/renderers/electrobun/bun/desktop/host-requests.ts +9 -3
  756. package/src/renderers/electrobun/bun/desktop/initialization.ts +81 -18
  757. package/src/renderers/electrobun/bun/external-plugins.ts +29 -7
  758. package/src/renderers/electrobun/bun/index.ts +11 -1
  759. package/src/renderers/electrobun/bun/window/boot-frame.ts +67 -0
  760. package/src/renderers/electrobun/bun/window/create.ts +4 -1
  761. package/src/renderers/electrobun/shared/boot-frame.ts +7 -0
  762. package/src/renderers/electrobun/shared/protocol.ts +6 -1
  763. package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +1 -1
  764. package/src/renderers/electrobun/view/config-host.ts +3 -0
  765. package/src/renderers/electrobun/view/fatal-screen.tsx +1 -1
  766. package/src/renderers/electrobun/view/main.tsx +30 -4
  767. package/src/renderers/electrobun/view/news-source.ts +5 -5
  768. package/src/renderers/electrobun/view/remote/asset-data-client.ts +1 -1
  769. package/src/renderers/electrobun/view/ui-host.tsx +1 -1
  770. package/src/renderers/opentui/browser-open.ts +88 -0
  771. package/src/renderers/opentui/host.tsx +5 -14
  772. package/src/renderers/opentui/image/loader.ts +3 -2
  773. package/src/renderers/opentui/native-smoke.ts +10 -1
  774. package/src/renderers/opentui/pane-image/index.ts +2 -1
  775. package/src/renderers/opentui/render-lib.ts +253 -0
  776. package/src/renderers/opentui/render-timing-smoke.ts +1 -1
  777. package/src/renderers/opentui/start.tsx +1 -1
  778. package/src/renderers/share/layout-view.tsx +2 -2
  779. package/src/renderers/share/main.tsx +4 -4
  780. package/src/renderers/share/view.tsx +1 -1
  781. package/src/series/resolve.ts +22 -6
  782. package/src/series/standalone.ts +30 -2
  783. package/src/series/types.ts +8 -1
  784. package/src/shares/api.ts +4 -1
  785. package/src/shares/pane.ts +1 -1
  786. package/src/sources/gloomberb-cloud/fred-series.ts +46 -1
  787. package/src/sources/gloomberb-cloud/index.ts +32 -16
  788. package/src/sources/gloomberb-cloud/news.ts +39 -0
  789. package/src/sources/gloomberb-cloud/normalizers.ts +14 -1
  790. package/src/sources/gloomberb-cloud/perpetuals.ts +49 -1
  791. package/src/sources/listing-symbols.ts +37 -0
  792. package/src/sources/provider-errors.ts +16 -2
  793. package/src/sources/provider-router/financial-routes.ts +21 -3
  794. package/src/sources/provider-router/financials.ts +15 -2
  795. package/src/sources/provider-router/history.ts +30 -8
  796. package/src/sources/provider-router/primary.ts +1 -1
  797. package/src/state/app/bootstrap.ts +23 -0
  798. package/src/state/hooks/inline-tickers.ts +30 -5
  799. package/src/sync/controller.ts +1 -1
  800. package/src/sync/core-contributors.ts +46 -14
  801. package/src/team/collections-sync.ts +2 -1
  802. package/src/team/collections.ts +178 -17
  803. package/src/telemetry/crash-reports.ts +17 -4
  804. package/src/test-support/builtin-panes.ts +1 -1
  805. package/src/theme/colors.ts +3 -30
  806. package/src/theme/ui-tokens.ts +37 -1
  807. package/src/tickers/company-name-listing.ts +210 -33
  808. package/src/tickers/index-roots.ts +47 -0
  809. package/src/tickers/instrument-label.ts +5 -1
  810. package/src/tickers/metadata.ts +10 -0
  811. package/src/tickers/perpetual-listing.ts +5 -2
  812. package/src/tickers/search/home-listing.ts +75 -0
  813. package/src/tickers/search/index.ts +76 -27
  814. package/src/tickers/search/ranking.ts +54 -4
  815. package/src/tickers/search/upsert.ts +29 -0
  816. package/src/tickers/terminal-codes.ts +416 -40
  817. package/src/time-series/bar-aggregation.ts +243 -0
  818. package/src/time-series/base-series.ts +307 -0
  819. package/src/time-series/chart-bounds.ts +349 -0
  820. package/src/time-series/chart-seed.ts +142 -0
  821. package/src/time-series/economic.ts +5 -0
  822. package/src/time-series/fundamentals.ts +18 -3
  823. package/src/time-series/history-acquisition.ts +499 -0
  824. package/src/time-series/leverage.ts +100 -0
  825. package/src/time-series/market-resolution.ts +4 -2
  826. package/src/time-series/market.ts +2 -1
  827. package/src/time-series/price-comparison.ts +175 -30
  828. package/src/time-series/range.ts +9 -1
  829. package/src/time-series/resolution.ts +174 -16
  830. package/src/time-series/resolve-context.ts +157 -0
  831. package/src/time-series/resolve.ts +126 -1577
  832. package/src/time-series/series-name.ts +38 -0
  833. package/src/time-series/series-presentation.ts +208 -0
  834. package/src/time-series/spec.ts +11 -6
  835. package/src/time-series/studies.ts +109 -12
  836. package/src/time-series/tail-reconcile.ts +121 -0
  837. package/src/time-series/types.ts +29 -2
  838. package/src/time-series/use-chart-resolution.ts +4 -5
  839. package/src/types/broker.ts +10 -0
  840. package/src/types/config.ts +14 -0
  841. package/src/types/data-provider.ts +14 -0
  842. package/src/types/exchange-rate.ts +6 -0
  843. package/src/types/financials.ts +104 -7
  844. package/src/types/headless.ts +76 -6
  845. package/src/types/instrument.ts +3 -0
  846. package/src/types/plugin.ts +65 -8
  847. package/src/types/price-history.ts +2 -0
  848. package/src/types/ticker.ts +13 -0
  849. package/src/types/trading.ts +59 -1
  850. package/src/ui/ascii-font.ts +13 -1
  851. package/src/ui/host.tsx +6 -1
  852. package/src/updater/command-names.ts +175 -0
  853. package/src/updater/index.ts +10 -5
  854. package/src/utils/calendar-date.ts +32 -15
  855. package/src/utils/cash-runway.ts +241 -0
  856. package/src/utils/central-banks.ts +42 -0
  857. package/src/utils/cli-output.ts +259 -80
  858. package/src/utils/contract-month.ts +16 -0
  859. package/src/utils/crypto-pair.ts +61 -3
  860. package/src/utils/currency-units.ts +29 -0
  861. package/src/utils/datetime-format.ts +10 -0
  862. package/src/utils/debug-log.ts +1 -1
  863. package/src/utils/decimal-comma.ts +39 -6
  864. package/src/utils/exchange-announcements.ts +71 -0
  865. package/src/utils/exchange-rate-snapshot.ts +10 -0
  866. package/src/utils/financial-statements.ts +83 -4
  867. package/src/utils/format.ts +34 -16
  868. package/src/utils/fundamentals.ts +150 -34
  869. package/src/utils/fx-market-hours.ts +10 -1
  870. package/src/utils/latest-financial-period.ts +8 -0
  871. package/src/utils/linux-libc.ts +54 -0
  872. package/src/utils/market-capitalization.ts +111 -15
  873. package/src/utils/max-drawdown.ts +64 -0
  874. package/src/utils/network-failure.ts +83 -0
  875. package/src/utils/option-expiry.ts +139 -7
  876. package/src/utils/price-earnings.ts +11 -5
  877. package/src/utils/price-history.ts +18 -8
  878. package/src/utils/price-window.ts +131 -0
  879. package/src/utils/release-date.ts +47 -0
  880. package/src/utils/sec.ts +3 -0
  881. package/src/utils/throttled-fetch.ts +11 -4
  882. package/src/utils/trailing-eps.ts +67 -0
  883. package/src/utils/typed-text.ts +21 -0
  884. package/src/utils/utc-time.ts +24 -1
  885. package/src/version.ts +6 -0
  886. package/src/cli/pane-functions/screenshot.ts +0 -2122
package/src/i18n/ko.ts CHANGED
@@ -38,6 +38,8 @@ export const ko: Record<string, string> = {
38
38
  "Name": "이름",
39
39
  "Title": "제목",
40
40
  "Source": "출처",
41
+ "Issuer page": "발행사 페이지",
42
+ "Description from": "설명 출처",
41
43
  "Headline": "헤드라인",
42
44
  "Symbol": "종목코드",
43
45
  "Price": "가격",
@@ -113,6 +115,7 @@ export const ko: Record<string, string> = {
113
115
  "Current Layout": "현재 레이아웃",
114
116
  "Danger": "위험",
115
117
  "Debug": "디버그",
118
+ "Did you mean": "이것을 찾으셨나요",
116
119
  "Exact Match": "정확한 일치",
117
120
  "Focused Pane": "포커스 패널",
118
121
  "Funds & Derivatives": "펀드 및 파생상품",
@@ -425,7 +428,7 @@ export const ko: Record<string, string> = {
425
428
  "Open another watchlist pane": "관심 목록 패널 추가",
426
429
  "Open another research pane for the selected ticker or current collection": "선택 종목 또는 현재 컬렉션의 리서치 패널 추가",
427
430
  "Shortcut and layout help": "단축키 및 레이아웃 도움말",
428
- "Browse Gloomberb release notes.": "Gloomberb 릴리스 노트를 봅니다.",
431
+ "Browse Gloom release notes.": "Gloom 릴리스 노트를 봅니다.",
429
432
  "Browse version history and release notes.": "버전 이력과 릴리스 노트를 봅니다.",
430
433
  "View and export debug logs": "디버그 로그 보기 및 내보내기",
431
434
  "Open the debug log viewer": "디버그 로그 뷰어 열기",
@@ -502,7 +505,7 @@ export const ko: Record<string, string> = {
502
505
  "Pin Ticker": "종목 고정",
503
506
 
504
507
  // ── Help pane ────────────────────────────────────────────────
505
- "How To Use Gloomberb": "Gloomberb 사용 방법",
508
+ "How To Use Gloom": "Gloom 사용 방법",
506
509
  "Not sure of a code? Click the search bar at the top, or press {key}, and type what you want in plain words, like \"top news\". The Functions tab lists everything.": "코드를 모르겠다면 위쪽 검색창을 클릭하거나 {key}을 누르고 \"top news\"처럼 원하는 것을 평범한 말로 입력하세요. 기능 탭에 전체 목록이 있습니다.",
507
510
  "Not sure of a code? Click the search bar at the top and type what you want in plain words, like \"top news\". The Functions tab lists everything.": "코드를 모르겠다면 위쪽 검색창을 클릭하고 \"top news\"처럼 원하는 것을 평범한 말로 입력하세요. 기능 탭에 전체 목록이 있습니다.",
508
511
  "Click anything to use it; the keys shown beside actions are shortcuts.": "무엇이든 클릭해서 사용하세요. 동작 옆에 표시된 키는 단축키입니다.",
@@ -574,7 +577,7 @@ export const ko: Record<string, string> = {
574
577
  "Type these in the command bar (": "명령 팔레트에 입력(",
575
578
  "Everything is searchable, just type what you want.": "모든 기능을 검색할 수 있습니다. 원하는 것을 입력하세요.",
576
579
  "You're all set": "모든 준비가 완료되었습니다",
577
- "Launching Gloomberb...": "Gloomberb 실행 중...",
580
+ "Launching Gloom...": "Gloom 실행 중...",
578
581
  "Your broker portfolio is ready and will open directly after launch.": "브로커 포트폴리오가 준비되었습니다. 실행 후 바로 열립니다.",
579
582
  "Broker sync finished. If you expected holdings, check the selected account or connection mode.": "브로커 동기화 완료. 보유종목이 없다면 선택한 계좌나 연결 모드를 확인하세요.",
580
583
  "Search for broker names in the command bar to connect.": "명령 팔레트에서 브로커명을 검색해 연결하세요.",
@@ -628,9 +631,9 @@ export const ko: Record<string, string> = {
628
631
  "2. Log in with your IBKR credentials": "2. IBKR 자격 증명으로 로그인",
629
632
  "3. In ": "3. 다음 메뉴에서: ",
630
633
  " Enable \"ActiveX and Socket Clients\"": " \"ActiveX and Socket Clients\" 활성화",
631
- " Gloomberb can auto-detect local API ports (4001, 4002, 7496, 7497)": " Gloomberb 로컬 API 포트 자동 감지(4001, 4002, 7496, 7497)",
634
+ " Gloom can auto-detect local API ports (4001, 4002, 7496, 7497)": " Gloom 로컬 API 포트 자동 감지(4001, 4002, 7496, 7497)",
632
635
  " Use Manual setup only if you need a custom host or exact socket port": " 사용자 지정 호스트나 정확한 소켓 포트가 필요할 때만 수동 설정 사용",
633
- "4. Keep it running while using Gloomberb": "4. Gloomberb 사용 중 실행 상태 유지",
636
+ "4. Keep it running while using Gloom": "4. Gloom 사용 중 실행 상태 유지",
634
637
  "You'll need your {broker} API credentials.": "{broker} API 자격 증명이 필요합니다.",
635
638
  "Connecting to {broker} and importing accounts and positions...": "{broker} 연결 및 계좌·포지션 가져오는 중...",
636
639
  "Unable to sync {broker}.": "{broker}을(를) 동기화할 수 없습니다.",
@@ -1041,12 +1044,12 @@ export const ko: Record<string, string> = {
1041
1044
  "could not install": "설치할 수 없음",
1042
1045
  "could not restart": "다시 시작할 수 없음",
1043
1046
  "v{version} available — run {command}": "v{version} 사용 가능 — {command} 실행",
1044
- "v{version} available, update through the package manager that installed Gloomberb": "v{version} 사용 가능, Gloomberb를 설치한 패키지 관리자로 업데이트하세요",
1047
+ "v{version} available, update through the package manager that installed Gloom": "v{version} 사용 가능, Gloom을 설치한 패키지 관리자로 업데이트하세요",
1045
1048
  "v{version} available — starting download...": "v{version} 사용 가능 — 다운로드 시작 중...",
1046
1049
  "command bar": "명령 팔레트",
1047
1050
  "Tidy Windows": "창 정리",
1048
1051
  "Download desktop app": "데스크톱 앱 다운로드",
1049
- "Get Gloomberb for Mac or Windows": "Mac 또는 Windows용 Gloomberb 받기",
1052
+ "Get Gloom for Mac or Windows": "Mac 또는 Windows용 Gloom 받기",
1050
1053
  "Dismiss": "닫기",
1051
1054
  "Minimize": "최소화",
1052
1055
  "Maximize": "최대화",
@@ -1086,6 +1089,10 @@ export const ko: Record<string, string> = {
1086
1089
  "Expense ratio": "총보수",
1087
1090
  "Sponsor fee": "스폰서 보수",
1088
1091
  "Net assets": "순자산",
1092
+ "Gold in trust": "신탁 보유 금",
1093
+ "Silver in trust": "신탁 보유 은",
1094
+ "Day change": "일간 변동",
1095
+ "since {date}": "{date} 대비",
1089
1096
  "Sponsor": "스폰서",
1090
1097
  "Inception": "설정일",
1091
1098
  "Benchmark": "벤치마크",
@@ -1283,8 +1290,8 @@ export const ko: Record<string, string> = {
1283
1290
  "Waiting for approval...": "승인을 기다리는 중...",
1284
1291
  "Approved as {email}": "{email}(으)로 승인됨",
1285
1292
  "Denied. Press enter to request a new code.": "거부되었습니다. enter를 누르면 새 코드를 요청합니다.",
1286
- "Contacting Gloomberb Cloud...": "Gloomberb Cloud에 연결하는 중...",
1287
- "Can't reach Gloomberb Cloud. Retrying...": "Gloomberb Cloud에 연결할 수 없습니다. 재시도 중...",
1293
+ "Contacting Gloom Cloud...": "Gloom Cloud에 연결하는 중...",
1294
+ "Can't reach Gloom Cloud. Retrying...": "Gloom Cloud에 연결할 수 없습니다. 재시도 중...",
1288
1295
  "Connection problem, retrying...": "연결 문제, 재시도 중...",
1289
1296
  "No app? {url}": "앱이 없나요? {url}",
1290
1297
  "Not enough room to draw the QR code.": "QR 코드를 표시할 공간이 부족합니다.",
@@ -1332,7 +1339,7 @@ export const ko: Record<string, string> = {
1332
1339
  "Keep supported portfolios, watchlists and layouts in sync on desktop and TUI": "지원되는 포트폴리오, 관심 목록, 레이아웃을 데스크톱과 TUI에서 동기화",
1333
1340
  "Keep Free for now": "지금은 Free 유지",
1334
1341
  "Keep this workspace local for now": "지금은 이 작업 공간을 로컬로 유지",
1335
- "Make Gloomberb yours": "나만의 Gloomberb 만들기",
1342
+ "Make Gloom yours": "나만의 Gloom 만들기",
1336
1343
  "More data and screens": "더 많은 데이터와 화면",
1337
1344
  "More market data": "더 많은 시장 데이터",
1338
1345
  "More tools for company, market and portfolio research.": "기업, 시장, 포트폴리오 분석을 위한 추가 도구.",
@@ -1405,7 +1412,7 @@ export const ko: Record<string, string> = {
1405
1412
  "Verify your email to use Cloud features. You can open Pro setup now or continue locally.": "Cloud 기능을 사용하려면 이메일을 인증하세요. 지금 Pro 설정을 열거나 로컬에서 계속할 수 있습니다.",
1406
1413
  "WELCOME": "환영합니다",
1407
1414
  "You added a ticker and opened its research view using the same command bar you will use every day.": "매일 사용할 같은 명령 바로 종목을 추가하고 리서치 보기를 열었습니다.",
1408
- "You are already inside Gloomberb. We will set up a portfolio and teach two real commands, then you can decide whether to add Cloud and Pro.": "이미 Gloomberb 안에 있습니다. 포트폴리오를 설정하고 실제 명령 두 개를 익힌 뒤 Cloud와 Pro를 추가할지 결정할 수 있습니다.",
1415
+ "You are already inside Gloom. We will set up a portfolio and teach two real commands, then you can decide whether to add Cloud and Pro.": "이미 Gloom 안에 있습니다. 포트폴리오를 설정하고 실제 명령 두 개를 익힌 뒤 Cloud와 Pro를 추가할지 결정할 수 있습니다.",
1409
1416
  "Your Home layout starts with Portfolio and Chat.": "홈 레이아웃은 포트폴리오와 채팅으로 시작합니다.",
1410
1417
  "Your market workspace is ready": "시장 워크스페이스가 준비되었습니다",
1411
1418
  "Your workspace is yours": "당신의 워크스페이스입니다",
@@ -1490,10 +1497,20 @@ export const ko: Record<string, string> = {
1490
1497
  "Pro is paused until your open invoice is paid. Pay it with another card and real-time data comes straight back.": "미결제 인보이스가 결제될 때까지 Pro가 일시 중지됩니다. 다른 카드로 결제하면 실시간 데이터가 바로 돌아옵니다.",
1491
1498
  "Pay with another card": "다른 카드로 결제",
1492
1499
  "Try Pro free for {days} days": "Pro {days}일 무료 체험",
1493
- "$0 today, then {price} from {date}. Cancel before and you pay nothing.": "오늘 $0, {date}부터 {price}. 그 전에 해지하면 요금이 없습니다.",
1500
+ "$0 today, then {price} from {date}. Card required. Cancel before and you pay nothing.": "오늘 $0, {date}부터 {price}. 카드 등록 필요. 그 전에 해지하면 요금이 없습니다.",
1494
1501
  "Continue to checkout": "결제로 이동",
1495
1502
  "{price}, billed today. Cancel anytime.": "{price}, 오늘 청구. 언제든 해지.",
1496
1503
  "{price}. Cancel anytime.": "{price}. 언제든 해지.",
1504
+ // ── Checkout hand-off ─────────────────────────────────────
1505
+ "Finish checkout in your browser": "브라우저에서 결제를 마치세요",
1506
+ "Pro turns on here as soon as it's done.": "완료되는 즉시 여기서 Pro가 켜집니다.",
1507
+ "No browser opens from here. Open the link on any device.": "여기서는 브라우저가 열리지 않습니다. 아무 기기에서나 링크를 여세요.",
1508
+ "No browser opens from here. Paste the copied link in a browser.": "여기서는 브라우저가 열리지 않습니다. 복사된 링크를 브라우저에 붙여 넣으세요.",
1509
+ "Opening checkout...": "결제 페이지를 여는 중...",
1510
+ "Waiting for checkout...": "결제를 기다리는 중...",
1511
+ "Pro is on.": "Pro가 켜졌습니다.",
1512
+ "Checkout done. Confirm your email to turn Pro on.": "결제가 끝났습니다. 이메일을 인증하면 Pro가 켜집니다.",
1513
+ "esc to close": "esc로 닫기",
1497
1514
  "Start {days}-day free trial": "{days}일 무료 체험 시작",
1498
1515
  "$0 today, free for {days} days. Card required. Cancel anytime.": "오늘 $0, {days}일 무료. 카드 등록 필요. 언제든 해지.",
1499
1516
  "Billed today. Cancel anytime.": "오늘 청구. 언제든 해지.",
package/src/i18n/zh-cn.ts CHANGED
@@ -40,6 +40,8 @@ export const zhCN: Record<string, string> = {
40
40
  "Name": "名称",
41
41
  "Title": "标题",
42
42
  "Source": "来源",
43
+ "Issuer page": "发行人页面",
44
+ "Description from": "描述来源",
43
45
  "Headline": "标题",
44
46
  "Symbol": "代码",
45
47
  "Price": "价格",
@@ -115,6 +117,7 @@ export const zhCN: Record<string, string> = {
115
117
  "Current Layout": "当前布局",
116
118
  "Danger": "危险操作",
117
119
  "Debug": "调试",
120
+ "Did you mean": "您是不是要找",
118
121
  "Exact Match": "精确匹配",
119
122
  "Focused Pane": "聚焦面板",
120
123
  "Funds & Derivatives": "基金与衍生品",
@@ -427,7 +430,7 @@ export const zhCN: Record<string, string> = {
427
430
  "Open another watchlist pane": "再开一个自选列表面板",
428
431
  "Open another research pane for the selected ticker or current collection": "为所选股票或当前集合再开一个研究面板",
429
432
  "Shortcut and layout help": "快捷键与布局帮助",
430
- "Browse Gloomberb release notes.": "浏览 Gloomberb 版本说明。",
433
+ "Browse Gloom release notes.": "浏览 Gloom 版本说明。",
431
434
  "Browse version history and release notes.": "浏览版本历史与更新说明。",
432
435
  "View and export debug logs": "查看并导出调试日志",
433
436
  "Open the debug log viewer": "打开调试日志查看器",
@@ -504,7 +507,7 @@ export const zhCN: Record<string, string> = {
504
507
  "Pin Ticker": "固定股票",
505
508
 
506
509
  // ── Help pane ────────────────────────────────────────────────
507
- "How To Use Gloomberb": "如何使用 Gloomberb",
510
+ "How To Use Gloom": "如何使用 Gloom",
508
511
  "Not sure of a code? Click the search bar at the top, or press {key}, and type what you want in plain words, like \"top news\". The Functions tab lists everything.": "不知道代码?点击顶部的搜索栏,或按 {key},用日常语言输入你想要的,比如 \"top news\"。“功能”标签列出了全部功能。",
509
512
  "Not sure of a code? Click the search bar at the top and type what you want in plain words, like \"top news\". The Functions tab lists everything.": "不知道代码?点击顶部的搜索栏,用日常语言输入你想要的,比如 \"top news\"。“功能”标签列出了全部功能。",
510
513
  "Click anything to use it; the keys shown beside actions are shortcuts.": "点击任意内容即可使用;操作旁显示的按键是快捷键。",
@@ -576,7 +579,7 @@ export const zhCN: Record<string, string> = {
576
579
  "Type these in the command bar (": "在命令栏中输入这些(",
577
580
  "Everything is searchable, just type what you want.": "一切皆可搜索,想要什么直接输入。",
578
581
  "You're all set": "设置完成",
579
- "Launching Gloomberb...": "正在启动 Gloomberb...",
582
+ "Launching Gloom...": "正在启动 Gloom...",
580
583
  "Your broker portfolio is ready and will open directly after launch.": "券商组合已就绪,启动后将直接打开。",
581
584
  "Broker sync finished. If you expected holdings, check the selected account or connection mode.": "券商同步完成。若未见持仓,请检查所选账户或连接模式。",
582
585
  "Search for broker names in the command bar to connect.": "在命令栏搜索券商名称进行连接。",
@@ -630,9 +633,9 @@ export const zhCN: Record<string, string> = {
630
633
  "2. Log in with your IBKR credentials": "2. 使用 IBKR 凭证登录",
631
634
  "3. In ": "3. 在 ",
632
635
  " Enable \"ActiveX and Socket Clients\"": " 启用“ActiveX and Socket Clients”",
633
- " Gloomberb can auto-detect local API ports (4001, 4002, 7496, 7497)": " Gloomberb 可自动检测本地 API 端口(4001、4002、7496、7497)",
636
+ " Gloom can auto-detect local API ports (4001, 4002, 7496, 7497)": " Gloom 可自动检测本地 API 端口(4001、4002、7496、7497)",
634
637
  " Use Manual setup only if you need a custom host or exact socket port": " 仅在需要自定义主机或指定套接字端口时使用手动设置",
635
- "4. Keep it running while using Gloomberb": "4. 使用 Gloomberb 时请保持其运行",
638
+ "4. Keep it running while using Gloom": "4. 使用 Gloom 时请保持其运行",
636
639
  "You'll need your {broker} API credentials.": "你需要准备 {broker} 的 API 凭证。",
637
640
  "Connecting to {broker} and importing accounts and positions...": "正在连接 {broker} 并导入账户和持仓...",
638
641
  "Unable to sync {broker}.": "无法同步 {broker}。",
@@ -1043,12 +1046,12 @@ export const zhCN: Record<string, string> = {
1043
1046
  "could not install": "无法安装",
1044
1047
  "could not restart": "无法重新启动",
1045
1048
  "v{version} available — run {command}": "v{version} 可用 — 执行 {command}",
1046
- "v{version} available, update through the package manager that installed Gloomberb": "v{version} 可用,请通过安装 Gloomberb 的包管理器更新",
1049
+ "v{version} available, update through the package manager that installed Gloom": "v{version} 可用,请通过安装 Gloom 的包管理器更新",
1047
1050
  "v{version} available — starting download...": "v{version} 可用 — 开始下载...",
1048
1051
  "command bar": "命令栏",
1049
1052
  "Tidy Windows": "整理窗口",
1050
1053
  "Download desktop app": "下载桌面应用",
1051
- "Get Gloomberb for Mac or Windows": "获取 Mac 或 Windows 版 Gloomberb",
1054
+ "Get Gloom for Mac or Windows": "获取 Mac 或 Windows 版 Gloom",
1052
1055
  "Dismiss": "忽略",
1053
1056
  "Minimize": "最小化",
1054
1057
  "Maximize": "最大化",
@@ -1088,6 +1091,10 @@ export const zhCN: Record<string, string> = {
1088
1091
  "Expense ratio": "费用率",
1089
1092
  "Sponsor fee": "发起人费用",
1090
1093
  "Net assets": "净资产",
1094
+ "Gold in trust": "信托持有黄金",
1095
+ "Silver in trust": "信托持有白银",
1096
+ "Day change": "日变动",
1097
+ "since {date}": "较 {date}",
1091
1098
  "Sponsor": "发起人",
1092
1099
  "Inception": "成立日期",
1093
1100
  "Benchmark": "基准",
@@ -1285,8 +1292,8 @@ export const zhCN: Record<string, string> = {
1285
1292
  "Waiting for approval...": "等待确认...",
1286
1293
  "Approved as {email}": "已以 {email} 登录",
1287
1294
  "Denied. Press enter to request a new code.": "已拒绝。按 enter 获取新码。",
1288
- "Contacting Gloomberb Cloud...": "正在连接 Gloomberb 云...",
1289
- "Can't reach Gloomberb Cloud. Retrying...": "无法连接 Gloomberb 云,正在重试...",
1295
+ "Contacting Gloom Cloud...": "正在连接 Gloom 云...",
1296
+ "Can't reach Gloom Cloud. Retrying...": "无法连接 Gloom 云,正在重试...",
1290
1297
  "Connection problem, retrying...": "连接异常,正在重试...",
1291
1298
  "No app? {url}": "没有应用?{url}",
1292
1299
  "Not enough room to draw the QR code.": "空间不足,无法绘制二维码。",
@@ -1334,7 +1341,7 @@ export const zhCN: Record<string, string> = {
1334
1341
  "Keep supported portfolios, watchlists and layouts in sync on desktop and TUI": "在桌面版和 TUI 之间同步支持的投资组合、自选列表和布局",
1335
1342
  "Keep Free for now": "暂时继续使用 Free",
1336
1343
  "Keep this workspace local for now": "暂时让此工作区保留在本地",
1337
- "Make Gloomberb yours": "打造属于你的 Gloomberb",
1344
+ "Make Gloom yours": "打造属于你的 Gloom",
1338
1345
  "More data and screens": "更多数据和界面",
1339
1346
  "More market data": "更多市场数据",
1340
1347
  "More tools for company, market and portfolio research.": "更多用于公司、市场和投资组合研究的工具。",
@@ -1407,7 +1414,7 @@ export const zhCN: Record<string, string> = {
1407
1414
  "Verify your email to use Cloud features. You can open Pro setup now or continue locally.": "验证你的邮箱以使用 Cloud 功能。你可以现在打开 Pro 设置,或继续在本地使用。",
1408
1415
  "WELCOME": "欢迎",
1409
1416
  "You added a ticker and opened its research view using the same command bar you will use every day.": "你使用日常都会用到的同一命令栏添加了股票,并打开了它的研究视图。",
1410
- "You are already inside Gloomberb. We will set up a portfolio and teach two real commands, then you can decide whether to add Cloud and Pro.": "你已经进入 Gloomberb。我们会设置一个投资组合并教你两个真实命令,然后你可以决定是否添加 Cloud 和 Pro。",
1417
+ "You are already inside Gloom. We will set up a portfolio and teach two real commands, then you can decide whether to add Cloud and Pro.": "你已经进入 Gloom。我们会设置一个投资组合并教你两个真实命令,然后你可以决定是否添加 Cloud 和 Pro。",
1411
1418
  "Your Home layout starts with Portfolio and Chat.": "你的主页布局以投资组合和聊天开始。",
1412
1419
  "Your market workspace is ready": "你的市场工作区已准备就绪",
1413
1420
  "Your workspace is yours": "你的工作区由你掌控",
@@ -1492,10 +1499,20 @@ export const zhCN: Record<string, string> = {
1492
1499
  "Pro is paused until your open invoice is paid. Pay it with another card and real-time data comes straight back.": "Pro 已暂停,付清未结账单后恢复。换一张卡付款,实时数据立即恢复。",
1493
1500
  "Pay with another card": "换一张卡付款",
1494
1501
  "Try Pro free for {days} days": "免费试用 Pro {days} 天",
1495
- "$0 today, then {price} from {date}. Cancel before and you pay nothing.": "今天 $0,{date} 起 {price}。在此之前取消则无需付费。",
1502
+ "$0 today, then {price} from {date}. Card required. Cancel before and you pay nothing.": "今天 $0,{date} 起 {price}。需要绑卡。在此之前取消则无需付费。",
1496
1503
  "Continue to checkout": "前往结账",
1497
1504
  "{price}, billed today. Cancel anytime.": "{price},今天扣款。随时取消。",
1498
1505
  "{price}. Cancel anytime.": "{price}。随时取消。",
1506
+ // ── Checkout hand-off ─────────────────────────────────────
1507
+ "Finish checkout in your browser": "在浏览器中完成付款",
1508
+ "Pro turns on here as soon as it's done.": "完成后 Pro 会立即在这里开通。",
1509
+ "No browser opens from here. Open the link on any device.": "这里无法打开浏览器。请在任意设备上打开链接。",
1510
+ "No browser opens from here. Paste the copied link in a browser.": "这里无法打开浏览器。请把已复制的链接粘贴到浏览器中。",
1511
+ "Opening checkout...": "正在打开付款页面...",
1512
+ "Waiting for checkout...": "正在等待付款...",
1513
+ "Pro is on.": "Pro 已开通。",
1514
+ "Checkout done. Confirm your email to turn Pro on.": "付款已完成。确认邮箱后即可开通 Pro。",
1515
+ "esc to close": "esc 关闭",
1499
1516
  "Start {days}-day free trial": "开始 {days} 天免费试用",
1500
1517
  "$0 today, free for {days} days. Card required. Cancel anytime.": "今天 $0,免费 {days} 天。需要绑卡。随时取消。",
1501
1518
  "Billed today. Cancel anytime.": "今天扣款。随时取消。",
package/src/i18n/zh-tw.ts CHANGED
@@ -40,6 +40,8 @@ export const zhTW: Record<string, string> = {
40
40
  "Name": "名稱",
41
41
  "Title": "標題",
42
42
  "Source": "來源",
43
+ "Issuer page": "發行人頁面",
44
+ "Description from": "描述來源",
43
45
  "Headline": "標題",
44
46
  "Symbol": "代號",
45
47
  "Price": "價格",
@@ -115,6 +117,7 @@ export const zhTW: Record<string, string> = {
115
117
  "Current Layout": "目前版面設定",
116
118
  "Danger": "危險操作",
117
119
  "Debug": "除錯",
120
+ "Did you mean": "您是不是要找",
118
121
  "Exact Match": "精確符合",
119
122
  "Focused Pane": "聚焦面板",
120
123
  "Funds & Derivatives": "基金與衍生性商品",
@@ -427,7 +430,7 @@ export const zhTW: Record<string, string> = {
427
430
  "Open another watchlist pane": "再開一個自選清單面板",
428
431
  "Open another research pane for the selected ticker or current collection": "為所選股票或目前清單再開一個研究面板",
429
432
  "Shortcut and layout help": "快速鍵與版面設定說明",
430
- "Browse Gloomberb release notes.": "瀏覽 Gloomberb 版本說明。",
433
+ "Browse Gloom release notes.": "瀏覽 Gloom 版本說明。",
431
434
  "Browse version history and release notes.": "瀏覽版本歷史與更新說明。",
432
435
  "View and export debug logs": "檢視並匯出除錯日誌",
433
436
  "Open the debug log viewer": "開啟除錯日誌檢視器",
@@ -504,7 +507,7 @@ export const zhTW: Record<string, string> = {
504
507
  "Pin Ticker": "固定股票",
505
508
 
506
509
  // ── Help pane ────────────────────────────────────────────────
507
- "How To Use Gloomberb": "如何使用 Gloomberb",
510
+ "How To Use Gloom": "如何使用 Gloom",
508
511
  "Not sure of a code? Click the search bar at the top, or press {key}, and type what you want in plain words, like \"top news\". The Functions tab lists everything.": "不知道代碼?點擊頂部的搜尋列,或按 {key},用日常用語輸入你想要的,例如 \"top news\"。「功能」標籤列出了全部功能。",
509
512
  "Not sure of a code? Click the search bar at the top and type what you want in plain words, like \"top news\". The Functions tab lists everything.": "不知道代碼?點擊頂部的搜尋列,用日常用語輸入你想要的,例如 \"top news\"。「功能」標籤列出了全部功能。",
510
513
  "Click anything to use it; the keys shown beside actions are shortcuts.": "點擊任何內容即可使用;動作旁顯示的按鍵是快捷鍵。",
@@ -576,7 +579,7 @@ export const zhTW: Record<string, string> = {
576
579
  "Type these in the command bar (": "在命令列中輸入這些(",
577
580
  "Everything is searchable, just type what you want.": "所有功能都能搜尋,直接輸入想找的內容即可。",
578
581
  "You're all set": "設定完成",
579
- "Launching Gloomberb...": "正在啟動 Gloomberb...",
582
+ "Launching Gloom...": "正在啟動 Gloom...",
580
583
  "Your broker portfolio is ready and will open directly after launch.": "券商投資組合已就緒,啟動後會直接開啟。",
581
584
  "Broker sync finished. If you expected holdings, check the selected account or connection mode.": "券商同步完成。若未見持倉,請檢查所選帳戶或連線模式。",
582
585
  "Search for broker names in the command bar to connect.": "在命令列搜尋券商名稱進行連線。",
@@ -630,9 +633,9 @@ export const zhTW: Record<string, string> = {
630
633
  "2. Log in with your IBKR credentials": "2. 使用 IBKR 憑證登入",
631
634
  "3. In ": "3. 在 ",
632
635
  " Enable \"ActiveX and Socket Clients\"": " 啟用“ActiveX and Socket Clients”",
633
- " Gloomberb can auto-detect local API ports (4001, 4002, 7496, 7497)": " Gloomberb 可自動偵測本機 API 連接埠(4001、4002、7496、7497)",
636
+ " Gloom can auto-detect local API ports (4001, 4002, 7496, 7497)": " Gloom 可自動偵測本機 API 連接埠(4001、4002、7496、7497)",
634
637
  " Use Manual setup only if you need a custom host or exact socket port": " 僅在需要自訂主機或指定 Socket 連接埠時使用手動設定",
635
- "4. Keep it running while using Gloomberb": "4. 使用 Gloomberb 時請讓它保持執行",
638
+ "4. Keep it running while using Gloom": "4. 使用 Gloom 時請讓它保持執行",
636
639
  "You'll need your {broker} API credentials.": "你需要準備 {broker} 的 API 憑證。",
637
640
  "Connecting to {broker} and importing accounts and positions...": "正在連線 {broker} 並匯入帳戶和持倉...",
638
641
  "Unable to sync {broker}.": "無法同步 {broker}。",
@@ -1043,12 +1046,12 @@ export const zhTW: Record<string, string> = {
1043
1046
  "could not install": "無法安裝",
1044
1047
  "could not restart": "無法重新啟動",
1045
1048
  "v{version} available — run {command}": "v{version} 可用 — 執行 {command}",
1046
- "v{version} available, update through the package manager that installed Gloomberb": "v{version} 可用,請透過安裝 Gloomberb 的套件管理器更新",
1049
+ "v{version} available, update through the package manager that installed Gloom": "v{version} 可用,請透過安裝 Gloom 的套件管理器更新",
1047
1050
  "v{version} available — starting download...": "v{version} 可用 — 開始下載...",
1048
1051
  "command bar": "命令列",
1049
1052
  "Tidy Windows": "整理視窗",
1050
1053
  "Download desktop app": "下載桌面應用程式",
1051
- "Get Gloomberb for Mac or Windows": "取得 Mac 或 Windows 版 Gloomberb",
1054
+ "Get Gloom for Mac or Windows": "取得 Mac 或 Windows 版 Gloom",
1052
1055
  "Dismiss": "忽略",
1053
1056
  "Minimize": "最小化",
1054
1057
  "Maximize": "最大化",
@@ -1088,6 +1091,10 @@ export const zhTW: Record<string, string> = {
1088
1091
  "Expense ratio": "費用率",
1089
1092
  "Sponsor fee": "發起人費用",
1090
1093
  "Net assets": "淨資產",
1094
+ "Gold in trust": "信託持有黃金",
1095
+ "Silver in trust": "信託持有白銀",
1096
+ "Day change": "日變動",
1097
+ "since {date}": "較 {date}",
1091
1098
  "Sponsor": "發起人",
1092
1099
  "Inception": "成立日期",
1093
1100
  "Benchmark": "基準",
@@ -1285,8 +1292,8 @@ export const zhTW: Record<string, string> = {
1285
1292
  "Waiting for approval...": "等待確認...",
1286
1293
  "Approved as {email}": "已以 {email} 登入",
1287
1294
  "Denied. Press enter to request a new code.": "已拒絕。按 enter 取得新碼。",
1288
- "Contacting Gloomberb Cloud...": "正在連線 Gloomberb 雲端...",
1289
- "Can't reach Gloomberb Cloud. Retrying...": "無法連線 Gloomberb 雲端,正在重試...",
1295
+ "Contacting Gloom Cloud...": "正在連線 Gloom 雲端...",
1296
+ "Can't reach Gloom Cloud. Retrying...": "無法連線 Gloom 雲端,正在重試...",
1290
1297
  "Connection problem, retrying...": "連線異常,正在重試...",
1291
1298
  "No app? {url}": "沒有應用程式?{url}",
1292
1299
  "Not enough room to draw the QR code.": "空間不足,無法繪製 QR 碼。",
@@ -1334,7 +1341,7 @@ export const zhTW: Record<string, string> = {
1334
1341
  "Keep supported portfolios, watchlists and layouts in sync on desktop and TUI": "在桌面版和 TUI 之間同步支援的投資組合、自選清單和版面配置",
1335
1342
  "Keep Free for now": "暫時繼續使用 Free",
1336
1343
  "Keep this workspace local for now": "暫時將此工作區保留在本機",
1337
- "Make Gloomberb yours": "打造屬於你的 Gloomberb",
1344
+ "Make Gloom yours": "打造屬於你的 Gloom",
1338
1345
  "More data and screens": "更多資料和畫面",
1339
1346
  "More market data": "更多市場資料",
1340
1347
  "More tools for company, market and portfolio research.": "更多用於公司、市場和投資組合研究的工具。",
@@ -1407,7 +1414,7 @@ export const zhTW: Record<string, string> = {
1407
1414
  "Verify your email to use Cloud features. You can open Pro setup now or continue locally.": "驗證你的電子郵件以使用 Cloud 功能。你可以現在開啟 Pro 設定,或繼續在本機使用。",
1408
1415
  "WELCOME": "歡迎",
1409
1416
  "You added a ticker and opened its research view using the same command bar you will use every day.": "你使用每天都會用到的同一個命令列新增了股票,並開啟其研究檢視。",
1410
- "You are already inside Gloomberb. We will set up a portfolio and teach two real commands, then you can decide whether to add Cloud and Pro.": "你已進入 Gloomberb。我們會設定投資組合並教你兩個實際命令,接著你可以決定是否加入 Cloud 和 Pro。",
1417
+ "You are already inside Gloom. We will set up a portfolio and teach two real commands, then you can decide whether to add Cloud and Pro.": "你已進入 Gloom。我們會設定投資組合並教你兩個實際命令,接著你可以決定是否加入 Cloud 和 Pro。",
1411
1418
  "Your Home layout starts with Portfolio and Chat.": "你的首頁版面從投資組合和聊天開始。",
1412
1419
  "Your market workspace is ready": "你的市場工作區已準備就緒",
1413
1420
  "Your workspace is yours": "你的工作區是你的了",
@@ -1492,10 +1499,20 @@ export const zhTW: Record<string, string> = {
1492
1499
  "Pro is paused until your open invoice is paid. Pay it with another card and real-time data comes straight back.": "Pro 已暫停,付清未結帳單後恢復。換一張卡付款,即時資料立即恢復。",
1493
1500
  "Pay with another card": "換一張卡付款",
1494
1501
  "Try Pro free for {days} days": "免費試用 Pro {days} 天",
1495
- "$0 today, then {price} from {date}. Cancel before and you pay nothing.": "今天 $0,{date} 起 {price}。在此之前取消則無需付費。",
1502
+ "$0 today, then {price} from {date}. Card required. Cancel before and you pay nothing.": "今天 $0,{date} 起 {price}。需要綁卡。在此之前取消則無需付費。",
1496
1503
  "Continue to checkout": "前往結帳",
1497
1504
  "{price}, billed today. Cancel anytime.": "{price},今天扣款。隨時取消。",
1498
1505
  "{price}. Cancel anytime.": "{price}。隨時取消。",
1506
+ // ── Checkout hand-off ─────────────────────────────────────
1507
+ "Finish checkout in your browser": "在瀏覽器中完成付款",
1508
+ "Pro turns on here as soon as it's done.": "完成後 Pro 會立即在這裡開通。",
1509
+ "No browser opens from here. Open the link on any device.": "這裡無法開啟瀏覽器。請在任意裝置上開啟連結。",
1510
+ "No browser opens from here. Paste the copied link in a browser.": "這裡無法開啟瀏覽器。請把已複製的連結貼到瀏覽器中。",
1511
+ "Opening checkout...": "正在開啟付款頁面...",
1512
+ "Waiting for checkout...": "正在等待付款...",
1513
+ "Pro is on.": "Pro 已開通。",
1514
+ "Checkout done. Confirm your email to turn Pro on.": "付款已完成。確認信箱後即可開通 Pro。",
1515
+ "esc to close": "esc 關閉",
1499
1516
  "Start {days}-day free trial": "開始 {days} 天免費試用",
1500
1517
  "$0 today, free for {days} days. Card required. Cancel anytime.": "今天 $0,免費 {days} 天。需要綁卡。隨時取消。",
1501
1518
  "Billed today. Cancel anytime.": "今天扣款。隨時取消。",
@@ -48,7 +48,7 @@ interface DeskPane {
48
48
  /** The mnemonic as the command bar takes it. */
49
49
  fn: string;
50
50
  arg?: string;
51
- /** The function's options, as `gloomberb fn` takes them. */
51
+ /** The function's options, as `gloom fn` takes them. */
52
52
  options?: Readonly<Record<string, string>>;
53
53
  /** The pane (its place in the desk, from 1) whose ticker this one follows. */
54
54
  follows?: number;
@@ -11,7 +11,7 @@ import { addPaneFloating, bringToFront, getDockedPaneIds, isPaneInLayout } from
11
11
  /**
12
12
  * Opening a pane from a CLI command that launches the UI.
13
13
  *
14
- * `gloomberb <something> <args>` has to leave the app in the state the
14
+ * `gloom <something> <args>` has to leave the app in the state the
15
15
  * arguments describe before the first frame: the pane present, focused, and
16
16
  * already holding the query rather than whatever the last session left. That is
17
17
  * two writes with different lifetimes — the layout in the config, the pane's
@@ -9,6 +9,7 @@ import {
9
9
  clampFloatingRect,
10
10
  clampFloatingRectWithinBounds,
11
11
  defaultFloatingRect,
12
+ compactFloatingZ,
12
13
  maxFloatingZ,
13
14
  MIN_FLOAT_HEIGHT,
14
15
  MIN_FLOAT_WIDTH,
@@ -44,7 +45,7 @@ export function floatAtRect(layout: LayoutConfig, instanceId: string, rect: Floa
44
45
  const base = detachPane(layout, instanceId);
45
46
  return finalizeLayout({
46
47
  ...base,
47
- floating: [
48
+ floating: compactFloatingZ([
48
49
  ...base.floating.filter((entry) => entry.instanceId !== instanceId),
49
50
  {
50
51
  instanceId,
@@ -54,7 +55,7 @@ export function floatAtRect(layout: LayoutConfig, instanceId: string, rect: Floa
54
55
  height: rect.height,
55
56
  zIndex: rect.zIndex ?? maxFloatingZ(layout) + 1,
56
57
  },
57
- ],
58
+ ]),
58
59
  });
59
60
  }
60
61
 
@@ -140,7 +141,8 @@ export function addPaneFloating(
140
141
  }
141
142
 
142
143
  export function bringToFront(layout: LayoutConfig, instanceId: string): LayoutConfig {
143
- return finalizeLayout(updateFloatingPane(layout, instanceId, { zIndex: maxFloatingZ(layout) + 1 }));
144
+ const raised = updateFloatingPane(layout, instanceId, { zIndex: maxFloatingZ(layout) + 1 });
145
+ return finalizeLayout({ ...raised, floating: compactFloatingZ(raised.floating) });
144
146
  }
145
147
 
146
148
  export function getRememberedFloatingRect(
@@ -65,7 +65,49 @@ export function defaultFloatingRect(termWidth: number, termHeight: number, def?:
65
65
  }
66
66
 
67
67
  export function maxFloatingZ(layout: LayoutConfig): number {
68
- return layout.floating.reduce((highest, entry) => Math.max(highest, entry.zIndex ?? 50), 50);
68
+ return layout.floating.reduce((highest, entry) => Math.max(highest, entry.zIndex ?? FLOATING_PANE_BASE_Z), FLOATING_PANE_BASE_Z);
69
+ }
70
+
71
+ /** Where floating panes stack from, above the docked panes and the dividers between them. */
72
+ const FLOATING_PANE_BASE_Z = 50;
73
+
74
+ /** The lowest of the shell's fixed overlays over every pane: the drag outline (95; the drop preview is 96). */
75
+ const SHELL_PREVIEW_Z = 95;
76
+
77
+ /**
78
+ * How far above its own z a floating pane draws: its resize edges one level
79
+ * up (shell/pane/layers.tsx), window mode's highlight up to three
80
+ * (shell/window-mode/overlays.tsx).
81
+ */
82
+ const FLOATING_PANE_CHROME_LAYERS = 3;
83
+
84
+ /**
85
+ * The highest z a floating pane holds, 91: with its chrome above it, still
86
+ * under the drag and dock previews, the window-mode status and the pane menu,
87
+ * which the shell draws at fixed levels over every pane, in the terminal's
88
+ * cells, in the kitty images it cuts around them and on the desktop alike.
89
+ * Raising a pane adds one to the top, so a stack that would pass this is
90
+ * renumbered from the base in the same order; a layout saved with a higher
91
+ * stack is renumbered when it loads.
92
+ */
93
+ export const FLOATING_PANE_MAX_Z = SHELL_PREVIEW_Z - FLOATING_PANE_CHROME_LAYERS - 1;
94
+
95
+ /**
96
+ * The entries with the same front-to-back order and no z above
97
+ * `FLOATING_PANE_MAX_Z`: the same array when none is, else every entry
98
+ * renumbered from the base (equal z keep their array order, as they draw).
99
+ * Past 42 floating panes the numbers cannot fit and the top ones run over.
100
+ */
101
+ export function compactFloatingZ(entries: FloatingPaneEntry[]): FloatingPaneEntry[] {
102
+ if (entries.every((entry) => (entry.zIndex ?? FLOATING_PANE_BASE_Z) <= FLOATING_PANE_MAX_Z)) return entries;
103
+ const order = entries
104
+ .map((entry, index) => ({ index, z: entry.zIndex ?? FLOATING_PANE_BASE_Z }))
105
+ .sort((left, right) => left.z - right.z || left.index - right.index);
106
+ const next = [...entries];
107
+ order.forEach(({ index }, rank) => {
108
+ next[index] = { ...entries[index]!, zIndex: FLOATING_PANE_BASE_Z + rank };
109
+ });
110
+ return next;
69
111
  }
70
112
 
71
113
  export function updateFloatingPane(
@@ -1,4 +1,6 @@
1
1
  export {
2
+ compactFloatingZ,
3
+ FLOATING_PANE_MAX_Z,
2
4
  MIN_FLOAT_HEIGHT,
3
5
  MIN_FLOAT_WIDTH,
4
6
  type FloatingRect,
@@ -0,0 +1,74 @@
1
+ import { resolveTickerForPane } from "../core/state/app/layout";
2
+ import type { AppState } from "../core/state/app/types";
3
+ import { isPaneInLayout } from "./pane-manager";
4
+ import { findPaneInstance, type PaneInstanceConfig } from "../types/config";
5
+
6
+ export interface SelectedLayoutTicker {
7
+ rootInstanceId: string;
8
+ symbol: string;
9
+ /** Visible panes that show this symbol, including the root. */
10
+ memberCount: number;
11
+ }
12
+
13
+ /**
14
+ * The instrument the command prompt is offering. The focused pane's ticker
15
+ * when it has one, otherwise the linked desk, so a command that needs a
16
+ * ticker can use the symbol already on screen.
17
+ */
18
+ export function commandPromptTicker(state: AppState): { symbol: string; rootInstanceId: string } | null {
19
+ const selection = selectedLayoutTicker(state);
20
+ if (!selection) return null;
21
+ return { symbol: selection.symbol, rootInstanceId: selection.rootInstanceId };
22
+ }
23
+
24
+ /**
25
+ * The ticker a layout is on. The focused pane's group wins. Otherwise the
26
+ * largest group of two or more visible panes. A lone pane counts only while
27
+ * it is focused, so a news pane does not hide a linked desk, and an unlinked
28
+ * desk does not invent a group.
29
+ */
30
+ export function selectedLayoutTicker(state: AppState): SelectedLayoutTicker | null {
31
+ const groups = new Map<string, { symbol: string; count: number; order: number }>();
32
+ state.config.layout.instances.forEach((instance, order) => {
33
+ const rootId = tickerRootId(state, instance.instanceId);
34
+ if (!rootId) return;
35
+ const symbol = resolveTickerForPane(state, rootId);
36
+ if (!symbol) return;
37
+ const group = groups.get(rootId);
38
+ if (group) group.count += 1;
39
+ else groups.set(rootId, { symbol, count: 1, order });
40
+ });
41
+
42
+ const focusedRoot = state.focusedPaneId ? tickerRootId(state, state.focusedPaneId) : null;
43
+ const focused = focusedRoot ? groups.get(focusedRoot) : undefined;
44
+ if (focusedRoot && focused) {
45
+ return { rootInstanceId: focusedRoot, symbol: focused.symbol, memberCount: focused.count };
46
+ }
47
+
48
+ let best: SelectedLayoutTicker & { order: number } | null = null;
49
+ for (const [rootInstanceId, group] of groups) {
50
+ if (group.count < 2) continue;
51
+ if (
52
+ !best
53
+ || group.count > best.memberCount
54
+ || (group.count === best.memberCount && group.order < best.order)
55
+ ) {
56
+ best = { rootInstanceId, symbol: group.symbol, memberCount: group.count, order: group.order };
57
+ }
58
+ }
59
+ return best
60
+ ? { rootInstanceId: best.rootInstanceId, symbol: best.symbol, memberCount: best.memberCount }
61
+ : null;
62
+ }
63
+
64
+ /** The pane whose symbol the others follow. A cycle or a hidden pane has none. */
65
+ function tickerRootId(state: AppState, paneId: string, seen = new Set<string>()): string | null {
66
+ if (seen.has(paneId)) return null;
67
+ seen.add(paneId);
68
+ const layout = state.config.layout;
69
+ if (!isPaneInLayout(layout, paneId)) return null;
70
+ const instance: PaneInstanceConfig | undefined = findPaneInstance(layout, paneId);
71
+ if (!instance) return null;
72
+ if (instance.binding?.kind === "follow") return tickerRootId(state, instance.binding.sourceInstanceId, seen);
73
+ return resolveTickerForPane(state, paneId) ? paneId : null;
74
+ }