gloomberb 0.17.3 → 0.17.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 (50) hide show
  1. package/package.json +2 -1
  2. package/src/api-client/chat.ts +28 -0
  3. package/src/api-client/errors.ts +11 -1
  4. package/src/api-client/index.ts +4 -1
  5. package/src/api-client/normalizers.ts +21 -0
  6. package/src/api-client/socket.ts +27 -0
  7. package/src/app/runtime/startup.ts +4 -0
  8. package/src/cli/pane-functions/function-help.ts +1 -1
  9. package/src/components/index.ts +1 -1
  10. package/src/components/metric-treemap/heat-surface.tsx +76 -14
  11. package/src/components/metric-treemap/heat-tiles.ts +5 -3
  12. package/src/components/metric-treemap/index.tsx +1 -1
  13. package/src/components/ui/button.tsx +24 -9
  14. package/src/components/ui/index.ts +1 -1
  15. package/src/components/ui/status.tsx +148 -5
  16. package/src/layout-marketplace/gallery-desktop.tsx +2 -2
  17. package/src/market-data/futures-board.ts +44 -1
  18. package/src/plugins/builtin/account-management/calendar-tab.tsx +1 -1
  19. package/src/plugins/builtin/alerts/cli.ts +72 -11
  20. package/src/plugins/builtin/awards/headless.ts +5 -1
  21. package/src/plugins/builtin/catalysts/headless.ts +5 -1
  22. package/src/plugins/builtin/chat/controller/connections.ts +18 -0
  23. package/src/plugins/builtin/chat/controller/fetch.ts +5 -2
  24. package/src/plugins/builtin/chat/controller/index.ts +49 -21
  25. package/src/plugins/builtin/chat/controller/notifications.ts +132 -72
  26. package/src/plugins/builtin/chat/controller/realtime.ts +37 -1
  27. package/src/plugins/builtin/cot/model.ts +20 -0
  28. package/src/plugins/builtin/custom-view/pane.tsx +2 -2
  29. package/src/plugins/builtin/docs/pane.tsx +1 -1
  30. package/src/plugins/builtin/futures/index.tsx +2 -3
  31. package/src/plugins/builtin/futures/model.ts +4 -2
  32. package/src/plugins/builtin/futures/series.ts +3 -3
  33. package/src/plugins/builtin/jobs/pane.tsx +12 -9
  34. package/src/plugins/builtin/market-heatmap/index.tsx +6 -15
  35. package/src/plugins/builtin/news/headless.ts +4 -2
  36. package/src/plugins/builtin/plugin-marketplace/pane.tsx +1 -1
  37. package/src/plugins/builtin/research/equity-diagnostic-pane.tsx +2 -3
  38. package/src/renderers/dom/build-assets.ts +17 -4
  39. package/src/renderers/dom/desktop/controls.tsx +2 -0
  40. package/src/renderers/electrobun/bun/desktop/macos-dock-badge.ts +4 -3
  41. package/src/renderers/electrobun/bun/desktop/macos-dock-icon.ts +2 -3
  42. package/src/renderers/electrobun/bun/desktop/macos-objc.ts +17 -6
  43. package/src/sources/gloomberb-cloud/normalizers.ts +12 -4
  44. package/src/time-series/resolve.ts +5 -3
  45. package/src/ui/resize-settle.ts +128 -0
  46. package/src/utils/calendar-date.ts +56 -0
  47. package/src/utils/decimal-comma.ts +31 -0
  48. package/src/utils/futures-generic.ts +25 -4
  49. package/src/utils/plugin-proxy-hosts.json +5 -0
  50. package/src/utils/utc-time.ts +14 -3
@@ -83,13 +83,13 @@ export function setDisplayTimeZone(zone: string | null | undefined): void {
83
83
  /**
84
84
  * ` (Sun 11 Oct 01:56 Asia/Tokyo)`: an instant on the reader's clock, to follow
85
85
  * its UTC time, with the weekday and date because the two can fall on
86
- * different days. Empty when no zone is set.
86
+ * different days; to the second with `seconds`. Empty when no zone is set.
87
87
  */
88
- export function localTimeSuffix(time: number): string {
88
+ export function localTimeSuffix(time: number, seconds = false): string {
89
89
  if (!displayZone || !Number.isFinite(time)) return "";
90
90
  const local = zonedDateTimeParts(time, displayZone);
91
91
  const weekday = WEEKDAYS[new Date(Date.UTC(local.year, local.month - 1, local.day)).getUTCDay()];
92
- const clock = `${String(local.hour).padStart(2, "0")}:${String(local.minute).padStart(2, "0")}`;
92
+ const clock = [local.hour, local.minute, ...(seconds ? [local.second] : [])].map((part) => String(part).padStart(2, "0")).join(":");
93
93
  return ` (${weekday} ${local.day} ${MONTHS[local.month - 1]} ${clock} ${displayZone})`;
94
94
  }
95
95
 
@@ -106,6 +106,17 @@ export function formatUtcTime(value: ReportTime | Date | number | string): strin
106
106
  return `${iso.slice(0, 16).replace("T", " ")} UTC${localTimeSuffix(parsed.time)}`;
107
107
  }
108
108
 
109
+ /**
110
+ * `2026-10-09 00:08:00 UTC`: `formatUtcTime` to the second, for a column whose
111
+ * times are to the second, so a time that fell on a whole minute reads like
112
+ * the rest. Text that is not a time comes back as it is.
113
+ */
114
+ export function formatUtcSeconds(value: unknown): string {
115
+ const parsed = parseReportTime(value);
116
+ if (!parsed || parsed.dateOnly) return typeof value === "string" ? value : "";
117
+ return `${new Date(parsed.time).toISOString().slice(0, 19).replace("T", " ")} UTC${localTimeSuffix(parsed.time, true)}`;
118
+ }
119
+
109
120
  /**
110
121
  * `Fri 9 Oct 23:59` in UTC, or `Fri 9 Oct` for a date, for a table cell whose
111
122
  * header names the zone: a time without its zone, so each row stays short. The