Зашёл в реальный терминал (демо-workspace без логина), прокликал график, индикаторы и виджеты, замерил рендеринг. Всё ниже — живые скриншоты и измерения.
Терминал формально за авторизацией (Stytch). Но /platform грузит полноценный демо-workspace, а окно логина — просто оверлей: закрывается по Esc, и под ним живой продукт с реальными котировками (BTC 63 649, ETH, TSLA, AAPL, META…). Всё, что ниже, снято в этом режиме. Рисование (drawing tools) и часть фич — под кнопкой «Start Free Trial».
Рабочее пространство — мозаика виджетов с докингом. Под капотом — Lumino DockPanel (тот же движок тайлинга, что в JupyterLab): в DOM нашлись lm-DockPanel-handle — это перетаскиваемые разделители между виджетами. Каждый виджет — <section class="widget"> поверх единого canvas.
Добавление виджетов — через Widget Hub (кнопка «Add Widgets»): правый drawer с карточками-превью и кнопкой «+» на каждой.
Полный список типов виджетов, найденный в хабе:
Хедер графика (слева направо): символ + биржа → таймфрейм → типы графика → ƒ Add Indicators → VS Compare Symbol → Alert (⌥A) → Object Tree (слои) → undo/redo. Слева инлайн-кнопки Buy/Sell и живой OHLC-ридаут. Справа — ценовая шкала с last-price пилюлей, снизу — ось времени и объёмы.
При наведении — перекрестие с ценовой пилюлей на правой шкале и временной пилюлей на оси (напр. «04 Jun'26, 15:30»), плюс OHLC обновляется в хедере. Классический TradingView-style, отрисовка моментальная.
Меню интервалов — их фишка. Есть Ticks (1/5/10/25 тиков), Seconds (1/5/10/15/45 сек), Minutes, Hours, Days, и блок CUSTOM TIMEFRAME — любой интервал на лету. Свечи строятся из сырых котировок, поэтому пресеты не ограничивают.
Основные типы: Candles · Line · Bars. Дополнительные стили серий (area, baseline, histogram) используются индикаторами и сравнением символов.
Кнопка ƒ открывает пикер: поиск «Find scripts…», фильтр Built-in, большая библиотека (Accumulation/Distribution, ALMA, Aroon, ADX, ATR, Awesome Oscillator, Bollinger Bands, RSI…). Внизу Explore — маркетплейс комьюнити-индикаторов, и + — создать свой на Indie.
Добавил Bollinger Bands (оверлей) и RSI (отдельный пейн). Индикатор считается асинхронно (мелькает «Loading…» — вычисление идёт через бэкенд-пайплайн свечей), затем рисуется на GPU. Результат — мультипейновый layout: цена+BB / объёмы / RSI.
Главное измерение. Весь workspace рисуется в один WebGL2-canvas на весь вьюпорт (а не по canvas на виджет) — единый GPU-рендер-луп, как в игровом движке.
On-demand рендеринг. Когда ничего не меняется — 0 draw-call'ов: движок не крутит впустую кадры, перерисовывает только при изменении (тик данных, движение crosshair, пан, зум). При этом rAF готов выдавать 120 fps. Это и есть «плавно и без фризов» + экономия батареи.
Панорамирование (drag) — живое: график прокручивается во времени, Bollinger Bands пересчитываются и перерисовываются для нового диапазона в реальном времени. До/после одного жеста:
Перетаскивание разделителя DockPanel меняет размеры виджетов вживую: потянул границу между Графиком и Screener — чарт расширился 362 → 618 px, скринер сжался 566 → 310 px, и график мгновенно перерисовался под новую ширину.
<section class="widget">) поверх общего canvas; данные — Connect/gRPC-web (Protobuf), стримы в SharedWorker.Что под триалом / не снято: drawing tools (рисование) в демо-режиме не раскрылись — вероятно, под «Start Free Trial». Зум колесом синтетическими событиями не триггерился (кастомный обработчик), но drag-пан подтвердил живую интерактивность. FPS под нагрузкой точно не измерить из-за кэширования GL-методов движком — приведены rAF-частота и on-demand поведение.